구조적 분석의 개요
구조적 분석
- 요구 분석 명세서를 작성하기 위하여 널리 사용되어 오는 IPT 기법중의 하나
- 구조적 분석은 도형 중심의 분석용 도구와 분석 절차를 이용하여 사용자의 요구 사항을 파악하고 문서화하는 체계적인 분석 기법임
구조적 분석용 도구
자료 흐름도(DFD), 자료 사전(DD), 소단위 명세서(Mini-Spec), 개체 관계도(EFD), 상태 전이도(STD)
- 도형 중심의 문서화 도구를 사용함으로 분석자와 사용자간 대화가 용이
- 시스템을 하향식으로 세분화함
- 하향식 분할 원리를 적용하여 분석의 중복성을 배제함
- 사용자의 요구 사항을 논리적으로 표현하여 전체 시스템을 일관성 있게 이해할 수 있음
구조적 분석 도구
자료 흐름도(DFD)
- 시스템의 처리 과정을 자료의 흐름에 중점을 두어 기술하는 분석용 도구로, 버블 차트라고도 함
- 하향식 분할의 원리를 적용하여 그림 중심으로 표현
자료 흐름도의 구성 요소
구성 요소 | 의미 | 표기법 |
처리 | 입력된 자료를 출력으로 변환하는 것 | |
자료 흐름 | 발생지, 종착지, 처리 및 저장소 사이에서 자료의 흐름을 나타냄 | |
자료 저장소 | 시스템 상의 자료를 저장하기 위한 장소 | |
단말 | 시스템에 필요한 자료가 입력되는 발생지와 시스템에서 처리된 자료가 출력되는 종착지를 나타냄 |
자료 사전(DD)
- 자료 흐름도의 대상이 되는 모든 자료에 대한 기본적인 사항들을 더 자세히 정의하기 위해 사용되는 도구로, 메타 데이터(Meta Data) 또는 데이터의 데이터라고도 함
- 이름을 이용한 정의를 쉽게 찾을 수 있어야 하며, 이름이 중복되어서는 안 됨
- 갱신하기 쉬워야 하며, 정의하는 방식이 명확해야 함
- 중복된 정의가 없어야 함
- 자료 사전의 정의 대상 : 자료 흐름(Data Flow)을 구성하는 자료 항목, 자료 저장소(Data Store)를 구성하는 자료 항목, 자료에 대한 의미, 자료 요소(Data Element)의 단위 및 값
자료 사전의 기호
기호 | 의미 | 기호 | 의미 |
= | 자료의 정의 | { } | 자료의 반복 |
+ | 자료의 연결 | | | 대체 항목의 나열 |
( ) | 자료의 생략 | * ... * | 자료의 설명 |
[ ] | 자료의 선택 |
구조적 설계와 구현
구조적 프로그래밍의 규칙
- 프로그램의 제어 흐름을 선형화
- 단일 입구와 단일 출구만 가지게 함
- GOTO 문은 사용하지 않음
- 구조화 이론의 세 가지 기본 논리 구조만을 사용함(순차, 선택(조건), 반복 구조)
구조적 설계의 평가 기준
결합도(Coupling)
두 모듈간의 상호 의존도를 측정하는 것으로, 좋은 설계는 모듈간의 결합도를 최소화하여 모듈의 독립성을 높인 것을 의미
결합도의 순서 (약함 → 강함)
자료 결합도 → 스탬프 결합도 → 제어 결합도 → 외부결합도 → 공통 결합도 → 내용 결합도
자료 결합도 | 서로 다른 모듈 간에 매개 변수 또는 인수를 통해 꼭 필요한 자료만을 교환하는 경우의 결합도로, 설계 품질이 가장 좋음 |
스탬프 결합도 | 서로 다른 모듈이 동일한 자료 구조를 참조하는 경우의 결합도 |
제어 결합도 | 서로 다른 모듈 간에 교환하는 매개 변수(Parameter)가 제어 정보인 경우의 결합도 |
외부 결합도 | 어떤 모듈에서 외부(External)로 선언되어 있는 자료(변수)를 달느 모듈에서 참조하는 경우의 결합도 |
공통 결합도 | 서로 다른 모듈들이 하나의 기억 장소에 설정된 공통의 데이터 영역을 공유하는 경우의 결합도 |
내용 결합도 | 한 모듈이 다른 모듈의 내부 자료를 직접적으로 참조하는 경우의 결합도로, 결합도 중 의존도가 가장 높고, 순서 변경이 다른 모듈에 영향을 주기 쉬움 |
응집도(Cohesion)
한 모듈 내에 있는 구성 요소의 기능적 관련성을 평가하는 기준으로서, 응집도가 높을수록 모듈의 독립성은 높아짐
응집도의 순서(약함 → 강함)
기능적 응집도 → 순차적 응집도 → 통신적 응집도 → 절차적 응집도 → 시간적 응집도 → 논리적 응집도 → 우연적 응집도
객체지향 기법
객체(Object)
- 데이터(속성)와 이를 처리하기 위한 연산(메소드)을 결합시킨 실체
- 객체마다 각각의 상태(State)를 가지고 있음
- 행위(Behavior)에 대한 특징을 나타냄
- 객체는 식별성을 가짐
- 모든 객체는 다른 객체들과 구별할 수 있는 이름을 가짐
- 일정한 기억 장소를 가지고 있음
객체지향 기법 관련 용어
속성(Attribute)
한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의하는 것으로서 성질, 분류, 식별, 수량 또는 현재 상태 등을 표현함
메소드(Method)
객체에 정의된 연산을 의미하여, 객체의 상태를 참조하거나 변경하는 수단이 됨
클래스(Class)
2개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소 즉, 공통된 특성과 행위를 갖는 객체의 집합이라고 할 수 있음. 한 클래스를 기준으로 하여 그 기준 클래스의 상위 클래스를 수퍼 클래스, 하위 클래스를 서브 클래스라고 함
인스턴스(Instance)
하나의 클래스에 속하는 각각의 객체를 의미
인스턴스화(Instantiation)
클래스로부터 새로운 객체를 생성하는 행위
메시지(Message)
외부로부터 하나의 객체에 전달되는 메소드(행위)의 요구
객체의 특징
주체성
다른 객체들과 식별할 수 있는 속성을 의미
분류성
동일 속성과 행위를 갖는 객체들을 하나의 클래스로 분류하는 속성을 의미
다형성
하나의 메시지에 대해 각 클래스가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미 즉, 같은 연산자라도 각 클래스에 따라 다른 기능을 수행할 수 있음
- 상속성(Inheritance)
이미 정의된 상위 클래스의 메소드를 비롯한 모든 속성을 하위 클래스가 물려받을 수 있는 것을 의미
추상화(Abstraction)
불필요한 부분을 생략하고 객체의속성 중 가장 중요한 것에만 중점을 두어 개략화시키는 것을 의미
캡슐화(Encapsulation)
데이터 구조와 데이터를 조작하는 연산을 하나로 묶어 하나의 모듈 내에서 결합되도록 하는 것을 의미
정보 은닉(Information Hidden)
캡슐화된 정보를 외부에 감추는 것을 의미
객체지향 분석과 설계
럼바우(Rumbaugh)의 분석 기법
- 객체 모델링 기법(OMT)이라고 하며 그래픽 표기법을 이요하여 모든 소프트웨어 구성 요소들의 객체를 모델링함
- 시스템의 무엇(객체 모델링)에서 언제(동적 모델링), 어떤 일(기능 모델링)이 일어나는가를 분석함
분석 절차 : 객체 모델링 → 동적 모델링 → 기능 모델링
객체 모델링 (Object Modeling) |
실세계 문제 영역으로부터 시스템에 요구되는 객체를 찾아내어 객체들 간의 관계를 연관성, 집단화 일반화 관계를 중심으로 정의하고 객체 다이어그램으로 나타내는 것 |
동적 모델링 (Dynamic Modeling) |
시간의 흐름에 따라 변하는 객체들 사이의 제어 흐름, 상호 작용, 연산 순서 등의 동적인 행위를 상태 다이어그램으로 나타내는 것 |
기능 모델링 (Function Modeling) |
다수 프로세스 간의 데이터 흐름을 중심으로 처리 과정을 데이터 흐름도로 나타내는 것 |
코드(Coad)와 요돈(Yourdon)의 객체지향 기법
분석 기법
E-R 다이어그램(개체 관계도)을 사용하여 개체의 활동들을 데이터 모델링하는 데 초점을 둔 기법
설계 기법
분석 사항을 하향식 방법으로 설계에 접근하여 프로토타입으로 개발하는 객체지향 설계 기법으로, 문제 영역 요소, 사람과 상호 작용 요소, 타스트(Task) 관리 요소, 데이터 관리 요소로 구성됨
Booch의 객체지향 설계
- 1991년 Booch에 의해 발표된 객체지향 설계 기법으로, 설계 단계에 중점을 두어 클래스 및 객체의 식별과 그것들 간의 관계를 강조하였음
- 데이터 프름도(DFD)를 사용해서 객체를 분해하고, 객체들 간의 인터페이스를 찾아 Ada 프로그램으로 변화시키는 기법
- 전체 시스템의 가시화와 실시간 처리(Real Time)에 유용
- 설계를 위한 문서화 기법을 강조함
- 분석 단계와 구현 세부 사항에 취약