정보처리기사/소프트웨어 설계

구조적 분석 도구 (DFD, DD, Minispec, STD, ERD)

joungdev 2025. 2. 3. 17:07

 오늘은 소프트웨어 설계에서 구조적 분석 도구에 대해 알아볼 것이다. 구조적 분석 도구는 시스템을 기능과 데이터의 흐름 중심으로 분석하고 설계하는 도구로, 복잡한 시스템을 계층적으로 분해하여 이해하고 문서화하는 데 사용된다.

 

 구조적 분석도구는 주요 특징은 기능 중심, 데이터 흐름 중점, 계층적 표현이 있다. 그래서 이 도구들은 시스템을 분해하여 더 작은 단위로 나누고, 각 단위가 어떻게 데이터를 처리하고 흐름이 이어지는지 명확하게 나타낸다. 구조적인 분석도구라는 말 자체가 시스템을 기능과 데이터 흐름의 관점에서 계층적으로 나누는 방식을 잘 나타내기 때문에 암기하는데 큰 문제는 없을 것으로 보인다.

 

 구조적 분석도구에는 도구들이 몇가지 존재한다. 그 중 가장 대표적인 것들을 알아보도록 하자.


DFD (Data Flow Diagram, 데이터 흐름도)

 데이터 흐름도는 시스템 내의 데이터 흐름을 시각적으로 표현한 도표이다. 프로세스, 데이터 흐름, 데이터 저장소, 외부 엔티티 등으로 구성되어 있으며, 시스템이 데이터를 어떻게 처리하고 이동시키는지 보여준다. 데이터 흐름도는 시스템의 기능적 요구사항을 표현하는 데 유용하다.

 

DFD 예시

 

 데이터 흐름도는 위와 같은 방식으로 작성을 한다.

요소 설명 도형
프로세스 (Process) 시스템에서 수행되는 작업이나 기능을 나타낸다.
데이터 흐름 (Data Flow) 시스템 내에서 데이터가 이동하는 경로를 나타낸다. 화살표
데이터 저장소 (Data Store) 시스템 내에서 데이터를 저장하는 장소를 나타낸다. 두 개의 수평선
단말 (Terminal) 시스템의 입력 또는 출력을 담당하는 지점이다. 직사각형

 

 인터넷에서 자료를 찾아보면서 애매한 부분이 있었는데, 단말과 외부 엔티티에 대한 내용이었다. 어느 자료에서는 단말이 직사각형이라고 되어 있었고 어느 자료에서는 외부 엔티티가 직사각형이라고 되어 있었다. 뭐가 맞는지는 필자도 잘 모르기 때문에 시험이 나왔을 때 3가지 요소(프로세스, 데이터 흐름, 데이터 저장소)를 잘 외워두면 나머지 하나는 단말이나 외부 엔티티일 것이기 때문에 그런식으로 기억하는 것이 좋을 것 같다.


DD (Data Dictionary, 자료 사전)

 자료 사전은 시스템에서 사용되는 데이터 요소들의 정의와 설명을 모아놓은 사전이다. 각 데이터 항목의 의미, 형식, 크기, 관련된 규칙 등이 기록된다. 시스템 설계에서 데이터의 일관성을 유지하고, 개발자 간의 의사소통을 원활하게 하는 데 도움이 된다.

 

표현 기호표

기호 의미
= 자료의 정의: ~로 구성되어 있다 (is composed of)
+ 자료의 연결 : 그리고 (and)
( ) 자료의 생략 : 생략 가능한 자료 (Optional)
[ | ] 자료의 선택 : 또는 (or)
{ } 자료의 반복 : Iteration of
* * 자료의 설명 : 주석 (Comment)

 

 이러한 기호를 활용하여 데이터 사전을 만든다. 다음은 예시이다.

Employee = 사원번호 + 이름 + 성별 + 부서 + 담당업무
사원번호 = 6자리 숫자
이름 = 한글 2~4글자
성별 = 남 or 여
부서 = 한글 2~10글자
담당업무 = { 업무코드 + 업무명 + 담당자 }
업무코드 = 5자리 알파벳과 숫자
업무명 = 한글 2~20글자
담당자 = 한글 2~4글자

 

 DFD와 DD는 시스템 분석과 설계에서 함께 사용되는 경우가 많다. 두 도구는 서로 보완적인 역할을 하며, 각기 다른 측면에서 시스템을 명화하게 정의하고 설명하는 데 도움을 준다. DFD는 구조와 흐름을 보여주고, DD는 그 흐름 속에 포함된 데이터에 대한 세부 정보를 제공한다.


Minispec (소단위 명세서)

 소단위 명세서는 개발 과정에서 각 프로세스나 기능에 대한 간략한 명세서로, DFD의 하위 프로세스나 기능을 자세히 설명하는 문서이다. 각 프로세스의 입력, 처리, 출력, 조건 등을 명확히 정의한다.

 

[예시]

 

기능명 : 회원 로그인

입력 : 사용자 ID (영문, 숫자 포함 5~20자) , 비밀번호 (영문, 숫자, 특수문자 포함 8~20자)

처리 : 

  1. 입력된 ID와 비밀번호를 DB에서 조회
  2. 일치하는 계정이 있으면 로그인 성공 처리
  3. 로그인 실패 시 실패 횟수 증가
  4. 5회 이상 실패 시 계정 잠금

출력 :

  • 로그인 성공 시 메인 페이지로 이동
  • 로그인 실패시 오류 메시지 출력 ( "아이디 또는 비밀번호가 올바르지 않습니다." )
  • 계정 잠금 시 경고 메시지 출력 ( "5회 이상 실패하여 계정이 잠겼습니다." )

 이처럼 소단위 명세서는 하나의 프로세스에 대한 간략한 명세를 작성한 문서로, 시스템 개발 중간에 발생할 수 있는 간단한 명세서이다. 주로 기능을 세부적으로 정의하고, 개발 과정에서 필요한 최소한의 정보를 제공하는 역할을 한다.


STD (State Transition Diagram, 상태전이도)

 상태전이도는 시스템이 특정한 상태에서 다른 상태로 어떻게 전이되는 지를 나타낸 다이어그램이다. 각 상태, 상태 전이 조건, 입력, 출력 등을 표현하여 시스템의 동적 동작을 시각화하는데 유용하다.

상태전이도 예시

 

 간혹 데이터 흐름도와 상태전이도를 구분하기 어려워 하시는 분들이 계셔서 그 차이를 말하자면, 상태 전이도는 시스템의 상태 변화를 중점으로 다이어그램을 만드는 것이고, 데이터 흐름도는 데이터 흐름과 그 처리를 강조하여 만드는 것이다. 즉, 상태 전이도는 상태의 변화를, 데이터 흐름도는 데이터의 흐름과 처리과정을 나타낸다고 생각하면 쉽다.


 마지막으로, ERD ( Entity-Relationship Diagram, 개체 관계도)가 있는데 이는 뒤에 데이터 베이스를 공부하다보면 나오는 매우 중요한 내용이므로 따로 포스팅을 할 예정이다. 그리고 구조적 분석 도구의 반대격인 객체지향 분석 도구에 대해서도 다음 포스팅에서 알아보도록 하겠다.

반응형