Parallel Programming

취미 2008. 12. 19. 12:52


이 프로젝트에서 듣도 보도 못한 광경들을 매일,매일 마주하는데, 그 와중에 생소한 용어들을 많이 듣는다.

가장 기억에 남는 말은 바로 패러럴 프로그래밍 이다. 말 참 잘 만든다.

Agile 이니 XP 니 TDD 니 하는건 많이 들어봤지만, 패러럴이란 단어는 여기가 처음이다.

말인즉슨,'화면설계와 개발과 테스트를 동시에,물론 거기에 다른쪽 파트일도 모두 병행(패러럴)하면서 진행하면 된다'

이젠 저런말 들으면 배시시 웃을수 있는 여유도 생겼다.

나 포함해서 개발 관계자들과 티객 태격할일이 많은데, 화낼 대상이 틀려있다.서로 공감대를 가지고,이런 구조를 만든 책임자에게 돌려야 마땅하다.

내가 살고 있는 이 나라도 꼭 요모양이다. 분노할 대상은 저쪽에 있다.



아침에 후배 녀석 왈 ' 형은 아침에 봐야해요, 아침엔 참 온화한데, 저녁쯤 되면 얼굴이 변해있어요.'

내 수양이 덜 된 탓이다.


'취미' 카테고리의 다른 글

새해 첫 날  (0) 2009.01.01
참 아름다운 프로젝트  (0) 2008.12.24
대형 프로젝트에서 통합과 분리  (0) 2008.10.30
Extending Flex Builder3  (0) 2008.09.02
Hug a Developer  (0) 2008.08.29
Posted by iamyhs
,
'최고는(The Best)는 우수(The Good)의 적이다.'

현재 개발진행중에 특정한 화면에서 공통된 사항을 뽑아,공통 통합 파트를 구현하면서 새롭게 느겼던 말이다.알골(Alcol)을 설계한 팀에서의 조언이기도 하다.

구현 - 변경 - 구현, 흔히 말하는 이터레이션이 계속 되는데 어디까지 세분화 시켰다가 또 어디까지 통합할 것인가를 계속 고려해본다. 그 와중에 과연 품질수준은 어디까지로 할까 개인적으로 고민해보다가 떠오른 말이다.

적당한 수준으로 통합을 하고 있고 이런 정도가 현재는 맞다고 판단한다.

개인적으로 이런 대형 프로젝트에서는 유지보수성을 가장 최우선으로 하고 싶다.프로그램의 자유도는 딱딱해지고 화면은 평이해지겠지만,이런건 트레이드 오프 라고 생각한다.

그렇다면 과연 프레임웍을 도입했어야 할까, 이 부분은 개인적인 생각이 계속 바꼈다.

처음 프로젝트 투입할때는 프레임웍을 도입을 고려해보자고 제안했었고,속도가 붙었을땐 과연 그랬다면 낭패였겠다 싶었는데, 일차 오픈과 더불어 개발자들이 대거 나가고 나니, 또 다시 유지 보수성 문제가 고개를 들고, 다시 프레임웍을 도입하는게 좋았을것 같다 라고 생각한다.

최초 맡았던 파트는 공통모듈화가 상대적으로 잘 되었지만, 지금 파트는 일정이 밀리고 변경도 잦고 책임자가 없이 휘둘리니 유지보수성은 이미 물건너간 상황이다.

다시 공통화로 돌아오면,가장 어려움을 느낀건 남의 소스를 보는데 이해할수가 없다는 거다.프로그램 코드가 아닌,백그라운드 프로세스를 알수가 없었다.

파일 처리가,SAP의 EP->D/A(Data Archive)->ECC 로 까지 복잡한 처리가 되어있는데,왜 이렇게 되었는지는 해당 개발자와 업무 담당자만이 알고 있다.
그리고 구현을 담당했던 개발자중 한사람은 계약만료되어 나가있고,다행히 옆자리에 해당 프로세스에 익숙한 개발자가 있어서 많은 도움을 받고 있다.

만일 담당한 개발자가,업무 담당자가 없다면 어떻게 됐을까,어떤식으로 업무 인수인계를 할것인가.

'결국은 모두 글쓰기' 이다.

