약어 정리
Introduction
IEEE 610.12-90에 의하면, '설계'란 아키텍처, 컴포넌트, 인터페이스 및 시스템 또는 컴포넌트의 기타 특성을 정의하는 과정과 해당 과정의 결과임. 프로세스 관점에서 보면, S/W 설계는 작성(construction)의 기반이 되는 S/W 내부 구조에 대한 기술을 얻기 위해 요구사항을 분석하는 SWE 생명주기 활동임. S/W 설계는 컴포넌트로 분해되고 조직화된 방법을 기술한 S/W 아키텍처와 이들 컴포넌트간의 interface를 기술하며, 이는 실제 작성이 가능한 수준의 세밀도로 표현되어야 함.
솔루션에 대한 청사진의 역할을 하여 본 모델을 통해 다양한 요구사항을 충족 가능한지 여부를 분석, 평가하여 결정을 이루도록 함.
설계 프로세스를 통해 다양한 솔루션 및 trade-off에 대한 시험 및 평가를 이룰 뿐 아니라 작성과 시험의 시작점의 역할을 수행.
표준에서는(IEEE 12207 등의) S/W 설계 과정을 두 개의 활동으로 나눔
S/W 아키텍처 설계(Architectural Design; top level Design이라 부르기도) : S/W의 최상위 구조와 조직을 기술하고 다양한 컴포넌트를 식별
S/W 세부 설계(detailed design) : 각각의 컴포넌트에 대해 작성이 가능하도록 기술
Breakdown of topics
1. S/W 설계 기본(Software Design Fundamentals)
2. S/W 설계의 핵심 이슈(Key Issues in Software Design)
횡단 관심(cross-cutting concerns)의 기능을 이루는 aspect에 대하여(aspect; S/W의 기능적 분해에 따른 단위가 아닌, 컴포넌트의 성능이나 의미론(semantics)에 시스템적 방법으로 영향을 주는 속성). 아래 토픽의 나열은 알파벳 순서. (aspect이외의 사항에 대해서는 '1.4. 가능화 기술'이나 '6 S/W 설계 전략 및 방법'을 따름)
3. S/W 구조 및 아키텍처(Software structures and Architecture)
1990년대 중반부터 S/W 아키텍처에 대한 일반적(generic) 패턴이 나타났으며, 이들의 최종 목적은 재사용에 있음.
4. S/W 설계 품질 분석 및 평가(Software Design Quality Analysis and Evaluation)
4.1.
4.2.
4.3.
품질 속성(Quality attributes)
고품질의 설계를 얻기 위해서는 여러 품질 속성을 고려해야. 가능성(~ilities)을 나타내는 요소로 maintainability, portability, testability, traceability가 있으며, 상태(~ness)를 나타내는 요소로, correctness, robustness 및 'fitness of purpose' 등이 있음.
Run-time에 나타나는 속성: performance, security, availability, functionality, usability
비 run-time 요소: modifiability, portability, reusability, integrability, testability
이들은 아키텍처에 내재된 품질(conceptual integrity, correctness, completeness, buildability)에 관계됨.
품질 분석 및 평가 기법(Quality analysis and evaluation techniques)
S/W 설계 품질을 검증하기 위한 다양한 도구와 기법이 존재
S/W 설계 검토(review) : 종종 그룹을 지어 설계물의 품질을 검증(verify and ensure)하는 비형식/반형식적 기법. 설계 검토, 인스펙션, 시나리오 기반 기법, 요구사항 추적 등.
정적 분석 : 형식/반형식적 정적(비 실행) 분석으로서, 설계 평가를 위해 수행(오류-트리 분석 또는 자동화된 교차검토(cross checking)이 있음)
시뮬레이션/프로토타이핑 : 설계 평가를 위한 동적 기법(ex. 성능 시뮬레이션, 타당성 프로토타이핑)
측정기준(Measures)
측정기준은 S/W 설계의 크기, 구조, 품질 등의 다양한 면을 평가하기 위해 사용함. 대부분의 측정기준은 설계 접근법에서 기인하며 크게 두 개의 카테고리로 분류됨.
기능지향(Function-oriented(structured)) 설계 측정기준 : 기능적 분할을 통해 설계 구조를 얻으며 때론 계층도(Hierarchical diagram)라 일컫는 구조 차트(structure chart)가 대표적
개체지향(Object-oriented) 설계 측정기준 : 클래스 다이어그램이 대표적. 측정은 각 클래스의 속성에 대해 이루어짐.
5. S/W 설계 표기법(Software Design Notations)
많은 표기법이 각각의 상황(구조/행위, 아키텍처/세부 등)에 맞게 존재함.
5.1.
5.2.
구조 기술(Structural descriptions - static view)
주요 컴포넌트를 식별함과 동시에 이들이 어떻게 상호작용하는지를 기술
아키텍처 기술 언어(ADL; Architectural Description Language) : 텍스트 기반의 (형식적; formal)언어로 컴포넌트와 연결자(connector)를 통해 아키텍처를 기술
클래스 & 개체 다이어그램 : 클래스 간 또는 개체 간 관계 기술
컴포넌트 다이어그램 : 컴포넌트 간 관계 기술(component; 물리적이고 교체 가능한 시스템의 일부로, 일련의 interface를 구현, 제공, 준수)
CRCs(Class responsibility collaborator cards) : 컴포넌트(또는 클래스)의 이름과 해당 책임, 관련 컴포넌트 이름을 기입하는 데 사용
ERD(Entity-relationship diagram) : 정보시스템에 저장된 데이터에 대한 개념 모델을 표현
IDL(Interface description language) : 프로그래밍적 언어로 S/W 컴포넌트의 인터페이스를 정의
Jackson structure diagram : 순차, 선택, 반복을 통해 데이터 구조를 기술
Structure Chart : 프로그램 내 모듈 간 호출 구조를 기술
행동 기술(Behavior descriptions - dynamic view)
대부분은 세부 설계 과정 중에 사용됨.
Activity diagrams
: 활동(activity; 상태 기계 내에서의 비 원자적/계속적(on-going) 실행)에서 활동으로 이루어지는 제어 흐름을 보여줌
Collaboration diagrams : 개체 간 일어나는 상호작용을 표현하여 특히 객체, 연결 및 연결 내에서 발생하는 메시지 교환을 강조.
DFDs(Data flow diagrams) : 프로세스 간 데이터 흐름을 표현
Decision tables & diagrams : 조건과 행동의 복잡한 조합을 표현
Flowcharts & structured flowcharts : 제어 흐름과 수행될 관련 행동을 기술
Sequence diagrams : 개체 간 상호작용을 표현하지만 여기서는 메시지의 시간 순서에 중점을 둠
State transition & state-chart diagrams : 상태 기계 내에서의 상태 변이에 대한 제어 흐름을 표현
정형 명세 언어 : 수학적 기본 표기법을 사용하여 엄격하고 추상적으로 S/W 컴포넌트의 인터페이스 및 행위를 표현. 종종 사전/사후 조건을 사용
의사코드 및 PDLs(Program design language) : 구조적 프로그래밍을 띈 언어로 세부 설계 단계에서 프로시저의 행위를 기술
S/W 설계 전략 및 방법(Software Design Strategies and Methods)
다양한 설계 전략(strategy)이 일반적인 반면, 방법(method)은 특화되어 그 방법만의 표기법과 프로세스, guideline을 제공함. 이들 방법은 지식 전달의 수단과 S/W 개발 팀의 공용 프레임워크의 역할을 담당. [SWE 도구 및 방법 KA와 연계됨]