[소프트웨어공학] 객체지향 개발 방법론
객체지향 개발 방법론
객체지향 방법론의 정의
현실 세계의 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의 객체(Object)로 표현하는 개념으로 객체간의 메시지 통신을 통해 시스템을 구현하는 개발 방법
객체지향 기술의 장점
- 규모가 큰 대형 프로젝트에 적합
- 소프트웨어의 재사용률/확장성/유지보수 향상
- 신속하게 개발이 가능
- 사용자 타입 중심
- 대화식 프로그램 개발에 용이
객체지향 기술의 단점
- 설계의 어려움
- 규모가 크기 때문에 실행속도 저하
구성요소
- 클래스(Class)
같은 종류(또는 문제 해결을 위한)의 집단에 속한 속성(attribute)과 행위(behavior)를 정의한 것 - 객체(Object)
자신 고유의 데이터(attribute)를 가지며 클래스에서 정의한 행위(behavior)를 수행 - 인스턴스(Instance)
어떤 클래스에 속하는 구체적인 객체를 의미하며 클래스로 정의된 객체의 요소로 객체의 복사본이라 할 수 있다 - 어트리뷰트(Attribute)
객체 안에 존재하는 절대적 자료형.
객체에 존재하는 함수들이 동작하게 될 경우 같은 객체에 존재하는 어트리뷰트 값을 변경한다. - 메서드(Method)
객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것 - 메시지(Message)
Sender와 Receiver객체들간의 상호작용의 수단으로 다른 객체에 특정 작업을 요청하는 신호
주요 특징
- 캡슐화(Encapsulation)
연관된 속성(데이터)과 메소드(연산)을 하나로 묶어서 객체로 구성 - 추상화(Abstraction)
하위 객체의 공통된 특성을 묘사하기 위한 객체를 추상적인 객체. 이러한 추상적인 객체는 문제 대상의 공통 특성을 추출하여 객체를 정의하기에 유용하고 편리함을 제공한다 - 다형성(Polymorphism)
같은 상위 객체에서 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질 - 정보은닉(Information Hiding)
캡슐화된 객체 내부에 자료 구조나 함수의 기능을 외부의 영향을 받거나 주지 않도록 설계하는 방법 - 상속성(Inheritance)
상위클래스가 갖는 속성과 연산을 그대로 물려받는 것을 의미
객체지향 개발 순서
전통적인 구조적 개발 순서 구분처럼 단계가 분명하게 구분되지는 않는다.
- 계획
- 분석(OOA)
객체
모델링동적
모델링기능
모델링
- 설계(OOD)
- 객체 설계
- 시스템 설계
- 구현(OOP)
- 테스트 및 검증
- 단위 테스트
- 통합 테스트
- 검증과 시스템 테스팅
객체지향 분석(OOA : Object Oriented Analysis)
특징
- 문제 영역의 분석 대상을 형식적인 전략으로 기술하는 단계
- E-R 다이어그램은 객체지향 분석의 표기법으로 적합
- 클래스, 객체, 속성, 연산들을 표현해서 문제를 모형화
- 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해내는 기법
- 객체지향 분석의 순서(OMT : Object Modeling Technique, 람바우 방법)
- 객체 모델링(Object Modeling)
객체를 찾아내고 객체의 속성, 연산을 식별하는 단계 - 동적 모델링(Dynamic Modeling)
객체 모형들의 행위/상태/조건을 파악하는 단계 - 기능 모델링(Functional Modeling)
- 입출력 결정
자료 흐름도
- 객체들의 제어 흐름, 상호 반응 연산 순서를 나타내주는 과정
- 기능의 내용을 상세히 기술
- 제약사항을 결정하고 최소화
- 객체 모델링(Object Modeling)
객체지향 설계(OOD : Object Oriented Design)
특징
- 문제 영역의 분석 모형을 구체적인 절차로 표현
- 사용자 중심, 대화식 프로그램의 개발에 적합
- 시스템을 구성하는 클래스와 속성, 연산을 인식하여 클래스를 객체로, 속성을 자료 구조로, 연산을 알고리즘으로 표현하는 것
- 객체지향 설계의 순서
- 문제의 정의
- 요구 명세화
- 객체 연산자 정의(객체 설계)
객체 분석에서 정의된 요구 명세서를 기반으로 객체 연산자를 정의하여 설계 - 객체 인터페이스 결정(시스템 설계)
객체 설계 단계에서 정의된 객체 간의 인터페이스를 정하여 전체적인 시스템을 설계
데이터, 자원 관리 방법을 결정
객체는 순차적으로 또는 동시적으로 제어할지를 결정 - 객체 구현
- 객체지향 설계의 계층
-
Responsibilities Layer
속성과 연산들에 대한 메타 데이터와 알고리즘을 표현 -
Message Layer
객체와 객체 간의 인터페이스를 표현 -
Class & Object Layer
전체 객체를 구체적으로 표현 -
Subsystem Layer
요구사항을 지원하는 기술적인 기반 구조를 구현
-
객체지향 테스트
- 쓰레드 기반 테스트(Thread-Based Testing)
시스템에 대한 하나의 입력이나 이벤트에 응답하는데 요구되는 클래스들의 집합을 통합(구조적 검사 기법의 하향식 통합 검사 방법과 유사) - 사용-기반 테스트(Use-Based Testing)
상위 클래스와 관계를 갖지 않는 수준에서 클래스들을 독립적으로 검사한 후 상위 클래스와 결합(구조적 검사 기법의 상향식 통합 방법과 유사) - 검증과 시스템 테스트
사용자의 요구가 객체에 정확히 반영되었는지, 성능이나 인터페이스상 오류는 없는지 검사
객체지향 분석 방법론의 종류
-
람바우(Rumbaugh) Method
객체 모형, 동적 모형, 기능 모형으로 분리하여 접근하는 방법 -
E-R 다이어그램
데이터 구조들과 그들 간의 관계를 표현하고 객체 모형을 만드는 방법론 -
Booch Method
미시적 개발 프로세스, 거시적 개발 프로세스로 접근하는 방법.
각 작업에 대한 다이어그램, 클래스 계층 정의, 클래스들의 클러스터링 작업 수행 -
Coad & Yourdon Method
E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성되는 방법 -
Jacobson Method
사용자가 제품 또는 시스템과 어떻게 상호 작용하는지를 서술한 시나리오로 접근 -
Wirfs-Brocks Method
분석과 설계 프로세스 간에 뚜렷한 구분이 없고, 고객 명세의 평가로 시작하여 설계로 끝나는 연속적인 프로세스로 접근한 방법
댓글남기기