[SW Engineering] 7. UP (Unified Process)

이상윤·2024년 4월 21일
0

소프트웨어공학

목록 보기
11/11

OOAD (Object Oriented Analysis & Design)

  • Object-Oriented Analysis
    • 문제 domain 이해, 모델링
    • 구현의 기술적 세부 사항을 고려하지 않고, 객체와 그 관계, 동작을 정의하는 것이 목표
    • Use Case 분석, Domain Modeling 등의 기술 사용
  • Object-Oriented Design
    • 문제 공간 -> 해결 공간으로 전환
    • 선택한 기술의 특성을 고려하여 분석 모델을 개선
    • 클래스 설계, 상호작용 다이어그램 등을 통해 시스템의 동작 설정

Unified Process (UP)

반복적이고 증분적이며 객체 지향 프로그래밍의 원리를 사용하도록 특별히 설계된 소프트웨어 개발 방법론

  1. 특징
  • 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 단계

  1. Inception
    대략적인 비전, 비즈니스 케이스, 범위, 최종 비용 등을 추정한다.
  2. Elaboration
    비전을 정제하고, core architecture 정립을 목표로 하여 고위험 요소를 제거한다.
  3. Construction
    반복적인 개발을 통해 나머지 구성요소와 기능을 개발하고 저위험 요소를 해결한다.
  4. Transition
    최종 사용자가 사용할 수 있도록 베타테스트 하고 배포한다.

UP 용어

  • Artifact: 작업 산출물
    코드, 그래픽, 데이터베이스 스키마, 문서, 다이어그램, 모델 등
  • Dicipline: 특정 범위에 속하는 관련된 작업과 산출물
    • 작업(work activity): use case 작성, 모듈 구현 등
    • 산출물(artifact): use case, 소스파일 등

0개의 댓글

관련 채용 정보