출처 : 강의 교안, 시스템분석설계 with 애자일 (생능출판사, 최은만)
1. SW 개발 방법론
1.1 SW 개발 방법론
1) SW 개발 방법론
- 소프트웨어 개발 프로세스의 각 작업 단계의 수행 방법을 정의
- 각 단계에서 요구하는 입력 자료를 가지고 어떻게 작업하여 그 결과를 표현하는지 알려준다.
- 방법론에서 제공하는 산출물의 표현 방법은 패러다임이나 SW를 보는 관점에 따라 다르다.
2) 주요 방법론
- 구조적(Structured) 방법론
- 프로세스 중심 (process-oriented)
- 논리적 모델과 물리적 모델에서 분할하여 기능적 분해를 먼저 한 후 모듈로 구조화하는 방법
- 자료보다는 함수에 중점적
- 프로세스를 먼저 정하고, 프로세스에 대한 입출력을 나중에 정한다.
- 정보공학 방법론
- 데이터 중심(Data-oriented) 개발
- ER 모델링 (Entity-Relationship Modeling)
- 자료와 자료들 간의 관계를 먼저 파악한다.
- 자료에 대한 연산 패턴으로 프로세스를 그룹화한다.
- 객체지향(Object-oriented) 방법
- SW를 데이터와 로직이 통합된 객체로 보고, 객체들의 정적 관계와 동적인 상호 작용을 모델링하는 방법
- 객체와 객체 간의 관계 파악이 중요하다.
- 객체가 가지는 자료와 연산에 집중한다.
⭐ 모델
- 현실의 대상을 추상화, 단순화, 가시화하는 것
- 모델링의 추상화, 단순화, 가시화 수준이나 방식은 관점(view)에 따라 달라진다.
2. 구조적 방법론
2.1 구조적 방법론
1) 구조적 방법론
- 프로세스 중심 모델링
- 전통적인 데이터 처리 시스템 개발에 적절한 기법
- 사용자의 요구분석 사항을 파악하기 위해 자료의 흐름과 가공절차(프로세스)를 표현
- 모델링되는 프로세스는 조직에서 매일 수행되므로 기능을 수행하기 위해 조직이 수행해야 하는 작업을 이해하는 것이 매우 중요하다.
- 데이터의 처리에 주목하여 계층적으로 상세화
- 모든 비즈니스 프로세스는 여러 하위 프로세스로 분해
- 하위 프로세스들은 보다 세부적인 수준으로 세분화
- 기업은 핵심 프로세스를 다양한 방식으로 최적화하기 위해 노력 ➡️ 정보 시스템을 이용해 비즈니스 프로세스를 지원하고자 함.
- 기능을 명확히 하고 구조와 처리를 결정
- 자료 흐름도 (Data Flow Diagram) : 그림을 이용하여 SW에 존재하는 기능들 사이에서 주고받는 데이터와 그 흐름을 정의
- 구조도 (Structure Chart) : 모듈 구조와 모듈 사이의 호출 관계를 정의
- 소단위 명세서 : 모듈 안의 사양을 의사코드로 기술
3. DFD (Data Flow Diagram)
3.1 DFD
1) DFD
- 구조적 분석
- 시스템 : 자료가 변환해 나가는 과정으로 봄
- 자료의 변환에 초점을 둠
- 자료흐름도 (Data Flow Diagram, DFD)
- 구현 방법에 관계없는 자료의 처리 흐름만을 나타내는 논리적인 다이어그램
- 외부 개체들과 시스템 내부의 프로세스 간의 데이터 이동과 데이터 저장소를 그림으로 묘사
- 정보시스템에서 데이터의 흐름을 보여주는 그래프로 나타낸 분석도구
- 정보시스템은 비즈니스 프로세스를 기반으로 함
- DFD는 비즈니스 프로세스를 하위 프로세스로 쉽게 분해할 수 있어 매우 유용하다 : 하향식 분할
- 작성 산출물
- 배경도 (context diagram)
- 여러 단계의 분할된 DFD
- 데이터 사전 (Data Dictionary)
- DFD에 기술된 모든 자료들에 대해 자료항목, 자료에 대한 의미, 자료와 단위의 값에 대한 사항 등을 정의
- DFD 구성요소
- 프로세스 (Process)
- 입력된 자료를 출력으로 변환하는 처리 또는 기능
- 원 안에 처리 명칭을 기술
- 자료흐름 (Data flow)
- 발생지, 종착지, 처리 및 저장소 사이의 자료의 흐름을 표현
- 화살표 위에 자료의 명칭을 기술
- 자료저장소 (Data store)
- 시스템 상의 자료 저장소를 표현
- 평행선 안에 자료저장소 명칭을 기술
- 단말 (Terminal)
- 시스템에 필요한 자료가 입력되는 발생지(source)와 시스템에서 처리된 자료가 출력되는 목적지(sink)를 표현
2) 자료흐름
- 자료흐름은 변형되어 이동 중인 자료군을 표현
- 시스템 내에서 한곳에서 다른 곳으로 이동하고 움직이는 데이터를 기술
- 이동 방향을 화살표로 나타내고 그 위에 이름을 붙임
- 자료의 내용과 형식 등은 자료사전에 명시
3) 자료 저장소
- 머물고 있는 데이터를 표현
- 파일 폴더, 컴퓨터 기반 파일, 노트북과 같은 상이한 물리적 장소
- 데이터의 조작을 위한 물리적 구성은 중요하지 않음.
4) 프로세스
- 데이터가 변형/저장/분배되기 위해 데이터에 수행되는 작업 또는 행위
- 수행되는 방식은 상관없음
- 프로세스의 이름과 함께 고유번호를 표현
5) 단말
- 시스템 밖에서 의사 전달하는 사람, 부서 또는 다른 시스템
- 데이터의 기원과 목적지를 기술하므로, 소스/싱크(source/sink)라고도 함.
- 단말들 사이에 자료흐름이 나타나면 안됨.
3.2 DFD 작성절차
1) DFD 작성 절차
- 배경도(Context Diagram) 작성
- 개발하려는 시스템과 외부세계와의 인터페이스를 식별
- 시스템 분석의 범위를 설정
- 단계적 분할
- 중간 단계의 DFD : DFD 내의 하나 이상의 프로세스가 하위 DFD로 분할
- 최하위 단계의 DFD : DFD 내의 모든 프로세스가 더 이상 분할되지 않음
2) 배경도
- 배경도(최상위 DFD) 작성
- 시스템 경계의 입출력 식별
- 시스템 분석의 범위를 결정
- 시스템 전체를 나타내는 하나의 프로세스와 관련된 단말들 표시
3) DFD 분해
- 배경도와 프로세스를 여러 하위 프로세스들로 구체화
- 자료원과 도착지를 나타낼 필요 없음
- 최하위 DFD : 상위 레벨 DFD의 프로세스 구체화
3.3 DFD 작성 규칙
1) DFD 작성 규칙
- 모든 DFD에 적용되는 기본 규칙
- 프로세스로 들어가는 입력은 그 프로세스로부터 나오는 출력과는 다르다.
- 자료흐름은 프로세스를 거쳐 변환될 때마다 새로운 이름을 부여한다.
- DFD 상의 객체는 유일한 명칭을 가진다.
2) 프로세스
- 출력만 있거나, 입력만 있는 프로세스는 불가
- 프로세스는 동사구를 사용해서 명명
- 하나의 동사로 표현
- 어떤 경우에도 적용되는 포괄적인 명칭을 피해야 한다.
3) 자료저장소
- 데이터는 한 자료저장소에서 다른 자료저장소로 직접 이동할 수는 없다.
- 데이터는 외부 소스에서 자료저장소로 또는 자료저장소에서 외부 싱크로 직접 이동할 수 없다.
- 입력만 되는 자료저장소(black hole)와 출력만 되는 자료저장소(white hole)는 없어야 한다.
4) 자료흐름
- 기호 사이에 오직 한 방향의 흐름을 가진다
- 데이터 흐름은 한 번 지나간 동일한 프로세스로 직접적인 역행이 불가능
- 자료저장소로 향하는 자료흐름은 쓰기를 의미하고, 자료저장소에서 나오는 자료흐름은 읽기를 의미
- 데이터 흐름의 분기와 결합
- 동일한 위치에서 정확히 같은 데이터가 둘 이상의 다른 프로세스, 데이터저장소, 또는 소스/싱크 이동으로 분기
3.4 DFD 분할 규칙
1) 기능적 분해 (functional decomposition)
- 하나의 시스템으로부터 많은 구성 프로세스들로 분리하는 행동
- 반복적인 절차
2) 레벨-n 다이어그램 (level-n diagram)
- 배경도에서 n번의 연속된 하부 프로세스 분할 결과로 생성된 DFD
3) 자료흐름의 균형
- DFD를 분해할 때 하위 레벨에서 프로세스로의 입력과 출력은 보존되어야 한다는 법칙
4) DFD 균형 잡기
- 하나의 데이터 흐름을 더 낮은 레벨의 다이어그램 상에 분리된 데이터 흐름으로 분리할 수 있다.
3.5 DFD 작성 지침
1) 완전성 (Completeness)
- DFD는 모델링하고자 하는 시스템에 필요한 모든 구성요소를 포함하여야 한다.
- 각 구성요소는 자료사전에 완전히 기술되어야 한다.
2) 일관성 (Consistency)
- 어떤 수준의 DFD에 포함된 정보가 다른 수준의 DFD에도 포함되어 있는 정도
3) 타이밍 (Timing)
- DFD는 시간을 잘 표현하지 못한다.
- 모델링하고 있는 시스템이 가동되지도 않고, 멈추지도 않는 것처럼 작성하는 것이 DFD 작성의 최선
4) 반복적인 개발 (Interative Development)
- 모델링되고 있는 시스템에 가장 근접하게 하기 위해서는 다이어그램을 여러 번 반복해서 그려야 한다.
5) 최하위 단계를 결졍하는 데 도움이 되는 지침
- 프로세스의 처리 과정이 한 페이지 이내로 기술될 수 있을 때까지 분할
- 처리에 대한 입력 자료 흐름과 출력 자료 흐름이 오직 하나씩 남을 때까지 분할
- 입력과 출력 사이에 일대일 또는 다대일의 관계를 갖는다면 분할이 충분히 이루어진 것이다.
4. 논리모델링 - 의사결정테이블 (decision table)
4.1 논리 모델링
1) 논리 모델링
- DFD는 프로세스 내부의 논리를 보여주지 않는다.
- 논리 모델링은 내부 구조 표현과 DFD에 표현된 프로세스의 기능을 포함
- 의사결정 테이블(Decision Tables) 을 사용해서 표현 가능하다.
- 의사결정 논리를 행렬로 표현
- 가능한 조건들과 결과적인 행위들을 규정
- 복잡한 의사결정 논리에 적합
- 3 부분으로 구성
- 조건부 (condition stubs) : 의사결정에 유의한 조건들을 나열
- 행동부 (action stubs) : 주어진 조건들의 집합에 대한 결과적인 행동
- 규칙 (rules) : 주어진 조건들의 집합에 대해 어떠한 행동들이 수반되어야 하는지를 규정
- 의사결정 테이블을 구성하는 표준 절차
- 각각의 조건이 가정할 수 있는 조건과 값의 이름 붙이기
- 발생 가능한 모든 행동에 이름 붙이기
- 모든 가능한 규칙을 나열
- 각각의 규칙을 위한 행동을 정의
- 의사결정 테이블을 간단하게 하기
5. 데이터 사전 (data dictionary)
5.1 자료 사전 (Data Dictionary, DD)
1) 자료 사전
- 시스템 분석의 중요한 요소
- DFD에 기술된 모든 자료에 대해 다음 사항들을 정의한다.
- 자료흐름을 구성하는 자료항목 정의
- 자료에 대한 의미 정의
- 자료저장소를 구성하는 자료항목 정의
- 자료원소의 단위 및 값 정의
- 자료의 하향식 분할
- 어떤 항목에 대한 정의는 구성요소들의 결합으로 표시
- 구성요소가 더 이상 세분화되지 않을 때까지 하향식 분할
2) 자료사전 표기법
기호 (Symbol) | 의미 (Meaning) |
= | 정의 (is composed of) |
+ | 구성 (and, along with) |
{ } | 반복 (iteration of) |
[ ] | 택일 (choose only one of) |
( ) | 생략 가능 (optioanl) |
* * | 주석 (comment) |
- 정의
- 주석을 사용하여 의미를 기술
- 자료흐름과 자료저장소에 대한 구성내역을 설명
- 자료원소에 대하여 값이나 단위를 나타냄
- 반복
- 여러 번 반복되는 자료항목은 { } 안에 기술
- { } 의 좌측에는 최소 반복 횟수를 기록하고, 우측에는 최대 반복 횟수를 기록
- 반복횟수를 기록하지 않을 때는 최소는 0, 최대는 무한대를 의미
- 선택 [ | ]
- | 로 분리된 항목들 중 하나가 선택되었다는 것을 표시
- 생략 가능 ()
- 괄호 안의 자료항목이 기술될 수도, 생략될 수도 있음을 표시
- 자료원소
- 더 이상 분할되지 않은 자료 항목으로, 특정한 값이나 값의 범위를 취함.
5.2 자료사전 작성 원칙
1) 자료의 의미 기술
- 자료의 의미는 주석을 통해 기술
- 중복이 없어야 간결하고, 이해하기 쉬운 자료사전
- 중복 기술 회피 방법
- 자료의 구성 내역을 설명하지 말아야 하며, 구성항목의 의미나 자료의 이름을 반복 설명하지 않는다.
2) 자료 구성항목의 기술
- 구성항목을 그룹으로 묶음
- 각 그룹에 대해 의미 있는 이름을 부여
- 이름이 붙여진 각 그룹을 다시 정의
3) 동의어 (Alias)
- 자료사전에 이미 정의된 자료항목에 대한 또 다른 이름
- 동의어가 많아지면 자료의 명칭에 혼동이 생길 우려가 있음.
'전공과목 정리 > 소프트웨어분석및설계' 카테고리의 다른 글
[소프트웨어분석및설계🛠️] 6장 UML (Unified Modeling Language) (0) | 2024.09.08 |
---|---|
[소프트웨어분석및설계🛠️] 5장 정보공학방법론 (0) | 2024.09.07 |
[소프트웨어분석및설계🛠️] 3장 SW 요구사항 (0) | 2024.08.17 |
[소프트웨어분석및설계🛠️] 2장 프로젝트 관리 (0) | 2024.08.17 |
[소프트웨어분석및설계🛠️] 1장 SW 개발 프로세스 (0) | 2024.08.16 |