제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, 통신프로토콜)
반복자 : 접근이 잦을 때 동일한 인터페이스 사용, 순차적 접근 가능
중재자 : 복잡한 상호작용 과정을 캡슐화하여 객체로 정의, 의존성↓, 결합도↓
메멘토 : 되돌릴 수 있는 기능 제공
옵서버 : 상속된 객체에 변화된 객체의 상태를 전달
상태 : 동일한 동작을 다르게 처리
전략 : 동일한 알고리즘을 개별캡슐화하여 상호교환
템플릿 메소드 : 상위-골격정의, 하위-세부처리 구체화
방문자 : 처리기능분리, 별도 클래스 구성
'정보처리기사 > [inflearn] 필기 (완)' 카테고리의 다른 글
정보처리기사 - 제2과목 소프트웨어 개발 / 데이터 입출력 구현(1) (0) | 2022.03.28 |
---|---|
정보처리기사 - 제1과목 소프트웨어 설계 / 인터페이스 설계 (0) | 2022.03.23 |
정보처리기사 - 제1과목 소프트웨어 설계 / 화면 설계 (2) (0) | 2022.03.22 |
정보처리기사 - 제1과목 소프트웨어 설계 / 화면 설계 (1) (0) | 2022.03.08 |
정보처리기사 - 제1과목 소프트웨어 설계 / 요구사항 확인 (2) (0) | 2022.03.04 |