정보처리기사 1과목 소프트웨어 설계
3장. 애플리케이션 설계
020 소프트웨어 아키텍처 Ⓐ
소프트웨어 아키텍처
- 모듈화 : 기능을 모듈 단위로 나눔, 모듈 ↓ 통합비용 ↑, 모듈 ↑ 통합비용 ↓
- 추상화 : 포괄적인 개념 설계 후 세분화하여 구체화시킴 (ex. 과정 추상화, 데이터 추상화, 제어 추상화)
- 단계적 분해 : Niklaus Wirth가 제안한 하향식 설계 전략, 추상화를 반복
- 정보 은닉 : 모듈 내부 정보를 다른 모듈이 접근하거나 변경하지 못하도록 함, 수정·시험·유지보수 용이
- 설계 목표 설정 -> 시스템 타입 결정 -> 아키텍처 패턴 적용 -> 서브시스템 구체화 -> 검토
021 아키텍처 패턴 Ⓐ
레이어 패턴(Layers Pattern)
- 서브시스템이 계층구조를 이룸
- 마주보는 계층 사이에서만 상호작용
- 상위 계층 : 서비스 제공자, 하위 계층 : 클라이언트
- ex) OSI 참조 모델
클라이언트-서버 패턴(Client-Server Pattern)
- 하나의 서버, 여러개의 클라이언트
- 서버는 항상 대기 상태를 유지, 서로 독립적
파이프-필터 패턴(Pipe-Filter Pattern)
- 파이프를 통해 데이터 전송
- 재사용성, 확장 용이
- ex) UNIX Shell
모델-뷰-컨트롤러 패턴(Model-View-Controller Pattern)
- 모델 : 서브시스템의 핵심 기능과 데이터 보관
- 뷰 : 정보 표시
- 컨트롤러 : 입력 처리
- ex) 대화형 어플리케이션
기타 패턴
- 마스터-슬레이브 패턴(Master-Slave Pattern) : 마스터에서 슬레이브로 작업 분할 후 결과 리턴 (ex. 장애 허용 시스템, 벙렬 컴퓨팅 시스템)
- 브로커 패턴(Broker Pattern) : 브로커가 요청에 맞는 컴포넌트 연결 (ex. 분산 환경 시스템)
- 피어-투-피어 패턴(Peer-To-Peer Pattern) : 피어는 클라이언트가 될 수도, 서버가 될 수도 있음 (ex. 멀티스레딩)
- 이벤트-버스 패턴(Event-Bus Pattern) : 이벤트 메시지 발행 시 리스너들이 이벤트 처리
- 블랙보드 패턴(Blackboard Pattern) : 컴포넌트들이 블랙보드에 접근해 데이터를 찾음 (ex. 음성 인식, 차량 식별, 신호 해석)
- 인터프리터 패턴(Interpreter Pattern)
022 객체지향 Ⓐ
객체지향(Object-Oriented)
- 개체를 하나의 객체로 만듦
- 재사용 및 확장 용이
- 객체(Object) : 데이터와 함수로 이루어짐, 기억장소를 가짐
- 클래스(Class) : 공통된 속성과 연산을 가짐, 클래스의 객체를 인스턴스라 함
- 캡슐화(Encapsulation) : 데이터와 함수를 하나로 묶음, 정보 은닉, 인터페이스 단순해짐, 결합도 ↓
- 상속(Inheritance) : 상위 클래스의 속성을 하위 클래스가 물려받음
- 다형성(Polymorphism) : 연산을 자신에게 맞는 방식으로 다르게 수행 가능
023 모듈 Ⓐ
모듈
- 단독 컴파일 가능
- 재사용 가능
- 좋은 소프트웨어 : 결합도 ↓, 응집도 ↑
결합도(Coupling)
- 자료 결합도(Data Coupling) : 모듈 간 인터페이스가 자료로만 구성
- 스탬프 결합도(Stamp Coupling) : 자료 구조 전달, 조회
- 제어 결합도(Control Coupling) : 논리적 흐름 제어, 제어 신호 이용
- 외부 결합도(External Coupling)
- 공통 결합도(Common Coupling) : 공통 데이터 영역을 사용
-
내용 결합도(Content Coupling) : 내용이나 내부 자료를 직접 참조 및 수정
결합도 오름차순 : 자 스 제 외 공 내
응집도(Cohesion)
- 기능적 응집도(Functional Cohesion) : 기능 요소들이 연관되어 수행
- 순차적 응집도(Sequential Cohesion) : 출력 데이터를 다음 활동의 입력 데이터로 사용
- 교환적 응집도(Communication Cohesion) : 동일한 입력과 출력 사용
- 절차적 응집도(Procedural Cohesion)
- 시간적 응집도(Temporal Cohesion)
- 논리적 응집도(Logical Cohesion) : 유사한 성격 혹은 형태
-
우연적 응집도(Coincidental Cohesion) : 서로 관련 없는 요소로만 구성
응집도 내림차순 : 기 순 교 절 시 논 우
팬인(Fan-In)/팬아웃(Fan-Out)
- 팬인 : 나를 호출하는 모듈의 수
- 팬아웃 : 내가 호출하는 모듈의 수
- 팬인은 높게, 팬아웃은 낮게
024 공통 모듈 Ⓒ
공통 모듈
- 여러 프로그램에서 공통적으로 사용할 수 있는 모듈
-
정확성(Correctness), 명확성(Clarity), 완전성(Completeness), 일관성(Consistency), 추적성(Traceability)
정확히, 명확히, 모든 것을, 충돌나지 않게, 관계 파악 가능하도록
- 결합도 ↓, 응집도 ↑
025 코드 Ⓑ
코드의 기능
- 식별 기능 : 구분 가능
- 분류 기능 : 데이터를 그룹화
- 배열 기능 : 나열
코드의 종류
- 순차 코드(Sequence Code) : 일정 기준에 따라 (ex. 1, 2, 3, 4)
- 블록 코드(Block Code) : 공통성이 있는 것끼리 구분 후 일련번호 (ex. 1001~1100 : 총무부, 1101~1200 : 영업부)
- 10진 코드(Decimal Code) : 도서 분류식 코드 (ex. 1000 : 공학, 1100 : 소프트웨어 공학, 1110 : 소프트웨어 설계)
- 그룹 분류 코드(Group Classification Code) : 대분류,중분류,소분류 (ex. 1-01-001 : 본사-총무부-인사계)
- 연상 코드(Mnemonic Code) : 관계 있는 명칭, 약호, 숫자 (ex. TV-40 : TV-40인치)
- 표의 숫자 코드(Significant Digit Code) : 물리적 수치 (ex. 120-700-1500)
- 합성 코드(Combined Code) : 두 개 이상의 코드 조합 (ex. KE-711 : 대한항공 711기 (연상코드+순차코드))
026 디자인 패턴 ⒶⒷⒸ
GoF(Gang Of Four)
-
생성 패턴(Creational Pattern)
- 객체의 생성과 참조를 캡슐화
- ex) 추상 팩토리(Abstract Factory), 빌더(Builder), 팩토리 메소드(Factory Method), 프로토타입(Prototype), 싱글톤(Singleton)
-
구조 패턴(Structural Pattern)
- 클래스나 객체를 조합하여 더 큰 구조로
- 어댑터, 브리지, 컴포지트(Composite), 데코레이터(Decorator), 퍼싸드(Facade), 플라이웨이트(Flyweight), 프록시(Proxy)
-
행위 패턴(Behavioral Pattern)
- 상호작용 방법이나 책임 분배 방법 정의
- 책임 연쇄(Chain of Responsibility), 커맨드, 인터프리터(Interpreter), 이터레이터, 중재자(Mediator), 메멘토(Memento), 옵저버, 상태, 전략, 템플릿 메소드(Template Method), 비지터
REFERENCE
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편[개정판]