객체지향분석 및 설계 수업 내용 정리 -1

yooom·2023년 4월 19일
0

OOAD-01

객체지향분석 및 설계 개요

Object Oriented Analysis and Design

  • OOAD의 핵심 기술을 배운다
  • UML(Unified Modeling Language)을 배운다
  • object간의 상호작용과 책임을 부여하는 패턴을 배운다
  • 통합된 프로세스-반복 발전 과정을 배운다

Analysis와 Design?

Analysis

  • 해결책이 아닌 문제에 대한 조사를 강조 (problem and requirement)
  • 요구사항을 분석

Design

  • 구현보다 개념적인 솔루션을 강조 (conceptual solution)

Object-oriented analysis and design?

Object-oriented analysis (객체 지향 분석)

  • 사물 또는 개념을 찾고 설명하는 데 중점을 둠

Object-oriented design (객체 지향 설계)

  • 소프트웨어 객체를 정의하고, 요구사항을 충족하기 위해 어떻게 객체들을 collaborate 할 건지에 중점을 둠

객체 지향은 객체의 표현을 강조한다

  • 케이스 1

OOAD-02

OOAD의 사례들 보기

먼저 객체지향분석과 객체지향설계 개념 복습

사례 1 : Dice Game

4단계가 있는데, 1. 유스케이스를 정의하고 / 2. 도메인 모델을 정의한다. / 3. 다이어그램들의 상호작용을 정의하고, / 4. 클래스 다이어그램 설계를 정의한다.

1. Define Use Cases


관련된 도메인 프로세스들을 설명한다.
use case도 작성

2. Define a Domain Model

객체 지향 분석은 다음과 관련됨

  • 객체별로 분류하는 관점에서 도메인에 대한 설명을 생성함

도메인 분해는 컨셉, 속성(attributes), 연관(associations)의 식별을 포함함

도메인 개념 or 객체를 보여줌

dice game의 도메인 모델을 분류함

3. Define Interaction Diagrams

객체지향설계는 소프트웨어 객체를 정의하고 그들의 collaborations를 정의하는데 관련이 있다.

Interaction diagram

  • 소프트웨어 객체 간의 메시지 흐름을 보여주고, methods의 호출도 보여준다.

4. Define Design Class Diagrams

클래스 다이어그램 설계와 함께 클래스를 정의하는 static view를 생성한다.

  • 클래스의 속성과 메소드를 설명함

OOAD-03

: 반복적이고 진화적인 프로세스

The Unified Process

UP 개발 방법론

UP(통합 프로세스)는 객체 지향 시스템을 구축하기 위한 대중적인 소프트웨어 개발 프로세스로 부상했다.

  • 다른 표현으로 the Rational Unified Process or RUP

The Unified Process - 1

UP 아이디어 : 반복적인 개발

  • UP는 소프트웨어 개발의 모범 사례를 장려함
  • 반복 개발
  • 이 접근 방식에서 개발은 이와 같이 구성됨
    - 짧고,
    • 고정되고 (ex. 4주)
    • iterations라고 불리는 미니 프로젝트
  • 각각의 결과는 테스트되고, 통합되고, 실행가능한 시스템이다!

The Unified Process - 2

각각의 반복은 요구사항 분석, 설계, 구현, 테스트 활동을 포함함
시스템은 "반복:iteration"을 통해 시간이 지날수록 점차 성장함. 그리고 이 접근은 또한 반복적이고 점진적인 개발(iterative and incremental development)이라고도 불림

Iterative Development

  • Development : 짧은 시리즈, 고정된 길이의 미니 프로젝트를 iterations라고 부름
  • 각각의 iteration은 각각 자신의 요구사항 분석, 설계, 구현, 테스트 활동을 포함함

    iterations은 길이 또는 타임박스에 고정됨
    반복 N의 피드백은 반복 N+1에서 요구사항과 설계의 개선과 적응으로 이어짐
    시스템은 점차 성장함

Benefits of Iterative Development of the Unified Process

UP의 반복 개발로 얻는 이점들

  • 기술, 요구사항, 목적, 유용성 측면에서의 고위험의 조기 완화
  • 눈에 보이는 초기 진행 상황
  • 초기 피드백, 사용자 참여와 적응을 통해 이해 관계자의 실제 요구사항을 보다 가깝게 충족하는 세련된 시스템으로 이끎
  • 복잡성을 관리함
    - 팀이 "분석 마비"나 오랫동안 복잡한 단계에 압도되지 않게 함
  • 반복을 통한 학습은 꾸준한 반복으로 개발 프로세스 자체를 개선하는데 체계적임

