67. 구조패턴 (Structural Pattern)

클래스나 객체를 조합해서 더 큰 구조로 만들 수 있게 해 주는 패턴

 

총 7개

  1. 어댑터, Adapter
    호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
    기존 클래스를 이용하고 싶지만 인터페이스가 다를 때 이용

  2. 브리지, Bridge
    구현부에서 추상층을 분리하여 독립하여 확장할 수 있도록 한 패턴.
    기능과 구현을 두 개의 별도 클래스로 구성

  3. 컴포지트, Composite
    객체들을 트리 구조로 구성하여 디렉터리 안에 디렉터리가 있듯이 복합 객체 안에 복합 객체가 포함된 구조 표현할 수 있음

  4. 데코레이터, Decorator
    객체 간 결합을 통해 능동적으로 기능 확장할 수 있는 패턴
    임의의 객체에 부가기능 추가 위해 다른 객체를 덧붙이는 방식으로 구현

  5. 퍼싸트, Facade
    서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper 객체가 필요
    복잡한 서브 클래스를 피해 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 함

  6. 플라이웨이트, Flyweight
    다수의 유사 객체를 생성할 때 유용
    매번 인스턴스를 생성하는 게 아니라 가능한 한 공유해서 사용함으로써 메모리를 절약

  7. 프록시, Proxy
    접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴
    네트워크 연결, 메모리의 대용량 객체로의 접근 등에 주로 이용

 

68.  행위 패턴(Behavioral Pattern)

클래스나 객체가 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴
하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 결합도 최소화에 도움

 

총 11개

  1. 책임 연쇄, Chain of Responsi-bility
    요청을 처리할 수 있는 객체가 chian으로 묶여 있어 요청이 해결될 때까지 책임이 넘어감

  2. 커맨드, Command
    요청을 객체 형태로 캡슐화해서 재사용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴
    요청에 사용되는 각종 명령어들을 추상 클래스로 분리하여 단순화함

  3. 인터프리터, Interpreter
    언어에 문법 표현을 정의하는 패턴
    SQL이나 통신 프로토콜과 같은 것을 개발할 때 사용

  4. 반복자, Iterator
    접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 함, 내부 표현 방법 노출 없이 순차적 접근 가능

  5. 중재자, Mediator
    수많은 객체들 간의 복잡한 상호작용(Interface)를 캡슐화하여 객체로 정의

  6. 메멘토, Memento
    특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공, Ctrl+Z 같은 되돌리기 기능을 개발할 때 주로 이용

  7. 옵서버, Observer
    한 객체의 상태가 변하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
    주로 분산된 시스템 간에 이벤트를 생성/발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용

  8. 상태, State
    객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용

  9. 전략, Strategy
    동일한 계열의 알고리즘을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
    클라이언트는 독립적으로 원하는 알고리즘을 선택하여 사용할 수 있으며, 클라이언트에 영향 없이 알고리즘의 변경이 가능

  10. 템플릿 메서드, Template Method
    상위 클래스에서 골격을 정의하고 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴
    유사한 서브 클래스를 묶어 공통된 내용을 상위 클래스에서 정의함으로써 코드 양 줄이고 유지보수 용이하게 함

  11. 방문자, Visitor
    각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴
    분리된 처리 기능은 각 클래스를 방문(Visit)하여 수행함

 

69. 요구사항 검증 방법

  • 요구사항 검토, Requirements Review: 담당자들이 수작업으로 분석
    - 동료검토, Peer Review: 작성자가 직접 설명하고 동료들이 결함을 발견
    - 워크스루, Walk Through: 회의 전 미리 배포하여 사전 검토 후 회의를 통해 결함을 발견
    - 인스펙션, Inspection: 작성자를 제외한 다른 전문가가 결함을 발견

  • 프로토타이핑, Prototyping: 요구사항을 정확히 파악하기 위해 견본품을 만들어 최종 결과물을 예측

  • 테스트 설계 : 테스트 케이스를 생성하여 이후에 요구사항이 현실적으로 테스트 가능한지를 검토함

  • CASE 도구 활용 : 일관성 분석을 통해 요구사항 변경사항의 추적 및 분석, 관리하고 표준 준수여부 확인
    *CASE : Computer Aided Software Engineering
    : 요구사항을 자동으로 분석, 요구사항 명세서를 기술하도록 개발된 요구사항 분석을 위한 자동화 도구

 

