1 공통 모듈 설계
1 공통 모듈
1 개념
전체 프로그램의 기능 중 특정 기능을 추리할 수 있는 실행 코드
자체적으로 컴파일 가능, 재사용 가능
2 원칙
- 정확성: 해당 기능의 필요 여부
- 명확성: 해당 기능에 대해 일관되게 한 가지로 해석
- 완전성: 필요 요구 사항에 대해서 모두 기술
- 일관성: 기능 간 상호 충돌 X
- 추적성: 기능의 유기적 관계에 대한 식별 가능
3 모듈화
1 개념
프로그램의 관리를 효율적으로 하기 위해 시스템을 분해, 추상화함으로써
성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 쉽게 하는 기법
2 필요성
모듈의 크기 少 -> 모듈 개수 多 -> 통합 비용 大
모듈의 크기 大 -> 모듈 통합 비용 少 but 모듈 당 개발 비용 大
3 유형
- 응집도: 모듈 내부의 구성요소 간 관계의 밀접한 정도 (강하게)
- 결합도: 모듈 간의 관련성 정도(<---> 독립성) (약하게)
1 응집도 유형
우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적
2 결합도 유형
내용 > 공통 > 외부 > 제어 > 스탬프 > 자료
2 설계 모델링
1 개념
필수 기능의 구체적인 구현 방법
소프트웨어의 요구사항을 만족하도록 모델링하여 표현, 분석, 검증하는 과정
2 원칙
- 변경이 쉽도록 구조화
- 특정 기능을 수행하는데 필요한 자료만 사용하도록 규제
- 독립적이고 기능적인 특성
- 계층적 구조
3 유형
모델링 유형
- 구조 모델링: 시스템의 구성요소들과 이들 사이의 구조적인 관계와 특성을 모델링
- 행위 모델링: 시스템의 구성요소들의 동적인 특성을 모델링
모델 유형
- 구조 모델: 유형, 배열 및 결합 관계, 인터페이스, 상호작용 채널, 위치의 이동 및 복제
- 행위 모델: 입출력 데이터, 입출력 매핑, 데이터 흐름 채널, 상호작용 프로토콜, 처리 순서, 알고리즘
4 소프트웨어 설계 유형
자료 구조 설계: 소프트웨어를 구현하는데 필요한 자료 구조로 변환하는 과정
아키텍처 설계: 컴포넌트 간의 관계
인터페이스 설계: 통신
프로시저 설계: 아키텍처의 컴포넌트를 프로시저 서술로 변환하는 과정
3 소프트웨어 아키텍처
1 개념
외부에 드러나는 특성, 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체
2 필요성
조율을 통한 시스템 최적화
비기능적 요소에 집중하되 기능적 요소 고려
3 소프트웨어 아키텍처 프레임워크
[IEEE1471]
- Mission: 목적 달성을 위해 시스템이 수행하는 방향성
- Environment: 내부/외부 제약
- System: 특정 목적 달성을 위한 컴포넌트 집합
- Architectures: 시스템 구조
- Stakeholder: 사람/조직
- Architectures Description: 아키텍처를 기록하기 위한 산출물
- Concern: 관계자 관심사
- View Point: View를 구성하기 위한 규칙을 정의한 패턴
- Rational: 아키텍처 평가 판단 기준
- Library view point: 모델 작업 방법 사례
- Model: 모델
4 소프트웨어 아키텍처 4+1뷰
1 개념
고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 접근 방법
4개의 구조가 충돌되지 않는지, 요구사항을 충족하는지 증명하기 위해 유스케이스 사용
2 구성요소
1: 유스케이스 뷰
4: 논리 뷰(최종 사용자), 프로세스 뷰(프로그래머), 구현 뷰(프로그래머), 배포 뷰(시스템 엔지니어)
- 유스케이스 뷰: 아키텍처의 다른 뷰를 검증하는 데 사용
- 논리 뷰: 기능적인 요구사항, 모델의 추상화
- 프로세스 뷰: 런타임 시 테스크, 스레드, 프로세스 간의 관계 표현, 비기능적 요구사항(성능, 가용성) 고려
- 구현 뷰(= 컴포넌트 뷰): 정적인 소프트웨어 모듈의 구성, 개발자 관점
- 배포 뷰: 실행 파일과 런타임 컴포넌트의 매핑 방법을 보여주며, 비기능적인 요구사항 고려
5 소프트웨어 아키텍처 비용 평가 모델
1 개념
아키텍처의 적합성을 평가하는 모델
2 종류
- SAAM: 변경 용이성과 기능성에 집중
- ATAM: 아키텍처 품질 속성을 만족시키는지 판단
- CBAM: 경제적 의사결정에 대한 요구 충족
- ADR: 아키텍처 구성요소 간 응집도 평가
- ARID: 전체가 아닌 특정 부분에 대한 품질요소에 집중
2 객체지향 설계
1 객체지향
1 개념
실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현
2 구성요소
- 클래스: 같은 종류의 집단에 속하는 속성(변수)와 행위(메서드)
- 객체: 클래스로부터 생성, 객체마다 각각의 상태와 식별성 소유
- 메서드: 객체를 사용하는 방법
- 메시지: 객체에게 행위를 지시하는 방법
- 인스턴스: 클래스에 속한 각각의 객체, 실제 메모리상에 할당
- 속성: 객체가 가지고 있는 값
3 기법
- 캡슐화: 관련성이 높은 데이터와 함수를 묶어서 처리, 결합도를 낮추고 재사용이 용이
- 상속성: 상위 클래스의 속성과 메소드를 하위 클래스에서 물려받아 사용
- 다형성: 하나의 메시지에 대해 고유한 방법으로 응답, 오버로딩/오버라이딩
- 추상화: 공통 성질을 추출하여 추상 클래스를 설정
- 정보은닉: 데이터와 메소드를 공개 인터페이스를 통해서만 접근하도록하여 side effect 최소화
cf ) 프로시저 기반 - 절차적 프로그래밍
4 설계 원칙(SOLID)
- 단일 책임: 하나의 클래스는 하나의 목적
- 개방 패쇄: 소프트웨어의 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다
- 리스코프 치환: 자식 클래스는 부모 클래스를 대체
- 인터페이스 분리: 한 클래스는 자신이 사용하지 않는 인터페이스를 구현하지 않는다
- 의존성 역전: 사용 관계는 바뀌지 않으며, 관계는 최대한 느슨하게
5 방법론 종류
객체지향 소프트웨어 공학(OOSE): 유스케이스에 의한 접근 방법
럼바우 객체 모델링 기법(OMT): 객체지향 분석 -> 시스템 설계 -> 오브젝트 설계 및 구현
- 객체 모델링: 정적 구조 표현
- 동적 모델링: 객체의 제어 흐름 표현
- 기능 모델링: 값의 변화 과정 표현
객체 지향 설계(Booch): 설계 부분만 존재, 설계 문서화 강조
*-----------------------------
Coad와 Yourdon 방법: 객체 지향 분석 방법론 중 ERD 사용
-------------------------*
2 디자인 패턴
1 개념
반복적으로 나타나는 문제점에 대한 전문가의 경험을 정리하여 해결 방안을 제시한 패턴
개발의 효율성, 유지 보수성, 운용성 등의 품질 향상, 프로그램 최적화
2 구성요소
- 패턴 이름: 문제와 해법을 설명
- 문제: 해결하고자 하는 문제와 배경, 패턴 사용 시점
- 해법: 요소, 요소 간의 관계, 책임, 상호관계
- 결과: 결과와 장단점
3 유형
목적
- 생성: 구조화, 캡슐화
- 구조: 더 큰 구조 형성 목적
- 행위: 상호작용 방법과 역할 분담
cf ) 기능 X
범위
- 클래스: 상속 관계, 컴파일 타임에 정적으로 결정
- 객체: 런타임에 동적으로 결정
생성 | 구조 | 행위 | |
---|---|---|---|
클래스 | Factory Method | Adapter | Interpreter / Template Method |
객체 | Abstract Factory / Builder / Prototype / Singleton | Bridge / Composite / Decorator / Facade / Flyweight / Proxy | Chain of Responsibility / Command / Iterator / Mediator/ Memento / Observer / State / Strategy / Visitor |
4 종류
- Factory Method: 서브 클래스가 인스턴스를 결정하도록하고 책임을 위임
- Singleton: 유일한 하나의 인스턴스를 보장
- Facade: 하나의 인터페이스를 통해 느슨한 결합 제공
- Proxy: 대리인이 대신 일을 처리
- Template: 알고리즘 골격의 구조를 정의
- Command: 요청 자체를 캡술화하여 파라미터로 넘긴다
- Observer: 상태가 변할 때 알리고, 자동 업데이트
'자격증(IT) > 정보처리기사' 카테고리의 다른 글
정보처리기사 필기 2. 소프트웨어 개발 - Chapter 1. 데이터 입출력 구현 (0) | 2020.08.18 |
---|---|
정보처리기사 필기 1. 소프트웨어 설계 - Chapter 4. 인터페이스 설계 (0) | 2020.08.18 |
정보처리기사 필기 1. 소프트웨어 설계 - Chapter 2. 화면 설계 (0) | 2020.04.20 |
정보처리기사 필기 1. 소프트웨어 설계 - Chapter 1. 요구사항 확인 (0) | 2020.04.19 |
2020정보처리기사 (0) | 2020.04.18 |