OOAD -04

: 소프트웨어 개발 프로세스

목차

  • 소프트웨어 개발 프로세스
    -Waterfall Model
    -Iterative Model : Unified Process
    -Agile Model : UP에서 나온, UP보다 작은 개념
    -Model-Driven Development

Waterfall Model

이 모델은 일련의 연결된 순차적 활동으로 라이프 사이클을 구성한다.

  • Requirements specification : 요구사항 명시화
  • Design : 설계
  • Implementation : 구현
  • Integration : 완성
  • Testing : 테스트
  • Installation : 설치
  • Maintenance : 유지

이 단계를 다하면 끝이다?
아티팩트 개정에 대해 허용된 후, 이전 단계나 이후 단계에서 피드백을 할 수 있다. -> 피드백은 어떤 단계에서도 할 수 있다?

아티팩트 개정에 대해 허용된 이후 단계에서 이전 단계로의 피드백 경로

Iterative Model

가장 잘 알려진 iterative process로 Unified Process(UP)가 있다.

각 iteration에는 4단계가 있다.

  • Inception : 처음 -> iteration을 계속하면서 완성해나감
  • Elaboration : 정교화
  • Construction : 구축
  • Transition : 이행

선택된 use case는 각각의 iteration의 목표를 정의하고, iteration은 가장 큰 위험을 먼저 해결하도록 순서를 지정함

Unified Process

물결 : 시간을 소요하는 정도
하나의 inception 안에 waterall이 있음 -> waterfall과 같은 정형화된 disciplines을 여러개 함 (= UP), 하나의 waterfall을 끝내면 다음 phase 함

Disciplines 9개!

  • Business Modeling : 비즈니스 모델링
  • Requirements : 요구사항
  • Analysis & Design : 분석 및 설계
  • Implementation : 구현
  • Test : 테스트
  • Deployment : 배포
  • Configuration & Change Mgmt : 구성 및 변경 관리
  • Project Management : 프로젝트 관리
  • Environment : 환경

elaboration이 다 끝나고 나서 돌아가는 프로그램이 있나? -> 있다. implementation이 있으니까!

UP의 Lifecycle Phases

  1. Inception : 처음
    비전(vision), 비즈니스 사례, 범위(scope), 모호한 추정치를 대략적으로 정하는 단계
  2. Elaboration : 정교화
    정제된 비전, 핵심 아키텍처의 반복 구현, 고위험 해결, 대부분의 요구사항범위 식별, 보다 현실적인 추정 -> 핵심적인 구조로 가장 위험한 것을 먼저 해결하려고 함
  3. Construction : 구축
    나머지 위험도가 낮은 쉬운 요소의 반복 구현 및 배포 준비 -> 그다음 리스크를 해결할 수 있게 반복 구현함
  4. Transition : 이행
    베타 테스트, 배포

Schedule-oriented terms in the UP

최종 정리~

UP의 개발 사이클은 inception, elaboration, construction, transition으로 나눈다. inception은 무엇을 할지에 대한 비전, 비즈니스 사례, 범위, 추정치를 대략적으로 정하는 단계이고, elaboration은 핵심적인 구조를 반복 구현하는데, 특히 가장 위험한 것을 먼저 해결하려고 한다. construction은 나머지 요소를 반복 구현하며 배포를 준비하고, transition은 베타 테스트, 배포를 한다.

elaboration이 끝나면, elaboration과 construction 사이에 milestone을 하는데, milestone은 중요한 결정이나 평가가 발생할 때 iteration의 end point다.

construction 기간 중에는 release를 하는데, 이는 최종 제품의 안정적으로 실행가능한 하위 집합이다. 각각의 반복 끝은 미숙한?(마이너) 릴리즈다.

transition이 끝나면, final production release를 하는데, 이 시점에서는 제품을 사용하기 위한 시스템이 릴리즈된다.

increment : 2개의 후속 반복 릴리스 간의 차이점

Agile Model

Scrum, eXtreme Programming, Crystal Star 등의 방법론을 통한 에자일 소프트웨어 개발

모든 증가와 반복: (up의 특성)

  • 작동하는 소프트웨어의 빠르고 빈번한 제공
  • 개발자와 고객 간의 긴밀한 협업
  • 자기 조직화 팀 (-> 소규모 팀)
  • 변화하는 상황에 따른 적응에 중점을 둠 (ex. 늦게 도착하는 요구사항)

팀워크, 적응성, 긴밀한 협업에 중점을 둠

