RangA 2023. 5. 30. 01:54

02. 객체지향 개발 순서

01. 객체지향 개발 순서

1) 객체지향 개발 순서 개념

  • 객체지향 개발 방법은 최근 소프트웨어 제품의 전형적인 타입인 사용자 중심, 대화식 프로그램의 개발에 적합한 방식
  • 객체지향 설계와 분석은 전통적인 기법인 폭포수 모형처럼 단계가 명확히 구분되지 않음
  • 뚜렷이 구분되지 않기 때문에 분석 설계 및 구현 단계들 사이의 의미적 갭(Gap)이 작음

2) 객체지향 개발 순서 개념도




02. 객체 지향 분석(OOA : Object Oriented Amalysis)

1) 객체지향 분석의 특징

  • 객체지향 분석은 문제 영역의 분석 대상을 형식적인 전략으로 기술하는 단계
  • 소프트웨어를 개발하기 위한 비즈니스를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법
  • 분석가에게 주요한 모델링 구성 요소인 클래스, 객체, 속성, 연산들을 표현해서 문제를 모형화시킬 수 있게 해줌
  • 객체지향 관점은 모형화 표기법의 전후 관계에서 객체의 분류, 속성들의 상속, 메시지의 통신 등을 결합한 것
  • E-R 다이어그램은 객체지향 분석의 표기법으로 적합함

2) 객체지향 분석의 순서

  1. 객체 모델링(Object Modeling)
    • 문제 영역에서 요구되는 객체를 찾아내고 객체의 속성, 연산을 식별하는 단계
    • 객체, 속성, 연산을 식별함
    • 객체와 연관된 자료 구조를 표현함
  2. 동적 모델링(Dynamic Modeling)
    • 객체 모델링에서 생성된 객체 모형들의 행위, 상태, 조건을 파악하는 단계
    • 객체 행위 모형을 생성함
    • 사건(Event)과 상태(State)를 파악하여 상태도를 만듦
    • 상태 다이어그램이 활용됨
    • 조건(Condition)과 활동(Activity)들을 표시함
    • 사건 추적도를 사건 발생자의 관계로 설명하는 사건의 흐름도를 작성함
  3. 기능 모델링(Functional Modeling)
    • 입출력 결정 : 사용자의 요구를 분석하여 입력된 자료와 출력할 자료를 결정함
    • 자료 흐름도(DFD) : 객체들의 제어 흐름, 상호 반응 연산 순서를 나타내주는 과정
    • 기능의 내용을 상세히 기술 : 자료 흐름도에서 기능이 정해지면, 각 기능을 세부적으로 분석함
    • 제약사항을 결정하고 최소화 : 제한사항, 성능 등을 파악하여 전체적으로 문제점 발생을 최소화하도록 함

3) 객체지향 분석 방법론의 종류

  1. Rumbaugh(람바우) Method
    • 객체지향 분석을 3개의 모형인 객체 모형(Object), 동적 모형(Dynamic), 기능 모형(Functional)으로 분리하여 접근하는 방법
    • 객체 모형 -> 동적 모형 -> 기능 모형 순으로 분석함
    • 객체지향 분석 방법론 중 가장 대표적인 방법론
  2. E-R 다이어그램
    • 데이터 구조들과 그들 간의 관계들을 표현하고 객체 모형을 만드는 방법론
    • 주요키를 포함하는 객체의 속성을 모두 찾아냄
    • 기본적인 객체와 주요키를 정의하며, 객체 사이의 관계를 정의함
    • 1:N 관계를 단순화시키기 위해 속성 객체를 추가하며, 연관 관계를 정의하여 M:N 관계를 표현함
    • 각 객체를 정규화하고 누락된 개체 점검 및 클래스 구조가 필요한지 결정함
  3. Booch Method
    • 미시적 개발 프로세스(Micro Development Process), 거시적 개발 프로세스(Macro Development Process)로 접근하는 방법
    • 각 작업에 대한 다이어그램, 클래스 계층 정의, 클래스들의 클러스터링 작업을 수행함
  4. Coad와 Yourdon Method
    • 객체지향 분석 방법론 중 E-R 다이어그램을 사용하여 객체의 행위를 모델링함
    • 객체 식별, 구조 식별, 주체 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성되는 방법
  5. Jacobson Method
    • 사용자가 제품 또는 시스템과 어떻게 상호 작용하는지를 서술한 시나리오로 접근함
    • Use Case를 강조하여 사용하는 분석 방법
  6. Wirfs-Brocks Method
    • 분석과 설계 프로세스 간에 뚜렷한 구분이 없음
    • 고객 명세의 평가로 시작하여 설계로 끝나는 연속적인 프로세스로 접근하는 방법



03. 객체지향 설계(OOD : Object Oriented Design)

