모델 |
데이터설계 |
정보영역을 SW 구현에 필요한 데이터 구조로 변환 |
아키텍쳐설계 |
프로그램 주요 구조요소들 사이의 관계를 정의 |
인터페이스설계 |
SW가 상호작용하는 시스템, 인간과의 교류 |
프로세저설계 |
아키텍쳐 구조요소들을 SW 구성요소에 대한 절차 서술로 변환 | |
분석 |
구조 |
요구분석
명세 |
° 구현방법이 아닌 필요한 기능성 표시한 개념적 모형이며 운용 가능해야 함
° 불완전성을 수렴할 수 있어야 함
° 요구명세는 부분적 정의이며 타 요구들과는 느슨하게 연결되어야 함
° 동작할 시스템 환경에 대한 정보와 SW 컴포넌트에 관한 정보가 포함되어야 함
° 테스트 데이터에 대해 작동 가능성을 확인할 수 있어야 함 |
E-R Diagram |
° 데이터 객체들 사이의 관계성(Pipe-Filter pattern) |
DFD |
° 데이터가 시스템내에서 이동되면서 어떻게 변형되는지 표현
° 데이터 흐름을 변형시키는 기능/부기능을 표현(기능 모델링 기초)
° 최하위 버블에 대해 하나씩의 소단위명세 작성
|
데이터사전 |
° SW가 소비/생산하는 모든 데이터 객체들에 대한 명세를 표현하는 저장소
° 자료흐름(Data Flow), 자료저장소, 자료요소(Data Element)들의 정의로 구성된다 |
프로세스
명세 |
° 소단위 명세서(MiniSpec) - 구조적 언어, 의사결정도, 의사결정표, 흐름도(Flowchart), 선후조건문
° DFD에서 제시된 각 기능들에 대한 서술 |
제어명세 |
° SW의 제어측면에 대한 추가정보 |
상태천이도 |
° 시스템이 외부사건의 결과로서 어떻게 작용하는 표현(행위모델링) | ※ 배경도 작성 → 상위 DFD작성 → 하위 DFD작성 → 자료사전 작성 → 소단위 명세서 작성 |
단계 |
데이터
모델링 |
° E-R Diagram - 객체도출, 관계파악, 속성파악, 객체와 객체를 처리하는 프로세스간 관계 도출 |
프로세스모델링 |
° DFD - 데이터가 입력되어 출력으로 이동될 때 적용되는 변환 및 정보흐름을 나타내는 기법 |
행위
모델링 |
° STD - 시스템 행위의 다양한 모드(상태)를 표현하고 상태 천이가 이루어지는 방법을 나타냄 | |
분석가유형 |
※ 시스템 분석가
- 정보시스템 구축과 활용에 중추적 역할
- 시스템 구축하는 과정에서 시스템을 분석하고 설계
- SDLC 전체 단계에 대한 총괄 책임자
사용자와 시스템 개발 전문가 사이의 교량 역할
|
※ 요구사항 분석가
- 거시적 관점에서 세부적인 요소들을 관찰하는 능력
- 서로 상반되고 모호한 정보로부터 필요한 사항을 수집하는 능력
- 추상적인 개념을 논리적인 구성요소로 분해할 수 있는 능력
- 관련 H/W, S/W에 관한 최신기술 파악
| |
설계 |
원칙 |
추상화 |
기능(프로시져) 추상화 |
° 제한된 특정 기능을 갖는 명령어들의 명명된 순서 |
자료 추상화 |
° 데이터 객체를 기술하는 데이터들의 명명된 집합체 |
제어 추상화 |
° 내부적인 상세표현이 없는 프로그램 제어 메커니즘 | |
단계적 정제 |
° Niklaus Wirth에 의해 제안된 하향식(Top-down) 접근
° 높은 수준의 추상화 단계에서 정제 |
모듈성/구조화 |
° Divide & Conquer 방식으로 복잡한 문제를 여러 작은 문제로 나누어 해결
1) 결합도 |
데이터 |
° 모듈간 매개변수를 통한 자료교환 방식으로 독립성이 높음(Block Box 결합) |
小
↑
↓
大 |
스탬프/구조 |
° 복합 자료구조(Record, Array, File)를 매개변수로 사용 |
컨트롤 |
° 제어신호를 통해 다른 모듈을 통제하여 두 모듈간의 독립성이 떨어짐 |
외부 |
° 타모듈파일에서 정의된 자료를 그대로 이용하여 음성적 정보교환 및 유지보수 곤란 |
공유/
공통 |
° 동일 전역변수 공유와 같은 간접 정보교환 방식을 사용하여 재사용 어려움(모듈과 자료의 분리) |
내용 |
° 타모듈의 내부를 직접 참조 |
|
2) 응집도 |
우연 |
° 아무 관련 없는 기능요소들로 모듈이 구성됨 |
小
↑
↓
大 |
논리 |
° 모듈의 기능요소가 일반적으로 같은 성질을 처리하여 유지보수가 어려움 |
시간 |
° 특정 기능이 특정시간에 수행된다는 점외에 그 기능들이 서로 관련이 없으며 주로 초기화 모듈에 해당 |
절차 |
° 관련 없는 기능요소들이 순서대로 수행 |
통신 |
° 동일 입력 자료를 사용하고 서로 통신하며 다른 출력 결과를 생성함 |
순차 |
° 한 기능요소의 출력이 다음 기능요소의 입력자료로 사용됨 |
기능 |
° 기능이 한가지의 문제해결을 위한 작업을 수행하며 재사용성이 높음 |
° 높은 결합도가 요구되는 모듈을 분해하고 일반적 처리 구성요소가 두 개 이상의 높은 모듈에 존재할 때, 응집도를 향상시키기 위해 통합한다.
※ Fan-In(공유도) - 얼마나 많은 모듈이 주어진 모듈을 호출하는가?, 주어진 모듈을 제어하는 상위 모듈의 수
Fan-Out(제어도) - 어떤 모듈에 의해 호출되는 모듈의 수 |
자료구조
중심
(Jackson/ Warnier-Orr설계법) |
개요 |
° 입력과 출력구조의 정보 구조로부터 프로그램의 구조와 세부 절차를 도출하는 방법
° 프로그램의 구조가 절차 기술의 결과로 얻어지므로 모듈의 독립성과 같은 특성을 고려할 필요가 없음
° 응용분야 - 정보 정의가 잘되고, 계층적인 구조를 갖는 응용분야에 적용 |
고려사항 |
° 자료구조의 특성을 평가
° 자료는 순차, 선택, 반복 등과 같은 기본형태로 표현
° 자료구조의 표현은 소프트웨어의 제어 계층에 대응
° 소프트웨어의 계층구조는 각 방법의 지침을 따라 하향식으로 전개
° 소프트웨어의 절차를 기술(기본설계와 상세설계와의 구분이 없음) |
비교 |
|
자료흐름 중심 |
객체지향 설계 |
유사점 |
° 분석단계에서 시작, 정보중심
° 정보구조를 SW구조로 표현 |
° 자료추상화를 사용
° 자료계층은 클래스 계층과 유사
° 정보중심, 좋은 설계의 개념에 기초
° 프로그램의 구조의 표현을 개발하기 위한 기초로 자료의 표현을 사용 |
차이점 |
° 모듈화 개념이 고려되지 않음
° 정보구조 표현을 위해 계층구조 표현형식이 강조됨
° DFD를 사용하지 않아 변환흐름과 거래흐름 분류가 불필요 |
° 객체의 정의
° 상속성, 메시지전달, 캡슐화의 표현방법이 없음 | |
설계
및
개발
지원
도구 |
IPT |
정의 |
° Improved Programming Technique
° 효율적이고 신뢰성 높은 프로그램을 개발하기 위해, SW 생산성을 위해 사용되는 각종 기법들의 총칭 |
종류 |
기술적 지원 |
관리적 지원 |
° Structure Design
° Structure Programming
° Top-down Programming
° PDL, HIPO, N-S Chart |
° Chief Programmer Team
° Walk-Through, Inspection
° Library | | |
구조도 |
정의 |
° 모듈을 계층구조화 한 다이어그램(Structure Chart) |
특징 |
° 하위 모듈의 호출순서를 정하지 않음
° 자료(백색원 화살표)와 제어정보(흑색원 화살표)의 흐름 표시 가능
° 순차, 선택(마름모), 반복(곡선화살표)의 제어구조를 표현 못하며 이를 위해서 의사코드를 사용해야 한다 | |
·HIPO |
° 하향식 지향 기능중심 설계수단
° 기능과 자료의 의존관계를 동시에 표현
° 이해가 쉬우며 유지보수, 변경이 용이
Visual table of Contents |
° HIPO에서 지정된 기능을 계층적으로 나타낸 도표
° 시스템의 구조와 각 기능을 도식화하여 특정 기능을 쉽게 찾을 수 있음 |
Overview Diagram |
° 시스템 또는 프로그램의 기능을 사용자 관점에서 입력, 처리, 출력 관계로 도표화함 |
Detailed Diagram |
° 총괄도표의 입력, 처리, 출력의 연관 관계와 추가적인 설명 | |
N-S
Chart |
° 순차, 선택, 반복의 제어구조로 표현(BOX Diagram 또는 Chapin 차트 등으로 불림) |
PDL |
° 가상 코드의 일종으로 고급 프로그램 언어의 제어구조와 자연 언어를 통합하여 사용할 수 있는 알고리즘 표기법
° 고급 프로그램 언어의 많은 특징을 갖고 있기 때문에 구조적으로 보면 고급 언어와 매우 유사함
° 프로그램 제어, 데이터 타입 정의에서 자연 언어를 사용
° 데이터 선언, sub-program정의, 블록 구조화 기능, 인터페이스 서술 기능을 갖음 |
정형기법 |
° 수학과 논리학에 기반을 둔 방법으로 H/W, S/W 시스템을 명세하거나 검증하는 것
° 수학적 기호를 사용하여 시스템 명세를 작성, 검증할 특성도 논리로 기술하여 시스템이 특성을 만족하는지 수학적 성질을 이용하여 검증하므로 자연언어가 내포하는 애매모호함이나 불확실성을 줄임
° 정형명세와 정형검증으로 나누어진다
※ 정형명세언어 종류
Z |
° 집합론(Set Theory), 논리(Logic), 모델기반 명세기법
° 논리를 기반으로한 Calculus적 표현을 사용하여 여러 특성을 VDM보다 함축적으로 표현
° 모든 특성을 스키마안에 순서대로 기술하며 모듈화와 재사용성이 우수함
° 지식이 없는 사람은 이해가 어려움 |
Statechart |
° VDM과 상태 기반의 graphic 명세언어
° 상태전이 다이어그램(State-transition Diagram)에 Hierarchy, Concurrency, Communication 개념을 도입
° Hierarchy는 state의 계층적 구조를 표현, Concurrency는 state들간에 병렬성 제공, Communication은 컴포넌트들 간에 broadcasting을 통해 정보를 주고 받으며 진행하는 것을 말함 |
Petri-Net |
° 동시발생 구성요소를 갖는 이산사건 시스템을 모델링하고 설계할 수 있는 시각적 도구 |
ACSR(Algebra of Communicating System Resource) |
° CCS(Calculous for communicating system)에 기반한 Process Algebra
° time, resource, priority, concurrency 등의 실시간 시스템에 필요한 여러 개념을 포함
° 잘 정의된 semantics를 가진 정형명세언어로 VERSA 라는 검증 도구를 가짐
° 두 프로세스를 비교하기 위해 여러 개의 equivalence 개념을 제공하여 설계 명세가 요구 명세를 만족하는지를 보일 수 있다 | |