객체 지향 방법론

반응형
  • 객체 지향 방법론의 개요
    • 정의
      • 프로그램을 객체와 객체 간의 인터페이스 형태로 구성하기 위하여 문제 영역에서 객체, 클래스 및 이들 간의 관계를 식별하여 설계 모델로 변환하는 방법론
      • 복잡한 메커니즘의 현실 세계를 사람이 이해하는 방식으로 시스템에 적용시키는 개념으로, 이를 위해 객체, 클래스, 메시지를 기본 모형으로 제시
    • 필요성
      • 객체 지향 시스템을 개발하기 위한 방법론이 필요
      • 소프트웨어 위기와 낮은 생산성의 극복이 필요
      • 반복적인 유사 프로그램의 개발로 인한 오버헤드 발생의 절감을 위해 필요
    • 특징
      • 대부분 기존의 폭포수 모델을 근간으로 함
      • 분석, 설계, 구현의 벽이 없고 일관성, 추적성, 재사용성, 유지보수성 향상
      • 모형의 적합성, 즉 현실 세계 및 인간의 사고 방식과 유사
         
  • 객체 지향 방법론의 절차 및 단계별 작업 항목
    • 절차
    • 단계별 작업 항목
단계 작업 항목 설명
객체 지향 분석 객체 모델링
  • 시스템 정적 구조 포착
  • 추상화, 분류화,일반화, 집단화
   동적 모델링
  • 시간의 흐름에 따라 객체 사이의 변화를 조사
  • 상태, 사건, 동작
   기능 모델링
  • 입력에 대한 처리 결과에 대한 확인
객체 지향 설계 시스템 설계
  • 시스템 구조를 서브 시스템으로 분해
  • 성능 최적화 방안, 자원 분배 방안
   객체 설계
  • 상세 내역을 모형으로 개발의 상세화
  • 구체적 자료구조와 알고리즘 구현
객체 지향 구현 객체 지행 언어(객체,클래스)로 상속 지원
  • C++, JAVA

   

  • 대표적인 객체 지향 방법론의 종류
    • Rumbaugh의 OMT(Object Modeling Technique)
      • 특징
        • 실세계에 대한 모형화를 추상화, 캡슐화, 모듈화, 계층화를 통해 수행
        • 객체 지향 분석, 객체 지향 설계 및 구현 단계로 구성
        • 분석의 강점(객체 모형, 동적 모형, 기능 모형)
      • 객체 지향 분석
      • 실세계를 이해하기 위한 모형화 작업
구분 내용 산출물
객체모형 시스템의 정적 구조 파악(객체 식별, 관계 정의, 클래스의 속성(Attribute)과 연산 기능 정의) 객체도(Object Diagram)
동적모형 동시에 활동하는 객체들의 제어 흐름, 상호 반응 및 연산 순서를 표현 상태도(State Diagram)
기능모형 시스템 내에서 데이터 값이 변하는 과정을 표현 자료 흐름도(DFD)
  • 객체 지향 설계
  • 실세계의 문제 영역에 대한 표현을 소프트웨어로 된 해결 영역으로 사상
구분 내용
시스템 설계
  • 전체 시스템의 구조 결정, 시스템을 서브 시스템으로 분해
  • 동시성, 프로세서와 작업의 관계, 데이터 관리 등을 결정
객체 설계
  • 객체 모형의 구체화 작업
  • 자료구조와 알고리즘을 정의
  • 구현
    • 세부 객체 모형, 동적 모형, 기능 모형 및 기타 문서를 사용하여 시스템을 구현
    • 객체 지향 언어를 사용하면 가장 용이하지만 비객체 지향 언어를 사용하여 구현도 가능
  • Booch의 OOD(Object Orient Design)
    • 특징 : 설계만 존재
    • 분석 : 정적 모델과 동적 모델로 표현
정적모델
  • 논리적 관점을 표현(클래스도, 객체도)
  • 물리적 관점을 표현(구조도, 프로세스 구조도)
