정보처리기사/필기

소프트웨어 아키텍처

노랑꼬리 2023. 2. 25. 08:49

1. 개념

외부에서 인식할 수 있는 특성이 담긴 소프트웨어의 골격이 되는 기본 구조

시스템 전체에 대한 큰 밑그림

 

 

2. 특징

- 개발할 소프트웨어에 대한 전체적인 구조를 다룸

- 소프트웨어를 이루고 있는 여러 구성 요소 (서브 시스템, 컴포넌트)를 다룸

- 구성 요소들이 인터페이스를 통해서 어떻게 상호작용하는지를 정의

- 세부 내용 보다는 중요한 부분을 다룸

- 시스템 설계와 개발 시 적용되는 원칙과 지침이 있어야 함

 

 

3. 아키텍처 설계 시 고려사항

- 모든 이해관계자의 이해를 도울 수 있는 의사소통 도구로 활용할 수 있어야 함

- 개발 비용, 기간, 조직의 역량 등의 제약 사항을 정의해야 함

- 시스템 품질 속성(성능성, 사용성, 보안성, 안전성, 검증성, 변경성 등)의 우선순위를 결정해야 함

- 소프트웨어 구성 요소를 표준화하고 패턴화하여 재사용 할 수 있게 설계해야 함

 

 

4. 아키텍처 모델의 분류

1) 데이터 중심형 모델

- 주요 데이터가 단일 중앙 저장소에서 중앙 관리되는 형태

- 모든 서브 시스템은 저장소에 저장된 공유 데이터에 접근하여 정보를 저장, 검색, 변경함

- 서브 시스템들은 각각 독립적이고 중앙 저장소를 이용해서 상호 대화를 함

※ 장점

- 데이터를 모순되지 않고 일관성 있게 관리

- 새로운 서브 시스템을 추가하기 쉬움

※ 단점

- 저장소가 병목 현상을 일으킬 수 있음

- 저장소를 변경하면 서브 시스템에 영향을 줌

 

2) 클라이언트-서버 모델

- 네트웨크를 이용하는 분산 시스템 형태의 모델

- 데이터와 처리 기능을 클라이언트와 서버에 분할하여 사용

 

3) 계층 모델

- 여러 가지 기능을 몇 개의 계층으로 나누어 배치

- 계층 모델 형태로 설계할 때는 상호작용하는 계층 간의 프로토콜을 정의해야 함

- 계층 간의 역할 분담을 명확히 하여 각 계층을 필요에 따라 쉽게 변경할 수 있음

 

4) MVC(Model-View-Controller) 모델

- 시스템을 모델, 뷰, 컨트롤러로 나누어서 구성하는 형태

- 모델 시스템 : 도메인의 지식을 저장(데이터베이스)

- 뷰 시스템 : 사용자에게 보여주는 모듈

- 제어 시스템 : 뷰와 모델 사이의 전달자 역할

※ 장점

- 각각의 서브 시스템이 독립적이므로 변경에 대한 영향을 덜 미침

※ 단점

- 기본 기능 설계로 인한 클래스 수의 증가로 복잡도가 증가할 수 있음

- 속도가 중요한 프로젝트에는 적합하지 않을 수 있음

 

5) 데이터 흐름 모델

- 파이프 필터 구조

- 필터에 해당되는 서브 시스템이 하나의 데이터를 입력으로 받아 처리한 후

  그 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복

- 데이터를 변환하는 시스템에서 주로 사용

- 필터 또는 파이프 단위로 나누어 개발할 수 있으므로 동시 개발이 가능