728x90
목차
1. 객체지향 분석
2. 객체지향 설계
3. 객체지향 프로그래밍
4. 객체지향 테스트
1. 객체지향 분석
1-1. 객체지향 분석의 특징
* 소프트웨어 개발해야 하는 업무를 분석
* 분석 대상을 클래스, 객체, 속성, 멤버등의 형식적인 형태로 기술
* 기존의 업무 시스템을 객체간의 상호작용으로 표현
* 럼바우(Rumbaugh) 방식이 가장 대표적 객체모델링, 동적모델링, 기능모델링의 순서로 분석하여 도식화
1-2. 객체지향 분석 순서
1. 객체(정보) 모델링
* 업무 영역에서 요구하는 객체를 식별하는 단계
* 식별된 객체에 포함될 속성과 메소드를 식별
* 속성에 사용될 자료구조를 표현
2. 동적 모델링
* 객체 모델링에서 생성된 객체들의 기능과 상태등을 파악하는 단계
* 사건과 상태, 조건과 활동들을 파악하여 표시
* 상태, 할동 다이어그램을 활용하여 기능의 흐름을 표시
3. 기능 모델링
* 사용자 요구사항을 분석하여 입출력 데이터를 결정
* 객체들의 제어흐름, 기능의 상호작용 순서를 자료흐름도(DFD)로 나타낸다
* 각 기능을 세부적으로 상세히 분석
1-3. 그 밖의 객체지향 분석 방법론
1. Booch
* 미시적(micro), 거시적(macro) 개발 프로세스로 접근하는 방법
* 각 작업에 대한 다이어그램, 클래스 계층 정의 및 클러스터링 작업을 수행
2. Coad Yourdon
* E-R 다이어그램을 사용하여 모델링하는 방법
* 객체식별, 구조식별, 주체정의, 속성과 인스턴스 연결정의, 연산과 메시지 연결정의등의 과정으로 구성되는 방법
3. Jacobson
* 사용자가 제품또는 시스템과 어떻게 상호작용하는지를 서술한 시나리오(Use Case) 접근하는 방법
4. Wirfs-Brocks
* 분석과 설계 프로세스 간에 뚜렷한 구분이 없다
* 고객 명세의 평가로 시작하여 설계로 끝나는 연속적인 프로세스로 접근하는 방법
2. 객체지향 설계
2-1. 객체지향 설계의 개념
* 분석이 완료된 모델을 구체적인 절차로 표현
* 사용자 중심, 대화식 프로그램 개발에 적합
* 클래스를 객체로, 속성을 자료구조로, 기능을 알고리즘으로 표현하는것에 중점
2-2. 객체지향 설계 원칙
1. 단일책임(Single Responsibility)
* 단일 클래스가 제공하는 모든 기능은 하나의 책임을 수행해야 한다
* 클래스를 변경하는 이유는 오직 하나
* 낮은 결합도, 높은 응집도 유지가 가능
2. 개방폐쇄(Open-Closed)
* 소프트웨어 구성요소는 확장에는 열리고, 변경에는 닫혀 있어야 한다
3. 리스코프 치환(Liskov Substitution)
* 하위 클래스는 언제나 상위클래스로 교체할수 있어야 한다
* 서브 클래스는 상위클래스가 정의한 제약사항을 준수
4. 인터페이스 분리(Interface Segregation)
* 사용하지 않는 인터페이스에 시스템이 영향을 받아서는 안된다
* 사용하지 않는 인터페이스는 구현하지 말아야 한다
5. 의존성 뒤집기(Dependency Inversion)
* 하위 클래스의 변경사항이 상위 클래스에 영향을 미치지 않도록 해야한다
* 복잡한 컴포넌트들의 관계를 단순화하고 효율적인 커뮤니케이션이 가능하게 한다
3. 객체지향 프로그래밍
3-1. 객체지향 프로그래밍 특징
* 객체지향 프로그래밍 언어를 선정
* 클래스를 정의(명시)하고 객체를 생성
* 클래스와 클래스의 계층을 정의
* 상속과 다형성을 활용
* 메시지를 통하여 객체간의 상호작용
4. 객체지향 테스트
4-1. 단위 테스트
* 객체의 가장 작은 단위로 캡슐화된 클래스나 객체를 검사
4-2. 통합 테스트
1.스레드 기반(Thread-Based Testing)
* 시스템에 대한 하나의 입력이나 이벤트에 응답하는데 요구되는 클래스들의 집합을 통합
2. 사용 기반(Use-Based Testing)
* 상위 클래스와 관계를 갖지 않는 수준에서 클래스들을 독립적으로 검사한 후 상위클래스와 결합
3. 검증과 시스템
* 사용자의 요구가 객체에 정확히 반영되었는지, 성능이나 인터페이스상 오류는 없는지 검사
참고자료 : 이기적 환상콤비 정보처리기사
728x90
'자격증 > 정보처리기사' 카테고리의 다른 글
Python 언어 (0) | 2022.07.11 |
---|---|
Java 언어 (0) | 2022.07.10 |
객체지향 기술 (0) | 2022.07.07 |
C언어 자료구조와 포인터 (0) | 2022.07.07 |
C언어 선택 및 반복 제어문 (0) | 2022.07.06 |