프로그램을 구현하기 전에 소프트웨어를 구성하는 요소와 구조를 정의해 구현의 기반을 만드는 활동
두 단계 구조
| 단계 | 활동 | 예시 산출물 |
|---|---|---|
| 아키텍처 설계 | 상위 구조 정의 | 구조 설계, DB 설계, 인터페이스 설계 |
| 상세 설계 | 내부 구성 정의 | 컴포넌트 설계, 자료구조 설계, 알고리즘 설계 |
설계 방법 유형
- 구조적 설계 (Structured Design): Function Call + Data Access 중심
- 객체지향 설계 (Object-Oriented Design): Encapsulated Data + Object 중심
소프트웨어 아키텍처 설계
정의
상위 수준에서 소프트웨어 구성 요소들 간의 관계로 구성된 전체적인 구조를 설계하는 활동.
정적 / 동적 아키텍처
- 정적 아키텍처 — 모듈 간 구조적 관계 (uses / allowed-to-use). 클래스 다이어그램으로 표현.
- 예: 레이저 용접 로봇 — ObjectDetector·Switch (입력) / LaserController (알고리즘) / LEDLight·Buzzer·LaserEmitter (출력)
- 동적 아키텍처 — 모듈 간 실행 관점의 수행 흐름. 시퀀스 다이어그램으로 표현. 통합 절차 수립의 기반.
- 예: AUTOSAR Com → PduR → CanIf → Can / LinIf → Lin
아키텍처 설계 원칙
| 원칙 | 의미 | 단계 |
|---|---|---|
| 높은 응집력 (Highly Cohesion) | 모듈 내 구성 요소들이 서로 관련된 정도를 높게 | 우연적 < 논리적 < 시간적 < 절차적 < 교환적 < 기능적 |
| 낮은 결합도 (Loosely Coupling) | 모듈 간 상호 의존하는 정도를 낮게 | 내용 > 공통 > 외부 > 제어 > 구조 > 자료 |
→ ISO 26262 Table 3에서 1d (Strong cohesion), 1e (Loose coupling)로 ASIL B 이상 강력 권장.
아키텍처의 역할
- 여러 이해관계자 간 공통의 의사소통 수단
- 시스템 품질 속성의 사용/억제 기준 (기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성)
- 변경 원인 파악 및 유연한 대처
- 재사용 가능한 SW 구성 요소 확보 수단
품질 속성 표준
ISO/IEC 9126
외부/내부 품질 모델 — 6개 특성 트리 구조:
- Functionality (기능성)
- Reliability (신뢰성)
- Usability (사용성)
- Efficiency (효율성)
- Maintainability (유지보수성)
- Portability (이식성)
ISO/IEC 25000 SQuaRE
Software Quality and Requirement Evaluation — 품질 평가 모델 ISO/IEC 9126 + 평가 절차 모델 ISO/IEC 14598 통합. 현재 ISO/IEC 9126은 ISO/IEC 2501n / 2502n에 통합되어 폐기됨.
아키텍처 평가
ATAM (Architecture Trade-off Analysis Method) — 품질 속성 기반의 아키텍처 평가 기법. 여러 전문가가 여러 안에 대해 품질 속성별 점수를 매겨 트레이드오프를 분석.
대표 패턴:
- Mediator 패턴 — AS-IS: 객체 간 상호작용 복잡 → TO-BE: Mediator만 수정해도 됨. (리팩토링 참조)
소프트웨어 상세 설계
아키텍처 설계에서 도출된 SW 구성 요소(컴포넌트, 모듈)들의 내부 데이터와 알고리즘 로직을 설계.
| 항목 | 예시 |
|---|---|
| 데이터 설계 | 변수명, 타입(Boolean 등), 값 정의 표 |
| 로직 설계 | 순서도 (시작 → 입력 → 처리 → 조건 분기 → 리턴 → 종료) |
A-SPICE 프로세스 매핑
SWE.2 Software Architectural Design
The purpose of the Software Architectural Design Process is to establish an architectural design and to identify which software requirements are to be allocated to which elements of the software, and to evaluate the software architectural design against defined criteria.
→ 소프트웨어 아키텍처를 설계·평가하고 SW 엘리먼트로 할당.
SWE.3 Software Detailed Design and Unit Construction
The purpose of the Software Detailed Design and Unit Construction Process is to provide an evaluated detailed design for the software components and to specify and produce the software units.
→ 상세 설계 + 유닛 구현(코딩). A-SPICE 페이지에서 BPs 표 참조.
ISO 26262 설계 원칙
- Table 3 — 아키텍처 설계 원칙 9개 (1a~1i). 응집력/결합도/계층 구조/스케줄링 등.
- Table 6 — 상세 설계 및 구현 원칙 10개 (1a~1j). One entry/exit, 변수 초기화, 전역 변수 회피, 포인터 제한, No recursions 등.
→ ISO 26262 페이지의 Table 3·Table 6 참조.