11. 구조적 설계
1. 구조적(構造的) 설계(設計)
구조적 설계란?
프로그램의 내부구조를 설계하기 위한 하나의 방법론
- 연속(sequence)
- 선택(selection)
- 반복(repetition)      으로 구성
구조적 설계의 필요성
- 이해·개발 쉽게
- 개발자와 완성예정일 등을 예측
- 프로젝트 진척상황 관리 쉽게
- 모듈별 시스템 시험 ⇒ 오류발견·수정 쉽게
- 유지·보수 쉽게
- 예상비용 산정 쉽게
 
모듈단위 구조로의 분할
- 프로그램 작성이 쉽다
- 유지보수 및 수정, 변경작업이 쉽다
- 시스템 수명이 길어진다
- 생산성이 향상

프로그램 개발
1) 외부적인 양식 설계
2) Process Flowchart작성
3) 입력과 출력의 형식 작성
4) 처리 조건 설정
5) Coding
6) Test
7) 적용
모듈의 전개과정
  
                 
 
2. 종래의 모듈설계와 구조적 설계의 차이
모듈이란?
어떤 특정기능의 결과를 얻는 명령들의 집합
· 몇 개의 명령어로 구성되어 어떤 목적의 결과를 얻는 것.
· 별개의 명령어 집단으로 명확히 구분된 것.
· 하나의 입구와 출구를 가진 서브루틴이나 서브프로그램
구조적 설계에서의 모듈화 목표
· What : 무엇을 모듈화 할 것인가 ?
· Why : 무엇 때문에 모듈화 하는가 ?
· How : 어떻게 모듈화 할 것인가 ?
모듈 분할의 지침
모듈의 기본적인 성질
 · 기능 : What
 · 논리 수순 : How
 · 인터페이스
 · 크기가 작을수록 좋다
             
 
3. 구조적 설계의 지침
구조적 설계란
· 계층 구조적인 모듈의 세분화
· 독립된 모듈로 분할하는 것
· 이해하기 쉽게 하는 것

프로그램의 내부구조 설계 요령
◉ 독립된 프로그램단위로의 분할
◉ 모듈구조로의 설계
◉ 모듈구조의 평가

4. 모듈 결합도와 응집도                                                
모듈 결합도
· 자료 결합도(Date coupling)  결합도가 약함(좋은 결합)  
· 구조 결합도(Stamp coupling)                           
· 제어 결합도(Control coupling)                                                   
· 외부 결합도(External coupling)                                                  
· 공통 결합도(Common coupling)                                                  
· 내용 결합도(Content coupling)            결합도가 강함(나쁜 결합)

모듈 응집도
· 기능적 응집도(Functional cohesion)     응집도가 강함(우량)
· 순차적 응집도(Sequential cohesion)
· 통신적 응집도(Communicatioal cohesion)
· 절차적응집도(Procedual cohesion)
· 시간적 응집도(Temporal cohesion)
· 논리적 응집도(Logical cohesion)
· 우연적 응집도(Coincidental cohesion)       응집도가 약함(불량)
 
5. 모듈의 설계에 관한 다른 지침
(1) 결정 수준(Decision Level)
(2) Black-Box화
(3) 1 모듈 1 기능의 원칙
(4) 조건 판정 경우(Test case)를 작게
 
6. 모듈화의 수순
- 자료구조중심형 설계
- 자료흐름중심형 설계
- 기능구조중심형 설계
 
7. 자료 구조 중심 모듈 분할방법
모듈 분할 순서
① : 주어진 문제를 3~10개의 기능으로 분할 ⇒ 데이터 흐름에 따라 나열
② : 데이터 흐름을 분석 ⇒ 흐름, 주된 데이터, 출력데이터 파악
③ : 입력데이터의 추상화
④ : 입력, 변환, 출력기능을 계층구조로 표현
⑤ : 각 모듈에 ①부터 ④까지 적용하고 하위 모듈을 분할
⑥ : 하위모듈의 세분화 한계 설정
⑦ : 모듈 구조 평가

자료구조중심형 모듈 분할방법
1) Flow-chart
2) 파일 형식
3) 프로그램 조건
프로그램 조건
① : 조건을 분석 ⇒ 필요 기능 파악
② : 프로그램 조건에 대한 구조 작성 ⇒ 처리기능 식별
③ : ②에서 구분한 입력, 처리, 출력기능을 계층구조도로 표시
④ : 기본구조도의 기능을 세분화 ⇒ 종속모듈 정의
⑤ : 모듈 구조를 평가 ⇒ 재 배열, 재 구조화
⑥ : 세분화 진행 한계 설정
 
8. 기능 구조 중심 모듈 분할방법
 · 어떻게(How)가 아니라 무엇(What)을 단위로 세분화
 · 기능을 파악하여 하향식 분할
 · 제어기능을 중심으로 분할
 · 여러 제어기능 중에 큰 제어기능 중심
 · 세밀하게 기능분할
 · 모듈로서 존재하는 상태의 단위를 찾아낸다.

모듈의 종류
주요기능으로 분류
① 주 제어 모듈
② 부 제어 모듈
③ 처리 모듈
④ 입,출력 모듈
⑤ 예외처리 모듈

모듈분할의 수순
㉮ : 주 모듈의 기능을 분해
 
                          
 
㉯ : 프로세스처리의 최대 제어기능은 종료하는 제어다
㉰ : 제어기능의 하위에 종속하는 처리기능을 찾는다
㉱ : 이 처리기능에 포함되는 제어기능을 찾는다.
㉲ : 이 제어기능의 하위에 종속하는 처리기능을 찾는다.
㉳ : 제어기능이 없을 때까지 분할
㉴ : 단일기능으로 분할
㉵ : 가능한 수준까지 분할
㉶ : 공통적으로 사용할 수 있는 내부 서브루틴 파악
㉷ : 기능을 집약
㉸ : 각 모듈에 대해 이해하기 쉬운 이름 부여
㉹ : 초기, 종료처리에서도 같은 방법으로 기능의 세분화를 진행

'UP! > Software Engineering' 카테고리의 다른 글

코드체계  (0) 2008.08.21
프로세스 명세서  (0) 2008.08.21
자료사전  (0) 2008.08.21
개체관계도  (0) 2008.08.21
자료 흐름도  (0) 2008.08.21
Posted by 으랏차
,