[정보처리기사] 소프트웨어 설계 - 요구사항 확인 - ② 요구 사항 확인
1. 소프트웨어 설계 - 01. 요구사항 확인
② 요구 사항 확인
(1) 요구분석(Requirements Analysis) 기법
A. 요구분석이란?
- 도출된 요구사항 간 상충을 해결하고 소프트웨어의 범위를 파악하여 외부 환경(하드웨어, 소프트웨어, 네트워크 등의 환경)과의 상호작용을 분석하는 과정
- 개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정
B. 요구분석의 특징
- 분석 결과의 문서화를 통해 향후 유지보수에 유용하게 활용 가능
- 보다 구체적인 명세를 위해 소단위 명세서 활용 가능
- 개발 비용이 가장 많이 소요되는 단계는 X
C. 요구분석 기법
| 순서 | 절차 |
| 1 | 요구사항 분류 |
| 2 | 개념 모델링 생성 및 분석 |
| 3 | 요구사항 할당 |
| 4 | 요구사항 협상 |
| 5 | 정형 분석 |
D. 요구사항 분석 기술
| 분석 기술 | 설명 |
| 청취 기술 | 이해관게자로부터 의견을 듣는 기술 |
| 인터뷰와 질문 기술 | 이해관계자를 만나 정보를 수집하고 이야기를 나누는 기술 |
| 분석 기술 | 추출된 요구사항에 대해 충돌, 정복, 누락 등의 분석을 통해 완전성과 일관성을 확보하는 기술 |
| 중재 기술 | 이해관계자들의 상반된 요구에 대한 중재기술 |
| 관찰 기술 | 사용자가 작업하는 것을 관찰하면서 사용자가 언급하지 않은 미묘한 의미를 탐지할 수 있는 기술 |
| 작성 기술 | 문서 작성 기술 |
| 조직 기술 | 수집된 방대한 정보를 일관성 있는 정보로 구조화하는 능력 |
| 모델 작성 기술 | 수집한 자료를 바탕으로 제어의 흐름, 기능 처리, 동작 행위, 정보 내용 등을 이해하기 쉽도록 모델로 작성하는 기술 |
E. 요구사항 분석에 사용하는 기능 모델링 기법
a. 데이터 흐름도(DFD, Data Flow Diagram)
㉮. 데이터 흐름도란?
- 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타낸 그림
- 시스템 분석과 설계에서 매우 유용하게 사용되는 다이어그램
- 데이터 흐름도는 시스템의 모델링 도구로서 가장 보편적으로 사용되는 것 중의 하나
- 자료 흐름 그래프 또는 버블 차트라고 함

