컴공생의 다이어리
[정보처리기사] 소프트웨어 설계 - 요구사항 확인 - ② 요구 사항 확인 본문
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/
www.aladin.co.kr/shop/wproduct.aspx?ItemId=258036320
'자격증 > 정보처리기사' 카테고리의 다른 글
인공지능, 기계학습, 딥러닝 (0) | 2021.02.23 |
---|---|
트리거(Trigger)의 개념과 목적 그리고 구성 (0) | 2021.02.19 |
소프트웨어 공학의 원칙 및 관련 법칙(브룩스, 파레토, 롱테일) (0) | 2021.02.18 |
[정보처리기사] 소프트웨어 설계 - 요구사항 확인 - ① 현행 시스템 분석 (0) | 2021.01.18 |
2021 정보처리기사 - 응시자격, 시험일정, 수수료, 시험과목, 취득방법 (0) | 2021.01.15 |