[정보처리기사도전기]#8 디자인패턴

Ben·2021년 7월 26일
0

2. 디자인패턴

(1) 디자인 패턴의 개요

[1] UML과 같은 일종의 설계기법이며, UML이 전체설계도면을 설계한다면, Design Pattern은 설계방법을 제시한다.
[2] 객체지향 소프트웨어 시스템 디자인 과정에서 자주 접하게 되는 디자인 문제에 대한 기존의 시스템에 적용되어 검증된 해법의 재사용성을 높여 쉽게 적용할 수 있도록 하는 방법론이다.
[3] 패턴은 여러 가지 상황에 적용될 수 있는 탬플리소가 같은 것이며, 문제에 대한 설계를 추상적으로 표현한 것이다.
[4] 패턴(Pattern)은 90년대 초반 Erich Gamma에 의해 첫 소개된 이후 95년에 Gamma, Helm, John, Vlissides 네 사람에 의해 집대성되었고, 디자인패턴(Design Pattern)이라는 것이 널리 알려졌다.

(2) 디자인 패턴의 특성

[1] 객체지향 방법론의 가장 큰 장점인 재사용성과 모듈성을 극대화시켜서 이를 적용하면 시스템 개발은 물론 유지보수에도 큰 효과가 있다.
[2] 디자인 패턴은 개개의 클래스, 인스턴스, 컴포턴트들의 상위단계인 추상개념을 확인하고 특징짓는다.
[3] 상위단계에서 적용될 수 있는 개념이며, 시스템 구조를 재사용하기 쉽게 만들 수 있다.

(3) 디자인 패턴의 장점

[1] 많은 전문가의 경험과 노하우를 별다른 시행착오 없이 얻을 수 있다.
[2] 실질적 설계에 도움이 된다.
[3] 쉽고 정확하게 설계내용을 다른 사람과 공유 가능하다.
[4] 기존 시스템이 어떤 디자인 패턴을 사용하고 있는 지를 기술함으로써 쉽고 간단하게 시스템을 이해할 수 있다.

(4) 디자인 패턴의 분류와 종류

1) 생성관련 패턴(Creational Pattern)

[1] 객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성해야 할 객체 인스턴스사이의 연결을 끊어주는 패턴이다.
[2] 객체의 생성방식을 결정하는 데 포괄적인 솔류션을 제공하는 패턴이다.
[3] 종류 : 빌더(Builder), 프로토타입(Prototype), ⭐️ 싱글턴(Singleton), 추상 팩토리(Abstract Factory), 팩토리 메소드(Factory Method) 패턴등

싱글턴 -> 객체 생성 제한

2) 구조화 패턴(Structural Pattern)

[1] 다른 기능을 가진 객체가 협력을 통해 어떤 역활을 수행할 때, 객체를 조직화시키는 일반적인 방식을 제시한다.
[2] 클래스와 객체가 보다 대규모 구조로 구성되는 방법에 대한 해결안을 제시한다.
[3] 종류 : 브리지(Bridge), 데코레이터(Decorator), 컴포지트(Composite), 프록시(Proxy), 어댑터(Adapter), ⭐️ 퍼케이드(Facade), 플라이웨이트(Flyweight), 다이나믹 링키지(Dynamic Linkage), 가상 프록시 패턴 등이 있다.

퍼샤드 -> 서브 시스템

3) 행위 패턴(Behavioral Patterns)

[1] 객체의 행위를 조직화(Organize), 관리(manage), 연합(combine), 하는 데 사용되는 패턴이다.
[2] 객체간의 기능을 배분하는 일과 같은 알고리즘 수행에 주로 이용된다.
[3] 종류 : 비지터(Visitor), 탬플릿 메소드(Template Method), 커맨드(Command), 이터레이터(Iterator), 옵저버(Observer), 스테이트(State), 스트래티지(Stratagy), 메멘토(Memento), Chain of Responsibility, 인터프리터(Interpreter), 미디에이터(Mediator)패턴 등이 있다.

옵저버 패턴 -> 일대다

제 5장 인터페이스 설계

제1절 인터페이스 요구사항 확인

1. 내외부 인터페이스 요구사항

인터페이스 요구사항이란 목표 시스템과 외부 환경이 상호 작용할 수 있도록 연결하기 위한 조건이나 특성 및 규약 등에 대한 요건을 기술한 것이다.
조직의 내외부에 존재하는 여러 시스템들의 상호 윤영을 통해 작용할 수 있도록 접속 방법이나 규칙이 내외부 인터페이스라 할 수 있다.

(1) 외부 인터페이스 요구사항

[1] 사용자 인터페이스

  • 시스템이 요구하는 각각의 사용자 인터페이스의 논리적인 특징을 설명
  • 폰트, 아이콘, 버튼 레이블, 이미지, 색상 체계, 필드탭 순서, 공통으로 사용되는 컨트롤 등에 대한 표준
  • 화면 레이아웃 또는 해상도 제약 조건
  • 도움말 버튼과 같이 모든 화면에 나타나는 표준 버튼, 기능 또는 탐색 링크
  • 단축키

[2] 하드웨어 인터페이스(Hardware Interface)

  • 시스템의 소프트웨어와 하드웨어 컴포넌트간의 모든 인터페이스의 트깆ㅇ을 설명

[3] 소프트웨어 인터페이스(Software Interface)

  • 이 제품과 다른 소프트웨어컴포넌트(데이터베이스, 윤영체제, 툴, 라이브러리, 통합 상업용 컴포넌트)간의 연결을 설명. 소프트웨어 컴포넌트 간의 교환되는 메시지, 데이터와 컨트롤 항목을 설명한다.

[4] 통신 인터페이스(CommunicationsInterface)

  • 이메일, 웹 브라우저, 네트워크 통신 프로토콜, 전자 문서와 같이 제품이 사용할 모든 통신 기능에 대한 요구사항을 설명한다. 관련된 모든 메시 지 형태를 정의하고 통신 보안 도는 암호화 문제, 데이터 전송률과 동기화 메커니즘을 명시한다.

(2) 내부 인터페이스 요구사항

[1] 시스템 초기화 함수 제공
[2] 시스템 시작시 관련 변수 초기화 하함수
[3] 새로운 타입의 폰트 추가 용이
[4] 추가 용이를 위하여 아키텍처 패턴 사용 구현

profile
프로그램을 만드는것을 업으로 삼은 사람입니다

0개의 댓글