블로그 이미지
Flying Mr.Cheon youGom

Recent Comment»

Recent Post»

Recent Trackback»

« 2024/5 »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31


강의 제목 : CBD ( Component Based SW Design )
강사 : 부산대 채흥석 교수


여기에 적는 수강 후기 내용은
참고 자료 없이 강의 완료( '12. 08. 31 ) 후 3일 후인 오늘 ( '12. 09. 02 )  기억에 남는 부분을 적은 내용이다.

SW 설계할 때, OO의 관점으로 바라 보았다.
Component는 그런 OO를 기능의 한 묶음으로, 좀 더 큰 범위로 응집해 SW를 설계 할 수 있다는 것을 이해했다.
기존에 알고 있었던, 어쩌면 추측 했었던 Component란 개념을 새롭게 알 수 있었던 좋은 기회였다.

교수님이 보내주신다는 CBD 책을 한번 더 읽어보고, 블로그에 좀 더 구체적으로 정리해볼 생각이다.
그 다음에 더 상위 레벨인 Product Line에 대해서 관심을 가져야겠다.
Domain Design보다 Product Line이 Component 기반설계보다 좀 더 큰 범위의 설계라 하셨다.

Component에 대한 핵심, 범위, 요구사항, 설계, 검증, 구현에 대해 간략히 적었다.
그리고 중간에 컴포넌트에서 중요시 하는 Interface에 대한 내용도 적었다.


[ 핵심 ]
* CBD의 핵심은 인터페이스다.
* CBD는 추상화가 되지 않는다.
* 그러나 인터페이스는 추상화나 상속이 가능하다.

[ Component 범위 ]
* 메소드와 특성을 하나의 연관성으로 집합 한 것이 클래스다.
* 그 클래스를 사용 가능한 단위로 집합한 것이 컴포넌트다.

[ Interface 사용 ]
* 컴포넌트는 인터페이스를 통해 연결된다.
* 정확히 말하자면, 인터페이스는 포트와 연결되며, 컴포넌트는 포트를 통해 인터페이스를 사용할 수 있다.

-> 컴포넌트1 - 포트1 - 인터페이스 - 포트2 - 컴포넌트2

* 포트라는 개념은 현재 언어에서 지원되는 것이 없다. 비슷하게 흉내내어 구현해야 한다.

* 포트라는 개념은 기존에 없던 새로운 개념이다.

* 포트를 예를 들어 설명하자면, 컴퓨터 본체에 있는 Keyboard포트, 모니터포트, 프린터 포트등을 생각하면 된다.

-> [ 모니터에 있는 D-SUB포트 ] 와 [ 본체에 있는 D-SUB 포트 ] 는 [ 모니터 Connecter ] 로 [ 서로 약속된 Data Interface ] 통해 GUI가 화면이 Display되는 것이다.

* 부가적인 설명으로, OO에서 일고 있던 인터페이스 개념과 유사하다, 하지만 포트와 맞물려 사용되기 때문에 OO에서 사용된 인터페이스와 같다고 할 수 없다. 새로운 관점에서 접근해야 한다.


[ Component RM ]

* 기존 OOAD 기법과 유사하게 적용할 수 있다. 

* 용어 선택에 주의해야 한다.

* UseCase를 사용하면 좋다.

* Actor와 UseCase의 개념을 잘 알아야 한다.


[ Component 설계 ]

* 필요에 따라 Class, Sequence, Community 등의 여러 다이어그램을 사용해서 분석하고 설계하는 게 좋다.

* Class, Method, Attribute, Stereo type 등을 명시 할 때, 추상적 / 명시적 / 묵시적인 단어를 적절히 사용해야 한다. 이 부분이 생각보다 어렵다.

* 단어 선택에 미숙할 때에는 리팩토링 관련 ( Refactorying ) 책을 참고하는 것이 도움이 된다. 그 종류의 책에서 이름 명명과 고치는 방법에 대해서 자세히 나와있다.


[ Component 설계 검증 ]

* 코드를 작성한 뒤에만 검증 하는 것이 아니다.

* 요구 사항 및 설계 단계도 검증이 필요하다.

* 일반적으로 Sequence나 Community를 사용해 기능적인 흐름에서 이상이 없는 지 파악한다.

* class 이름, method이름, stereo type의 명칭을 보았을때, 다른 사람이 내 생각과 일치 하는지 확인해야 한다.

* 설계도는 추상적이지 않으며, 매우 구체적으로 나와야 한다. 또한 모든 사람이 공통으로 보아야 하는 내용이므로 명확하고 이해하기 좋은 용어와 다이어그램이 구체적으로 상세히 작성되어야 한다. 

* 필요에 따라 각 다이어그램에는 설명을 해주는 메모가 필수적으로 있어야 한다.


[ Component 구현 ]

*  Component 는 OO( Object Oriented ) 를 적용하여 적용 가능하다.

*  Component 는 OO가 필수적인 요소는 아니다. 구현 수단의 한가지다.

* OO의 구현의 경우, 예를 들어 설명하면, 

 OO를 구현하기 위해 C++은 추상클래스와 Virtual Method를 주로 이용한다.

 OO를 구현하기 위해 C는 Structure와 Static 연산자 그리고 함수 포인터를 사용한다.

* Component의 경우, 예를 들어 설명하면,

 CBD를 구현하기 위해 C++은 Virtual Method를 주로 이용할 수 있다.

 CBD를 구현하기 위해 C는 함수 포인터를 사용할 수 있다.


[ Component 배포 ]

* CASE Tool에서 지원해주는 Generate 를 사용하여 각 개발 환경에 맞는 언어로 배포할 수 있다. 블랙박스 테스트 수준의 코드가 작성되며, 그 이상은 구현자가 실행 플랫폼에 맞게 구현해 주어야 한다.





***

확실히 전공 교수님이라 정확한 개념과 상세한 설명을 해주시는 것 같다.

부족하고 모호했던 부분들을 채워 주신점에 대해 감사의 말씀을 전하고 싶다.

정말 즐겁고 유익한 한주였다.




'소프트웨어 공학 > 설계' 카테고리의 다른 글

[POSA1] Broker Architecture Pattern  (0) 2011.10.07
Bada App - FrameWork Concept  (0) 2011.09.21
: