정보처리기사/[inflearn] 필기 (완)

정보처리기사 - 제1과목 소프트웨어 설계 / 애플리케이션 설계

web_seul 2022. 3. 23. 17:25

 제1과목 애플리케이션 설계 

▷ 애플리케이션 설계 A

> 소프트웨어 아키텍처 : 기본골격구조, 구성요소간의 관계

- 소프트웨어 아키텍처의 설계 : 원칙, 지침, 소통도구, 좋은품질 유지, (비)기능적 요구사항에 대한 해결사항 모색

- 모듈화 : 그룹화(모듈크기와 총개수 고려)

- 추상화 : 간략화

  과정추상화(자세한 수행과정 정의x, 전반적 흐름 파악), 데이터추상화(데이터의 세부적인 속성x, 구조 대표), 제어추상화(상세한 이벤트 발생 방법x, 대표 표현 대체)

- 단계적 분해 : 하향식 설계방법 (상위->하위, 구체화), 추상화의 반복으로 더욱 세분화(기능->알고리즘, 자료구조)

- 정보은닉 : 감추기, 변경하지 못하도록, 모듈간의 영향↓

- 소프트웨어 아키텍처의 품질 속성

  시스템 측면(성능, 보안, 가용성, 기능성, 사용성), 비즈니스 측면(시장적시성, 비용, 예상 시스템 수명), 아키텍처 측면(개념적 무결성(정확한 데이터 유지) - 시스템 구성요소의 일관성 유지, 정확성 - 사용자의 요구사항 충족, 구축가능성

- 소프트웨어 아키텍처의 설계 과정

 설계 목표 설정(개발방향, 우선순위, 목적) -> 시스템 타입설정(아키텍처 패턴) -> 아키텍처 패턴 적용(시스템 표준) -> 서브시스템 구체화(상호작용) -> 검토

 

> 아키텍처 패턴 : 전형적 해결방식, 기본윤곽, 규칙, 지침, 다른 시스템과의 관계

- 아키텍처 패턴의 장점 : 시간단축, 고품질SW 생산, 안정적, 의사소통 간편, 구조이해용이, 

- 종류 : 레이어 패턴, 클라이언트-서버패턴, 파이프-필터패턴, 모델-뷰-컨트롤러 패턴 등

  1) 레이어 패턴 : 계층 구분, 고전적 방법, 상중하, OSI참조모델

  2) 클라이언트-서버패턴 : 항시 대기상태 ex) 네이버

  3) 파이프-필터패턴 : 캡슐화하여 파이프를 통해 전송

  4) 모델-뷰-컨트롤러 패턴(MVC) : 데이터보관-(사용자에게)정보표시-(사용자의)입력처리

  5) 기타

     마스터-슬레이브 패턴(마스터의 작업지시), 브로커 패턴(사용자와 서비스 연결), 피어-투-피어 패턴(서버-클라이언트의 동등한 입장), 이벤트-버스 패턴(이벤트처리), 블랙보드 패턴(컴포넌트 접근, 해결책이 명확하지 않은 문제처리에 유용, ex. 음성, 차량, 신호 등), 인터프리터 패턴(특정언어 해석시)

 

▷ 애플리케이션 설계 B

> 객체지향

- 객체 : 데이터와 그 데이터에 관련되는 동작을 모두 포함한 개념

- 객체 지향 : 실 세계의 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의 객체(Object)로 표현하는 개념

- 객체 지향의 구성요소

  객체 : 데이터+연산, 메소드: 객체의 구체적인 연산을 정의한 것

  클래스(Class) : 유사한 객체들을 모아 공통된 특성을 표현한 것, 클래스로부터 생성된 새로운 객체를 인스턴스(Instance)라고 함

  메시지(Message) : 객체들 간의 상호작용이 일어나기 위해서 메시지가 필요하며 메시지를 통하여 객체의 동작이 수행됨

- 객체 지향 기법 : 캡슐화(정보은닉), 상속, 추상화(단순화), 다형성(고유한 방법으로 응답가능)

 

> 모듈

- 모듈화 : 모듈이란 소프트웨어를 각 기능별로 분할하는 것으로 소프트웨어 구조를 이루는 기본 단위, 모듈화는 독립성이 높아야 하며 모듈의 독립성은 결합도(모듈간의 관련성)와 응집도(명령여간의 관련성)에 의해 측정됨

- 결합도 : 한 모듈과 다른 모듈간의 상호의존도를 측정하는 것으로 독립적인 모듈이 되기 위해서는 결합도가 약해야 함

결합도 강함 내용 결합도(Content coupling) A->B, 다른 모듈의 내용참조, A의 변경이 B에 영향을 미침