가정 : 요구사항은 항상 변하고, 프로젝트 수명 주기 동안 계속 변경됨

교수님 설명
돌아가는 프로그램을 빨리 만들어야 할 때, 소규모 팀에서 사용. 빠른 피드백.

Model-Driven Development

  • 모델은 시스템의 추상화 (표현) 이다.
  • 개념적인 뷰에서 가장 작은 구현 세부사항 가치까지 다양한 추상화의 레벨에서의 모델을 생성하여 가치를 제공한다.
  • 코드가 자동으로 생성되는 도메인의 모델을 만든다.
  • 인간은 돌아가는 코드를 생성하기 위해 PDM(플랫폼 정의 모델)과 결합된 PIM(플랫폼 독립 모델)을 생성한다.
  • PIM은 기능적 요구사항을 순수하게 구현하는 반면, PDM은 플랫폼 특성과 품질 속성을 처리한다.

모델은 시스템의 추상화(표현)입니다.
• 개념적 보기에서 가장 작은 구현 세부 사항에 이르기까지 다양한 수준의 추상화에서 모델을 생성하여 가치를 제공합니다.
• 코드가 자동으로 생성되는 도메인의 모델을 만듭니다.
• 인간은 실행 중인 코드를 생성하기 위해 PDM(플랫폼 정의 모델)과 결합된 PIM(플랫폼 독립적 모델)을 생성합니다.
• PIM은 기능적 요구 사항을 순수하게 구현한 반면 PDM은 플랫폼 특성 및 품질 속성을 처리합니다

OOAD-05

: UP 단계와 예시들

우선 복습!!

가장 중요한 UP 그림

1. Inception
비전, 비즈니스 모델, 범위, 모호한 추정치를 대략적으로 정하는 단계
2. Elaboration
정제된 비전, 위험도가 높은 핵심적인 구조를 반복 구현,
3. Construction
나머지 위험요소가 낮은 것들을 반복 구현, 배포 준비
4. Transition
베타 테스트, 배포

More!!

  1. Inception
    요구 사항 단계가 아님
    타당성 단계
    • 계속 또는 중지 결정을 뒷받침할 만큼 충분한 조사가 이루어진 경우
  2. Elaboration
    핵심 아키텍처는 반복적으로 구현됨
    고위험 문제가 완화됨

Details in the Unified Process

UP Disciplines

  • Business Modeling : 비즈니스 모델링
  • Requirements : 요구사항
  • Analysis and Design : 분석 및 설계
  • Implementation : 구현
  • Test : 테스트
  • Deployment :배포

UP는 작업 활동을 설명한다.

  • 분야:disciplines (원래 workflow라고 함)
  • 분야는 하나의 주제 영역에 있는 일련의 활동(및 관련 아티팩트)


대부분의 분야에 대한 작업을 포함하고 안정적인 실행 파일로 끝나는 미니 프로젝트

More in UP Disciplines

  • 구현은 시스템을 프로그래밍하고, 구축하는 것을 의미한다. 배포하는 게 아니다!!
  • "environment" 분야(discipline)는 도구를 설정하고 프로젝트의 프로세스를 사용자 정의하는 것을 말한다.
    - 도구와 프로세스 환경 설정

Artifacts of the UP

Business Modeling

도메인 모델 아티팩트

  • 응용 프로그램 도메인에서 주목할만한 개념을 시각화함
  • 단일 애플리케이션을 개발할 때, domain object modeling을 포함한다.

요구사항

  • 기능적, 비기능적 요구사항을 포착한 유스케이스 모델과 추가 사양 아티팩트
    • 유스케이스 작성과 비기능적 요구사항을 식별하는 것 같은 적용을 위한 요구사항 분석

설계

  • 소프트웨어 개체를 디자인하기 위한 디자인 모델 아티팩트
    • 전체 아키텍처, 개체, 데이터베이스, 트워킹 등을 포함한 모든 설계 측면

UP Phases and Iterations

  • OOAD 코스는 InceptionElaboration 단계에 중점을 둔다!
  • Business Modeling, Requirements, Design 분야(discipline)에 초점을 맞춘다!
    - 요구사항 분석, 패턴, UML이 주로 적용되는 곳

Development Case

Environment 분야에서의 아티팩트
프로젝트에 대한 UP 아티팩트의 선택은 짧은 문서로 작성될 수 있ㅏ.

POS Terminal System

을 구현하는 것에 대해 생각해보기

무슨 개념을 시스템이 필요로 하는지,
POST System의 요구사항을 나타내야함

0개의 댓글