소프트웨어 설계 모델링
▼소프트웨어 설계 모델링
정의 : 요구사항(기능, 성능)을 만족하는 소프트웨어의 내부 구조 및 동적 행위들을 모델링하여 표현하고, 분석, 검증하는 과정이며 이 과정에서 만들어지는 산출물을 의미한다.
목적 : "무엇을?"으로부터 "어떻게?"로 관점을 전환하면서 최종 제작할 소프트웨어의 청사진을 만드는 것을 의미한다.
▼ 소프트웨어 설계
본격적인 프로그램의 구현에 들어가기 전에 소프트유ㅔ어를 구성하는 뼈대를 정의해 구현의 기반을 만드는 것을 의미하며 상위 설계와 하위 설계로 구분된다.
▼ 설계의 기본 원리
분할과 정복, 추상화, 단계적 분해, 모듈화, 정보 은닉
소프트웨어 개발의 설계 단계 - 상위단계 / 하위 단계
상위 설계 | 하위 설계 | |
별칭 | 아키텍처 설계, 예비 설계 | 모듈 설계, 상세 설계 |
설계 대상 | 시스템의 전체적인 구조 | 시스템의 내부 구조 및 행위 |
세부 목록 | 구조, DB, 인터페이스 | 컴포넌트, 자료 구조, 알고리즘 |
▼ 모듈의 주요 특징
다른 것들과 구별 될 수 있는 독립적인 기능을 가진 단위(Unit)이며, 독립적인 컴파일이 가능해야 하고, 유일한 이름을 가져야 한다. 또한 다른 모듈에서의 접군이 가능해야 모듈이 되었다 할 수 있다.
* 모듈 : 전체 프로그램의 기능 중에서 특정 기능을 처리할 수 있는 소스 코드를 의미
▼ 소트프웨어 설계 대상.
구조 모델링 : SW를 구성하는 컴포넌트의 유형, 인터페이스, 내부 설계 구조 등 구조의 상호 연결 등의 구조를 모델링 하는 것이다. 구성 요소에는 프로시저, 데이터 구조, 모델 파일 구조 등이 있다.구성요소들의 연결구조, 포함관계를 시스템 구조라 한다.
행위 모델링 : 소프트웨어의 구성 요소들 기능과 구성요소들이 언제, 어떤 순서로 기능을 수행하고 상호작용 하는지를 모델링하는 것이다. 시스템 각 구성 요소들의 기능적인 특성을 모델링하는 것이기도 하다. 입출력 데이터, 데이터의 흐름과 변환, 데이터의 저장, 실행 경로, 상태 전이, 이벤트 발생순서 등이 행위 모형화에 속한다.
▼소프트웨어 설계 방법
구조적 설계 : 기능적 관점으로 소프트웨어에 요구된 기능이나 자료 처리과정, 알고리즘 등의 중심으로 시스템을 나눠 설계하는 방식. 시스템의 각 모듈은 최상위 기능에서 하위 기능으로 하향적으로 세분화 한다.
자료 중심 설계 : 입 출력 자료의 구조를 파악하여 소프트웨어 자료 구조를 설계하는 방식이다.
객체지향 설계 : 자료와 적용될 기능을 함께 묶어 추상화하는 개념이다. 시스템은 객체로 구성된다.
소프트웨어 구조도
소프트웨어의 구성 요소인 모듈 간의 계층적 구성을 나타낸 것이다.
용어 | 설명 |
Fan - in | 주어진 한 모듈을 제어하는 상위 모듈 수 |
Fan - Out | 주어진 한 모듈이 제어하는 하위 모듈 수 |
Depth | 최상위 모듈에서 주어진 모듈까지의 깊이 |
width | 같은 등급(Level)의 모듈 수 |
Super ordinate | 다른 모듈을 제어하는 모듈 |
Subordunate | 어떤 모듈에 의해 제어되는 모듈 |
Fan - in/ Fan -out을 분석하면 시스템 복잡도 파악이 가능하다.
기본적으로 복잡도를 최적화 하기위해서는 Fan in은 높이고 Fan-out은 낮추도록 설계한다.
Fan - in이 높을 경우
재사용 측면에서 잘된 설계로 볼 수 있지만 시스템 구성 요소중 일부가 동작하지 않으면 시스템이 중단되는 단일 장애 발생 가능성이 있으며, 단일 장애 발생을 방지하기 위한 중점관리가 필요하다
Fan -out 이 높을 경우
불필요한 타 모듈의 호출 여부를 확인하며, Fan-out을 단순하게 설계할 수 있는지 검토한다.