[정보처리기사] 개정 후 2020 시나공 필기 요약 정리 - 1과목 3장. 애플리케이션 설계



:bulb: 정보처리기사 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) : 내용이나 내부 자료를 직접 참조 및 수정

    :speaker: 결합도 오름차순 : 자 스 제 외 공 내

응집도(Cohesion)

  • 기능적 응집도(Functional Cohesion) : 기능 요소들이 연관되어 수행
  • 순차적 응집도(Sequential Cohesion) : 출력 데이터를 다음 활동의 입력 데이터로 사용
  • 교환적 응집도(Communication Cohesion) : 동일한 입력과 출력 사용
  • 절차적 응집도(Procedural Cohesion)
  • 시간적 응집도(Temporal Cohesion)
  • 논리적 응집도(Logical Cohesion) : 유사한 성격 혹은 형태
  • 우연적 응집도(Coincidental Cohesion) : 서로 관련 없는 요소로만 구성

    :speaker: 응집도 내림차순 : 기 순 교 절 시 논 우

팬인(Fan-In)/팬아웃(Fan-Out)

  • 팬인 : 나를 호출하는 모듈의 수
  • 팬아웃 : 내가 호출하는 모듈의 수
  • 팬인은 높게, 팬아웃은 낮게

024 공통 모듈 Ⓒ

공통 모듈

  • 여러 프로그램에서 공통적으로 사용할 수 있는 모듈
  • 정확성(Correctness), 명확성(Clarity), 완전성(Completeness), 일관성(Consistency), 추적성(Traceability)

    :bulb: 정확히, 명확히, 모든 것을, 충돌나지 않게, 관계 파악 가능하도록

  • 결합도 ↓, 응집도 ↑

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), 비지터



:bookmark: REFERENCE
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편[개정판]