이번 글에서는 소프트웨어 아키텍처를 정의하는 여러 가지 표현들과 소프트웨어 아키텍처의 역할에 대해서 알아보겠습니다. 그리고 좋은 소프트웨어 아키텍처를 설계하기 위해 필요한 4가지 Design Mindset도 정리했습니다.
이번 글의 순서는 아래와 같습니다.
- 소프트웨어 아키텍처를 정의하는 여러 가지 표현들
- 소프트웨어 아키텍처의 역할
- 좋은 소프트웨어 아키텍처 설계를 위한 Design Mindsets 4가지
- 소프트웨어 아키텍처와 품질 속성
소프트웨어 아키텍처를 정의하는 여러가지 표현들
소프트웨어 아키텍처의 기본 개념은 소프트웨어를 구성하는 다양한 모듈(기능)과 컴포넌트(모듈의 집합)의 관계, 구성입니다. 소프트웨어 아키텍처를 정의하는 합의된 단 하나의 표현은 없기 때문에 다양한 정의를 알아두면 좋습니다.
- The set of structures needed to reason about the system which comprise software elements, relations among them, and properties of both
- 프로그램 혹은 컴퓨팅 시스템의 소프트웨어 아키텍처란 소프트웨어 구성요소, 이들 구성요소의 가시적인 속성, 그리고 구성요소 사이 관계로 구성된 시스템의 전체적인 구조 또는 구조들
- 소프트웨어 아키텍처는 소프트웨어 시스템들의 큰 규모의 구조와 실행에 관한 연구이다 [Shaw]
- 소프트웨어 아키텍처란 다음과 같은 것에 대한 중요한 결정들의 집합이다 [Jacobson][Kruchten]
1) 시스템의 구조를 나타내는 구조적 구성요소와 그들을 결합시키는 인터페이스
2) 각 요소의 협동을 통해 나타나는 구조적 구성요소와 행위적 구성 요소들의 결합을 점진적으로 서브시스템에 맵핑하는 것
3) 구조를 이끌어나가는 아키텍처 스타일의 선택 - 시스템의 근본적인 개념 또는 특성. 환경에서의 시스템, 시스템의 요소 및 그 관계, 그 설계와 진화의 원칙에 대한 것이다 [ISO/IEC 42010]
소프트웨어 아키텍처의 역할
소프트웨어 아키텍처는 소프트웨어, 시스템, 프로그램 등을 구축하고, 운영하는 데 있어서 다음과 같은 역할을 합니다.
- 사용자와 시스템 관점의 문제 분할
- 시간, 노력, 비용이 많이 드는 큰 실수 방지
- 민첩한 변경
소프트웨어 아키텍처는 요구사항 분석 단계부터 통합테스트 및 이행까지 도출되는 문제점들을 사용자 관점, 시스템 관점으로 분류할 수 있고 분할할 수 있습니다. 이를 통해서 상위 레벨의 시스템 디자인과 추상화가 가능합니다.
프로그램, 시스템, 소프트웨어를 구축하다 보면 다양한 이슈와 리스크가 존재하고, 실수가 발생합니다. 사람이 하는 일이기 때문에 실수가 없을 수는 없지만, 소프트웨어 아키텍처는 시관, 노력, 비용이 많이 소모되는 큰 실수를 방지하는 역할을 합니다.
마지막으로 소프트웨어 아키텍처는 환경 및 조건들의 변화에 유연하게 대응하고 변경이 가능한 구조를 제공합니다. 즉, 기존의 기능을 변경하고나 새로운 기능을 추가할 때 민첩하게 반응이 가능합니다.
좋은 소프트웨어 아키텍처를 위한 Design Mindsets
좋은 소프트웨어 아키텍처를 설계하기 위해서 필요한 Design Mindset에 대해서 알아보겠습니다. 좋은 아키텍처를 만들기 위해 필요한 Design Mindsets은 아래 4가지로 볼 수 있습니다.
- Understand : Understand the Problem
- Explore : Explore Ideas
- Make : Make it Real
- Evaluate : Evaluate Fit
Understand the Problem Design Mindset은 문제를 이해하기 위해 이해관계자들의 정보를 수집하는 것입니다. 이해관계자들의 요구사항을 이해 및 도출하고, 비즈니스 목표와 속성을 명시합니다. 그리고 설계 결정의 우선순위와 trade-off 관계를 이해해야 합니다.
Explore Ideas Design Mindset은 다양한 패턴, 기술, 개발 사례 등을 탐색하는 것입니다. 여러 설계 개념을 생성하고, 공학적인 접근을 위해 필요하며 프로젝트 팀, 그룹과 협업이 필요합니다.
Make it Real Design Mindset은 아이디어를 구체적인 산출물로 표현해서 만들고 이를 공유하는 것입니다. 모델을 설계하고, 프로토타이핑을 하고, 관련 문서를 작성하고, 수치화하는 등 다양한 접근 방법으로 Idea와 아키텍처를 구체화합니다.
Evaluate Fit Design Mindset은 설계 결정이 주어진 문제를 해결할 수 있는지 검증하는 것입니다. 일반적으로는 여러 시나리오를 활용해 아키텍처를 구현해서 검증합니다. 그리고 결정과 관련된 위험을 사전 조사해 설계 결정을 테스트합니다.
※ 함께 보면 좋은 글
1. 소프트웨어 아키텍트 (SA) 정의, 하는 일, 되는 방법, Design SignThiking 4가지 원칙
소프트웨어 아키텍트(SA) 기본 개념, 하는 일, 되는 방법, Design Thinking 4가지 원칙 알아보기
이번 글에서는 소프트웨어 아키텍트(Software Architect, SA)에 대해서 알아보겠습니다. 소프트웨어 아키텍트 기본 개념, 하는 일, 소프트웨어 아키텍트가 되는 방법과 Design Thinking 4가지 원칙 등에 대
mmp2022.tistory.com
'IT' 카테고리의 다른 글
소프트웨어 아키텍처 전술과 적용할 때 고려해야 할 설계 결정 항목들 (0) | 2023.01.25 |
---|---|
소프트웨어 아키텍처의 품질 속성 특징과 문제점, 시나리오(with 예시) (0) | 2023.01.20 |
소프트웨어 아키텍트(SA) 정의, 하는 일, 되는 방법, Design Thinking 4가지 원칙 알아보기 (0) | 2023.01.19 |
현직 채용 담당자 면접관들의 IT 개발자 취업 준비 조언 (0) | 2023.01.13 |
소프트웨어 아키텍처(SA) 직무 정의, 하는 일, 필요 역량 알아보기 (0) | 2022.11.24 |
댓글