반응형
4. 소프트웨어 설계 원리와 구조적 설계
4.1 소프트웨어 설계 원리
- 소프트웨어 설계 단계에서는 분할과 정복을 기본적 설계원리로 표현한다. 문제를 서브시스템으로 분할하고 개발하여 추후 통합되어 전체 시스템이 작동될 수 있도록 한다.
추상화
- 추상화는 상위 수준에서 제품의 구현을 먼저 생각하는 것을 의미한다.
- 컴포넌트의 구현 방법을 과감히 생략하고 외부 인터페이스에 초점을 맞추는 것이다.
정보 은닉
- 정보 은닉이란 각 모듈의 내부 내용을 감추고 인터페이스를 통해서만 메세지를 전달할 수 있도록 하는 개념
- 구성 요소간의 독립성을 유지시켜준다는 점에서 중요하다.
단계적 정제
- 프로그램의 구조에서 점차 모듈에 대한 세부 사항으로 내려가며 구체화된다.
- 세부적인 묘사를 가능하게 함으로써 시스템의 구현을 가능하게 한다.
- 설계는 높은 추상화 단계에서 낮은 추상화 단계로 가는 단계적 정제 과정이다.
모듈화
- 소프트웨어 모듈은 프로그래밍 언어로 표현하면 서브루틴, 프로시저, 함수 등으로 부른다.
- 모듈화는 시스템을 지능적으로 관리할 수 있도록 해 주며, 복잡도의 문제를 해결해 준다
- 모듈화는 시스템의 유지 보수와 수정을 용이하게 해준다.
- 모듈의 수가 지나치게 증가하면 시스템의 성능이 떨어지고 과부화 현상이 나타나게 된다.
구조화
- 시스템의 구조화는 분할 과정에 의해 얻어질 수 있다.
- 시스템의 특성을 파악하여 기존 시스템들의 경험과 가이드라인을 활용할 수 있다.
4.2 응집도와 결합도
응집도
- 모듈 내부가 얼마나 강한 연관성으로 뭉쳐져 있는가를 나타내는 모듈 성숙도의 측정치이다.
- 모듈내의 모든 요소들이 단일 기능을 수행하고 그 상위 모듈을 위해 수행되는 기능적 응집도가 가장 높은 응집도이며, 아무 관련 없는 처리 요소들로 모듈이 형성되는 우연적 응집도가 가장 낮은 응집도이다.
- 모듈의 응집도를 높이면 모듈 사이의 낮은 결합도를 얻을 수 있으며, 이와 반대로 낮은 응집도는 높은 결합도를 발생시킬 수 있다.
- 응집도 종류와 정도
- 기능적 응집도: 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
- 순차적 응집도: 모둘 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활도으이 입력 데이터로 사용할 경우의 응집도
- 교환(통신)적 응집도: 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
- 절차적 응집도: 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
- 시간적 응집도: 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
- 논리적 응집도: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
- 우연적 응집도: 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
결합도
- 결합도는 모듈 사이의 상호 연관성의 복잡도를 말한다.
- 모듈들 사이의 상호 교류가 많고 서로의 의존이 많을수록 모듈들 사이의 결합도는 높아지게 된다.
- 결합도가 높을수록 한 모듈을 독립적으로 변경하기 어렵고, 이렇게 한 모듈의 변경이 다른 모듈에 미치는 영향도가 클 것으로 파문효과(ripple effect)를 일으키게 된다.
- 파문효과가 클 수록 유지보수가 어려워 진다.
- 결합도의 종류와 정도
1. 자료 결합도
- 매개변수나 인수로 데이터를 주고 받을 때
- 한 모듈의 내용을 변경하더라고 다른 모듈에는 전혀 영향을 미치지 않는 가장 바람직한 결합도이다.
2. 스탬프(검인) 결합도
- 인터페이스로 배열이나 레코드등의 자료 구조가 전달될 때의 결합도이다.
- 자료 구조의 어떤한 변화는 그것을 조회하는 모든 모듈 및 변화하는 필드를 실제로 조회하지 않는 모듈에게까지도 영향을 미치게 된다.
3. 제어 결합도
- 한 모듈에서 다른 모듈로 논리적인 흐름을 제어하는 데 사용하는 제어 요소가 전달될 때의 결합도
- 상위 모듈이 하위 모듈의 상세한 처리절차를 잘 알고 있어 이를 통제하는 경우
- 처리 기능이 두 모듈에 분리되어 설계된 경우
4. 외부 결합도
- 어떤 모듈에서 외부로 선언한 데이터를 다른 모듈에서 참조할 때
5. 공통(공유) 결합도
- 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때
6. 내용 결합도
- 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때
4.4 구조적 설계 방법
변환흐름 중심 설계
- 변환흐름 중심은 입력을 받아들여 시스템에서 사용할 수 있는 데이터로 정제하는 입력흐름, 데이터를 가공 처리하는 변환중심, 가공 처리된 정보를 받아 적당한 출력물로 변환시켜 출력시키는 출력흐름으로 이루어져 있다.
- 변환흐름에 기초한 상위 수준 프로그램에는 3가지 구성요소가 있다.
- 입력을 처리하는 입력 제어 모듈
- 변환을 처리하는 변환 제어 모듈
- 출력을 처리하는 출력 제어 모듈
트랜잭션흐름 중심 설계
- 트랜잭션이란 자료나 제어 시그널 등이 어떠한 행위를 유발시키는 것을 말한다.
- 트랜잭션에 기초한 프로그램 구조를 만들면 세 구성 요소로 이루어져 있다.
- 트랜잭션 중심으로 작용하는 모듈
- 입력을 받아들이는 모듈
- 각 동작 경로에 해당하는 하나 이상의 모듈
반응형
'CS > TOPCIT' 카테고리의 다른 글
[TOPCIT] 01소프트웨어 개발_5. 소프트웨어 아키텍처 설계 (0) | 2021.09.19 |
---|---|
[TOPCIT] 01소프트웨어 개발_3.자료구조와 알고리즘 (0) | 2021.09.19 |
[TOPCIT] 01소프트웨어개발_2.소프트웨어 재사용 (0) | 2021.09.19 |
[TOPCIT] 01소프트웨어 개발_1. 소프트웨어 공학 개요 (0) | 2021.09.14 |