본문 바로가기
Data Analysis/정보처리기사

[1과목 소프트웨어 설계] 03. 애플리케이션 설계

by suvii 2024. 4. 17.

[Sec 1. 공통 모듈 설계]

설계 모델링

 - 협약에 의한 설계 : 선행 조건, 결과 조건, 불변 조건

 - 설계 종류 : 상위 설계, 하위 설계(모듈 설계 → 자료구조 설계 → 알고리즘 설계)

 - 설계의 원리

     분할과 정복 : 큰 문제를 작은 부분 문제로 나누어 해결

     추상화 : 유사한 객체들을 묶어 공통된 특성을 표현한 것(과정 추상화, 데이터 추상화, 제어 추상화)

     단계적 분해 : 복잡한 문제를 여러 단계로 분해하여 해결

     모듈화 : 큰 시스템을 작은 부분(모듈)으로 나누는 기법

     정보 은닉 : 시스템의 내부 상세 정보를 외부로부터 감추는 기법

 

소프트웨어 아키텍처

 - 품질 속성 : 정확성, 신뢰성, 효율성, 무결성, 사용 용이성, 유지 보수성, 시험 용이성, 유연성, 이식성, 재사용성, 상호 운용성

 - 4+1 뷰 : 논리 뷰, 구현 뷰, 프로세스 뷰, 배치 뷰 + 유스케이스 뷰

 - 소프트웨어 아키텍처 패턴 : 계층화 패턴, 클라이언트-서버 패턴, 마스터-슬레이브 패턴, 파이프-필터 패턴(필터 이동 시 오버헤드 발생), 브로커 패턴, 피어 투 피어 패턴, 이벤트-버스 패턴, 모델-뷰-컨트롤러(MVC) 패턴(DB, 화면, 로직)

 

공통 모듈

 - 공통 모듈 작성 원칙 : 정확성, 명확성, 완전성, 일관성, 추적성

    (내 친구 정명완이 세계 일추 했다.)

 

 - 모듈 설계 : 독립성↑ → 응집도↑, 결합도↓

    응집도 : 모듈 내부에서 구성 요소 간에 밀접한 관계를 맺고 있는 정도

     - 우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적

        ( 시절에 먹던 통한 대가 가 막혔는데..)

     결합도 : 모듈과 모듈 간의 관련, 의존된 정도

      - 자료 < 스탬프 < 제어 < 외부 < 공통 < 내용

        (데스 저래, 유랑 가 닮았대)

     팬 인(상위 모듈의 수), 팬 아웃(하위 모듈의 수)

 

 - 코드 설계

     코드의 유형 : 순차 코드, 10진 코드, 연상 코드, 표의 숫자 코드(중량, 면적, 용량), 합성 코드

     코드의 오류 : 생략 오류(123), 필사 오류(1235), 전위 오류(1324), 이중 오류(2143), 추가 오류(12345), 임의 오류(12367)

 

 

[Sec 2. 객체지향 설계]

객체지향 구성요소(붕어빵과 붕어빵 틀)

 - 클래스(틀) : 데이터를 추상화하는 단위

 - 인스턴스(붕어빵) : 같은 클래스에 속한 각각의 객체

 - 속성(팥, 슈크림, ..) : 객체들이 가지고 있는 고유한 데이터

 - 메서드 : 명령문의 집합

 - 메시지 : 객체에게 어떤 행위를 하도록 지시하는 명령

 

객체지향언어의 특징

 - 캡슐화 : 속성과 메서드를 하나로 묶은 것, 필요한 인터페이스만을 밖으로 드러냄

 - 정보은닉 : 객체가 가지고 있는 속성 일부를 감추어 객체의 외부에서는 접근이 불가능하게 하는 개념, 고려되지 않은 영향을 최소화가기 위함(오류의 파급효과를 줄이기 위함)

 - 상속 : 상위 클래스에서 속성이나 연산을 전달받아 새로운 형태의 클래스로 확장

 - 다형성 : 하나의 메시지에 대해 여러 가지 방법으로 응답할 수 있는 개념

    오버로딩 : 객체에서 동일한 메서드명을 인자값의 유형이나 갯수만 틀리게 하는 것

    오버라이딩 : 객체에서 상속받은 매서드를 재정의하는 것

 

객체지향 설계원칙(SOLID)

 - 단일 책임 원칙 : 1클래스 1책임

 - 개방 폐쇄 원칙 : 확장에 대해서는 open, 수정에 대해서는 close

 - 리스코프 치환 원칙 : 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.

 - 인터페이스 분리 원칙 : 사용하지 않는 인터페이스는 구현하지 말아야 한다.

 - 의존성 역전 원칙 : 의존 관계를 맺을 때 변화가 거의 없는 것에 의존해야 한다.

 

GoF 디자인 패턴

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

 - 구조(Structural) 패턴 : 브릿지 패턴, 컴포지트 패턴, 데코레이터 패턴, 퍼사드 패턴, 플라이웨이트 패턴, 프록시 패턴, 어뎁터 패턴

 - 행위(Behavioral) 패턴 : 상태 패턴, 전략 패턴, 옵서버 패턴