모델
|
데이터설계
|
정보영역을 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 개념을 제공하여 설계 명세가 요구 명세를 만족하는지를 보일 수 있다
|
|