title: "**아키텍처 스타일 - Pipe & Filter : 92회 정보관리기술사 3교시 6번 문제 풀이**"
description: "**아키텍처 스타일 - Pipe & Filter : 92회 정보관리기술사 3교시 6번 문제 풀이**"
cleanUrl: /sw-engineer/pipe-and-filter
"ogImage": "<https://oopy.lazyrockets.com/api/v2/notion/image?src=https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F7570d2fc-66b1-4e23-bb3c-ff7b56842b0d%2F2e548273-5f72-47a1-be45-e240edf9b63c%2FUntitled.png&blockId=06f5d980-5613-4245-83cf-b33d7d06c7c8>"
floatFirstTOC: right

금번 92회 정보관리기술사 문제 중 아키텍처 스타일에 관련한 문제가 나왔는데, 본 문제가 상당히 의미있어 여기에 남겨본다. 단순 키워드 설명이 아니라 실전에 어떻게 응용해야 하는지, 그리고 4+1 View를 언급하며 해당 아키텍처의 UML 다이어그램까지 그려야 하는 복합적 사고를 요하는 문제였다. 단순 암기로는 풀 수 없는 전형적인 문제로서 기술사 문제가 지향해야 할 대표적 사례가 아닌가 생각해본다.

문제) 아래와 같은 간단한 응용에 대한 소프트웨어아키텍처를 작성하고자 한다. 다음 질문에 답하시오.

영문 문자열을 입력하여 각 문자별 대소문자를 체크하여 대소문자를 바꾸어 출력하는

프로그램이다.

입력 :  ToDayIsHoliDay           출력 : tOdAYiShOLIdAY

(1) C&C 뷰(Component & Connector, 프로세스 뷰)를 작성할 때 가장 적당한 아키텍처 스타일을 제시하고 필요한 컴포넌트와 커넥터를 제시하시오.

(2) 위에서 제시한 아키텍처 스타일에 따라 아키텍처를 작성하시오.

(3) 위 응용에 대한 모듈 뷰(논리 뷰) 작성을 위한 컴포넌트를 제시하고 아키텍처를 작성하시오.

아래는 내가 속한 90회 정보처리기술사회에 제출한 해당 문제의 풀이이다.

문제 분석

  1. 문제 해결의 key factor
    1. 데이터 변형 임무 : 데이터 처리 모듈과 이를 둘러싼 환경의 overview 제시
    2. 프로세스 뷰와 모듈 뷰 모두를 요구함으로 runtime 및 code 구조 설계 필요
    3. Data Flow Model : 데이터 프로세싱에 대한 전형적 데이터 흐름 모델
  2. 아키텍처 스타일 적용 필요성
    1. 기 검증된 패턴을 통한 최적의 아키텍처 제시
    2. 아키텍처 스타일이 제공하는 주요 제한조건을 통해 현 문제의 이슈사항 사전 인지
    3. Best Practice의 사용을 통해 아키텍처의 대외적 신뢰성 및 권위 획득

C&C 뷰 기반 아키텍처 스타일, 컴포넌트/커넥터 식별

  1. 선정 아키텍처 스타일 : Pipe & Filter
    1. 연속적인 input data에 대한 일련의 변형 동작으로 구성
    2. 데이터 변형을 담당하는 filter(component)와 다른 처리를 담당하는 filter간 데이터 채널을 담당하는 pipe(connector)로 구성
  2. Pipe & Filter 스타일 선정 근거
    1. Data flow Model에 적용 용이
    2. 다양한 C&C 뷰 기반 아키텍처 스타일 중 단순화된 데이터 프로세싱 스타일로 본 문제 성격에 부합
  3. Component와 Connector의 식별
    1. Pipe & Filter 스타일에서는 Component에 Filter가, Connector에는 Pipe가 직접적으로 매핑
    2. Component : Pump(Input), 문자 추출 Filter, 문자 변환 Filter, 문자조합 Filter, Sink(Output)
    3. Connector : 특별한 logic 없음 - Component 간 연결선으로 표시

Pipe & Filter 아키텍처 스타일에 따른 아키텍처

  1. 프로세스 뷰 기반 아키텍처 다이어그램

    Untitled

    1. Activity 기반으로 Component(Filter)와 Filter간 데이터 흐름 및 방향을 Connector(pipe)로 나타냄
    2. 아키텍처 설명
      1. Activity Diagram : Runtime(데이터 프로세스)의 주요 동작과 데이터 흐름을 나타내기에 적합한 UML 사용
      2. 3개의 주요 Activity : 주요 변환 프로세스를 3개의 filter로 식별 및 연계

모듈 뷰(논리 뷰) 기반 컴포넌트 식별 및 아키텍처

  1. 컴포넌트 식별

  2. 모듈 뷰 기반 아키텍처 : Class Diagram

    Untitled

References

  1. An integrated approach to software engineering By P.Jalote