㉯. 데이터 흐름도 특징
- 구조적 분석 기법에 이용
- 데이터의 흐름에 중심을 두는 분석용 도구
- 제어의 흐름은 중요 X
- 시간 흐름을 명확하게 표현 X
㉰. 데이터 흐름도 구성요소
| 구성요소 | 설명 |
| 처리기 (Process) |
입력된 데이터를 원하는 형태로 변환해 출력하기 위한 과정 DFD에서는 원(○)으로 표시 |
| 데이터 흐름 (Data Flow) |
DFD의 구성요소(프로세스, 데이터 저장소, 외부 엔터티)들 간의 주고 받는 데이터 흐름을 나타냄 DFD에서는 화살표(→)로 표시 |
| 데이터 저장소 (Data Store) |
데이터가 저장된 장소 DFD에서는 평행선(=)으로 표시하며, 평행선 안에는 데이터 저장소의 이름을 넣음 |
| 단말 (Terminator) |
프로세스 처리 과정에서 데이터가 발생하는 시작과 종료를 나타냄 사각형(□)으로 표시하며, 사각형 안에는 외부 엔터티의 이름을 넣음 |
b. 자료 사전(DD, Data Dictionary)
㉮. 자료 사전이란?
- 자료 요소, 자료 요소들의 집합, 자료의 흐름, 자료 저장소의 의미와 그들 간의 관계, 관계 값, 범위, 단위들을 구체적으로 명시하는 사전
- 파일 혹은 데이터베이스에 있는 자료에 대한 자료 또는 각 자료 항목에 주어진 이름과 길이 그리고 서술과 같은 데이터를 포함하는 참조를 위한 작업
㉯. 자료 사전의 작성 목적
- 조직에 속해 있는 다른 사람들에게 특정한 자료 용어가 무엇을 의미하는지를 알려주기 위해, 용어의 정의를 조정하고 취합하고 문서로 명확히 하는 목적
- 자료 흐름도에 나타나는 어떤 자료의 흐름도 자료 사전에 정의되어 있어야 함
㉰. 자료 사전 기호
| 기호 | 의미 |
| = | 자료의 정의로서 '~으로 구성되어 있다'는 것을 나타냄 |
| 정의는 주석을 사용하여 의미를 기술, 자료 흐름과 자료저장소에 대한 구성 내역을 설명하고, 자료 원소에 대하여 값이나 단위를 나타냄 | |
| + | 자료의 연결(and, along with)을 나타냄 |
| ( ) | 자료 생략 가능함을 나타냄 |
| { } | 자료의 반복을 나타냄 |
| 반복 횟수를 기록하는 데 { }에서 좌측에는 최소 반복 횟수를 기록하고, 우측에는 최대 반복 횟수를 기록 | |
| 반복 횟수를 기록하지 않을 때는 디폴트로 최소는 0, 최대는 무한대를 나타냄 | |
| [ ] | 자료의 선택을 나타냄 |
| 택일 기호 [ | ]는 '|'로 분리된 항목 중 하나가 선택된다는 것을 표시 | |
| ** | 자료의 설명을 나타냄 |
| 주석 |
(2) UML(Unified Modeling Language)
A. UML이란?
- 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어
B. UML의 특징
| 특징 | 설명 |
| 가시화 언어 | 개념 모델 작성 시 오류가 적고 의사소통이 용이 |
| 구축 언어 | 다양한 프로그래밍 언어로 실행 시스템의 예측 가능 |
| UML을 소스 코드로 변환하여 구축 가능, 역 변환하여 역공학 가능 | |
| 명세화 언어 | 정확한 모델 제시, 완전한 모델 작성 가능 |
| 문서화 언어 | 시스템에 대한 평가 및 의사소통의 문서 |
C. UML 구성요소
| 구성요소 |
||
| 사물 (Things) |
관계 (Relationships) |
다이어그램 (Diagrams) |
D. UML 다이어그램
| 구분 | 다이어그램 | 설명 |
| 구조적(정적) 다이어그램 |
클래스 (class) |
시스템 내 클래스의 정적 구조를 표현 |
| 속성과 동작으로 구성 | ||
| 시스템의 구조를 파악하고 구조상의 문제점 도출 가능 | ||
| 객체 (object) |
클래스에 속한 객체들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현 | |
| 객체 인스턴스를 나타내는 대신 실제 클래스를 사용 | ||
| 연관된 모든 인스턴스를 표현 | ||
| 컴포넌트 (componet) |
코드 컴포넌트 기반의 물리적 구조표현 | |
| 실질적 프로그래밍 작업에 사용 | ||
| 배치 (deployment) |
컴포넌트 사이의 종속성을 표현 | |
| 결과물, 프로세스, 컴포넌트 등 물리적 욧들의 위치를 표현 | ||
| 복합체 구조 (composite structure) |
클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현 | |
| 패키지 (package) |
유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현 | |
| 행위적(동적) 다이어그램 |
유스케이스 (usecase) |
사용자 관점에서 시스템의 활동을 표현 |
| 유스케이스는 시스템의 기능적 요구 정의에 활용 | ||
| 시퀀스 (sequence) |
객체 간 상호작용을 메시지 흐름으로 표현 | |
| 객체 사이 메시지를 보내는 시간을 표현 | ||
| 커뮤니케이션 (communication) |
시퀀스 다이어그램과 같이 동작에 참여하는 객체들이 주고 받는 메시지를 표현하는데, 메시지뿐만 아니라 객체 간의 연관까지 표현 | |
| 상태 (state) |
하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현 | |
| 모든 가능한 상태와 전이를 표현 | ||
| 진입 조건, 탈출 조건, 상태 전이 등 기술 | ||
| 활동 (activity) |
시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름으로 순서대로 표현 | |
| 활동의 순서대로 흐름을 표현 | ||
| 타이밍 (timing) |
객체 상태 변화와 시간 제약을 명시적으로 표현 |
(컴포넌트와 배치 다이어그램은 구현 단계에서 사용되는 다이어그램)
E. UML 상세
a. 클래스 다이어그램(Class Diagram)
㉮. 클래스 다이어그램이란?
- 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램
㉯. 클래스 다이어그램 구성요소
| 구성요소 | 설명 |
| 클래스 이름 (class name) |
클래스의 이름 |
| 속성 (attribute) |
클래스의 특징에 이름을 부여 |
| 연산 (operation) |
객체에 요청하여 행동에 영향을 줄 수 있는 서비스 |
| 접근 제어자 (access modifier) |
클래스에 접근할 수 있는 정도를 표현 - : 클래스 내부접근만 허용 -> private + : 클래스 외부접근을 허용 -> public # : 동일 패키지 및 파생클래스에서 접근 가능 -> protected ~ : 동일 패키지 클래스에서 접근 가능 -> default |
|
예시 |
|
![]() |
Player는 클래스 이름 moveSpeed, moveDir, targetPosition은 속성, Move()와 TraceTarget()은 연산이다. 속성과 연산을 접근제어자로 보면 moveSpeed와 TraceTarget()은 public, moveDir과 Move()는 private, targetPosition은 protected이다. |
b. 유스케이스 다이어그램(Usecase Diagram)
㉮. 유스케이스 다이어그램이란?
- 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램
㉯. 유스케이스 다이어그램 구성요소
| 구성요소 | 설명 | 표기법 |
| 유스케이스 (Usecase) |
시스템이 제공해야 하는 서비스 | ![]() |
| 액터가 시스템을 통해 수행하는 일련의 행위 | ||
| 액터 (Actor) |
사용자가 시스템에 대해 수행하는 역할 | ![]() |
| 시스템과 상호작용하는 사람 또는 사물 | ||
| 시스템 (System) |
전체 시스템의 영역을 표현 | ![]() |
c. 시퀀스 다이어그램(Sequence Diagram)
㉮. 시퀀스 다이어그램이란?
- 객체 간 상호작용을 메시지 흐름으로 표현한 다이어그램
㉯. 시퀀스 다이어그램 구성요소
| 구성요소 | 설명 | 표기법 |
| 객체 (Object) |
객체는 위쪽에 표시되며 아래로 생명선을 가짐 | ![]() |
| 객체는 사각형 안에 이름으로 명시 | ||
| 생명선 (Lifeline) |
객체로부터 뻗어 나가는 점선 | ![]() |
| 실제 시간이 흐름에 따라 객체의 생명주기 동안 발생하는 이벤트를 명시 | ||
| 실행 (Activation) |
직사각형은 함수가 실행되는 시간을 의미 |
![]() |
| 직사각형이 길어질수록 함수 수행시간이 긺 | ||
| 메시지 (Message) |
객체 간의 상호작용은 메시지 교환으로 이루어짐 | ![]() |
| 한 객체에서 다른 객체로의 메시지를 전달하여 전달받은 객체의 함수를 수행 |
F. UML 확장 모델의 스테레오 타입
- UML의 스테레오 타입은 UML의 기본적 요소 이외의 새로운 요소를 만들어 내기 위한 확장 메커니즘
- 형태는 기존의 UML의 요소를 그대로 사용, but 내부 의미는 다른 목적으로 사용하도록 확장
- UML의 스테레오 타입은 "<< >>" 기호를 사용하여 표현
ehpub.co.kr/tag/%EC%9E%90%EB%A3%8C-%ED%9D%90%EB%A6%84%EB%8F%84data-flow-diagram/
자료 흐름도(Data Flow Diagram) – 언제나 휴일
이번에는 정보처리기사 필기 과목인 소프트웨어 공학의 요구 분석을 살펴보아요. 요구 분석 이해관계자의 요구 사항을 분석하여 문서화하는 활동 소프트웨어 개발 첫 단계 소프트웨어 분석가
ehpub.co.kr
Class Diagram (클래스 다이어그램) - Basic
Class Diagram은 UML의 구조 다이어그램으로서 클래스 내부 구성 요소 및 클래스 간의 관계를 도식화하여 시스템의 특정 모듈이나 일부 또는 전체 구조를 나타낸다. 1. 목적 개념 기술 Class Diagram을 통
thinking-jmini.tistory.com
UML 클래스 다이어그램 이해하기
[UML] 클래스 다이어그램 작성법 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io UML 클래스 다이어그램 기본상식 ( C# ) 본격적인 GOF의 디자인 패턴을 분석하기 전에, GOF의 디..
morm.tistory.com
(UML) 유스케이스 다이어그램 - Usecase Diagram
유스케이스 다이어그램 시스템과 사용자의 상호작용을 다이어그램으로 표현한 것으로 사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여주는 것이다. 사용자가
googry.tistory.com
www.aladin.co.kr/shop/wproduct.aspx?ItemId=258036320
2021 수제비 정보처리기사 필기 (1권+2권 합본세트) 2020년 기출 문제 수록
IT 비전공자를 위해 만들어진 수험서다. IT 분야의 최고 전문가 집단의 오랜 연구를 통한 정보처리기사 합격까지의 최단기 솔루션을 제안한다. 중요도에 따른 별점 체크, 두음쌤을 통한 암기비법
www.aladin.co.kr