72. 미들웨어 (Middleware)

Middle + Software
운영체제와 응용 프로그램 또는 서버와 클라이언트 사이에서 다양한 서비스를 제공하는 소프트웨어!

  • DB, Datebase: DB를 사용하여 시스템을 구축하는 경우 보통 2-Tier 아키텍쳐라고 함. 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어
  • RPC, Remote Procedure Call : 원격 프로시저 호출, 응용 프로그램을 사용해서 원격 프로시저를 마치 로컬 프로시저처럼 호출
  • MOM, Message Oriented Middleware : 메시지 지향 미들웨어, 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어, 온라인 업무보단 이기종 분산 데이터 시스템의 데이터 동기를 위해 사용됨
  • TP-Monitor, Transaction Processing Monitor: 트랜젝션 처리 모니터, 항공기나 철도예약업무와 같은 온라인 트랜젝션 업무에서 처리 및 감시하는 미들웨어, 사용자 수가 증가해도 빠른 응답속도를 유지해야 하는 업무에 주로 사용됨
  • WAS, Web Application Server: 정적인 컨텐츠를 처리하는 웹 서버와 달리 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어, 클라이언트/서버 환경보다는 웹 환경을 구현하기 위한 미들웨어

 

화이팅~!!!

🚩 2과목. 소프트웨어 개발

 

73. 자료구조의 분류

 

 

74. 선형 리스트 (Linear List)

  • 연속 리스트, Contiguous List
    배열 같이 연속적으로 저장되는 자료구조
    이용효율은 밀도가 1로서 가장 베스트
    중간에 데이터를 삽입하려면 연속된 빈 공간이 있어야 하고, 삽입과 삭제 시 자료 이동이 필요

  • 연결 리스트, Linked List
    자료를 반드시 연속적으로 저장하지 않고 임의의 장소에 저장하고 , 노드의 포인터 부분을 이용해서 서로 연결시킨 자료구조
    노드의 삽입과 삭제가 용이
    포인터 부분이 필요하므로 이용효율이 좋진 않다
    연결을 위한 포인터를 찾는 시간이 필요하기 때문에 접근 속도가 느리다.


75. 스택 (Stack)

리스트의 한쪽 끝으로만 삽입과 삭제가 이루어지는 자료구조

후입선출 LIFO, Last In First Out: 가장 나중에 삽입된 자료가 가장 먼저 삭제된다.

 

응용분야

  • 함수 호출의 순서 제어
  • 인터럽트의 처리
  • 수식 계산 및 수식 표기법
  • 컴파일러를 이용한 언어 번역
  • 부 프로그램 호출 시 복귀주소 저장
  • 서브루틴 호출 및 복귀주소 저장

 

76. 큐 (Queue)

리스트의 한쪽 끝에서 삽입이 이루어지고 다른 쪽에선 삭제가 이루어지는 자료 구조

선입선출 FIFO, First In First Out: 가장 먼저 삽입된 자료가 가장 먼저 삭제된다.

시작과 끝을 표시하는 두 개의 포인터가 있다.

 

'CS 공부 > 정처기 핵심: 타이핑' 카테고리의 다른 글

이미 딴 정처기를 왜 다시 공부?  (0) 2024.04.16
객체지향 설계 원칙 ~ 생성패턴  (0) 2024.04.13
UI의 특징~럼바우의 분석기법  (0) 2024.04.12
HIPO~다이어그램  (0) 2024.04.08
DBMS~DD  (0) 2024.04.07

+ Recent posts