dongdorodongdong
객체지향 개발 방법론 본문
특징
- 재사용율이 높다
- 유지보수 향상
- 사용자 중심, 대화식 프로그램 등 대형 프로젝트 개발에 적합
- 각 개발 단계의 순서가 뚜렷하게 구별되지 않음
- 분석, 설계 및 구현 단계들 사이에 의미적 갭이 크지 않다.
- S/W 위기의 해결책으로 채택되어 사용
분석
- 정의
- S/W를 개발하기 위한 업무를 객체와 속성, 클래스와 멤버, 전체와 부분등으로 나누어서 분석해 내는 기법 - 특징
- 클래스, 객체, 속성, 연산들을 표현해서 모형화를 함 (ERD)
- 객체는 인스턴스화 되고, 클래스를 식별
- Rumbaugh 분석 기법을 이용
- 객체의 이름과 상태, 행위들을 개념적으로 파악
설계
- 특징
- 시스템을 구성하는 객체, 속성, 연산을 인식하는 것이 가장 중요
- 문서화할 때 계층차트를 이용하여 객체와 부객체의 계층적 구조를 보여주게 함
- 객체는 순차적, 동시적으로 구현할 수 있음
- 서브 클래스와 메세지 특성을 세분화
- 객체들을 클래스로 정의하고 상관관계를 상속단계로 정의
- 객체를 속성과 연산으로 정의, 접근방법을 구체화
구현
- 특징
- 절차 중심 프로그래밍 기법이 아님
- 정의된 클래스들에 대해 특정언어를 이용하여 1:1로 정의
테스트
- 순서
1. 단위(class) 테스트
2. 통합 테스트
3. 검증과 시스템 테스트
분석 방법론
- 정의
- 요구사항을 분석하여 이와 관련된 모든 클래스, 속성, 연산, 관계 등을 정의하여 모델링하는 작업 - Booch
"미시적, 거시적 개발 프로세스를 모두 사용하는 분석 방법"
"클래스와 객체들을 분석, 식별하고 속성과 연산을 정의"
"절차지향-동사 / 객체지향-명사" - Jacobson
"Use Case를 사용" - Wirfs-Brock
"분석과 설계간 구분이 없음"
"고객 명세서를 평가해서 설계작업까지 연속으로 수행" - Coad, Yourdon
"E-R 다이어그램 사용"
"주로 관계를 분석" - Rumbauh
"가장 일반적으로 사용"
"S/W 구성요소를 그래픽 표기법을 이용하여 모델링"
"객, 동, 기"
Object (객체)
- 정의
- 현실 세계의 개체
- 서로 상호작용은 메세지를 통해 이루어짐
- 데이터와 함수를 묶어 놓은 하나의 S/W 모듈 - 특징
- 객체마다 각각의 속성, 상태를 갖고 있다.
- 식별성을 가진다
- 객체의 메소드는 다른 객체들로부터 메세지를 받았을 때 수행
- 행위에 대하여 그 특징을 나타낼 수 있다.
- 일정한 기억장소를 가지고 있다.
Class (클래스)
- 정의
- 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
- 공통된 속성과 연산을 갖는 객체의 집합
- Instance : 클래스에 속한 각각의 객체
Message (메세지)
- 정의
- 객체들 간의 상호작용을 하는데 사용되는 수단
- 메세지가 전달되면 메소드를 시작
Method (메소드)
- 정의
- 객체지향 시스템에서 함수, 프로시저에 해당하는 연산기능
- 메세지를 받아 실행해야 할 객체의 구체적인 연산
Encapsulation (캡슐화)
- 정의
- 자료, 연산 등 정보처리에 필요한 기능을 테두리로 묶는 것
- 정보 은폐 - 특징
- 외부에서 변경을 못한다
- 프로그램 변경에 대한 오류의 파급효과가 적다
- 재사용이 용이하다
- 객체간의 인터페이스 단순화
- 응집도 향상, 결합도 감소
Information Hiding (정보은폐)
- 정의
- 객체가 다른 객체로부터 자료를 숨기고 자신의 연산만을 통해 접근을 허용
Inheritance (상속)
- 정의
- 상위 클래스의 메소드, 속성을 하위 클래스가 물려 받는 것
- 다중 상속
"한 클래스가 여러 상위 클래스로부터 상속 받는 것"
Abstraction (추상화)
- 정의
- 불필요한 부분을 생략하고 속성 중 중요한 것에만 중점
- 모델화
Polymorphism (다형성)
- 정의
- 한 메세지에 의해 객체가 연산을 수행할 때 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 서로 다른 클래스들이 동일한 메소드명을 사용
Rumbaugh 분석 기법
- 절차
1. 객체 모델링
2. 동적 모델링
3. 기능 모델링 - 객체 모델링
- 객체를 찾아내어 객체들의 특성을 규명 - 동적 모델링
- 상태도를 이용하여 객체들의 제어 흐름, 상호 반응 연산 순서 등 동적인 행위를 표현 - 기능 모델링
- DFD를 이용하여 객체에서 수행되는 동작을 기술
1. 입출력 결정
2. DFD 작성
3. 기능의 내용을 상세히 기술
4. 제약사항을 결정하고 최소화
'Software Engineering' 카테고리의 다른 글
소프트웨어 재사용/재공학/역공항 (0) | 2019.04.15 |
---|---|
프로젝트 관리 (0) | 2019.04.15 |
소프트웨어 생명 주기 (0) | 2019.04.13 |
구조적 개발 방법론(5. 디버깅 / 6. 유지보수) (0) | 2019.04.13 |
구조적 개발 방법론(3. 구현 / 4. 검사) (0) | 2019.04.13 |