동적모델
  • 실세계의 사건 발생에 의해 동작되어야 할 일들을 표현(상태도, 타이밍도)
  • 개발 프로세스
클래스와 객체 식별
  • 문제 영역으로 클래스와 객체를 식별
  • 객체 사이의 행위 메커니즘을 나타내는 객체도 생성
클래스와 객체 식별
  • 객체 사이의 프로토콜을 결정(객체의 생성으로 부터 소멸에 이르기까지의 상태와 사건의 흐름으로 표현)
클래스와 객체의 관계 식별
  • 객체의 사용성, 상속성, 관계성을 확립
  • 객체의 정적/동적 성질, 메시지 동기화, 실행 타이밍 표현
구현
  • 설계 결정을 검토하여 휴리스틱(Heuristic)한 방법으로 클래스를 모듈에 할당하고 프로그램을 프로세서에 할당
  • Jacobson의 OOSE(Object Oriented Software Engineering)
    • 특징
      • 시스템의 변화에 유연성이 있음
    • 분석
      • 분석 모델은 프로그래밍 언어로 구현하기에는 정형적이지 못함(연산, 인터페이스, 파라미터 등의 정제화 필요)
      • Use Case : 시스템과 사용자의 연관성 식별
      • Actor : 정의 및 역할 작성 : Use Case Diagram, Use Case Description 작성
    • 설계 및 구현
      • 실제 시스템은 구현될 환경에 적합하도록 설계 모델로 변환되며 성능 요구 사항, 실시간 요구 사항과 동시성, H/W, 시스템 S/W, DBMS와 프로그래밍 언어를 고려해야 함
      • 객체 지향 설계를 진행하면서 분석 결과들이 시스템 구축에 적합한지 분석 모델을 통해 확인되고, 분석 모델에 대한 수정을 함
         
  • 객체 지향 방법론의 발전 동향
    • 객체 지향 기술의 발전
    • 객체 지향 방법론의 동향
      • 구축 과정 일부만이 아닌 모델링, 분석, 설계, 구현, 테스트 전 과정에 걸쳐 포괄적으로 적용하는 것이 효과적
      • 분산 객체 등을 통해 강력한 분산 환경을 구축하는 데 유용
      • 인간의 사고 방식과 유사하고 개발 접근이 쉬워 인공지능이나 신경망 같은 차세대 컴퓨터 산업에 응용 가능
      • CBD의 한 경로(Path)인 컴포넌트 개발에 객체 지향 분석, 설계 구현 기법이 사용되고 있음
      • 소비자들도 개발(Build) 위주의 소프트웨어가 아닌 구매(Buy) 위주의 소프트웨어 이용 패턴을 가질 수 있음
    • 객체지향 방법론의 한계점
      • 이진 형태의 파일을 연결하는 표준이 부재하며 각 객체는 동일 컴파일러를 사용해야 함.
      • 다른 언어간에 객체를 호출하거나 재사용은 거의 불가능함.
      • 완성된 이진형태의 객체를 변경하고자 하면 소스 레벨의 어플리케이션을 재컴파일 해야 함
      • 개발방법론은 전통적인 SDLC를 따르므로 문제점 인지 및 대응, 문서화에 제약이 따르며 절차적 프로그래밍에 익숙한 개발자에게는 충격이며, 적응력이 많이 떨어짐.
      • 개발 수준이 저수준의 추상화개념이므로, 실제로 재사용 가능한 소프트웨어 개발은 기대하기 어려움.
      • 개발의 생산성 및 유지보수성을 위한 아키텍쳐 및 표준적용이 어려움
      • 대규모 프로젝트에서의 확장성이 떨어짐.
반응형

'밥벌이 > 소프트웨어 공학' 카테고리의 다른 글

구조적 방법론  (0) 2010.08.30
정보 공학 방법론  (0) 2010.08.30
컴포넌트 기반 개발(CBD; Component Based Development) 방법론  (0) 2010.08.30
Agile 프로세스  (0) 2010.08.30
XP(eXtreme Programming)  (0) 2010.08.30