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