동일한 모델의 또다른 뷰가 문서화라는 말에 무안함을 느끼지만, 일단은 수정중인 소스에 주석을 덧붙이고,오랜만에 비지오로 프로세스 순서도를 그려놓았다.한결 낫다.

대형 프로젝트가 시간이 갈수록 허우적대는건 왜일까.이만한 프로젝트는 앞으로도 접하기 힘들것 같은데,뭔가 필연적으로 그렇게 되어가는것 처럼 보인다, 마치 공룡이 멸망한것처럼.



하지만,무엇보다,반드시,하늘이 무너져도,퇴근시간은 꼭 지켜져야한다.



프로젝트는 낼도 모레도 계속된다.모르긴 해도 숭례문 완공될때까지도 계속 될꺼다,이름이야 바뀌겠지만.

'취미' 카테고리의 다른 글

참 아름다운 프로젝트  (0) 2008.12.24
Parallel Programming  (0) 2008.12.19
Extending Flex Builder3  (0) 2008.09.02
Hug a Developer  (0) 2008.08.29
Enterprise IDE Plugin  (0) 2008.08.27
Posted by iamyhs
,

Extending Flex Builder3

취미 2008. 9. 2. 16:41
Extention Point를 대한 API 를 찾아서 활용하기가 힘들다.

Help 에 Adobe Flex Builder 2 Extensibility API Reference에 Code Model 과 Design Model 나온게 전부이다.

이클립스 플러그인을 개발한 경험이 풍부하다면 모를까,쉽지가 않다.

이클립스의 플렉스 플러그인을 확장하는 플러그인에 대한 공시적인 세미나는 작년 Max Chicago 에서  david zuckerman/adobe 이 강연한게 전부이다.

문제는 이 분 소스를 가지고 플러그인을 만들면 에러난다.

import com.adobe.flexbuilder.codemodel.search.IDefinitionOccurence;
import com.adobe.flexbuilder.editors.derived.images.DerivedImages;

등등

비디오도 다운 받았는데,그 분 말마따나 오디오가 너무 안좋다.비디오는 물론이고.

거기에 대해,현재 adobe 사이트의 eclipse_derived_code_022508.zip 소스를 보면 분명 저 패키지가 존재한다. 그럼 이걸로 컴파일해서 배포한게 아닌가? 뭔가 분명치가 않다.

확장해서 쓰라는 거냐, 말라는 거냐.

마냥 Thinking Digital 포스팅을 손꼽아 기다린다.

아마도 어딘가에서 누군가 나 처럼 삽집하고 있겠지,라고 스스로 위안한다. ㅡㅡ;

ps
david zuckerman ClassBrowser 예제를 에러없이 flex builder3를 확장한 플러그인을 만들고 싶다면,DerivedImages 레퍼런스 관련이미지를 코멘트 시키고,IDefinitionOccurence 인터페이스를 IDefinition 인터페이스로 대체하면 만들어지기는 한다.
대신에 당연하게도 Class,Property 등등을 나타내는 이미지가 안나온다.

해당 class 를 디컴파일해봐도 eclipse_derived_code_022508.zip 소스처럼 위 패키지를 참조하고있다.

ps
오늘 간만에 이 사이트를 방문했더니,Enterprise IDE Plugin Beta 사이트가 나오더라, 얼마전에 블로그에 소개했던 저 플러그인 회사더라.쩝, 어쩐지 솜씨가 튄다 싶었더니,그러면 소스 공개는 안할것 같군.

'취미' 카테고리의 다른 글

Parallel Programming  (0) 2008.12.19
대형 프로젝트에서 통합과 분리  (0) 2008.10.30
Hug a Developer  (0) 2008.08.29
Enterprise IDE Plugin  (0) 2008.08.27
SAP Web Dynpro + Adobe Flex/Flash  (0) 2008.08.06
Posted by iamyhs
,

Hug a Developer

취미 2008. 8. 29. 17:04
내 동료 개발자들도 한번씩 껴안아 주고 싶다.

Hug a Developer

01234567891011


'취미' 카테고리의 다른 글

대형 프로젝트에서 통합과 분리  (0) 2008.10.30
Extending Flex Builder3  (0) 2008.09.02
Enterprise IDE Plugin  (0) 2008.08.27
SAP Web Dynpro + Adobe Flex/Flash  (0) 2008.08.06
The Mythical Man-Month  (0) 2008.07.09
Posted by iamyhs
,

