본문 바로가기
정보처리기사

[정보처리기사] - 소프트웨어 아키텍처

by Laplace 2024. 7. 21.

소프트웨어 아키텍처

- 소프트웨어 아키텍처는 소프트웨어를 구성하는 요스들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.

- 소프트웨어의 골격이 되는 기본구조로, 기능적 비기능적 요구사항이 반영되어 있어 이해 관계자들의 의사소통 도구로 활용

- 애플리케이션의 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 등을 결정

- 소프트웨어 아키텍처 설계의 기본 원리에는 모듈화, 추상화, 단계적 분해, 정보은닉이 있다.

 

모듈화

- 소프트웨어의 성능 향상, 시스템의 수정 및 재사용, 유지 관리 등을 용이하도록 시스템의 기능을 모듈 단위로 나눈것.

 

추상화

- 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것.

 

단계적 분해 

- 문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법.

- 소프트웨어의 포괄적인 기능에서부터 시작하여 점차 구체화하고, 알고리즘, 자료 구조 등 상세한 내역은 가능한 뒤로 미루어 진행.

 

정보 은닉

- 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법

- 정보 은닉을 통해 모듈을 독립적으로 수행

- 모듈이 변경되더라도 다른 모듈에 영향이 없으니 수정, 테스트, 유지보수가 용이.

 

소프트웨어 아키텍처의 설계 과정

- 설계 목표 설정 -> 시스템 타입 결정 -> 아키텍처 패턴 적용 -> 서브시스템 구체화 -> 검토

 

아키텍처 패턴

- 아키텍처 패턴은 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다.

- 소프트웨어 시스템의 구조를 구성하는 기본 윤곽을 제시.

- 레이어, 클라이언트-서버, 파이프-필터, 모델-뷰-컨트롤러 패턴 등이 있다.

 

레이어 패턴

- 시스템을 계층으로 구분하여 구성

- 하위 계층은 상위 계층에 대한 서비스 제공자

- 상위 계층은 하위 계층의 클라이언트

- 서로 마주보는 두 개의 층에서만 상호작용

ex) OSI 참조 모델

 

클라이언트-서버 패턴

- 하나의 서버 다수의 클라이언트 컴포넌트로 구성되는 패턴.

- 사용자가 클라이언트를 통해 서버에 요청, 클라이언트가 응답을 받아 사용자에게 제공.

ex) 인터넷 검색, 애플리케이션

 

파이프-필터 패턴

- 데이터 스트림 절차의 각 단계를 필터로 캡슐화 하여 파이프를 통해 전송하는 패턴.

- 앞 시스템의 처리 결과물을 파이프를 통해 전달받아 처리 후 그 결과물을 파이프를 통해 다음 시스템으로 넘겨주는 패턴을 반복.

- 데이터 변화, 버퍼링, 동기화등에 주로 사용

ex) UNIX의 쉘

 

모델-뷰-컨트롤러 패턴

- 서브시스템을 모델, 뷰, 컨트롤러로 구조화하는 패턴.

- 컨트롤러가 사용자의 요청을 받으면 핵심 기능과 데이터를 보관하는 모델을 이용하여 뷰에 정보를 출력하는 구조.

- 여러 개의 뷰를 만들 수 있다.

- 한 개의 모델에 대해 여러 개의 뷰를 필요로 하는 대화형 애플리케이션에 적합하다.