dongdorodongdong
구조적 개발 방법론(2. 설계) 본문
설계 모형
- (d) 절차설계
- 모듈이 수행할 기능을 절차적 기술로 바꾸는 것 - (c) 인터페이스 설계
- 시스템과 사용자가 어떻게 통신하는지 - (b) 구조 설계
- 모듈간의 관계와 프로그램 구조 정의 - (a) 데이터 설계
- 요구사항 분석 단계에서 생성된 정보를 S/W를 구현하는데 필요한 자료구조로 변환하는 것
계산기 예시
1. 요구사항 분석 단계에서 DFD
2. 데이터 설계
"입력 A 입력 B 결과"
3. 구조 설계
4. 인터페이스 설계
5. 절차 설계
6. 구현
좋은 설계의 기준
- 모듈적이어야 함
- 결합도가 낮아야 함, 응집도가 높아야 함
- 자료와 프로시저에 대한 분명하고 분리된 표현
- S/W는 논리적으로 특별한 기능과 부기능을 수행하는 요소들로 나누어져야 함
- 복잡도와 중복을 줄임
- S/W 요소들 간의 효과적인 제어를 위해 설계에서 계층적 조직이 제시되어야 함
- 서브루틴이나 프로시저가 전체적이고 통합적이면 안된다.
- 모듈 간과 외부 개체 간의 연결 복잡성을 줄이는 인터페이스를 가져야 함
기본 원리
- 모듈화
- S/W를 모듈 단위로 나누는 것
- 작업 단위, S/W 내의 프로그램
- 부 시스템
- 서브루틴 - 추상화
- 전체적, 포괄적인 개념을 설계 후 세분화, 구체화 시켜나가는 방법
- 기능 추상화
- 제어 추상화
- 자료 추상화 - 정보 은닉
- 모듈 내부에 포함된 절차, 자료들의 정보를 숨김
- 다른 모듈이 접근, 변경하지 못함 - 구조화
- Fan-In (공유도)
"어떤 모듈을 제어하는 상위 모듈의 갯수"
- Fan-Out (제어도)
"어떤 모듈에 의해 제어되는 하위 모듈의 갯수"
N-S 차트 (Nassi-Schneiderman Chart)
- 절차 설계 기법
- 논리의 기술에 중점을 둠
- 도형을 이용한 표현 방법
- 이해하기 쉽고 코드로 변환이 용이
- 화살표 사용X
- 박스 다이어그램이라고 함
- 순차(Sequence)
선택 및 다중 선택(if ~ then ~ else, Case)
반복(Repeat ~ until, While, for) 등의 제어 논리 구조 표현
모듈화
- 목적
- S/W 복잡도 감소
- S/W 변경 용이
- 프로그램 구현 용이
- 각 단계는 독립적이며 상호 의존도는 낮아야 한다. - 결합도(Coupling)
"모듈 간 상호 의존도"
"데<스<제<외<공<내"
- 독립적인 모듈이 되기 위해서는 낮아야 한다
Data |
데이터 요소(매개변수, 인수 등)로만 구성 |
Stamp |
자료구조(배열, 레코드)가 전달 |
Control |
제어 요소가 전달 제어신호를 이용하여 통신 |
External |
외부로 선언한 데이터(변수)가 참조 |
Common |
공통 데이터 영역을 사용 |
Content |
내부 기능 및 자료를 참조 |
- 응집도(Cohesion)
"모듈 안 서로 관련도"
"우<논<시<절<교<순<기"
- 독립적인 모듈이 되기 위해서는 높아야 한다
Coincidental |
서로 관련 없는 요소 |
Logical |
유사한 성격의 요소 |
Temporal |
특정 시간에 처리되는 기능 요소 |
Procedural |
기능들이 절차적으로 수행 |
Communication |
동일한 입력과 출력을 사용하여 서로 다른 기능을 수행 |
Sequential |
출력 데이터를 다음 활동의 입력 데이터로 사용 |
Functional |
단일 문제와 연관되어 수행 |
'Software Engineering' 카테고리의 다른 글
구조적 개발 방법론(5. 디버깅 / 6. 유지보수) (0) | 2019.04.13 |
---|---|
구조적 개발 방법론(3. 구현 / 4. 검사) (0) | 2019.04.13 |
구조적 개발 방법론(1. 요구사항 분석) (0) | 2019.04.13 |
소프트웨어 개발 방법론 (0) | 2019.04.13 |
Software Engineering (0) | 2019.04.13 |