Enterprise IDE Plugin

취미 2008. 8. 27. 09:55
초창기 FDT  제품군에 아쉬운점이라면 mxml 소스에 대한 서포트가 없었다.
그 이후 Enterprise 제품군에는 포함시킬거란 향후 "계획"을 발표했었지만, 지금까지 여전히 해당 기능은 없다.괜찮은 솔루션임에도 불구하고 최근에는 잘 쓰지 않은 플러그인중에 하나가 되었다.

반면에 이번에 베타로 나온 Enterprise IDE Plugin 은 주목할만 하다.

Code Navigation Code Generation General Tools Code Documentation

네개의 카테고리로 분류한 기능들을 살펴보면, 눈에 띄이는 기능들이 UML 과 Cairngorm 관련된 부분이다.AS3 코드 제너레이션은 기본이고, ASDoc 까지 전체적으로 기존 솔루션을 매시업 했다는 기분이 들 정도로 잘 활용한 프로그램이라는 인상이다.


'취미' 카테고리의 다른 글

Extending Flex Builder3  (0) 2008.09.02
Hug a Developer  (0) 2008.08.29
SAP Web Dynpro + Adobe Flex/Flash  (0) 2008.08.06
The Mythical Man-Month  (0) 2008.07.09
SAP<->Java<->Flex 개발시 알아둘 사항들  (0) 2008.06.27
Posted by iamyhs
,
NetWeaver 7.0  에 Web DynPro 와 Flex/Flash 컴포넌트와 연동되는걸 보여준다.

대단히 인상적이다. 현재 프로젝트가 SAP 쪽 데이타를 FM을 이용해 보여주는 형태인대(View) 굳이 플렉스 View를 고집할 필요는 없다.

비디오를 보면 내부적으로 분명히, Flex 쪽으로 데이타 연동시키는 엔진이 있을것 같은데, 그 부분이 무척 궁금하다.

SAP Web Dynpro + Adobe Flex/Flash = Enterprise UI 2.0


SAP 한 과정을 수료하구 마지막 시간에, 이 Web DynPro와 VC 과정은 없냐구 질문을 했었다.

간단하게 설명은 들었지만,아마도 이런건 독학해야 하지 싶다.

'취미' 카테고리의 다른 글

Hug a Developer  (0) 2008.08.29
Enterprise IDE Plugin  (0) 2008.08.27
The Mythical Man-Month  (0) 2008.07.09
SAP<->Java<->Flex 개발시 알아둘 사항들  (0) 2008.06.27
Mate Framework  (0) 2008.06.19
Posted by iamyhs
,

The Mythical Man-Month

취미 2008. 7. 9. 10:11
크게 세파트로 나뉘었던 프로젝트 진행중에, 다른 파트의 일,8본을 네사람이(새로 추가된 사람 포함) 나눠서 할일이 생겼다.

그리고, 전형적인 문제점을 발견하게 되었고,떠오른 게 바로  Fred Brooks의 The Mythical Man-Month.

정확히 동일한 문제는 아니지만 내가 말하고 싶은건 바로 Communication의 문제이다.

아마 해당 파트의 담당자가 맡았다면 넉넉잡고 반나절이면 모두 다 개발했을것이고,뭐가 문제인지도 단숨에 알았을것이다.


하지만, 새론 투입된 네사람은 다른 사람의 소스를 이해할 시간도 필요하고,

더군다나 투입된 네사람중 한사람은 전혀 처음인 상태인 상황에서 관련 담당자를 찾아다니면서 물어야할 상황이다.

개발사양서의 품질은 최악이고,품질에 대한 담당자는 메일하나 보내는 역할만을 하고 있다.

자 그럼,
어떻게 Communication을 할것인가.어떻게 Communication을 할것인가.어떻게 Communication을 할것인가.


당연(?)하게도 일정은 밀렸다.한사람 8본 반나절  vs 네 사람 8본 2틀~3일 이다.

다시 The Mythical Man-Month,

Assigning more programmers to a project running behind schedule will make it even later, due to the time required for the new programmers to learn about the project, as well as the increased communication overhead. When N people have to communicate among themselves (without a hierarchy), as N increases, their output M decreases and can even become negative (i.e. the total work remaining at the end of a day is greater than the total work that had been remaining at the beginning of that day, such as when many bugs are created).

        * Group Intercommunication Formula: n(n − 1) / 2
        * Example: 50 developers -> 50(50 − 1) / 2 = 1225 channels of communication



