본문 바로가기
반응형

architecture14

UML - 상태 다이어그램 (Statechart Diagram) Architecture & Design Pattern 전체 링크 참고 - 상태 다이어그램 그리기 상태 다이어그램 (Statechart Diagram) - 객체나 구성 요소의 다양한 상태, 이벤트에 응답하여 상태 전이를 어떻게 수행하는지를 모델링한다. - 동적인 동작을 가진 복잡한 시스템의 행동을 모델링하는 데 사용할 수 있다. - 시스템이 주고 받는 이벤트를 순서대로 표현할 수 있다. 구성 요소 상태 다이어그램(Finite State Machine, Statechart)에는 다음과 같은 구성 요소가 포함된다. - State : 시스템 또는 객체가 가질 수 있는 다양한 상태를 표시 - Event : 시스템 또는 객체가 상태 변화를 일으키는 사건 - Transition : 상태 간의 변화 아래의 다이어그램에.. 2024. 3. 3.
UML 다이어그램 (Unified Modeling Language Diagram) Architecture & Design Pattern 전체 링크 UML (Unified Modeling Language) - SW 개발에서 시스템을 시각적으로 모델링하고 문서화하기 위해 사용되는 표준화된 언어 - SRS, SDS, 데이터 / 비즈니스 / 오브젝트 / 컴포넌트 모델링에서 사용됨 MOF (Meta Object Facility) - 모델 기반 소프트웨어 공학 분야에서 사용되는 표준 메타모델링 언어 - M0 Layer : 실제 구축하고자 하는 SW 시스템의 인스턴스를 포함 (Application) - M1 Layer : M0에 대한 모델을 포함, 클래스 다이어그램 등이 속하게 된다. (UML Model) - M2 Layer : M1 계층의 모델을 설명하는 메타모델을 포함. 시스템 구조, 속성, .. 2024. 3. 2.
UML - 시퀀스 다이어그램 (Sequence Diagram) Architecture & Design Pattern 전체 링크 참고 - 시퀀스 다이어그램 그리기 - https://www.ibm.com/docs/en/dma?topic=diagrams-interaction-operators-in-sequence - 싱글턴 패턴 시퀀스 다이어그램 (Sequence Diagram) - 시간에 따른 객체 또는 구성 요소 간의 상호작용을 나타낸다. - 메시지 교환 순서를 보여주어 시스템의 제어 흐름을 모델링한다. 구성 요소 시퀀스 다이어그램에는 다음과 같은 구성 요소가 포함된다. - Object : 시스템의 객체 또는 시스템이 하는 역할 - Message : 객체 간의 상호작용을 나타내는 화살표 - Lifeline : 시간의 흐름에 따라 객체의 존재를 보여주는 수직선 - Pa.. 2024. 3. 2.
C++ - 헐리우드 원칙 (The Hollywood Principle) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 템플릿 메서드 패턴 헐리우드 원칙 (The Hollywood Principle) - Don't call us, we'll call you - 높은 수준의 모듈 간의 상호작용을 관리하기 위해 사용되는 원칙 - 상위 모듈이 하위 모듈에 의존할 때, 상위 모듈은 직접적으로 하위 모듈에 의존하지 말아야 한다. - 두 모듈 모두 추상화에 의존해야 한다. - 하위 모듈이 상위 모듈을 호출하지 않아야 하며, 상위 모듈이 추상화된 인터페이스를 통해 하위 모듈을 호출해야 한다. 의존성 부패 (Dependency Rot) - 여러 구성 요소 간의 의존성이 증가하는 현상 - 상위 모듈이 하위 모듈에, 하위 모듈이 상위 모듈에 서.. 2024. 2. 26.
C++ - 최소 지식 원칙 (The Principle of Least Knowledge) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 퍼사드 패턴 최소 지식 원칙 (The Principle of Least Knowledge) = 디미터의 법칙 (Law of Demeter) - 객체가 다른 객체와 직접적으로 상호 작용하는 것보다는 가능한 다른 객체들과의 관련을 최소화해야 한다. - 객체는 해당 객체와 직접 관련된 정보만을 알아야 하고, 다른 객체의 내부 동작에 대해 세부 사항을 알 필요가 없다. - 객체와 다른 객체는 인터페이스를 통해 간접적으로 상호 작용을 유지해야 한다. 먼저 최소 지식 원칙 위반 사례를 보자. #include using namespace std; class Engine { public: void work() { cout 2024. 2. 25.
UML - 유스케이스 다이어그램 (Use Case Diagram) Architecture & Design Pattern 전체 링크 유스케이스 다이어그램 (Use Case Diagram) - 시스템의 사용자 또는 액터(Actor)와 시스템이 제공하는 기능(Use Case) 간의 상호작용을 보여준다. - 시스템의 내부 요소와 외부 요소를 결합하고, 사용자의 특정 요구 사항을 강조한다. - 시스템의 상황을 묘사하고, 시스템의 청사진으로 작동할 수 있다. - 사용자를 위한 다이어그램이므로 시스템의 기능이나 세부정보를 나타내지는 않는다. 유스케이스 (Use Case) - 새로 만들어야 할 시스템이나 소프트웨어 변경 사항에 대한 요구 사항을 찾아내는 방법 - 사용자 또는 시스템 외부에서 시스템이 수행할 수 있는 작업 또는 시나리오 - 각 유스케이스는 시스템이 사용자의 요구사항을 .. 2024. 2. 23.
UML - 클래스 다이어그램 (Class Diagram) Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 클래스 다이어그램 (Class Diagram) - 시스템의 클래스와 클래스들 간의 관계를 보여준다. - 코드 수준의 모든 구성 요소들을 속성들과 오퍼레이션들과 함께 나열한다. - 제한된 타입 정보를 제공하며, 메서드를 어떻게 작성해야 할지를 나타내지는 않는다. - Use Case의 명사가 클래스가 되며, 동사들은 메서드가 될 수 있다. 구조 클래스 다이어그램은 다음과 같은 구조를 가지고 있다. (클래스 이름 / 속성 / 오퍼레이션) (참고 : 오퍼레이션은 realization이 아닌 선언 정도, 메서드는 특정 언어로 구현된 실제 코드를 의미) attribute 앞의 기호는 visibility를 나타낸다. +.. 2024. 2. 23.
SOLID - 객체 지향 설계 5대 원칙 Architecture & Design Pattern 전체 링크 객체지향 설계 5대 원칙 (SOLID) 단일 책임 원칙 (SRP, Single Responsibility Principle) - 소프트웨어의 모듈 또는 클래스는 단 하나의 책임만 가져야 한다. - 클래스를 바꾸는 이유는 한 가지뿐이어야 한다. - 유지 보수, 재사용성, 테스트 용이성에 이점이 있다. 개방-폐쇄 원칙 (OCP, Open-Closed Principle) - Open : 소프트웨어의 기능을 추가할 때, 기존의 코드를 변경하지 않고 확장할 수 있어야 한다. - Closed : 이미 동작하는 코드에 대한 변경이 필요 없이 새로운 기능을 추가할 수 있어야 한다. - 클래스는 확장에 대해서는 열려 있어야 하고, 코드 변경에 대해서는 닫혀.. 2024. 2. 12.
C++ - 인터페이스 분리 원칙 (ISP, Interface Segregation Principle) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 전략, 스트래티지 패턴 인터페이스 분리 원칙 (ISP, Interface Segregation Principle) - 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다. - 일반적인 인터페이스들은 더 작고, 구체적인 인터페이스들로 분리해야 한다. 아래의 인터페이스 분리 원칙 위반 사례를 보자. 흔히 노동자들은 일을 하지만, 밥도 먹어야 하고 잠도 자야 한다. class Worker { public: virtual void work() = 0; virtual void eat() = 0; virtual void sleep() = 0; }; 예를 들어 프로그래머는 다음과 같이 work / eat .. 2024. 2. 12.
반응형