정보처리기사/프로그래밍 언어 활용
객체지향 기술 2
RangA
2023. 5. 30. 01:54
02. 객체지향 개발 순서
01. 객체지향 개발 순서
1) 객체지향 개발 순서 개념
- 객체지향 개발 방법은 최근 소프트웨어 제품의 전형적인 타입인 사용자 중심, 대화식 프로그램의 개발에 적합한 방식
- 객체지향 설계와 분석은 전통적인 기법인 폭포수 모형처럼 단계가 명확히 구분되지 않음
- 뚜렷이 구분되지 않기 때문에 분석 설계 및 구현 단계들 사이의 의미적 갭(Gap)이 작음
2) 객체지향 개발 순서 개념도
02. 객체 지향 분석(OOA : Object Oriented Amalysis)
1) 객체지향 분석의 특징
- 객체지향 분석은 문제 영역의 분석 대상을 형식적인 전략으로 기술하는 단계
- 소프트웨어를 개발하기 위한 비즈니스를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법
- 분석가에게 주요한 모델링 구성 요소인 클래스, 객체, 속성, 연산들을 표현해서 문제를 모형화시킬 수 있게 해줌
- 객체지향 관점은 모형화 표기법의 전후 관계에서 객체의 분류, 속성들의 상속, 메시지의 통신 등을 결합한 것
- E-R 다이어그램은 객체지향 분석의 표기법으로 적합함
2) 객체지향 분석의 순서
- 객체 모델링(Object Modeling)
- 문제 영역에서 요구되는 객체를 찾아내고 객체의 속성, 연산을 식별하는 단계
- 객체, 속성, 연산을 식별함
- 객체와 연관된 자료 구조를 표현함
- 동적 모델링(Dynamic Modeling)
- 객체 모델링에서 생성된 객체 모형들의 행위, 상태, 조건을 파악하는 단계
- 객체 행위 모형을 생성함
- 사건(Event)과 상태(State)를 파악하여 상태도를 만듦
- 상태 다이어그램이 활용됨
- 조건(Condition)과 활동(Activity)들을 표시함
- 사건 추적도를 사건 발생자의 관계로 설명하는 사건의 흐름도를 작성함
- 기능 모델링(Functional Modeling)
- 입출력 결정 : 사용자의 요구를 분석하여 입력된 자료와 출력할 자료를 결정함
- 자료 흐름도(DFD) : 객체들의 제어 흐름, 상호 반응 연산 순서를 나타내주는 과정
- 기능의 내용을 상세히 기술 : 자료 흐름도에서 기능이 정해지면, 각 기능을 세부적으로 분석함
- 제약사항을 결정하고 최소화 : 제한사항, 성능 등을 파악하여 전체적으로 문제점 발생을 최소화하도록 함
3) 객체지향 분석 방법론의 종류
- Rumbaugh(람바우) Method
- 객체지향 분석을 3개의 모형인 객체 모형(Object), 동적 모형(Dynamic), 기능 모형(Functional)으로 분리하여 접근하는 방법
- 객체 모형 -> 동적 모형 -> 기능 모형 순으로 분석함
- 객체지향 분석 방법론 중 가장 대표적인 방법론
- E-R 다이어그램
- 데이터 구조들과 그들 간의 관계들을 표현하고 객체 모형을 만드는 방법론
- 주요키를 포함하는 객체의 속성을 모두 찾아냄
- 기본적인 객체와 주요키를 정의하며, 객체 사이의 관계를 정의함
- 1:N 관계를 단순화시키기 위해 속성 객체를 추가하며, 연관 관계를 정의하여 M:N 관계를 표현함
- 각 객체를 정규화하고 누락된 개체 점검 및 클래스 구조가 필요한지 결정함
- Booch Method
- 미시적 개발 프로세스(Micro Development Process), 거시적 개발 프로세스(Macro Development Process)로 접근하는 방법
- 각 작업에 대한 다이어그램, 클래스 계층 정의, 클래스들의 클러스터링 작업을 수행함
- Coad와 Yourdon Method
- 객체지향 분석 방법론 중 E-R 다이어그램을 사용하여 객체의 행위를 모델링함
- 객체 식별, 구조 식별, 주체 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성되는 방법
- Jacobson Method
- 사용자가 제품 또는 시스템과 어떻게 상호 작용하는지를 서술한 시나리오로 접근함
- Use Case를 강조하여 사용하는 분석 방법
- Wirfs-Brocks Method
- 분석과 설계 프로세스 간에 뚜렷한 구분이 없음
- 고객 명세의 평가로 시작하여 설계로 끝나는 연속적인 프로세스로 접근하는 방법
03. 객체지향 설계(OOD : Object Oriented Design)
1) 객체지향 설계의 특징
- 프로그램으로 실행될 수 있는 문제 영역의 분석 모형을 구체적인 절차로 표현하는 것
- 최근 소프트웨어 제품의 전형적인 타입인 사용자 중심, 대화식 프로그램의 개발에 적합한 방식
- 객체지향 설계에서 가장 중요한 작업은 시스템을 구성하는 클래스와 속성, 연산을 인식하여 클래스를 객체로, 속성을 자료 구조로, 연산을 알고리즘으로 표현하는 것
2) 객체지향 설계의 순서
- 객체 설계(객체 연산자 정의)
- 객체 분석에서 정의된 요구 명세서를 기반으로 객체 연산자를 정의하여 설계함
- 객체 모델 : 객체를 구성하고 있는 클래스와 속성을 객체와 자료 구조로 표현함
- 동적 모델 : 설계 시 자료와 자료에 가해지는 프로세스를 묶어 정의하고 관계를 규명함
- 기능 모델 : 서브 클래스와 메시지 특성을 세분화하여 세부 사항을 정제화함
- 시스템 설계(객체 인터페이스 결정)
- 객체 설계 단계에서 정의된 객체 간의 인터페이스를 정하여 전체적인 시스템을 설계함
- 분석된 객체 모형을 특성별로 구분한 서브 시스템으로 분할함
- 데이터, 자원 관리 방법을 결정함
- 객체와 그들의 부 객체(Sub-Object)의 계층적 구조를 보여주는 계층 차트를 그림
- 객체 제어 방식을 결정함
- 순차적(Sequentially) 제어 방식
- 순서가 존재하는 객체 운영 방식
- Ex) C++, Java
- 동시(Concurrent) 제어 방식
- 객체 사용을 동시에 수행하는 방식
- Ex) Ada
- 이벤트 중심(Event) 제어 방식
- 사건이 발생할 때마다 객체가 수행되는 방식
- Ex) Visual Basic
- 순차적(Sequentially) 제어 방식
3) 객체지향 설계의 원칙
- 단일 책임의 원칙(SRP : Single Responsibility Principle)
- 객체는 하나의 책임만 맡아 처리할 수 있게 해야 함
- 낮은 결합도, 높은 응집성을 유지할 수 있음
- 개방 폐쇄 원칙(OCP : Open-Closed Principle)
- 소프트웨어 개체는 확장에는 열고, 수정 시에는 닫혀있게 해야 함
- 개체는 객체, 모듈, 함수 등이 있음
- 리스코프 치환의 원칙(LSP : Liskov Substitution Principle)
- 서브 타입(상속받은 하위 클래스)은 어디에서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 함
- 인터페이스 분리의 원칙(ISP : Interface Segregation Principle)
- 한 개의 일반적인 인터페이스보다 구체적이고 안전한 여러 개의 인터페이스가 좋음
- 클라이언트는 자신이 사용하지 않는 메소드와 의존 관계를 맺으면 안 됨
- 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 됨
- 의존성 뒤집기의 원칙(DIP : Dependency Inversion Principle)
- 추상화 클래스에 의존하게 되므로, 구체적인 클래스에 의존하지 않도록 해야 함
04. 객체지향 프로그래밍(OOP : Object Oriented Programming)
1) 객체지향 프로그래밍의 특징
- 객체지향 프로그래밍 언어를 선정함
- 클래스를 정의(명시)하고 객체를 생성함
- 클래스와 클래스의 계층을 정의함
- 상속과 다형성을 활용함
- 메시지를 통하여 객체 간의 상호 작용을 함
05. 객체지향 테스트(Object Oriented Testing)
1) 단위 테스트(Unit Testing)
- 객체의 가장 작은 단위로 캡슐화된 클래스나 객체를 검사함
2) 통합 테스트(Integration Testing)
- 스레드 - 기반 테스트(Thread - Based Testing)
- 시스템에 대한 하나의 입력이나 이벤트에 응답하는데 요구되는 클래스들의 집합을 통합함
- 구조적 검사 기법에서는 하향식 통합 검사 방법과 유사하게 볼 수 있으며, 객체를 결합한 후 회귀 분석 검사를 실시함
- 사용 - 기반 테스트(Use - Based Testing)
- 상위 클래스와 관계를 갖지 않는 수준에서 클래스들을 독립적으로 검사한 후 상위 클래스와 결합함
- 구조적 검사 기법의 상향식 통합 방법과 유사하게 볼 수 있음
- 검증과 시스템 테스트
- 사용자의 요구가 객체에 정확히 반영되었는지, 성능이나 인터페이스상 오류는 없는지 검사함