늦어진 프로젝트에 사람을 더 투입할때, 더 늦어질수도 있다.간단한 예지만 실제로 더 늦어졌다, 그것도 한참~

흔히 말하는 이 프로젝트 관리 분야의 명저라고 일컫는 서적들을 읽어봐도 명쾌한 답이 없다.

걔중엔 전혀 현실적이지 못한 중,소규모 프로젝트에나 적용될법도 말법도 할만한 것들만 많다.


또 다시  어떻게 Communication을 할것인가.

한번,티핑포인트식에서 분류한 세 단계의 Commnunicator를 써보면 어떨까 싶다.

- 커넥터(Connector) : 많은 이들을 알고 있는 사람으로 정보를 전파하는 역할
- 메이븐(Maven) : 정보를 공유하고 교환하려는 사람으로 정보의 전달자 역할
- 세일즈맨(Salesman) : 불확실한 정보를 능수능란하게 설득하는 역할


실제로 이렇게 점점 각 파트별로 정치,책임,성과 등의 역학관계가 복잡한 대규모 프로젝트라면

위 처럼 Commnunicator의 역할을 세분화 시켜보는것도 의미있는 작업방식일것 같다.


ps
새로 투입된 넷중의 한사람이 나다,만일 협업하는 파트의 사람들과 원만한 관계가 아니었다면,

그리고 같이 참여한 업체들끼리 협업이, 이게 개인적으로든 회사적으로든 , 매끄럽지 않다면 문제는 대단히 심각해졌을꺼다.

사실 위와같은 문제가 본질적인 문제중의 하나다.

그리고, 투입된 인력들이 양산해(?)냈을 법한 버그는 고려하지 않았다.사실 이건 더 심각한거다.ㅋ

'취미' 카테고리의 다른 글

Enterprise IDE Plugin  (0) 2008.08.27
SAP Web Dynpro + Adobe Flex/Flash  (0) 2008.08.06
SAP<->Java<->Flex 개발시 알아둘 사항들  (0) 2008.06.27
Mate Framework  (0) 2008.06.19
Creating a Flash container component  (0) 2008.06.03
Posted by iamyhs
,
주의사항)
SAP 용어를 그대로 쓴다, 이런 용어마저 익숙하지 않다면 SAP 에대한 기본서를 먼저 본다.
더불어 FM(Function Module)을 디버깅할때쓰이는 SAPGui 에 관련된 내용도 SAP 용어를 그대로 쓴다.

1)JCO vs JCA
현재 참여하고 잇는 프로젝트는 위 두 환경이 공존하고 있다.
    
    1-1)로컬 테스트는 JCO
    1-2)실제 Deploy는 JCA 환경

    이유 : JCO 로 했을때, SSO(Single Sign On) 정보를 SAP의 ECC 정보가져올때(Landscape) 유지할수가 없었다.(정말 안되는지는 미 검증)
        JCA로 했을때는 SSO 문제가 해결되어있고, JCA 자체가 표준 아키텍처 이므로 이 방식으로 개발하고 있다.



2)WebService vs FDS
    SAP 쪽 데이타를 WebService 이용해서 가져오는 방식, SAP<->Flex
    SAP 쪽 데이타를 Remote Object를 이용해서 가져오는 방식, SAP<->JAVA<->Flex


3)XML용 파서, FDS용 파서

    3-1)WebService를 이용할때 : XML(텍스트) 대량의 데이타를 주고 받는 환경에서는 부적합(속도,용량)

    3-2)FDS를 이용할때 : AMF(Binary)    대량의 데이타를 주고 받을때 적합

    3-3)XML
        DataType : XML

    3-4)FDS
        DataType : AMF(Binary)
        SAP FM(RRW3_GET_QUERY_VIEW_DATA)을 이용

4)SAP GUI 디버깅
    이 게시물을 참고


5)SAP 데이타구조에 대한 Online Help
Default Variables for Web Applications
                
Datasets


6)SAPGui 사용법을 알아야 한다, 가장 기본적인 서버세팅부터, TCode 같은것들 등등

