OOAD (Object Oriented Analysis & Design)
- Object-Oriented Analysis
- 문제 domain 이해, 모델링
- 구현의 기술적 세부 사항을 고려하지 않고, 객체와 그 관계, 동작을 정의하는 것이 목표
- Use Case 분석, Domain Modeling 등의 기술 사용
- Object-Oriented Design
- 문제 공간 -> 해결 공간으로 전환
- 선택한 기술의 특성을 고려하여 분석 모델을 개선
- 클래스 설계, 상호작용 다이어그램 등을 통해 시스템의 동작 설정
Unified Process (UP)
반복적이고 증분적이며 객체 지향 프로그래밍의 원리를 사용하도록 특별히 설계된 소프트웨어 개발 방법론
- 특징
- Iterative: 프로젝트를 여러개의 미니 프로젝트 또는 반복으로 나눔
- Use-Case 중심
- Architecture-Centric: 향후 프로젝트 반복을 지원할 수 있는 강력하고 유연한 시스템 강조
- Risk-driven and Client-driven
risk 높은 부분을 찾아내고, 고객이 가장 신경쓸 부분에 대한 가시적인 특징을 만든다.
- Risk-driven
초기 반복은 중심 아키텍처를 빌드하고, 테스트하고, 안정화하는데 초점을 둔다. (Solid한 Architecture를 만들지 못하면 위험도가 높다)
Agile Modeling
- Agile 방식을 채택한다는 것이 어떤 modeling을 스킵한다는건 아니다.
- (문서화가 아닌) 이해와 의사소통을 지원하기 위함이다.
- 설계의 전부 (또는 대부분)에 UML 적용은 피해야 한다.
- 빠른 입력과 변화를 지원하기 위해 가능한 가장 간단한 도구를 사용한다. 손으로 그리는 등.
- 혼자서 화이트보드 모델링 하지 말고, 2-3인에서 진행해라. (모델링은 발견, 이해, 공유가 목적임)
- 모델을 병렬로 만들어라
- 화이트보드 스케칭 단계에서 간단한, 그리고 충분히 좋은 표기법을 사용해라
- 모든 모델이 부정확하며 최종 코드나 설계가 다르다는것을 알아야 한다.
- 개발자가 직접 Object Oriented 디자인 모델링을 수행해야 한다.
UP 방법
고정된 길이의, 반복적이고, 진화적이고, 적응형인 개발이 특히 중요하다
- 부가적인 best practices & key concepts:
- 초기 반복에서 높은 위험도, 높은 가치의 이슈를 다룬다.
- 진화, 피드백, 요구사항에 대해 지속적으로 user 참여를 유도한다.
- 초기 반복에서 core architecture(주요 구조)를 만든다
- 퀄리티 체크를 자주하고, 테스트를 빨리/자주/현실적으로 진행한다
- use case를 다방면에서 사용한다
- UML등의 시각적 모델링을 사용한다
- requirements들을 신경써서 관리한다
- 현상관리에 신경쓴다
UP 단계
- Inception
대략적인 비전, 비즈니스 케이스, 범위, 최종 비용 등을 추정한다.
- Elaboration
비전을 정제하고, core architecture 정립을 목표로 하여 고위험 요소를 제거한다.
- Construction
반복적인 개발을 통해 나머지 구성요소와 기능을 개발하고 저위험 요소를 해결한다.
- Transition
최종 사용자가 사용할 수 있도록 베타테스트 하고 배포한다.
UP 용어
- Artifact: 작업 산출물
코드, 그래픽, 데이터베이스 스키마, 문서, 다이어그램, 모델 등
- Dicipline: 특정 범위에 속하는 관련된 작업과 산출물
![](https://velog.velcdn.com/images/sang1234yun/post/1688b7d2-76ca-426e-a8bb-d2b1986592a8/image.png)
- 작업(work activity): use case 작성, 모듈 구현 등
- 산출물(artifact): use case, 소스파일 등