Software Architecture(26)
-
UML
UML 이란? UML class diagram = static current diagram UML 표현 방법 Visibility + - # ~ : package derivation / interface knob을 지님 Parameterized class C++의 template Nested class XOR 연산 표시로서 association처럼 표현 Composite object nested object Qualifier 연관 관계 사이에 특정 관련 부분들과 연결 짓고 싶을 때 사용하는 한정자 Association class (무형의 class) 회사(role은 employer)와 사람(role은 employee) 사이에는 Job이라는 association class가 가능 Stereotypes loc..
2022.05.06 -
모듈 vs. 컴포넌트
사람들이 자주 헷갈려 하는 부분이라 간단히 설명 드립니다. 모듈은 "구현의 단위이자 배포의 단위 입니다." 예를 들어 어떤 library, program이 바로 "모듈"입니다. 또한 class file 하나도 하나의 구현 단위로서 module이 될 수 있습니다. 컴포넌트는 "동작의 단위" 입니다. 하나의 모듈이 하나의 컴포넌트에 1:1로 matching 될 수도 있으며, 그렇지 않을 수도 있습니다. UI 상에 표시되어 동작하는 "button control" 하나도 component가 될 수 있으며, 하나의 process를 만들고 동작하는 것도 component로 정의할 수 있습니다. 정리하자면, module은 개발 단계에서의 식별 단위이며, component는 runtime에서의 식별 단위 입니다. 그리..
2022.05.06 -
아키텍트의 역할 (Architect role)
1. Architecture Design (as key decision maker) SRS를 바탕으로 SAD를 설계 architectural style등을 선택하여 UML이나 ADL, B+L 등을 통해 modeling을 수행한다. interface 설계 module 및 component 설계 process 설계 design decision tradeoff packaging, class definition, module definition 설계 guideline 정의 naming rules component 설계 가이드 exception handling, dump mechanism debugging method transaction process design pattern 정의(MVC, MVVM, BCE)..
2022.05.06 -
Memento pattern
현재의 상태를 snapshot 하여 저장하고자 할 때, 객체의 상태를 기록해야 합니다. 이럴때 Memento pattern을 사용하여 상태를 외부에 노출하지 않고 저장합니다. Originator는 Memento를 생성하여 자신의 상태를 저장합니다. Memento 는 Originator의 상태를 저장하는 역할만 수행합니다. 이후 Originator가 상태롤 복원하고자 한다면, 복원할 Memento 객체를 선택하여 해당 객체의 상태를 자신의 상태로 저장합니다. 위 그림에서는 setMementoTo method를 사용하여 복원을 수행할 수 있습닏. 즉, 객체의 상태를 저장하는 역할을 수행하는 class를 정의하고, 이를 사용하여 객체의 상태의 저장/복원을 수행하는 pattern 입니다.
2022.02.28 -
Mediator pattern
Mediator는 여러 concrete item들을 가지고 있는 class입니다. 여러 concreate item 중 하나에서 어떤 event가 발생하여 다른 concreate item의 변화를 요청하고자 할때, 직접 요청하지 않고, base class인 Widget의 onChanged를 호출하여 Mediator에게 어떠한 변화가 있었는지를 알려줍니다. Mediator는 변화에 대한 callback인 onChanged의 호출을 받으면, 여기서 어떤 변화인지 파악합니다. 이후 변화에 대응할 수 있는 item을 골라서 해당 item이 해야 할 일을 수행합니다. 즉, mediator pattern은 누군가 전달하는 event를 받아 적절히 처리한 후 되돌려 주는 pattern 입니다.
2022.02.28 -
Iterator pattern
Iterator pattern 어떤 Item이 있고 item들을 담고 있는 menu가 있다고 가정해보겠습니다. menu 내 item들을 모두 순회하고자 한다면, 다음과 같이 구현되어야 합니다. class Menu { public: uint32 getCost(); }; class ItelianMenu : public Menu { ... uint32 getCost() { return m_cost; } ... }; auto menu = std::make_shared(std::shared_ptr); menu.push_back(std::make_shared()); menu.push_back(std::make_shared()); ... for (auto i = 0; i < menu.size(); ++i) { aut..
2022.02.28