티스토리 뷰
2022년 정보처리기사 필기
(수제비 2021년 필기책 보고 공부하며 요약한 내용입니다.)
http://www.yes24.com/Product/Goods/96051171
1. 소프트웨어 설계
Cp3. 애플리케이션 설계2
1. 객체지향
: 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법
객체지향 구성요소 | 설명 |
클래스 | 데이터를 추상화하는 단위 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현 속성은 변수의 형태로, 행위는 메서드형태로 선언 |
객체 | 객체 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용 객체마다 각 상태와 식별성을 가짐 |
메서드 | 클래스로부터 생성된 객체를 사용하는 방법 객체가 메시지를 받아 실행할 객체의 구체적 연산 함수, 프로시저에 해당하는 연산 기능 |
메시지 | 객체 간 상호작용을 위한 수단 객체 간 상호작용은 메시지를 통해 이루어짐 메시지는 객체에서 객체로 전달됨 |
인스턴스 | 클래스에 속한 각 객체들 실제로 메모리상에 할당 |
속성 | 한 클래스 내에 속한 객체들이 가지고 있는 데이터값들을 단위별로 정의 성질, 분류, 식별, 수량, 현재상태 등에 대한 표현 값 |
1-1. 객체지향 기법
1) 캡슐화
: 서로 관련성 많은 데이터와 함수들을 묶음 처리하는 기법
: 결합도가 낮아지고 재사용이 용이
: 인터페이스가 단순화됨
: 정보은닉
: 변경 발생 시 오류 파급 효과가 적음
2) 상속성
: 상위클래스 속성과 메소드를 하위클래스에서 재정의 없이 물려받아 사용하는 기법
3) 다형성
: 한 메시지에 대해 각 객체가 가진 고유방법으로 응답함.
: 오버로딩, 오버라이딩
4) 추상화
: 공통 성질을 추출해 추상 클래스를 설정
: 기능추상화, 자료추상화, 제어 추상화
5) 정보은닉
: 코드 내부 데이터와 메소드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드보안 기술
: 고려되지 않은 영향(side-effect)들을 최소화
6) 관계성
: 두개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법
: 종류로는 연관화, 분류화, 집단화, 일반화, 특수화가 있음
관계성 종류 | 설명 |
연관화 | is-member-of 관계 클래스와 객체의 참조 및 이용관계 같은계층에 속하는 클래스들 사이의 상호의존성을 보여주는 비계층적 관계성을 나타냄 |
집단화 | is part of 관계, part-whole 관계 서로관련있는 객체를 묶어 한 상위 객체를 만드는 특징 상위클래스 성질이 하위클래스로 상속되지 않음 |
분류화 | is-instance-of 관계 공통속성에 의해 정의된 객체 구성원들의 인스턴스 |
일반화 | is-a 관계 클래스간 개념적인 포함관계 상위 클래스 특성을 하위 클래스가 상속받음 |
특수화 | is-a 관계 상위클래스 특성을 상속받으며 하위클래스에서 나름대로 수정을 가하고 자신의 고유특성을 갖는 관계 |
1-2. 객체지향 설계 원칙(SOLID)
1) 단일 책임의 원칙
: 한 클래스는 한 목적을 위해 생성되며 , 클래스가 제공하는 서비스는 한 책임을 수행하는데 집중되어 있어야 함.
: 객체지향 프로그래밍의 5원칙 중 나머지 5원칙의 기초 원칙
2) 개방 폐쇄 원칙
: 소프트웨어 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 하는 원칙
3) 리스코프 치환의 원칙
: 서브타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위클래스)으로 부터 교체할 수 있어야 한다는 원칙
4) 인터페이스 분리의 원칙
: 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
: 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다는 원칙
5) 의존성 역전의 원칙
: 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙
1-3. 객체지향 방법론의 종류
종류 | 만든이 | 설명 | 특징 |
OOSE(object oriented software enginnering) | 야콥슨(jacobson) | 유스케이스에 의한 접근방법으로 유스케이스를 모든 모델의 근간으로 활용 | 분석, 설게, 구현 단계로 구성 기능적 요구사항 중심의 시스템 |
OMT(object modeling technology) | 럼바우(rumbaugh) | 객체지향 분석, 시스템설계, 오브젝트 설계 및 구현의 4단계로 구성 1) 객체모델링 : 시스템 정적구조 표현 2) 동적모델링 : 객체의 제어흐름/상호 반응 표현 3) 기능모델링 : 데이터 값의 변화 과정 표현 |
복잡한 대형 프로젝트에 유용 모델링 편리 및 상요자와 의사소통 편리 |
OOD(object oriented design) | 부치(booch) | 설계 부분만 존재 설계 문서화를 강조해 다이어그램 중심으로 개발하는 방법론 미시적(micro) 개발 프로세스와 거시적(macro) 개발 프로세스를 모두 사용하는 분석 방법 |
분석과 설계 분리 불가능 분석하는 데 이용된 객체 모델의 설계 시 적용 |
Coad와 yourdon 방법론 | E-R 다이어그램을 사용해 객체 행위를 모델링하며, 객체식별, 구조식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 객체지향 분석 방법 | ||
wirfs-brock 방법론 | 분석과 설계 간 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 분석 방법 |
2. 디자인 패턴
: 소프트웨어공학의 소프트웨어 설계에서 공통적으로 발생하는 문제에 대해 자주 쓰이는 설계방법을 정리한 패턴
; 개발 효율성과 유지보수성, 운용성 등의 품질이 높아지며, 최적화에 도움이 됨
2-1. 디자인패턴 구성요소
1) 패턴이름: 디자인 패턴 이름과 유형
2) 문제 및 배경: 패턴이 사용되는 분야, 배경, 문제
3) 솔루션: 디자인 패턴을 이루는 요소들, 관계, 협동 과정
4) 사례: 간단한 적용 사례
5) 결과: 디자인 패턴 사용 후 얻게 되는 이점, 영향
6) 샘플코드: 적용된 코드
2-2. 디자인패턴 유형
구분 | 디자인패턴 유형 | 설명 |
목적 | 생성 | 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴 |
구조 | 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴 | |
행위 | 클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴 | |
범위 | 클래스 | 클래스간 관련성(상속관계를 다루는 패턴) 컴파일 타임에 정적으로 결정 |
객체 | 객체 간 관련성을 다루는 패턴 런타임에 동적으로 결정 |
2-3. 디자인 패턴 종류
구분 | 패턴 | 설명 |
생성 패턴 |
builder | 생산단계를 캡슐화하여 구축공정을 동일하게 이용하도록 하는 패턴 |
prototype | 복사하여 새 개체를 생성할 수 있도록 하는 패턴 | |
factory method | 객체 생성을 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브클래스가 결정하도록 하는 패턴 | |
abstract factory | 생성군들을 하나에 모아놓고 팩토리 중에서 선택하게 하는 패턴 | |
singleton | 유일한 하나의 인스턴스를 보장하도록 하는 패턴 | |
구조 패턴 |
bridge | 추상과 구현을 분리하여 결합도를 낮춘 패턴 |
decorator | 소스를 변경하지 않고 기능을 확장하도록 하는 패턴 | |
facade | 하나의 인터페이스를 통해 느슨한 결합을 제공하는 패턴 | |
flyweight | 대량의 작은 객체들을 공유하는 패턴 | |
proxy | 대리인이 대신 그 일을 처리하는 패턴 | |
composite | 개별객체와 복합 객체를 클라이언트에서 동일하게 사용하도록 하는 패턴 | |
adapter | 인터페이스로 인해 함께 사용하지 못하는 클래스를 함께 사용하도록하는 패턴 | |
행위 패턴 |
interpreter | 언어 규칙 클래스를 이용 |
template method | 알고리즘 골격의 구조를 정의 | |
chain of responsibility | 객체들끼리 연결 고리를 만들어 내부적으로 전달 | |
command | 요청자체를 캡슐화하여 파라미터로 넘기는 패턴 | |
iterator | 내부 표현은 보여주지 않고 순회하는 패턴 | |
mediator | 객체 간 상호작용을 캡슐화한 패턴 | |
memento | 상태 값을 미리 저장해두었다가 복구하는 패턴 | |
observer | 상태가 변할 때 의존자들에게 알리고, 자동 업데이트 하는 패턴 | |
state | 객체 내부 상태에 따라서 행위를 변경하는 패턴 | |
strategy | 다양한 알고리즘을 캡슐화하여 알고리즘 대체가 가능하도록 한 패턴 | |
visitor | 오퍼레이션을 별도의 클래스에 새롭게 정의한 패턴 |
2-4. 디자인 패턴의 장단점
1) 장점
: 요구사항 변경에 따른 소스 코드 변경을 최소화할 수 있게 해줌
: 설계 변경 요청에 대한 유연한 대처가 가능
: 범용적인 코딩 스타일 적용 가능
: 개발자 간의 원활한 의사소통 가능
: 재사용을 통한 개발 시간 단축 가능
: 소프트웨어 구조 파악 용이
: 객체지향 설계 및 구현의 생산성을 높이는 데 적합
2) 단점
: 객체지향 설계/구현 위주로 사용
: 초기 투자 비용의 부담
'도구 > Etc' 카테고리의 다른 글
[2022년 정보처리기사 필기] 2. 소프트웨어개발: Cp1. 데이터입출력 구현 (0) | 2022.02.17 |
---|---|
[2022년 정보처리기사 필기] 1. 소프트웨어설계: Cp3. 애플리케이션 설계3 (0) | 2022.02.14 |
[2022년 정보처리기사 필기] 1. 소프트웨어설계: Cp3. 애플리케이션 설계 (0) | 2022.01.21 |
[2022년 정보처리기사 필기] 1. 소프트웨어설계: Cp2. 화면 설계2 (0) | 2022.01.20 |
[2022년 정보처리기사 필기] 1. 소프트웨어설계: Cp2. 화면 설계 (0) | 2022.01.14 |