1) 객체지향 설계의 특징

  • 프로그램으로 실행될 수 있는 문제 영역의 분석 모형을 구체적인 절차로 표현하는 것
  • 최근 소프트웨어 제품의 전형적인 타입인 사용자 중심, 대화식 프로그램의 개발에 적합한 방식
  • 객체지향 설계에서 가장 중요한 작업은 시스템을 구성하는 클래스와 속성, 연산을 인식하여 클래스를 객체로, 속성을 자료 구조로, 연산을 알고리즘으로 표현하는 것

2) 객체지향 설계의 순서

  1. 객체 설계(객체 연산자 정의)
    • 객체 분석에서 정의된 요구 명세서를 기반으로 객체 연산자를 정의하여 설계함
    • 객체 모델 : 객체를 구성하고 있는 클래스와 속성을 객체와 자료 구조로 표현함
    • 동적 모델 : 설계 시 자료와 자료에 가해지는 프로세스를 묶어 정의하고 관계를 규명함
    • 기능 모델 : 서브 클래스와 메시지 특성을 세분화하여 세부 사항을 정제화함
  2. 시스템 설계(객체 인터페이스 결정)
    • 객체 설계 단계에서 정의된 객체 간의 인터페이스를 정하여 전체적인 시스템을 설계함
    • 분석된 객체 모형을 특성별로 구분한 서브 시스템으로 분할함
    • 데이터, 자원 관리 방법을 결정함
    • 객체와 그들의 부 객체(Sub-Object)의 계층적 구조를 보여주는 계층 차트를 그림
    • 객체 제어 방식을 결정함
      • 순차적(Sequentially) 제어 방식
        • 순서가 존재하는 객체 운영 방식
        • Ex) C++, Java
      • 동시(Concurrent) 제어 방식
        • 객체 사용을 동시에 수행하는 방식
        • Ex) Ada
      • 이벤트 중심(Event) 제어 방식
        • 사건이 발생할 때마다 객체가 수행되는 방식
        • Ex) Visual Basic

3) 객체지향 설계의 원칙

  1. 단일 책임의 원칙(SRP : Single Responsibility Principle)
    • 객체는 하나의 책임만 맡아 처리할 수 있게 해야 함
    • 낮은 결합도, 높은 응집성을 유지할 수 있음
  2. 개방 폐쇄 원칙(OCP : Open-Closed Principle)
    • 소프트웨어 개체는 확장에는 열고, 수정 시에는 닫혀있게 해야 함
    • 개체는 객체, 모듈, 함수 등이 있음
  3. 리스코프 치환의 원칙(LSP : Liskov Substitution Principle)
    • 서브 타입(상속받은 하위 클래스)은 어디에서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 함
  4. 인터페이스 분리의 원칙(ISP : Interface Segregation Principle)
    • 한 개의 일반적인 인터페이스보다 구체적이고 안전한 여러 개의 인터페이스가 좋음
    • 클라이언트는 자신이 사용하지 않는 메소드와 의존 관계를 맺으면 안 됨
    • 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 됨
  5. 의존성 뒤집기의 원칙(DIP : Dependency Inversion Principle)
    • 추상화 클래스에 의존하게 되므로, 구체적인 클래스에 의존하지 않도록 해야 함



04. 객체지향 프로그래밍(OOP : Object Oriented Programming)

1) 객체지향 프로그래밍의 특징

  • 객체지향 프로그래밍 언어를 선정함
  • 클래스를 정의(명시)하고 객체를 생성함
  • 클래스와 클래스의 계층을 정의함
  • 상속과 다형성을 활용함
  • 메시지를 통하여 객체 간의 상호 작용을 함



05. 객체지향 테스트(Object Oriented Testing)

1) 단위 테스트(Unit Testing)

  • 객체의 가장 작은 단위로 캡슐화된 클래스나 객체를 검사함

2) 통합 테스트(Integration Testing)

  1. 스레드 - 기반 테스트(Thread - Based Testing)
    • 시스템에 대한 하나의 입력이나 이벤트에 응답하는데 요구되는 클래스들의 집합을 통합함
    • 구조적 검사 기법에서는 하향식 통합 검사 방법과 유사하게 볼 수 있으며, 객체를 결합한 후 회귀 분석 검사를 실시함
  2. 사용 - 기반 테스트(Use - Based Testing)
    • 상위 클래스와 관계를 갖지 않는 수준에서 클래스들을 독립적으로 검사한 후 상위 클래스와 결합함
    • 구조적 검사 기법의 상향식 통합 방법과 유사하게 볼 수 있음
  3. 검증과 시스템 테스트
    • 사용자의 요구가 객체에 정확히 반영되었는지, 성능이나 인터페이스상 오류는 없는지 검사함