소프트웨어 아키텍처
01. 시스템 아키텍처
1) 시스템 아키텍처의 개념
- 하드웨어와 소프트웨어를 포함하는 시스템 전체에 대한 논리적인 기능 체계
- 시스템이 어떻게 작동하는지를 설명하는 프레임워크
- 시스템이 목적을 달성하기 위해 시스템의 컴포넌트가 무엇인지 설명함
- 시스템이 목적을 달성하기 위해 시스템이 어떻게 상호 작용을 하는지 설명함
- 시스템이 목적을 달성하기 위해 시스템의 정보가 어떻게 교환되는지 설명함
2) 시스템 아키텍처의 요구사항
- 시스템 구성 및 동작 원리를 나타내고 있어야 함
- 시스템 구성 요소에 대한 설계 및 구현이 자세히 기술되어야 함
- 구성 요소 간의 관계 및 시스템 외부 환경과의 관계가 표현되어야 함
- 요구사항 및 시스템의 전체 생명주기를 고려해야 함
- 논리적인 기능 체계를 실현하기 위한 구성 방식, 시스템의 최적화를 목표로 해야 함
3) 시스템 아키텍처(상위 설계)의 설계
- 시스템 아키텍처 설계는 소프트웨어 아키텍처 설계에 제약을 하는 상위 설계
- 소프트웨어 아키텍처의 제약 안에서 세부적인 설계 작업을 수행하는 소프트웨어 상세 설계가 있음
- 시스템 아키텍처 설계는 하드웨어와 소프트웨어로 구성된 시스템의 아키텍처를 말함
- 시스템 아키텍처 설계는 상위 설계이므로 전체적인 아키텍처 설계, 인터페이스 정의, 사용자 인터페이스 설계 등을 수행함
- 소프트웨어 아키텍처 설계에서 모듈이나 컴포넌트 설계 등을 수행함
- 시스템 아키텍처 설계는 소프트웨어 아키텍처의 결정을 제약함
- 소프트웨어 아키텍처 설계는 소프트웨어 상세 결정을 제약함
- 시스템 아키텍처 설계, 소프트웨어 아키텍처 설계, 소프트웨어 상세 설계는 일반적인 설계 활동의 하나로써 일반적인 특성을 공통으로 가짐
02. 소프트웨어 아키텍처
1) 소프트웨어 아키텍처의 개념
- 소프트웨어의 골격이 되는 기본 구조로, 소프트웨어 전체에 대한 큰 밑그림을 의미
- 소프트웨어 구성 요소의 유기적인 결합 형태와 전체 구조
- 설계 및 구현을 위한 구조적, 비구조적인 틀을 제공
- 소프트웨어를 이루고 있는 구성 요소인 모듈이나 컴포넌트를 다룸
- 소프트웨어의 뼈대에 해당되는 것으로 소프트웨어의 모듈이나 컴포넌트들과의 관계를 정의한 시스템 구조
- 모듈이나 컴포넌트 간의 상호관계를 설계하고 전개하기 위한 지침이며, 인터페이스가 어떻게 상호 작용하는지 정의
- 아키텍처는 전체 시스템의 구조나 설계 모형을 재사용할 때 사용하지만 디자인 패턴을 구현 단계에서 해결 방안까지도 제공함
- 소프트웨어 구조를 비롯한 개발에서 요구되는 기능과 품질을 확보하고, 소프트웨어 구축 및 지속적인 개선이 용이하도록 하는 역할을 함
- 아키텍처는 모든 종류의 시스템에 적용할 수 있지만, 디자인 패턴은 일관된 문제에 적용
- 소프트웨어 품질 요구사항은 소프트웨어 아키텍처를 결정하는 데 중요한 요소로 작용
- 요구사항 분석 활동에 의해 도출된 요구사항을 모두 충족시킬 수 있는 시스템이 만들어질 수 있도록 하기 위한 설계 활동
2) 소프트웨어 아키텍처 설계
1. 아키텍처 드라이버
- 소프트웨어 아키텍처 설계는 요구사항들만으로 만들어짐
- 요구사항 중 아키텍처에 영향을 주는 요구사항을 아키텍처 드라이버라고 함
- 효과적인 아키텍처 설계를 위해서 아키텍처 드라이버를 정확히 식별
2. 아키텍처 설계의 입력물과 출력물
- 아키텍처 드라이버는 입력물이 됨
- 태스트(Task)에 의해 아키텍처 설계가 진행
- 아키텍처를 문서화한 아키텍처 문서와 추가적인 관련 사항을 정리한 아키텍처 가이드라인이 결과물로 출력됨
3) 소프트웨어 아키텍처 설계 시 고려사항
- 개발자와 사용자 간의 의사소통 도구로 활용할 수 있어야 함
- 구현(코딩) 시 제약 사항을 파악해야 함
- 재사용할 수 있도록 설계해야 함
- 품질 요구사항을 반영하여 품질의 정도를 측정해야 함
- 이해하기 쉽고, 명확하게 작성해야 함
- 표준화된 형식으로 작성하며, 버전 관리를 해야 함
4) 소프트웨어 아키텍처의 비지니스 품질 속성
- 시장 적시성(Time to Market)
- 지정한 시간에 소프트웨어를 출시해 경쟁력을 높일 수 있는 정도
- 비용과 이익(Cost and Benefit)
- 비용의 유연성을 두고 설계할 것인지, 비용을 절감하는데 초점을 맞출 것인지 판단하는 정도
- 예상 시스템 수명(Predicted Lifetime of the System)
- 소프트웨어의 유통기간 및 폐기 시점을 고려해 변경 용이성, 확장성, 이식성 등을 고려하는 정도
- 목표 시장(Targeted Market)
- 소프트웨어를 사용할 고객층을 정확히 파악하여 시장성을 파악하는 정도
- 신규 발매 일정 또는 공개 일정(Rollout Schedule)
- 소프트웨어의 신규 발매 일정, 유통 일정, 관리 일정을 공개하여 일정대로 관리할 수 있는 정도
- 기존 시스템과의 통합(Integration with Legacy System)
- 기존 시스템이나 타 시스템과의 통합 방법을 고려하는 정도
5) 소프트웨어 아키텍처의 시스템 품질 속성
- 가용성(Availability)
- 인가된 사용자가 원하는 시간이나 장소에서 필요 정보에 접근할 수 있고, 사용할 수 있도록 보장하는 성질
- 변경 용이성(Modifiability)
- 개발자가 새로운 기능을 추가하거나 변경하더라도 부담없이 변경할 수 있도록 함
- 성능(Performance)
- 처리량, 응답 시간, 사용 가능도 등을 측정
- 보안성(Security)
- 권한이 없는 사용자가 데이터나 프로그램을 사용할 수 있도록 하는 것
- 사용 편의성(Usability)
- 소프트웨어를 쉽게 사용할 수 있는가의 정도
- 시험 용이성(Testability)
- 소프트웨어를 쉽게 검사할 수 있는가의 정도
'정보처리기사 > 소프트웨어 설계' 카테고리의 다른 글
| 애플리케이션 설계 6 (0) | 2023.04.28 |
|---|---|
| 애플리케이션 설계 5 (0) | 2023.04.27 |
| 애플리케이션 설계 3 (0) | 2023.04.26 |
| 애플리케이션 설계 2 (0) | 2023.04.26 |
| 애플리케이션 설계 1 (1) | 2023.04.26 |
