블로그 이미지
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

 

'소프트웨어 공학/설계'에 해당되는 글 3

  1. 2012.09.02 [수강후기] CBD, Component Based SW Design
  2. 2011.10.07 [POSA1] Broker Architecture Pattern
  3. 2011.09.21 Bada App - FrameWork Concept
 


강의 제목 : 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
:

[POSA1] Broker Architecture Pattern

소프트웨어 공학/설계 | 2011. 10. 7. 17:04 | Posted by youGom
1.
여기에서 핵심 클래스는 Broker Class다.
Broker 클래스는 Client, Server에 접근하고, Client Proxy, Server Proxy에 접근한다.
Bridge 클래스를 통해 세부 구현을 숨길수도 있으며, 다른 브로커에 접근할 수 있다.

2.
Broker는 등록되어진 Client와 Server를 안전하게 연결해 준다.
Client는 본인이 사용하는 하나의 어플리케이션으로 볼수 있다.
Server는 서비스를 제공하는 하나의 매개체다.
Client/Server Proxy는 부가적인 데이터 처리를 해준다.

3.
포사에 적혀 있는 내용을 압축하면 위와 같이 정리된다.
POSA 책을 봐도 잘 이해 안가는걸 한번 더 압축하니, 첨 본 사람은 더욱 어리둥절 할 수 있다.


4.
우리 생활에 가까운 것으로 예를 들면 개념을 이해 하는데 도움이 된다.

a. 우리는 크롬을 켠다. ( ex. www.google.com )
b. 검색을 한다. ( ex. 김태희 )
c. 검색 목록이 뜬다. ( ex. 알흠다운 김태희 기사와 사진들~ *_* 므흣..! )
d. 김태희 기사를 본다.
e. 김태희 홈페이지를 들어간다. 
f. 홈페이지가 제대로 안뜨길래, 익스플로러로 김태희 홈페이지로 들어갔다.
g. 에러 없이 모든 내용을 볼 수 있다.


5.
위 내용을 가지고 Broker 패턴을 이해 할 수 있다.

a. Client 1 :    우리는 크롬을 켠다. ( ex. www.google.com )
b. Broker :      검색을 한다. ( ex. 김태희 )
c. Sever-List : 검색 목록이 뜬다. ( ex. 알흠다운 김태희 기사와 사진들~ *_* 므흣..! )
d. Server 1 : 김태희 기사를 본다.
e. Server 2 : 김태희 홈페이지를 들어간다. 
f. Client 2 :  홈페이지가 제대로 안뜨길래, 익스플로러로 김태희 홈페이지로 들어갔다.
g. Server 2 : 에러 없이 모든 내용을 볼 수 있다.


6.
추가 설명이 필요한 분들을 위해, 부가적인 설명을 덧 붙이겠다.

Client 브라우저다. 브라우저는 크롬과 익스플로러이고, 파이어폭스나 모질라도 가능하다.
Broker는 김태희 정보가 있는 서버 정보를 검색하는 역할을 한다.
Server는 본인이 원하는 서버들 중 하나를 선택해서 접근하는 것이다.
 ( 여기서 site 주소를 실제 서버 IP로 연결해주는게 DNS 인데, DNS도 브로커로 볼 수 있다. )
연결된 Server는 본인이 켜둔 Client 브라우저로 정보를 Reponse해주는 것이다.


7.
Proxy는 추가적인 데이터처리를 위해 추가 할 수 있다. 특히 Intranet을 사용할 때, Proxy Server는 필수가 된다.
일반적으로 Proxy 옵션을 따로 설정하진 않는다.


8.
가벼운 소재를 가지고, 쉽게 풀어 보았다.
혹시라도.. 설명에 부족한 부분이 있다면, 댓글을 조심히 부탁드린다.


9.
Broker 패턴에 대한 정확한 정보는 아래 주소로 가면, POSA 내용을 엿볼 수 있다.
 http://thisisliving.tistory.com/category/Studying/Pattern-Oriented%20Software%20Architecture


 

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

[수강후기] CBD, Component Based SW Design  (0) 2012.09.02
Bada App - FrameWork Concept  (0) 2011.09.21
:

Bada App - FrameWork Concept

소프트웨어 공학/설계 | 2011. 9. 21. 13:20 | Posted by youGom

장점.
1. FrameWork의 일관성이 유지되어, 개발 시 상호간 인터페이스에 대해 오해의 소지가 사라진다.
 - 다른 모듈에 대해서 Request만 하면 된다. 다른 모듈에 대한 이해가 필요 없다.
2. Framework의 일관성에 대한 개념을 이해하면, 모든 Framework에 대해 이해가 가능해진다.
3. 최소한의 단위로 테스트가 가능하다. ( 모든 코드는 테스트 되어 진다. )
4. 검증팀에서 검증하기 전에, 버그에 대한 진단이 자동화 테스트에 의해 자동으로 감지 된다.
5. 컴파일 시간이 줄어든다. ( 기능 추가가 될수록 파일 추가 및 수정이 잦아지는데, h파일을 수정하더라도, 전체 컴파일을 하지 않는다. 즉, 코드 결합도가 굉장히 낮다. )

단점.
1. Framework에 맞추어 개발하기 위한 대한 기본 이해가 필요하다. ( 구현하기 위한 진입 장벽이 높으나, 타 모듈 개발자가 사용하기엔 편하다. )




현황.
아래 코드는 테스트완료된 코드이며, 실질적으로 사용가능하다.
이 Framework 코드는 Bada SDK 코드에 종속적이며, 다른 플랫폼에서는 사용이 불가하다.

[ 앱의 시작 ]
way 1. GetManager( _C( "ManageForms" ) )->Request( _C( "FormStartDevMode" );
way 2. GetFormMgr()->Request( _C( "FormStartDevMode" );

[ 데이터 요청 ]
way 1. GetManager( _C( "ManageDB" ) )->Request( _C( "CreateDB" ), 0, pCompleteListener );
way 2. GetDBMgr()->Request( _C( "CreateDB" ), 0, pCompleteListener );

[ 데이터 처리 ]
way 1.  GetManager( _C( "ManageFilter" ) )->Request( _C( "FilterMessage" ), FILTER_MESSAGE_NORLMAL, pCompleteListener );
way 2. GetFilterMgr()->Request( _C( "FilterMessage" ), FILTER_MESSAGE_NORLMAL, pCompleteListener );


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

[수강후기] CBD, Component Based SW Design  (0) 2012.09.02
[POSA1] Broker Architecture Pattern  (0) 2011.10.07
: