이전까지는 anlysis 단계였고 이제 design 단계를 시작해보겠다.
Logical Architecture
UP artifact는 Logical architect에 영향을 끼친다.
이때 주요한 입력은 Supplementary Specification이다.
logical architecture는 software class들이 정의된 package들로 정의된다.
UML package diagrams은 Logical Architecture의 Design model의 부분으로 나타난다.
여기서 Logical Architecure는 packages, subsystems, layers로 구성된 software classes들로 구성되어 있다.
Layer
layer는 classes, packages, subsystems가 긴밀하게 관계있는 그룹으로 이루어져 있다.
- 높은 layer는 낮은 layer를 부를 수 있지만 역은 성립하지 않는다.
- OO system에서의 layer의 종류
- User Interface
- Application Logic and Domain Objects
- Technical Services
layer는 strict layered architecture와 relaxed layerd architecture로 구성되어 있다.
- A strict layered architecure
- 상위 layer는 바로 하위에 있는 layer만 부를 수 있다.
- A relaxed layered architecture
- 상위 layer는 다양한 하위 layer를 부를 수 있다.
Package Diagrams
UML package diagrams는 logical architecture을 나타내기 위해 종종 사용된다.
여기서 UI, Domain, Technical Services는 layer이다.
layer는 separation of concerns의 특징을 갖고 있다. 이는 "lower" layer는 low-level, general services들을 가지고 있고 higher layers는 더욱 application specific을 가지고 있다.
몇몇 layer들은 새로운 구현으로 대체될 수 있다.
- lower-level (Technical Service, Foundation) layer들은 대체가 불가능하지만 UI, Application, Domain layers들은 대체가 가능하다.
Domain Layer and Domain Model
domain model과 domain layer는 같은 것이 아니다. domain model은 analysis 단계에서 발생하며, domain layer는 design 단계에서 발생한다. 단 "representational gap"을 줄여준다는 장점이 존재한다.
Tiers, Layer and Partitions
- Tier
- physical processing node의 의미로 넓게 사용된다. 이는 logical과 physical을 구조적으로 mapping을 시켜준다.
- Layer
- 시스템의 수직적 형태로 나타낸다.
- Partitions
- subsystem의 수직적 형태로 나타낸다.
Model-View Separation Principle
- non-UI와 UI를 직접적으로 연결 시키면 안된다.
- 이는 UI가 자주 변하기 때문에 non-UI도 맞춰서 변화시킬 수도 있기 때문이다.
- UI object에 application logic (ex. tax calculation)을 놓으면 안된다.
model이 직접적으로 view을 알 수 있게 하면 안된다.