소프트웨어 아키텍처는 소프트웨어 시스템의 서브시스템이나 컴포넌트, 이들 사이의 관계를 기술한 것입니다. 이외에도 소프트웨어 아키텍처의 정의는 여러가지가 있는데 모든 정의는 소프트웨어 아키텍처를 구성하는 핵심적이고 기본적인 측면을 의미합니다.
시스템 아키텍처는 시스템의 구조적인 세부사항으로 가장 잘 표현된다. 그 예로 구조적인 컴포넌트나 클래스 다이어그램이 가장 일반적이다.
아키텍처는 시스템의 모든 컴포넌트와 그에 관한 모든 사항을 문서화하지 않는다.
초기 디자인 결정사항은 요구사항을ㄹ 면밀히 분석하고 조직적, 기술적, 시간적인 제약사항과 일치시켜야 한다.
시스템은 이해당사자의 요구에 따라 설계되고 만들어진다. 각각의 트레이드 오프를 합리적으로 계산하여 설계하여야 한다.
시스템 아키텍처는 하향식 구조에 관한 최상위 서술이므로 작업 분할 구조의 기반으로도 사용된다.
직접 시스템을 설계하고 개발해보지 않으면 소프트웨어 아키텍처의 중요성을 이해하기 어려울 수 있다. 나 또한 초기에는 소프트웨어 아키텍처를 고려하지 않고 마구잡이식 개발을 하다보니 중간 중간 다시 기획하고 개발하고를 반복했던 경험이 있다. 이렇다 보니 초기 디자인이 얼마나 중요한가를 나중에서야 깨닫곤 했다. 아래 소프트웨어 아키텍처가 중요한 이유를 기술했다.
품질속성이란 측정 가능하고 테스트 가능한 시스템 속성으로 비기능적인 측면과 관련해 미리 정의된 환경에서 시스템의 성능을 평가하는 데 사용할 수 있다.
다양한 품질속성
파이썬을 활용한 소프트웨어 아키텍처 / 저자 아난드 발라찬드라 필라이