소프트웨어 아키텍처(Software Architecture)의 중요성과 품질 속성(Quality Attributes)은 시스템(System), 비즈니스(Business), 아키텍처(Architecture) 관점에서 각각 다르게 나타납니다. 아래에 각 관점별로 모범답안을 정리하여 설명드립니다.
소프트웨어 아키텍처의 중요성과 품질 속성을 시스템, 비즈니스, 아키텍처 관점으로 구분하여 설명하시오.
소프트웨어 아키텍처 (Software Architecture)
: 시스템을 구성하는 주요 구성요소(컴포넌트)와 이들 간의 관계(인터페이스, 상호작용)를 정의하고 조직화한 구조
➔ 소프트웨어의 청사진(blueprint) 역할을 함
품질 속성(Quality Attributes)
: 소프트웨어가 얼마나 잘 동작하는지를 정의하는 특성들
➔ 비기능 요구사항(Non-functional Requirements)의 핵심
| 품질 속성 | 설명 |
|---|---|
| 성능 (Performance) | 응답 시간, 처리량 등 시스템이 빠르고 효율적으로 동작 |
| 신뢰성 (Reliability) | 장애 발생 시 시스템이 안정적으로 복구되는 능력 |
| 이식성 (Portability) | 다양한 운영체제나 환경에서 소프트웨어 실행 가능 |
| 품질 속성 | 설명 |
|---|---|
| 확장성 (Scalability) | 비즈니스 성장에 따라 시스템 확장이 용이해야 함 |
| 재사용성 (Reusability) | 기존 기능 또는 모듈을 다른 제품/서비스에 재활용 가능 |
| 유지보수성 (Maintainability) | 오류 수정 및 기능 추가 시 빠르고 저렴하게 가능 |
| 품질 속성 | 설명 |
|---|---|
| 모듈성 (Modularity) | 시스템을 기능 단위로 나누어 개발 효율성 향상 |
| 유연성 (Flexibility) | 변경사항이 시스템 전체에 미치는 영향을 최소화 |
| 보안성 (Security) | 데이터와 시스템을 위협으로부터 보호 |
| 용어 | 정의 |
|---|---|
| NFR (Non-Functional Requirements) | 성능, 보안, 가용성 등 기능 외적인 요구사항 |
| Blueprint | 소프트웨어 구조에 대한 설계 청사진 |
| Stakeholder | 시스템에 이해관계가 있는 모든 사람 (고객, 개발자, 관리자 등) |
| Design Trade-off | 품질 속성 간의 균형 및 우선순위 결정 과정 |
소프트웨어 아키텍처는 건물의 설계도처럼, 프로그램을 잘 만들기 위한 설계 그림이에요.
이 설계도가 잘 그려지면, 프로그램이 빨리, 튼튼하게, 고장 나도 쉽게 고칠 수 있어요.
또한, 회사 입장에서는 돈도 아끼고 빨리 출시할 수 있어서 좋아요.
개발자 입장에서는 어떤 부분을 고치거나 더 만들기 쉬워서 좋아요.
소프트웨어 아키텍처는 단순한 기술 설계가 아니라, 시스템의 품질, 비즈니스 전략, 그리고 기술적 효율성을 모두 결정짓는 핵심 요소입니다.
각 관점에서의 품질 속성을 고려함으로써, 성공적인 소프트웨어를 구현할 수 있습니다.