소프트웨어 개발의 설계 단계는 다음과 같이 구분할 수 있고, 그 중 '상위 설계'에 해당하는 아키텍처 설계에 대해 알아볼 것입니다.
상위 설계 (아키텍처 설계 / 예비 설계) |
하위 설계 (모듈 설계 / 상세 설계) |
시스템의 전체적인 구조를 설계 | 시스템의 내부 구조 및 행위를 설계 |
구조 / DB / 인터페이스 | 컴포넌트 / 자료 구조 / 알고리즘 |
소프트웨어 아키텍처는 소프트웨어 구성 요소들 간의 관계를 표현하는 시스템의 구조입니다.
소프트웨어 아키텍처 설계의 기본 원리 4가지
1. 모듈화
2. 추상화
- 포괄적인 개념을 설계한 후 차례로 구체화시켜 나가는 것
- 종류 : 과정 추상화 / 데이터 추상화 / 제어 추상화
3. 단계적 분해
- 상위 중요 개념으로부터 하위 개념으로 구체화시키는 분할 기법
- Niklaus Wirth에 의해 제안된 하향식 설계 전략
4. 정보 은닉
- 정보 은닉을 통해 모듈을 독립적으로 수행할 수 있게 됨
소프트웨어 아키텍처의 품질 속성
- 시스템 측면 : 성능 / 보안 / 가용성 / 기능성 / 사용성 / 변경 용이성 / 확장성 등
- 비즈니스 측면 : 시장 적시성 / 비용 / 혜택 / 예상 시스템 수명 / 목표 시장 / 공개 일정 등
- 아키텍처 측면 : 개념적 무결성 / 정확성 / 완결성 / 구축 가능성 / 변경성 / 시험성 등
소프트웨어 아키텍처 설계 과정
설계 목표 설정 → 시스템 타입 결정 → 아키텍처 패턴 적용 → 서브시스템 구체화 → 검토
협약에 의한 설계
협약에 의한 설계는 컴포넌트를 설계할 때 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것입니다. 즉 컴포넌트에 대한 명세입니다.
명세에 포함될 조건은 다음과 같습니다.
- 선행 조건 : 오퍼레이션 호출 전 만족해야되는 조건
- 결과 조건 : 오퍼레이션 수행 후 만족해야되는 조건
- 불변 조건 : 오퍼레이션 실행 중 만족해야되는 조건