IT 이야기/소프트웨어공학

소프트웨어 분석 및 설계

필넷 2007. 10. 9. 08:02
반응형
○ 소프트웨어 분석 및 설계

모델

 

데이터설계

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


[관련 포스트]
2008/09/25 - [IT 노트/소프트웨어공학] - 소프트웨어비용산정(Doty, Putnam, COCOMO, COCOMO II, LOC, Function Point)
2008/08/21 - [IT 노트/데이터베이스] - 데이터베이스 설

반응형