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