dahliahye 님의 블로그

[정보처리기사] 실기_ 소프트웨어 아키텍쳐 (Software Architecture) 본문

자격증/정보처리기사

[정보처리기사] 실기_ 소프트웨어 아키텍쳐 (Software Architecture)

dahliahye 2026. 3. 14. 09:44

 

 

소프트웨어 아키텍쳐 (Software Architecture) 

 - 소프트웨어 시스템의 기본 구조, 시스템의 컴포넌트와 이들 간의 관계 기술 

 - 시스템의 골격을 제공, 고수준에서의 설계 지침을 제공하여 개발 방향성 제시 

 

소프트웨어 아키텍쳐 특징 

 간략성, 추상화, 가시성, 관점 모형 (다양한 이해당사자의 관점에 따른 모형을 제시)  , 의사 소통 수단 

 

소프트웨어 아키텍쳐 4 (개발, 기획자 관점) +1 (사용자 관점) 뷰 

 

  고객의 요구사항을 정리한 시나리오를 다양한 관점에서 분석하고 표현 

  복잡한 소프트웨어 아키텍쳐를 여러 이해관계가자 이해할 수 있도록 함. 

 

 - 논리 뷰 : 클래스나 컴포넌트의 종류와 관계 / 분석사 / 설계사 /시스템의 기능적 요구사항 표현 

 - 구현 뷰 : 프로그래머, 서브시스템의 모듈 구조와 관계 / 개발자의 관점 반영

 - 프로세스 뷰 : 시스템 통합자 / 시스템의 성능, 확장성, 효율 프로그램 실행 시의 동적 표현 (운영자) 

 - 배치 뷰  : 시스템 구성 , 물리적 배치  / 시스템 엔지니어 

 - 유스케이스 뷰 : 사용자 검증 (사용자 뷰) 

 

소프트웨어 아키텍쳐 패턴 (Software  Architecture Pattern) 

1) 계층화 패턴(Layered Pattern)  

      예) OSI 7계층, TCP/IP계층 등 

     - 시스템을 계층단위로 구분하여 구성하는 가장 일반적인 구간

     - 각 계층은 자신의 하위 계층이 제공하는 서비스에만 의존, 상위 계층에 서비스를 제공 

     - 논리적 구분이 명확해 유지보수와 변경이 용이

   

2) 클라이언트-서버 패턴 (Client-Server Pattern) 

      예) 웹-서버 브라우저, DB 서버-응용 프로그램 등 

     - 서버(Server)는 서비스를 제공, 클라이언트는 서버에 서비스를 요청 

     - 시스템을 서비스 제공자와 이용자로 명확히 분리하는 구조  

 

3) 마스터-슬레이브 패턴 (Master-slave Pattern) 

     예) 병렬 연산, 이미지 처리, Mapreduce 프레임워크 

     - 마스터가 작업을 여러 슬레이브에 분배, 슬레이브는 작업을 처리한 후 결과를 마스터에 전달 

     - 마스터는 슬레이브의 결과를 통합해 최종 결과 생성 

 

4) 파이프-필터 패턴 (Pipe-Filter Pattern)  

     예) Unix 파이프 명령(I), 데이터 변환 파이프라인 등 

     - 데이터를 단계적으로 처리하는 구조, 각 단계(필터)는 데이터를 가공해 출력, 결과는 파이프를 통해 다음 필터로 전달 

     - 데이터는 파이프를 통해 한 방향으로 흐르며, 각 필터를 이동할 때 오버헤드 발생할 수 있음.

        * 오버헤드 (Overhaed): 특정 작업을 처리하기 위해 필요한 추가적인 자원 소모 (시간, 메모리, 네트웤, 저장공간 등) 

        본래 목적(핵심 작업) 외에 발생하는 부수적인 비용.

 

 

 5) 브로커 패턴 (Broker Pattern 중개자 패턴)

     - 분산환경에서 서로 다른 컴포넌트 들이 통신할 때, 브로커가 중개 역할을 담당하는 구조 

     - 클라이언트는 서버와 직접 통신하지 않고, 브로커가 요청 전달, 결과 반환, 위치 투명성을 보장 

 

 6) 피어 투 피어 패턴 (Peer to Peer Pattern) 

     - 각 피어(Peer)가 서버이자 클라이언트 역할을 동시에 수행  

     - 중앙 서버 없이 각 노드 간 직접 통신이 이루어짐 

 

 7) 이벤트 버스 패턴 (Event-Bus Pattern) 

     예) 알림 서비스, 로그 수집, 실시간 채팅 

     - 이벤트 버스를 중심으로 이벤트 소스가 메세지를 발행 (Publish) 하고, 리스너가 구독(Subscribe) 하여 비동기적으로 동작 

     - 구성요소 간 결합도가 낮음. 

 

 8) 모델-뷰- 컨트롤러 패턴 (MVC Pattern) 

     - 사용자 인터페이스를 Model, View, Controller의 세 부분으로 나누어 설계 

     - 각 구성요소는 역할이 명확히 분리되어, 유지보수성과 재사용성이 높음 

     - 웹, GUI 애플리케이션에서 가장 널리 사용됨   

      * 모델:  시스템이 다루는 핵심 데이터 구조와 상태를 관리 (DB와 연결) 

      * 뷰 :    사용자에게 정보 표시 (UI)

      * 컨트롤러: 사용자의 입력 처리 및 흐름 제어 

 

   9) 블랙보드 패턴(Black board Pattern) 

     - 문제의 명확한 해결 절차가 정의되지 않았을 때 사용 

     - 여러 전문 지식 모듈이 공유 공간(Blackboard) 을 통해 데이터를 읽고 쓰며, 점진적으로 해를 완성 

 

 10) 인터프리터 패턴(Interpreter Pattern) 

    - 특정 언어의 문법을 정의하고, 해석기가 문장을 변환하여 실행 하는 구조