소프트웨어 아키텍처
What is Architecture
- 소프트웨어 아키텍처는 조직의 목적을 만족하기 위해 만들어 진다
Software Architecture is a bridge
- 소프트웨어 아키텍처는 알려진 기술을 사용하여 설계 및 분석, 문서화 및 구현이 가능함
- 알려진 기술을 활용해 비즈니스 및 미션 목표를 달성함
- 복잡성을 다루어 이해하기 쉬운 형태로 만들 수 있음
건축과 비교(고층건물 짓기)
- 복잡해서 한 사람이 모든 것을 이해할 수 없음
- 여러 전문 분야가 필요
- 분야 간의 요구가 상충
- 중앙에서 통제하는 작업 공정 필요
위의 문제들로 설계가 필요 -> 소프트웨어 아키텍처
Software Architecture Definition
- 시스템을 이해하고 분석하기 위해 필요한 구조들의 집합
- 위의 구조들은 시스템을 이루는 소프트웨어 요소, 요소들의 관계, 요소와 관계의 특성으로 이루어짐
소프트웨어 아키텍처란 시스템을 설명 및 설계하기 위해 필요한 구성 요소와 관계를 나타내며 이들의 특성도 포함 한다
Architecture is a Set of Software Structures
- 소프트웨어 아키텍처는 여러 가지 구조로 구성된다
(아키텍처를 대표하는 단일 구조는 없다)
Modules
- 특정한 계산적인 책임이 할당된 구성 요소
- 프로그래밍 팀의 작업 할당의 기초
- 객체 지향 분석 및 설계의 결과물, 클래스 다이어그램
모듈은 소프트웨어 시스템 내에서 계산적인 책임을 가지고 있는 구성 요소, 프로그래밍 팀이 작업 할당 및 관리에 사용, 클래스 다이어그램을 통해 시각화 될 수 있음
Dynamic Structures
- 요소들이 실행 시간에 어떻게 상호 작용하느지에 중점을 둠
- 실행시간 구조는 Component-and-connector, C&C로 부름)
동적 구조는 소프트웨어 실행 중 요소들의 상호 작용에 주력, 실행시간 동안의 상호 작용과 구조는 C&C로 부름, 시스템의 동작을 시각화하고 이해하는데 도움을 준다
Mapping from software structures to the system’sorganizational, developmental, installation, and execution environments(소프트웨어 구조에서 시스템의 조직, 개발, 설치 및 실행 환경의 매핑)
- 모듈은 개발팀에 할당되어 개발되고 파일 구조에 배치 되거나 구성요소는 하드웨어에 배포된다
- 할당 구조
소프트웨어 구조와 시스템의 조직, 개발, 설치, 실행 환경과의 관계 , 소프트웨어 구조의 요소들이 시스템의 여러 측면과 연관되는 측면을 나타내는 것
요구사항
- 어떤 구조가 시스템과 시스템의 특성을 이해하게 도움을 준다면 그 구조는 아키텍처적인 것
- 추론은 시스템의 특정 속성에 관한 것이어야 하고 그 속성이 관계자들에게 의미있는 내용이어야 함
- 시스템이 달성하는 기능
- 시스템이 결함에 대처할 수 있는 가용성
- 시스템에 특정 변경을 가하는 난이도
- 시스템이 사용자 요청에 대한 응답을 처리할 수 있는 반응성