기말고사는 5장 처음부터
각 다이어그램의 카테고리를 이해
Interactions among elements
a라는 객체가 b객체의 메소드를 호출할 때 -> Interaction 한다!
5.4 Dynamic Modeling
1. Sequence Digram
- Interactions among elements (객체 간의 상호작용)
- 객체들 간의 상호작용을 시간 순서로 표현
- 박스 하나가 객체라고 생각하면 되겠어요
- 함수를 사용하여 메소드 호출
ex) Create() 는 :Rental 객체의 메소드를 :RentUI 가 호출
2. Communication Diagram
- Sequence Diagram과 똑같은 flow
- 두 객체간의 association 관계
3. State Diagram
- 요소(객체) 안에서의 동작을 표현하기 위한 의도
- 하나의 객체, 함수라고 생각하면 될 거 같아요
4. Activity Diagram
- UML swimlane diagram
- 요소(객체) 안에서의 동작을 표현하기 위한 의도
- Multiple Trigger
: 여러 가지 activity 를 동시에 수행
- Synchronization Condition
: 한 activity를 수행하기 위해서는 둘 이상의 activity를 수행 (모두 수행될 때까지 대기)
=> 핵심은 동시수행
Forward Engineering : 다이어그램에서 코드를 generate
Backward Engineering : 코드에 해당하는 다이어그램 generate
퀴즈
sequence
activity 동시수행
동적(프로그램을 실행하면서 변화하는 것) - 객체 생성, 객체의 메소드 호출, ...
6. Design: Architecture
6.1 Architectural Design
: 주요한 결정의 집합, 설계 유형
계층 아키텍처
바로 아래 계층만 사용하여 위 계층 만드는 것이 핵심 아이디어
컴포넌트 아키텍처
Activity
Service
Broadcast Receiver
Content Provider
래퍼 모듈만 변경하면 되기 때문에 두번째 방법이 유지보수의 장점이 있다.
Architecture and System Characteristics
6.2 Architectural Representations
1) package diagram을 아키텍처로 그릴 수 있음 (복잡한 소프트웨어를 계층적으로 표현 가능)
2) informal block (바로 아래 계층만 사용 가능하지만 예외적으로 빈칸으로 두어 두단계 아래 계층 사용)
6.2절의 핵심아이디어
: 아키텍쳐를 그릴 때 formal하게 그릴 수도 있지만, informal의 방법도 있다
⭐️ 6.3 Architectural Patterns
아키텍처 구성, 장점, 아키텍처 사용 예시
Layered architecture
Client-server architecture
- 다수의 클라이언트가 다수의 서버 사용 가능
- ex) 웹
Model-View-Controller (MVC)
- 아이디어
: 같은 데이터를 공유하는 여러 뷰를 만든 경우, 하나의 뷰에서 데이터를 변경하더라도 실제 모델의 데이터로도 반영이 되어야 하고, 다른 뷰에서도 바뀐 데이터를 표시해야 한다.
- ex) GUI
Event-driven control
- 버스와 정류장의 관계라고 생각하면 되겠어요
- 한 sub-system (정류장)이 사라져도 문제가 되지는 않아요 -> sub-system 간 의존성이 없음
- publish : 이벤트를 보내는, subscribe : 이벤트를 받는
- ex) 사물인터넷, 홈 오토메이션
Repository architecture
Pipe and filter architecture