Structures in Software Architecture
Architecture is an Abstraction
- 아키텍처는 소프트웨어 요소와 요소 간의 관계로 구성
- 복잡성을 다루는 방법
- 아키텍처는 복잡성(요소간의 관계)을 다루기 위해 공개적인 측면에 중점을 둔다 -> 소프트웨어 요소의 개인적인 세부 사항, 내부 구현은 아키텍처적인 부분이 아니라는 의미
- 추상화는 시스템의 복잡성을 다루는데 필수적
Architecture includes Behavior
- 각 요소의 행동은 요소들이 서로 상호 작용하는 방식을 반영
- 요소의 행동은 다른 요소에 영향을 미치거나 시스템 전체에도 영향을 미칠 수 있다
- 이러한 행동은 소프트웨어 아키텍처의 일부로 고려되어야 하며, 문서화되어야 한다
Every Software System has a Software Architecture
- 모든 시스템은 소프트웨어 아키텍처를 가짐
- 모든 시스템이 시스템을 이해하고 추론하기 위해 필요한 요소와 요소간의 관계로 구성되어 있기 때문
- 하지만 아키텍처가 누구에게도 알려지지 않을 수 있으며 설명 또는 명세와 별도로 존재할 수 있다
아키텍처가 시스템의 본질적인 부분이지만 문서화되거나 명세화되지 않을 수도 있다
Software Architecture Definition - 2
- 아키텍처는 시스템의 기본적인 구성을 나타낸다 이것은 시스템의 구성 요소, 그것들의 관계, 설계 및 진화를 이끄는 원칙으로 구체화
- 이 전 내용과 비슷
Goal of Software Architecture
- 일정한 설계 변수가 결정되어야 함
- 주어진 제약 조건 하에서 최상의 측정 가능한 성능을 달성 해야함
아키텍처의 목적 -> 최적화 : 주어진 제약 조건에서 설계 변수를 결정하여 가장 우수한 성능(목적 성능)을 최대화, 최소화 하는 것
Common Aspects in Software Architecture Problem
- 문제에는 여러 해결책이 존재함, 최적의 해결책을 찾아야 한다
- 달성해야 할 하나 이상의 목표와 그 목표를 얼마나 잘 달성하는지 측정하는 방법이 존재
- 다양한 형태의 제약 조건이 존재(hard, soft)
- hard는 강제적으로 지켜져야 하는 제약(비용, 공장의 성능 같은 것들)
- soft는 최적화와 관련이 높음
- 영향을 주는 주요한 변수의 변경
- 이들 값의 변경은 성능이나 제약 조건 위반에 영향을 미친다 -> 영향 변수의 조정으로 시스템의 성능을 최적화하면서 제약 조건을 만족 해야함
소프트웨어 개발
- 모델링(분석 / 설계) -> 구현의 단계를 개발로 부름
SW 개발 패러다임
소프트웨어 모델링 목적
- 모델링 : 표현, 명세, 구축, 문서화