22 객체 지향 분석과 설계(Object-oriented Systems Analysys and Design)
객체 지향 이란?
SIMULA라는 시뮬레이션 언어에서 근원
∙Booch
Major : abstraction, encapsulation, modularity, and hierachy
Minor : typing, concurrency, and persistency
∙Cardelli
Inheritance and polymorphism
∙Coad
Class and objects, inheritance, and communication with messages
∙Khoshanfian
Abstract data type, inheritance, and object identity
∙Rumbaugh
Identity, classification, polymorphism, and inheritance
객체 지향 이란?
SIMULA라는 시뮬레이션 언어에서 근원
∙Booch
Major : abstraction, encapsulation, modularity, and hierachy
Minor : typing, concurrency, and persistency
∙Cardelli
Inheritance and polymorphism
∙Coad
Class and objects, inheritance, and communication with messages
∙Khoshanfian
Abstract data type, inheritance, and object identity
∙Rumbaugh
Identity, classification, polymorphism, and inheritance
객체 지향 설계
추상화(Abstraction)
정보 은폐(Information hiding)
모듈화(Modulality)
추상화(Abstraction)
정보 은폐(Information hiding)
모듈화(Modulality)
1 객체 지향 개념(The Object Oriented Idea)
객체 지향 프로그래밍 특징
(1) 객체(Object)
(2) 클래스(Classes)
(3) 메시지(Messages)
(4) 캡슐화(Encapsulation)
(5) 상속(Inheritance)
(6) 다형성(Polimolphism)
객체 지향 프로그래밍 특징
(1) 객체(Object)
(2) 클래스(Classes)
(3) 메시지(Messages)
(4) 캡슐화(Encapsulation)
(5) 상속(Inheritance)
(6) 다형성(Polimolphism)
1.1 Objects(객체)
객체란?
∙어떤 실세계의 일이나 사건의 컴퓨터 표현
∙시스템의 하나의 물리적인 개체(entity)로서 어떤 행위를 할 수 있는 한 단위
∙시스템을 구성하는 실체이며, 한 개체의 상태변화를 표현하는 기본단위
객체란?
∙어떤 실세계의 일이나 사건의 컴퓨터 표현
∙시스템의 하나의 물리적인 개체(entity)로서 어떤 행위를 할 수 있는 한 단위
∙시스템을 구성하는 실체이며, 한 개체의 상태변화를 표현하는 기본단위
객체 식별
1) 시스템 분석자료로부터 명사 또는 명사절을 추출하여 별도의 표를 작성
2) 동의어 등과 명령적인 절차명을 정리
3) 다음 사항중 하나에 속하는지를 판단하여 객체를 식별.
- 외부 실체(external entity)
- 사물(thing)
- 조직(organization units)
- 상황이나 사건(occurences or events)
- 장소(places)
- 역할(roles)
- 객체구조(structures)
4) 수행절차나 연산, 행위같은 명령을 객체로 식별하지 않았는지를 점검.
∙ 속성(Attribute) : 객체를 정의 또는 설명해주는 것
∙ 메소드(Method) : 객체 내에 포함된 하나 이상의 속성 값을 변경시키는 것
1) 시스템 분석자료로부터 명사 또는 명사절을 추출하여 별도의 표를 작성
2) 동의어 등과 명령적인 절차명을 정리
3) 다음 사항중 하나에 속하는지를 판단하여 객체를 식별.
- 외부 실체(external entity)
- 사물(thing)
- 조직(organization units)
- 상황이나 사건(occurences or events)
- 장소(places)
- 역할(roles)
- 객체구조(structures)
4) 수행절차나 연산, 행위같은 명령을 객체로 식별하지 않았는지를 점검.
∙ 속성(Attribute) : 객체를 정의 또는 설명해주는 것
∙ 메소드(Method) : 객체 내에 포함된 하나 이상의 속성 값을 변경시키는 것
1.2 클래스(Classes)
유사한 객체들의 집합
각 객체 : 클래스의 실체(instance)라고 한다
객체는 클래스를 설정함으로써 생성될 수 있다
실체는 클래스에 create나 new 등의 메시지 전달로 생성
1.3 메시지(Messages)
객체의 행위(Behavior)를 표현
1.4 캡슐화(Encapsulation)
∙추상화된 객체의 구현을 은닉하는 것
∙시스템의 한 콤포넌트의 내부 구현이 다른 콤포넌트에 의존하지 않는 것
∙추상화는 객체의 외부 인터페이스에 초점을 맞추지만 캡슐화는 객체 내부의 구현을 client에게 보이지 않게 하는 것
∙프로그래밍 언어에 따라 구현하는 강도가 다르다
∙동작을 일으키는 구현에 중점을 둔다
유사한 객체들의 집합
각 객체 : 클래스의 실체(instance)라고 한다
객체는 클래스를 설정함으로써 생성될 수 있다
실체는 클래스에 create나 new 등의 메시지 전달로 생성
1.3 메시지(Messages)
객체의 행위(Behavior)를 표현
1.4 캡슐화(Encapsulation)
∙추상화된 객체의 구현을 은닉하는 것
∙시스템의 한 콤포넌트의 내부 구현이 다른 콤포넌트에 의존하지 않는 것
∙추상화는 객체의 외부 인터페이스에 초점을 맞추지만 캡슐화는 객체 내부의 구현을 client에게 보이지 않게 하는 것
∙프로그래밍 언어에 따라 구현하는 강도가 다르다
∙동작을 일으키는 구현에 중점을 둔다
1.5 상속(Inheritance)
상속이란?
하나의 클래스가 다른 클래스로부터 애트리뷰트나 메소드를 물려받는 것
∙단일상속
∙다중상속
상속이란?
하나의 클래스가 다른 클래스로부터 애트리뷰트나 메소드를 물려받는 것
∙단일상속
∙다중상속
1.6 다형성(Polymorphism)
파생된 클래스와 관련되면서 또 다른 행위를 요구하는 것
2 객체 지향 분석(Object-Oriented Analysys)
(1) 클래스/객체 계층 ; 클래스와 객체를 설명하는 분석과 설계 단계
(2) 구 조 계 층 ; 1:n의 결합이나 상속과 같은 클래스와 객체들의 여러가지 구조를 포함시키는 단계
(3) 속 성 계 층 ; 메시지와 행위를 기술하는 단계
(4) 서 비 스 계 층 ; 클래스의 속성을 자세히 기술하는 단계
(5) 주 제 계 층 ; 실행 단위 또는 팀으로 설계를 분할하는 단계
(1) 클래스/객체 계층 ; 클래스와 객체를 설명하는 분석과 설계 단계
(2) 구 조 계 층 ; 1:n의 결합이나 상속과 같은 클래스와 객체들의 여러가지 구조를 포함시키는 단계
(3) 속 성 계 층 ; 메시지와 행위를 기술하는 단계
(4) 서 비 스 계 층 ; 클래스의 속성을 자세히 기술하는 단계
(5) 주 제 계 층 ; 실행 단위 또는 팀으로 설계를 분할하는 단계
2.1. 클래스와 객체의 분석(Analyzing Classes and Objects)
분석하는 동안에 찾을 수 있는 객체
. 유형의 사물
. 임무
. 사건들이나 결과
. 특별한 시간
. 서로 영향을 주는 것
. 유형의 사물
. 임무
. 사건들이나 결과
. 특별한 시간
. 서로 영향을 주는 것
클래스 판단 기준
1. 객체를 기억할 필요가 있다.
2. 객체의 어떤 행동들을 필요를 역설한다.
3. 한 객체는 여러 개의 속성을 갖게 된다.
4. 기본 클래스가 아니라면 하나의 클래스는 한 개 이상의 객체를 갖게 된다.
5. 속성들은 클래스에 속한 각각의 객체를 위한 의미 있는 값을 항상 가진다.
6. 서비스들은 클래스에 속한 모든 객체들에 대하여 항상 같은 방법으로 제공된다.
7. 객체는 해결기술이 아니라 문제발생으로부터 파생되어진 요구를 실행시키는 것.
8. 객체는 시스템내의 다른 객체에서 파생될 수 있는 중복된 속성이나 서비스일 수 없다.
1. 객체를 기억할 필요가 있다.
2. 객체의 어떤 행동들을 필요를 역설한다.
3. 한 객체는 여러 개의 속성을 갖게 된다.
4. 기본 클래스가 아니라면 하나의 클래스는 한 개 이상의 객체를 갖게 된다.
5. 속성들은 클래스에 속한 각각의 객체를 위한 의미 있는 값을 항상 가진다.
6. 서비스들은 클래스에 속한 모든 객체들에 대하여 항상 같은 방법으로 제공된다.
7. 객체는 해결기술이 아니라 문제발생으로부터 파생되어진 요구를 실행시키는 것.
8. 객체는 시스템내의 다른 객체에서 파생될 수 있는 중복된 속성이나 서비스일 수 없다.
2.2. 분석 구조(Analyzing Structure)
(1) Gen-Spec 구조 :
(2) Whole-Part 구조 :
2.3. 속성 분석(Analyzing Attribute)
(1) Gen-Spec 구조 :
(2) Whole-Part 구조 :
2.3. 속성 분석(Analyzing Attribute)
클래스 속성의 명칭은 설계도상에서 클래스 상자의 가운데 부분에 쓰여진다.
2.4. 실체 관계(Instance Connection)
클래스들 사이가 아닌 객체들 사이에서 실체관계에 대한 설명이 항상 이루어진다.
2.5. 예비 명세서 모형(Preliminary Specification Temlate)
속성의 소개를 위해 분석 명세서가 필요하다.
2.6. 서비스 분석(Analyzing Service)
- 서비스 :
방법(methods) 또는 절차(procedures)
많은 면에서 객체의 일 부분
객체상태분석, 서비스 명세서 그리고 메시지 명세서 등의 세 가지로 구성
방법(methods) 또는 절차(procedures)
많은 면에서 객체의 일 부분
객체상태분석, 서비스 명세서 그리고 메시지 명세서 등의 세 가지로 구성
(1) 객체 상태 분석(Object State Analysis)
- 객체의 행동을 바꾸는 속성을 조사.
. 각 속성을 조사
. 어떤 상황하에서 다른 행위를 하게 되면 “상태” 속성을 추가.
(2) 서비스 명세서(Service Specification)
- 서비스는 객체생성, 저장, 검색, 결합, 취득, 객체 삭제 등을 포함
- 단순한 서비스들
- 복잡한 서비스들 :
(3) 메시지 명세서(Message Specification)
- 한 객체의 행위가 어떻게 다른 객체의 행동을 유발할 수 있는가를 서술
- 다른객체의 행동을 유발시키기 위한 목적으로 한 객체에 의해 만들어짐
- 서로 다른객체에 있는 별개의 절차에 한개의 절차가 종속되어져 있는 것을 기술
- 서비스들 사이 연결을 위해 하나만 존재, 제어흐름과 데이터 흐름 모두를 필요로 함
- 메시지는 보내는 서비스와 받는 서비스로 구분
- 객체의 행동을 바꾸는 속성을 조사.
. 각 속성을 조사
. 어떤 상황하에서 다른 행위를 하게 되면 “상태” 속성을 추가.
(2) 서비스 명세서(Service Specification)
- 서비스는 객체생성, 저장, 검색, 결합, 취득, 객체 삭제 등을 포함
- 단순한 서비스들
- 복잡한 서비스들 :
(3) 메시지 명세서(Message Specification)
- 한 객체의 행위가 어떻게 다른 객체의 행동을 유발할 수 있는가를 서술
- 다른객체의 행동을 유발시키기 위한 목적으로 한 객체에 의해 만들어짐
- 서로 다른객체에 있는 별개의 절차에 한개의 절차가 종속되어져 있는 것을 기술
- 서비스들 사이 연결을 위해 하나만 존재, 제어흐름과 데이터 흐름 모두를 필요로 함
- 메시지는 보내는 서비스와 받는 서비스로 구분
2.7. 명세서 모형 구축(Assembling the Specification Template)
- 규정해야 할 필요가 있는 어떤 중요한 객체를 상세하게
- 규정해야 할 필요가 있는 어떤 중요한 객체를 상세하게
2.8. 주제 분석(Analysing Subjects)
- 복잡한 명세서를 논리적 작업단위로 분할하는 단계
- 많은 클래스와 관련된 큰 프로젝트에서만 필요
- 주제는 객체지향 도표에 특별한 주제의 배경을 기술하는 넓은 그림자로 표시
- 주제명칭은 주제상자의 한 부분에 기술
- 일반적으로 주제는 ‘Owner’ 클래스에서 나타난다
- 복잡한 명세서를 논리적 작업단위로 분할하는 단계
- 많은 클래스와 관련된 큰 프로젝트에서만 필요
- 주제는 객체지향 도표에 특별한 주제의 배경을 기술하는 넓은 그림자로 표시
- 주제명칭은 주제상자의 한 부분에 기술
- 일반적으로 주제는 ‘Owner’ 클래스에서 나타난다
2.9. 객체 지향 설계(Object-Oriented Design)
명세서를 완성시킬 분석 도구를 도입
- 객체 지향 설계 작업의 구성 요소
∙문제요소
∙인간과의 교류요소
∙데이타 관리요소
∙작업관리 요소
명세서를 완성시킬 분석 도구를 도입
- 객체 지향 설계 작업의 구성 요소
∙문제요소
∙인간과의 교류요소
∙데이타 관리요소
∙작업관리 요소
'UP! > Software Engineering' 카테고리의 다른 글
시스템구현 (0) | 2008.08.21 |
---|---|
[CMMI] CMMI Project Status (0) | 2008.08.21 |
문서화 (0) | 2008.08.21 |
CASE (0) | 2008.08.21 |
소프트웨어 시험전략 (0) | 2008.08.21 |