OOA - 객체지향 분석
요구사항으로부터 도메인 객체를 파악하고, 사용자와 시스템의 상호작용을 분석
Use-case Analysis
Domain model
System sequence Diagram
Operation contracts
비 기능적 요구사항도 함께 고려해야된다.
Supplementary Specification 항목에 정리
Glossary : 자주 나오는 어휘 정리
시스템이 올바른 일을 수행하는 것에 중점을 둠 → “What”
어떤 기능인지는 관심 없다.
어떤 일을 통해 원하는 요구사항을 얻을 수 있는지
OOD - 객체지향 설계
설계 작업에서는 일이 올바르게 동작하도록 하는데 중점을 둠 → “How”
요구사항을 만족할 수 있는 solution을 설계
OOA → OOD : 반복적이면서 점진적으로 수정해서 개선해 나감 (반복적 상호보완)
논리적 아키텍처
소프트웨어 클래스들을 package, subsystem, layer 과 같은 큰 단위로 구성 (in a static view)
소프트웨어 산출물을 논리적이라고 표현함
실제 서로 다른 운영체제나 네트워크로 연결되 물리적인 컴퓨터에 어떻게 배치할 것인 가는 결정하지 않고 논리적인 수준에서 구조를 고민
물리적인 것의 배치를 고려한 것은 deployment architecture 라고 함
deployment diagram
Package diagram 으로 논리적 아키텍처를 시작화할 수 있음
계층을 이용한 설계
계층(Layer) : 응집된 책임을 가지며 클래스, 패키지 또는 서브시스템의 그룹
기본 아이디어(Layered logical Architecture)
큰 규모의 시스템을 계층들로 조직화하고 각 계층은 연관된 책임을 가짐
응집력을 갖도록 관심 영역을 분리
더 높은 계층이 더 낮은 계층의 서비스를 호출할 수 있도록 계층이 구성
일반적으로 반대로는 구성되지 않음
장점
관심분리, 하위 수준과 상위 수준의 서비스 분리, 일반 서비스와 응용 종속적인 서비스의 분리 → 재사용성 증가
각 계층에 맞는 일만 신경써서 하면된다.
일부 게층만 새로운 구현으로 대체 가능 → 모듈성 증가
변경에 대한 파급효과를 줄일 수 있음 (ex. OSI 7계층)
팀 단위 분할 개발이 용이해짐
OO System에서 일반적인 계층 (Layered Architecture)
사용자 인터페이스 (presentation layer)
최상위 계층 - UI
액터와의 입출력을 담당