7)기본적인 Bex Query Designer 사용법을 익혀야 한다.

8)파서를 직접 제작 혹은, 업그레이드 하고 싶다면 FM 자체를 디버깅하는 방법과, SAP 데이타의 구조를 파악해야한다

9)위험요소
현재 쓰이고 있는 RRW3_GET_QUERY_VIEW_DATA이 표준 FM이 아니다.SAP 쪽에서 Max Attention 방식의 별도 관리가 필요한 부분이기도 하다.

'취미' 카테고리의 다른 글

SAP Web Dynpro + Adobe Flex/Flash  (0) 2008.08.06
The Mythical Man-Month  (0) 2008.07.09
Mate Framework  (0) 2008.06.19
Creating a Flash container component  (0) 2008.06.03
대규모 프로젝트에서의 개발 그리고 플렉스  (0) 2008.05.07
Posted by iamyhs
,

Mate Framework

취미 2008. 6. 19. 19:09
또 다른 플렉스 프레임웍이다.

태그 기반이고, 캔곰으로 프로젝트를 다뤄본적이 있다면 상대적으로 덜 복잡함을 느낄거다.

간단히,현재 SAP 쪽 데이타를 끌어오는 부분을 포팅해봤는데, 한시간 정도면 익힐수 있을 정도로 가볍다.

아래 사항들에 대해서는 깊이있게 들어가진 않았지만, 쓸만하다 싶다.

    캔곰처럼 ChainEvent 써야할 상황이라면 어떤식으로 처리할까
    모듈로 개발했을때는 문제가 없을까

그리고 제일 마음에 드는건,다큐먼트와 예제이다.기억할만한 프레임웍 MATE

Posted by iamyhs
,
Flex Cook Book 3 :

Recipe 21.2. Use the ContainerMovieClip to Create Flex Containers in Flash

나오는 예제 이기도 하지만,

Adobe Help 중
Creating a Flash container component 을 보는걸 권한다.

간단히 말해서  Flash CS3 에서 Flex Container를 만들수 있다.

그렇게 만든 swc를 Flex 에서 컨테이너로 가져다 아래처럼 태그로 활용할수 있다.

Flash의 강력한 디자인 기능 + Flex Container 이다.알아두면 유용하게 쓸수 있는 팁일듯 하다.

<local:MyContainer1 id="myContainer" x="0" y="0">
    <VBox>
       ...
       ...
    </VBox>
</local:MyContainer1>


여기에서 한발 더 나아가서,

CS3 에서 Flex Container를 두개 이상 만들어서 Flex에서 접근하고 싶다면,

AS 3.0 으로는 아래처럼 접근할수 있다.

                var myBtn:Button = new Button();
                myBtn.percentWidth = 100;
                myBtn.label = "hello";
                myBtn.addEventListener(MouseEvent.CLICK,addButton);
               
               
                var myBtn1:Button = new Button();
                myBtn1.percentWidth = 100;
                myBtn1.label = "hello1";
                myBtn1.addEventListener(MouseEvent.CLICK,addButton);
               
                var hb1:VBox = new VBox();
                hb1.percentHeight = 100;
                hb1.percentWidth = 100;
                hb1.addChild(myBtn);
               
               
                var hb2:VBox = new VBox();
                hb2.percentHeight = 100;
                hb2.percentWidth = 100;
                hb2.addChild(myBtn1);
               
               
                myContainer.cont1.content = hb1;
                myContainer.cont2.content = hb2;

cont1,cont2는 CS3 에서 정해준 무비클립의 이름이다.

아직 찾지 못한건 태그로 접근하는 방법이다.

아래처럼 될것도 같았는데,안된다.



<local:MyContainer1 id="myContainer" x="0" y="0">
    <local:cont1>
    </local:cont1>

    <local:cont2>
   </local:cont2>

</local:MyContainer1>

'취미' 카테고리의 다른 글

SAP<->Java<->Flex 개발시 알아둘 사항들  (0) 2008.06.27
Mate Framework  (0) 2008.06.19
대규모 프로젝트에서의 개발 그리고 플렉스  (0) 2008.05.07
프로그래밍 격언  (0) 2008.03.08
재미로 하는 프로그래밍  (0) 2008.02.02
Posted by iamyhs
,