3장. 소프트웨어 아키텍처
3-0. 소프트웨어 아키텍처
- 소프트웨어의 골격이 되는 기본구조.
- 추상화 : 포괄적인 개념을 설계한 후 차례로 세분화 하여 구체화 시켜나가는 것
- 단계적 분해 : 하향실 설계 전략으로, 문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화 시키는 분할 기법
- 정보은닉 : 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져, 다른 모듈이 접근하거나 변경할 수 없도록 하는 기법
3-1. 아키텍처 패턴
- 문제 해결의 윤곽 제시, 원칙과 지침의 역할.
- 레이어 패턴 : 계층으로 시스템을 구분하여 구성하는 고전적인 방법중의 하나
- 클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
- 파이프-필터 패턴 : 데이터스트림의 절차의 각 단계를 필터 컴포넌트로 캡슐화 하여, 파이프를 통해 데이터를 전송하는 패턴
- 모델-뷰-컨트롤러 패턴 : 서브시스템을 3개의 부분으로 구조화 하는 패턴
- 마스터-슬레이브 패턴 : 마스터 컴포넌트가 지시한 일을 여러개의 슬레이브 컴포넌트가 병렬처리하여 결과를 취함.
- 브로커 패턴 : 사용자가 원하는 서비스와 특성을 브로커 컴포넌트에 요청하면, 브로커 컴포넌트가 요청에 맞는 컴포넌트와 사용자 연결
- 피어투피어 패턴 : 피어를 하나의 컴포넌트로 간주, 각 피어는 서비스를 호출하는 클라이언트가 될 수도, 서비스를 제공하는 서버가 될 수도 있는 패턴
- 블랙보드 패턴 : 공유 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 형태로, 컴포넌트을은 검색을 통해 블랙보드에서 원하는 데이터를 찾을 수 있다.
3-2. 객체지향
- 객체 : 데이터와 데이터를 처리하는 함수를 묶어놓은 하나의 소프트웨어 모듈
- 클래스 : 공통된 속성과 연산을 갖는 객체의 집합
- 캡슐화 : 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
- 상속 : 이미 정의된 상위 클래스의 모든 속성과 연산을 하위클래스가 물려받는 것
- 다형성 : 메시지에 의해 객체가 연산을 수행하게 될 때, 하나의 메시지에 대해 객체가 가지고 있는 방법으로 응답할 수 있는 능력
3-3. 객체지향 분석 및 설계
- 객체지향 분석 : 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스, 그들 간의 관계 등을 정의하여 모델링
- 객체지향 분석의 방법론
- RUMBAUGH : 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행.
- Booch : 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의
- Jacobson : Usecase를 강조하여, 사용하는 분석 방법
- code 와 Yourdon : E-R다이어그램을 사용. 객체 행위를 모델링
- wirfs-Brock : 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행
- 럼바우 특징
- 객체모델링 -> 동적모델링 -> 기능모델링 (객동기)
- 객체모델링 : 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시
- 동적모델링 : 상태 다이어그램을 이용하여 시간의 흐름에 따른 객체들간의 제어흐름 등 동적인 행위를 표현
- 기능모델링 : 자료흐름도를 이용하여, 다수의 프로세스들 간의 자료흐름을 중심으로 처리과정을 표현
- 객체지향 설계 원칙(SOLID 원칙)
- 단일책임원칙(SRP) : 객체는 단 하나의 책임만 가져야함
- 개방폐쇄원칙(OCP) : 기존의 코드를 변경하지 않고 기능을 추가
- 리스코프 치환 원칙(LSP) : 자식 클래스는 최소한 부모클래스 기능은 수행
- 인터페이스 분리 원칙(ISP) : 자신이 사용하지 않는 인터페이스와 의존관계 X
- 의존역전원칙(DIP) : 의존 관계 성립시 추상성이 높은 클래스와 의존관계를 맺어야 한다는 원칙
3-4. 모듈
- 모듈화를 통해 분리된 시스템의 각 기능들
- 독립성이 강할수록 품질이 좋다.
- 결합도 (자스제외공내) : 모듈간에 상호 의존하는 정도
- 자료 결합도 : 모듈간의 인터페이스가 자료요소로만 구성될 때의 결합도 (결합도 낮음)
- 스탬프 결합도 : 모듈간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
- 제어 결합도 : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어신호나 제어 요소를 전달하는 결합도
- 외부 결합도 : 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도
- 공통 결합도 : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
- 내용 결합도 : 한 모듈이 다른 모듈의 내부 기능 및 그 내부자료를 직접 참조하거나, 수정할 때의 결합도 (결합도 강함)
- 응집도 (기순교절시논우) : 모듈 내부 요소들이 서로 관련되어 있는 정도
- 기능적 응집도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도 (응집도 높음)
- 순차적 응집도 : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
- 교환적 응집도 : 동일한 입력과 출력을 사용하여, 서로 다른 기능을 수행하는 구성요소들이 모였을 경우의 응집도
- 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때, 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
- 시간적 응집도 : 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
- 논리적 응집도 : 유사한 성격을 갖거나, 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우 응집도
- 우연적 응집도 : 모듈 내부의 각 요소들이 서로 관련 없는 요소로만 구성 (응집도 낮음)
- 팬 인-팬 아웃
- 팬 인 : 해당 모듈로 들어오는 제어 신호 (A:0, B:1, C:1, D:1, E: 1, F:2, G:1, H:2, I:1, J:1)
- 팬 아웃 : 해당 모듈에서 나가는 제어 신호 (A:3, B:2, C:2, D:1, E:1, F:1, G:1, H:0, I:0, J:0)
- 공통 모듈 : 여러 프로그램에서 공통적으로 사용할 수 있는 모듈
- 재사용 : 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화 시키는 작업
- 효과적인 설계 방안 : 결합도는 낮고, 응집도는 높아야 한다.
3-5. 코드
- 일정한 규칙에 따라 만들어진 기호
- 순차 코드 : 숫자가 차례대로 입력되어 있는 일련번호
- 블록 코드 : 구역을 구분한 뒤에 순차코드를 붙이는 것, 구분코드라고도 함.
- 10진 코드 : 코드화 대상항목을 0~9까지 10진 분할하고, 다시 그 각각에 대하여 10진 분할하는 방식
- 그룹 분류 코드 : 항목별로 일련번호를 부여
- 연상 코드 : 명칭이나 관계있는 숫자와 문자, 기호를 이용하여 부여
- 표의 숫자 코드: 제품의 수치등을 코드에 사용, 유효 숫자코드 라고도 함.
3-6. 디자인패턴
- 각 모듈의 세분화된 역할이나, 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 해결방식 또는 예제 (생성 5개, 구조 7개, 행위 11개)
- 생성 패턴 (추빌팩프싱)
- 추상팩토리 : 객체 생성코드가 상위 클래스에 존재, 하위 클래스가 받아씀.
- 팩토리메소드 : 객체 생성코드를 하위 클래스에서 구체화
- 빌더 : 분리된 인스턴스를 조합하여 객체를 생성
- 프로토타입 : 원본 복제, 비용 저렴
- 싱글톤 : 클래스 내 인스턴스 하나뿐임을 보장, 동시 참조 불가능
- 구조 패턴 (퍼플데프컴어브)
- 어댑터 : 일치하지 않는 인터페이스 변환
- 브릿지 : 추상층과 구현층을 분리하여 독립적 확장
- 컴포지트 : 트리구조 구성, 단일과 복합 개체 구분없이 다룸
- 데코레이터 : 기능 추가위해 다른 객체를 덧붙임
- 퍼싸드 : 서브 클래스들의 통합 인터페이스를 제공하는 상위클래스 구성
- 플라이웨이트 : 다수의 유사 객체 생성이 필요할 때 최대한 공유해서 사용
- 프록시 : 접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행
- 행위 패턴
- 책임연쇄 : 둘 이상의 객체가 연결되어 책임이 차례로 넘어감
- 커맨드 : 명령어 캡슐화, 로그에 기록
- 인터프리터 : 문법 표현 정의, 맞춤법 검사
- 반복자 : 접근이 잦은 객체는 동일한 인터페이스 사용하도록 순차접근
- 중재자 : 복잡한 상호작용 캡슐화
- 메멘토 : 특정 시점의 상태 객체화, 되돌리기 기능(Control+z)
- 옵서버 : 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
- 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
- 전략 : 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환 할 수 있게 정의하는 패턴
- 템플릿 메소드 : 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부처리를 구체화하는 패턴
- 방문자 : 각 클래스들의 데이터 구조에서 처리기능을 분리하여 별도의 클래스로 구성하는 패턴
'정보처리기사 필기' 카테고리의 다른 글
2과목 : 소프트웨어 개발 (2장. 통합구현 & 소프트웨어 패키징 : 주요 키워드 정리) (0) | 2022.08.01 |
---|---|
2과목 : 소프트웨어 개발 (1장. 데이터 입,출력 구현 : 주요 키워드 정리) (0) | 2022.08.01 |
1과목 : 소프트웨어 설계 (4장. 인터페이스 설계 : 주요 키워드 정리) (0) | 2022.08.01 |
1과목 : 소프트웨어 설계 (2장. 화면 설계 : 주요 키워드 정리) (0) | 2022.08.01 |
1과목 : 소프트웨어 설계 (1장. 요구사항 확인 : 주요 키워드 정리) (0) | 2022.08.01 |