공통 결합도(Common coupling) 공통 자료 영역 참조, 영향을 미침
외부 결합도(External coupling) 외부로 선언한 데이터 참조, 영향을 미침
제어 결합도(Control coupling) 제어 요소가 전달될 때 참조
스탬프 결합도(Stamp coupling) 자료구조가 전달될 때 결합도
결합도 약함 데이터 결합도(Data coupling) 모듈간의 자료요소간 결합도

- 응집도(cohesion) : 한 모듈 내에 있는 구성 요소들이 서로 관련되어 있는 정도를 의미하며, 관련성을 측정하는 것으로 응집도가 높을수록 설계되도록 해야한다.

응집도 강함 기능적 응집도(functional cohesion) 단일문제와 연관

순차적 응집도(sequential cohesion) 출력데이터가 입력데이터로 사용되는 경우
통신적(교환적) 응집도(communicational cohesion) 동일한 입출력이 다른 기능 수행
절차적 응집도(procedural cohesion) 구성요소들의 순차적 수행
시간적 응집도(temporal cohesion) 특정시간에 처리되는 기능의 모듈
논리적 응집도(logical cohesion) 유사한 성격, 특정형태로 처리
응집도 약함 우연적 응집도(coincidental cohesion) 서로 관련없는 요소

 

> 공통 모듈의 개념

- 전체 프로그램의 기능 중 공통적으로 사용할 수 있는 모듈

- 공동 모듈 명세 작성 원칙 : 정확성, 명확성(중의적 해석x), 완전성(모든것), 일관성(상호충돌x), 추적성(출처, 관계 파악)

 

▷ 애플리케이션 설계 C

> 코드 : 자료추출을 위한 기호, 정보를 신속 정확 명료하게 전달 가능

- 주요기능 : 식별기능(성격에 따른 구분), 분류기능(특정 기준), 배열기능(의미부여)

- 코드의 종류 : 순차코드(발생순서대로), 블록코드(공통성), 10진코드(도서분류코드), 그룹분류코드(대중소 분류), 연상코드(예측), 표의숫자 코드(유효숫자코드)(길이, 넓이, 부피 등 물리적인 수치), 합성 코드(조합)

 

> 디자인 패턴 : 재사용 가능하도록

- 생성패턴 (5개) : 객체의 생성과 관련된 패턴, 프로그램 구조에 영향을 미치지 않도록 유연성

   추상팩토리 : 구체적 클래스 의존x, 인터페이스를 통해 연관, 의존하는 그룹의 상호작용을 추상적으로 표현

   빌더 : 조합하여 객채 생성

   팩토리 메소드 : 객체를 생성하는데 서브클래스에서 처리하도록 캡슐화(상위클래스: 인터페이스 담당)

  프로토타입 : 원본 객체를 복제해서 객체 생성

  싱글톤 : 생성된 객체를 어디서든 참조(동시x)

 

- 구조패턴 (7개) : 더 큰 구조로, 복잡한 시스템 개발에 용이

  어댑터 : 호환성이 없는(인터페이스가 일치하지않는) 클래스를 다른 클래스가 이용가능하도록

  브리지 : 기능과 구현이 별도 클래스에서 구현됨

  컴포지트 : 복합객체, 단일객체의 구분없이 다루고자 할 때 사용

  데코레이터 : 객체간의 결합으로 능동적 기능 확장, 부가적 기능추가를 위한 결합

  퍼씨드 : 상위의 인터페이스 구성

  플라이웨이트 : 인스턴스를 공유해서 사용, 메모리 절약 

  프록시 : 접근이 어려운 객체와 연결객체 사이의 인터페이스 역할

 

- 행위패턴 (11개) : 상호작용, 책임분배

  책임 연쇄 : 하나의 객체가 처리하지 못한 경우 다음 객체로 넘어감

  커맨드 : 요청을 객체형태로 캡슐화하여 재사용가능하도록

  인터프리터 : 언어의 문법표현 정의(ex. SQL, 통신프로토콜)

  반복자 : 접근이 잦을 때 동일한 인터페이스 사용, 순차적 접근 가능

  중재자 : 복잡한 상호작용 과정을 캡슐화하여 객체로 정의, 의존성↓, 결합도

  메멘토 : 되돌릴 수 있는 기능 제공

  옵서버 : 상속된 객체에 변화된 객체의 상태를 전달

  상태 : 동일한 동작을 다르게 처리

  전략 : 동일한 알고리즘을 개별캡슐화하여 상호교환

  템플릿 메소드 : 상위-골격정의, 하위-세부처리 구체화

  방문자 : 처리기능분리, 별도 클래스 구성

 

반응형