소프트웨어 아키텍처란 무엇인가?

김지환·2022년 8월 10일
0

소프트웨어 아키텍처란?

소프트웨어 아키텍처는 소프트웨어 시스템의 서브시스템이나 컴포넌트, 이들 사이의 관계를 기술한 것입니다. 이외에도 소프트웨어 아키텍처의 정의는 여러가지가 있는데 모든 정의는 소프트웨어 아키텍처를 구성하는 핵심적이고 기본적인 측면을 의미합니다.

소프트웨어 아키텍처의 특성

아키텍처는 구조를 정의한다.

시스템 아키텍처는 시스템의 구조적인 세부사항으로 가장 잘 표현된다. 그 예로 구조적인 컴포넌트나 클래스 다이어그램이 가장 일반적이다.

아키텍처는 핵심 요소의 집합을 선택한다.

아키텍처는 시스템의 모든 컴포넌트와 그에 관한 모든 사항을 문서화하지 않는다.

아키텍처는 초기 디자인 결정사항을 기술한다.

초기 디자인 결정사항은 요구사항을ㄹ 면밀히 분석하고 조직적, 기술적, 시간적인 제약사항과 일치시켜야 한다.

아키텍처는 이해당사자의 요구사항을 관리한다.

시스템은 이해당사자의 요구에 따라 설계되고 만들어진다. 각각의 트레이드 오프를 합리적으로 계산하여 설계하여야 한다.

아키텍처는 조직 구조에 영향을 미친다.

시스템 아키텍처는 하향식 구조에 관한 최상위 서술이므로 작업 분할 구조의 기반으로도 사용된다.

소프트웨어 아키텍처의 중요성

직접 시스템을 설계하고 개발해보지 않으면 소프트웨어 아키텍처의 중요성을 이해하기 어려울 수 있다. 나 또한 초기에는 소프트웨어 아키텍처를 고려하지 않고 마구잡이식 개발을 하다보니 중간 중간 다시 기획하고 개발하고를 반복했던 경험이 있다. 이렇다 보니 초기 디자인이 얼마나 중요한가를 나중에서야 깨닫곤 했다. 아래 소프트웨어 아키텍처가 중요한 이유를 기술했다.

  • 모든 시스템은 문서화 여부와 상관없이 아키텍처를 갖는다.
  • 아키텍처 문서화를 공식화하고 여러 이해당사자(아키텍트, 개발팀, 고객, 프로젝트 관리자, 마케팅팀등 )에게 공유할 수 있다면 변경 관리와 반복개발이 가능하다.
  • 공식적인 아키텍처가 정의되고 문서화되면 소프트웨어 아키텍처의 모든 이점과 특성을 활용할 수 있다.

아키텍처 품질속성

품질속성이란 측정 가능하고 테스트 가능한 시스템 속성으로 비기능적인 측면과 관련해 미리 정의된 환경에서 시스템의 성능을 평가하는 데 사용할 수 있다.

다양한 품질속성

  • 변경 용이성 ( Modiffiability )
  • 테스트 용이성 ( Testability )
  • 확장성과 성능 ( Scalability and performance )
  • 가용성 ( Availability )
  • 보안 ( Security )
  • 배포 용이성 ( Deployability )

Reference

파이썬을 활용한 소프트웨어 아키텍처 / 저자 아난드 발라찬드라 필라이

profile
Developer

0개의 댓글