본문 바로가기
정보처리기사

[필기] 제 1과목 - 소프트웨어 설계 요점 정리

by 3.14pie 2023. 2. 26.

GoF (Gang of Four) 디자인 패턴

     - 생성 패턴 : 추상, 빌더, 팩토리 메소드, 프로토 타입, 싱글턴

     - 구조 패턴 : 어댑터, 브릿지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시

     - 행위 패턴 : 책임 연쇄, 커맨드, 인터프리터, 반복자, 중재자, 메멘토, 옵저버, 상태, 전략, 방문자, 템플릿메서드

 

객체지향 분석 방법론

    - 럼바우 : 객체 모델, 동적 모델, 기능 모델

    - Coad와 Yourdon : E-R 다이어그램, 객체 행위 모델링, 객체 식별, 구조 식별, 주체 정의...

    - Booch : 미시적(Micro), 거시적(Macro) 개발 프로세스, 클래스와 객체 분석 및 식별, 클래스 속성과 연산 정의

    - Jacobson : Use Case 강조

    - Wirsf-Brock : 분석과 설계 간 구분이 없고, 고객 명세서를 평가해 설계 작업까지 연속으로 수행

 

요구사항 검토

    - 동료 검토 : 명세서 작성자가 내용을 직접 설명하고 동료들이 들으며 결함을 발견

    - 워크 스루 : 검토 회의 전 명세서를 미리 배포해 사전 검토 후 짧은 검토 회의를 통해 결함을 발견

    - 인스펙션 : 명세서 작성자를 제외한 전문가들이 명세서를 확인하며 결함을 발견

 

결합도 : 모듈 간의 상호 의존하는 정도나 연관 관계를 의미하며, 결합도가 약할수록 품질이 좋고, 강할수록 좋지 않다.

    - 자료(자료구조) < 스탬프(배열, 레코드) < 제어(제어신호, 제어요소) < 외부(외부 선언 데이터) < 공통(공유된 공통 데이터 영역) < 내용 (다른 모듈의 내부 기능, 내부 자료, 수정)

 

응집도 : 모듈의 독립성을 나타내는 것으로, 모듈 내부 구성요소 간의 연관 정도를 말한다. 응집도가 강할수록 좋고, 약할수록 좋지 않다.

    - 우연적(서로 간에 어떤 의미도 없음) < 논리적(유사한 성격, 특정 형태로 분류) < 시간적(연관된 기능이 아닌, 특정 시간에 처리해야 하는 활동) < 절차적(다수의 기능을 순차적으로 수행) < 통신적(동일한 입출력으로 다른 기능을 수행) < 순차적(한 활동에서의 출력값을 다른 활동이 사용) < 기능적(모든 기능이 단일 목적을 위해 수행)

 

객체지향 설계 원칙 : SOLID

    - SRP(Single Responsibility Principle) : 단이 책임 원칙, 객체당 하나의 책임만 가져야 한다. 응집도는 높이고 결합도는 낮춘다.

    - OCP(Open Closed Principle) : 개방 폐쇄 원칙, 기존 코드 변경 없이 기능 추가가 가능하도록 설계한다. 캡슐화

    - LSP(Liskov Substitution Principle) : 리스코프 치환 원칙, 자식 클래스는 최소한 부모 클래스의 행위가 가능해야 한다. 책임 무시나 재정의가 아닌 확장을 의미한다.

    - ISP(Interface Segreeation Principle) : 인터페이스 분리 원칙, 사용하지 않는 인터페이스와 의존 관계를 맺어선 안되며 영향을 끼치지 않는다.

    - DIP(Dependency Inversion Principle) : 의존 역전 원칙, 객체 간 의존 관계가 성립될 때, 추상성이 낮은 클래스보다 높은 클래스와 맺어야 한다.

 

주요 아키텍처 패턴

    - 레이어 패턴 : 시스템을 계층으로 구분해 구성하는 고전적 방법

    - 클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성

    - 파이프-필터 패턴 : 각 단계를 필터 컴포넌트로 캡슐화 해 파이프를 통해 데이터를 전송

    - Model-View-Controller 패턴 : MVC 패턴이라고도 하며, 서브 시스템을 모델, 뷰, 컴포넌트 3 부분으로 구조화

 

UML 다이어그램

    - 구조적 다이어그램(정적) : 클래스(클래스 속성, 클래스 사이 관계), 객체(인스턴스, 객체 사이 관계), 컴포넌트(컴포넌트 간의 관계 및 인터페이스), 배치(결과물, 프로세스, 물리적 요소의 위치), 복합체(복합 구조를 갖는 경우, 내부를 표현), 패키지(모델 요소를 그룹화한 패키지의 관계)

    - 행위 다이어그램(동적) : 유즈케이스(사용자 요구 분석, 기능 모델링 사용), 순차(시스템, 객체 메시지 표현), 커뮤니케이션(순차 + 객체 간의 연관 포함), 상태(속한 클래스의 상태 변화), 활동(시스템의 기능 수행에서 객체 처리로직, 흐름을 순서에 따라 표현)

 

CASE : Computer Aided Software Engineering, 소프트웨어 개발 과정에서 요구분석, 설계(상위), 구현, 검사, 디버깅(하위) 전체 또는 일부를 컴퓨터와 전용 S/W 도구를 사용해 자동화 하는 것이다. 재사용성과 유지 보수성이 높아진다.

    - 기능 : 소프트웨어 생명 주기 전 단계 연결, 개발 모형 지원, 그래픽 지원, 모순 검사 및 오류 검증, 자료 흐름도 작성

    - 원천 기술 : 구조적 기법, 프로토타입, 자동 프로그래밍, 정보 저장소, 분산 처리

 

HIPO : Hierachy Input Process Output, 시스템 분석 및 설계나 문서화에 사용되는 기법이다. 입력, 출력, 처리로 구성되는 하향식 소프트웨어 개발을 위한 문서화 도구이다. 가시적 도표(도식 목차), 총체적 도표(총괄 도표, 개요 도표), 세부적 도표(상세 도표)