Search
Duplicate

1-0. 요구사항 확인

생성일
2023/04/16 05:58
태그
요구사항 확인

요구사항 확인

1. 소프트웨어 생명주기 (SDLC)

시스템의 전 공정을 체계화한 절차
소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 단계별로 나눈 것

SDLC 모델 종류

폭포수 모델

이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고, 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 개발 방법론
가장 오래되고 가장 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형
선형 순차적 모형 (고전적 생명주기 모형)
각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 한다.

프로토타입 모형 (원형 모형)

사용자의 요구사항을 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품(Prototype)을 만들어 최종 결과물을 예측하는 모형
프로토타입은 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발한다.

나선형 모형(Spiral Model, 점진적 모형)

여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모형이다.
보헴(Bohem)이 제안!
폭포수 + 프로토타입 + 위험 분석 기능
누락되거나 추가된 요구사항을 첨가할 수 있다.
유지보수 과정이 필요 없다.
4가지 주요 활동
“계획하고 분석한 후 개발하고 평가한다”

애자일 모형 (Agile)

애자일은 ‘민첩한’, ‘기민한’ 이라는 의미로, 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형이다.
어느 특정 개발 방법론이 아니라 좋은 것을 빠르고 낭비 없게 만들기 위해 고객과의 소통에 초점을 맞춘 방법론을 통칭한다.
폭포수 모형과 대조적
기업 활동 전반에 걸쳐 사용
대표적인 개발 모형
스크럼 (Scrum)
XP (eXtreme Programming)
칸반 (Kanban)
Lean
기능 중심 개발 (FDD: Feature Driven Development)

애자일 개발 4가지 핵심 가치

프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
계약 협상보다는 고객과 협업에 더 가치를 둔다.
계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.

소프트웨어 공학

소프트웨어 공학은 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문이다.
여러가지 방법론과 도구, 관리 기법들을 통하여 소프트웨어의 품질과 생산성 향상을 목적으로 ㅎ나다.
소프트웨어 공학의 기본 원칙
현대적인 프로그래밍 기술을 계속적으로 적용해야 한다.
개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 한다.
소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야 한다.

2. 스크럼(Scrum) 기법

스크럼 (Scrum)

팀이 중심이 되어 개발의 효율성을 높이는 기법
팀원 스스로가 스크럼 팀을 구성하고, 개발 작업에 관한 모든 것을 스스로 해결할 수 있어야 한다.
백로그 (Backlog) : 제품 개발에 필요한 요구사항을 모두 모아 우선순위를 부여해 놓은 목록 이해관계자(Stakeholder) : 소프트웨어 개발과 관련해서 이해관계자는 소프트웨어 개발 의뢰자, 소프트웨어 개발자, 소프트웨어 사용자 등이다.

스크럼 개발 프로세스

스프린트 계획 회의
제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정을 수립하는 회의
스프린트 (Sprint)
실제 개발 작업을 진행하는 과정으로, 보통 2~4주 정도의 기간 내에서 진행한다.
일일 스크럼 회의
모든 팀원이 매일 약속된 시간에 약 15분 동안 진행 상황을 점검하는 회의.
남은 작업 시간은 소멸차트(Burn-down Chart)에 표시한다.
스프린트 검토 회의
부분 또는 전체 완성 제품이 요구사항에 잘 부합하는지 테스팅하는 회의
스프린트 회고
정해놓은 규칙 준수 여부 및 개선할 점을 확인하고 기록하는 것
스크럼 개발을 진행할 때는 “계획하여 진행(스프린트)한 후, 회의와 검토를 거쳐 회고한다.”

3. XP (eXtreme Programming) 기법

XP (eXtreme Programming)

수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해, 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 높이는 방법
짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발한느 것을 목적으로 한다.
XP의 5대 핵심 가치
의사소통 (Communication)
단순성 (Simplicity)
용기 (Courage)
존중 (Respect)
피드백 (Feedback)

XP 개발 프로세스

릴리즈 계획 수립
부분 혹은 전체 개발 완료 시점에 대한 일정을 수립하는 것
몇 개의 스토리가 적용되어 부분적으로 기능이 완료된 제품을 제공하는 것을 릴리즈 라고 한다.
이터레이션 (Iteration, 주기)
실제 개발 작업을 진행하는 과정으로 보통 1~3주 정도의 기간으로 진행된다.
승인 검사 (Acceptance Test, 인수 테스트)
하나의 이터레이션 안에서 부분 완료 제품이 구현되면 수행하는 테스트
소규모 릴리즈
요구사항에 유연하게 대응할 수 있도록 릴리즈의 규모를 축소한 것
“계획하고 진행(이터레이션)한 후, 검사하고 출시(릴리즈)한다.

XP의 주요 실천 방법 (Practice)

Pair Programming (짝 프로그래밍)

다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성한다.

Collective Ownership (공동 코드 소유)

개발 코드에 대한 권한과 책임을 공동으로 소유한다.

Test-Driven Development (테스트 주도 개발)

개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지를 정확히 파악할 수 있다.
테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구(구조, 프레임워크)를 사용한다.

Whole Team (전체 팀)

개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고, 그 역할에 대한 책임을 가져야 한다.

Continuous Integration (계속적인 통합)

모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합된다.

Refactoring

프로그램 기능의 변경 없이 시스템을 재구성한다.
목적 : 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발할 수 있도록 하기 위함.

Small Release

릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있음

4. 현행 시스템 파악

현행 시스템 파악 절차

1단계

1.
시스템 구성 파악
2.
시템 기능 파악
3.
시스템 인터페이스 파악

2단계

1.
아키텍쳐 구성 파악
2.
소프트웨어 구성 파악

3단계

1.
하드웨어 구성 파악
2.
네트워크 구성 파악

5. 개발 기술 환경 파악

개발 기술 환경 파악의 개요

개발하고자 하는 소프트웨어와 관련된 OS, DBMS, 미들웨어 등을 선정할 때 고려해야 할 사항을 기술하고, 오픈 소스를 사용할 때 주의해야 할 내용을 제시한다.

운영체제 (Operating System)

운영체제는 컴퓨터 시스템의 자원을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어이다.
컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종이다.
다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공한다.
운영체제 관련 요구사항 식별 시 고려사항
가용성
성능
기술지원
주변기기
구축비용

데이터베이스 관리 시스템 (DBMS, DB Management System)

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템이다.
모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리한다.
DBMS 관련 요구사항 식별 시 고려사항
가용성
성능
기술지원
상호호환성
구축비용

웹 애플리케이션 서버 (WAS, Web Applicatioin Server)

사용자의 요구에 따라 변하는 동적인 컨텐츠를 처리하기 위해 사용되는 미들웨어
데이터 접근, 세션 관리, 트랜잭션 관리 등을 위한 라이브러리를 제공한다.
주로 데이터베이스 서버와 연동해서 사용한다.
웹 애플리케이션 서버 관련 요구사항 식별 시 고려사항
가용성
성능
기술지원
구축비용

오픈 소스 (Open Source)

누구나 별다른 제한 없이 사용할 수 있도록 소스코드를 공개한 소프트웨어
오픈소스 라이센스를 만족한다.
오픈소스 관련 요구사항 식별 시 고려사항
라이센스의 종류
사용자 수
기술의 지속 가능성

6. 요구사항 정의

요구사항

소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약 조건
소프트웨어 개발이나 유지보수 과정에서 필요한 기준과 근거를 제공한다.
개발에 참여하는 이해관계자들 간의 의사소통을 원할하게 하는 데 도움을 준다.
요구사항의 유형
기능 요구사항 (Functional Requirements)
비기능 요구사항 (Non-functional Requirements)
사용자 요구사항 (User Requirements)
시스템 요구사항 (System Requirements)

기능 요구사항 (Functional Requirements)

시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
시스템의 입력이나 풀력으로 무엇이 포함되어야 하는지에 대한 사항
시스템이 반드시 수행해야 하는 기능
사용자가 시스템을 통해 제공받기를 원하는 기능

비기능 요구사항 (Non-functional Requirements)

품질이나 제약사항과 관련된 요구사항
시스템 장비 구성 요구사항
성능 요구사항
인터페이스 요구사항
데이터를 구축하기 위해 필요한 요구사항
테스트 요구사항
보안 요구사항
품질 요구사항
가용성
정합성
상호호환성
대응성
이식성
확장성
보안성
제약사항
프로젝트 관리 요구사항
프로젝트 자원 요구사항
ex)
기능 요구사항 : “사용자는 회원ID와 비밀번호를 입력하여 로그인할 수 있다.” (기능)
비기능 요구사항 : “시스템은 1년 365일, 하루 24시간 운용이 가능해야 한다.” (품질이나 제약사항)

사용자 요구사항 (User Requirements)

사용자 관점에서 본 시스템이 제공해야 할 요구사항
사용자를 위한 것으로, 친숙한 표현으로 이해하기 쉽게 작성된다.

시스템 요구사항 (System Requirements)

개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에 제공해야 할 요구사항
사용자 요구사항에 비해 전문적이고 기술적인 용어로 표현된다.
소프트웨어 요구사항 이라고도 한다.

7. 요구사항 개발 프로세스

요구사항 개발 프로세스

개발 대상에 대한 요구사항을 체계적으로 도출하고 분석한 후 명세서에 정리한 다음 확인 및 검증하는 일련의 구조화된 활동
요구사항 개발 프로세스가 진행되기 전에 타당성 조사(Feasibility Study)가 선행되어야 한다.
요구사항 개발은 요구공학(Requirement Engineering)의 한 요소이다.

요구사항 도출 (Requirement Elicitation, 요구사항 수집)

시스템, 사용자, 개발자 등 시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항을 어떻게 수집할 것인지를 식별하고 이해하는 과정
개발자와 고객 사이의 관계가 만들어지고 이해관계자가 식별된다.
소프트웨어 개발 생명 주기 (SDLC) 동안 지속적으로 반복된다.
요구사항을 도출하는 주요 기법
청취와 인터뷰
설문
브레인스토밍
워크샵
프로토타이핑
유스케이스

요구사항 분석

개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정
요구사항의 타당성을 조사하고 비용과 일정에 대한 제약을 설정한다.
서로 상충되는 요구사항이 있으면 이를 중재하는 과정이다.
요구사항 분석에 사용되는 대표적인 도구
자료흐름도(DFD), 자료사전(DD)

요구사항 명세

분석된 요구사항을 바탕으로 모델을 작성하고 문서화 하는것
기능 요구사항을 빠짐없이 기술한다.
비기능 요구사항은 필요한 것만 기술한다.
구체적인 명세를 위해 소단위 명세서(Mini-Spec)가 사용될 수 있다.

요구사항 확인 (요구사항 검증)

개발 자원을 요구사항에 할당하기 전에 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동
이해관계자들이 검토해야 한다.
요구사항 관리 도구를 이용하여 요구사항 정의 문서들에 대해 형상관리(SCM)을 수행한다.

요구공학 (Requirement Engineering)

무엇을 개발해야 하는지 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문
요구사항 변경의 원인과 처리 방법을 이해하고 요구사항 관리 프로세스의 품질을 개선하여 소프트웨어 프로젝트 실패를 최소화하는 것을 목표로 한다.

요구사항 명세 기법

8) 요구사항 분석

요구사항 분석

소프트웨어 개발의 실제적인 첫 단계로, 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화(명세화)하는 활동
사용자 요구의 타당성을 조사하고 비용과 일정에 대한 제약을 설정한다.
사용자의 요구를 정확하게 추출하여 목표를 정한다.

구조적 분석 기법

자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법
도형 중심의 분석용 도구와 분석 절차를 이용하여 사용자의 요구사항을 파악하고 문서화한다.
하향식 방법을 사용하여 시스템을 세분화 할 수 있다.
분석의 중복을 배제할 수 있다.
주요 구조적 분석 기법 도구
자료 흐름도 (DFD)
자료 사전 (DD)
소단위 명세서 (Mini-Spec.)
개체 관계도 (ERD)
상태 전이도 (STD)
제어 명세서

자료 흐름도 (DFD, Data Flow Diagram)

요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법
자료 흐름 그래프, 버블 차트 라고도 한다.
자료 흐름과 처리를 중심으로 하는 구조적 분석 기법에 이용된다.

자료 사전 (DD, Data Dictionary)

자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것
데이터를 설명하는 데이터로, 데이터의 데이터 또는 메타 데이터(Meta Data)라고도 한다.

9. 요구사항 분석 CASE와 HIPO

요구사항 분석용 CASE (자동화 도구)

요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
대표적인 요구사항 분석용 CASE
SADT
시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위한 도구
SoftTech 사에서 개발
구조적 요구분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구
SREM = RSL/CASE
TRW사가 실시간처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 도구
RSL과 REVS를 사용하는 자동화 도구
PSL/PSA
TAGS

HIPO (Hierarchy Input Process Output)

시스템의 분석 및 설계, 또는 문서화에 사용되는 기법으로, 시스템 실행 과정인 입력, 처리 ,출력의 기능을 표현한 것
하향식 소스트웨어 개발을 위한 문서화 도구
기능과 자료의 의존관계를 동시에 표현할 수 있다.
기호, 도표 등을 사용하므로 보기 쉽고, 이해하기도 쉽다.
HIPO Chart
가시적 도표
총체적 도표
세부적 도표

10. UML (Unified Modeling Language)의 개요

UML (Unified Modeling Language)

시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호 간의 의사소통이 원할하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
Rumbaugh(OMT), Booch, Jacobson 등의 객체지향 방법론의 장점을 통합하였다.
OMG에서 표준으로 지정하였다.
구성요소
사물 (Things)
관계 (Relationships)
다이어그램 (Diagram)

사물 (Things)

다이어그램 안에서 관계가 형성될 수 있는 대상들
모델을 구성하는 가장 중요한 기본 요소

11. UML - 관계

관계 (Relationships)

사물과 사물 사이의 연관성을 표현하는 것

연관 (Association) 관게

2개 이상의 사물이 서로 관련되어 있는 관계

집합 (Aggregation) 관계

하나의 사물이 다른 사물에 포함되어 있는 관계
포함하는 쪽(전체, Whole)과 포함되는 쪽(부분, Part)은 서로 독립적이다.
포함되는 쪽(부분, Part)에서 포함하는 쪽(전체, Whole)으로 속이 빈 마름모를 연결하여 표현한다.

포함 (Composition) 관계

집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
포함하는 쪽(전체, Whole)과 포함되는 쪽(부분, Part)은 서로 독립될 수 없고, 생명주기를 함께한다.
포함되는 쪽(부분, Part)에서 포함하는 쪽(전체, Whole)으로 속이 채워진 마름모를 연결하여 표현한다.

일반화 (Generalization) 관계

하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
보다 일반적인 개념을 상위(부모), 보다 구체적인 개념을 하위(자식)라고 부른다.
구체적(하위)인 사물에서 일반적(상위)인 사물 쪽으로 속이 빈 화살표를 연결하여 표현한다.

의존 (Dependency) 관계

연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
하나의 사물과 다른 사물이 소유 관계는 아니지만, 사물의 변화가 다른 사물에도 영향을 미치는 관계
영향을 주는 사물(이용자)이 영향을 받는 사물(제공자) 쪽으로 점선 화살표를 연결하여 표현한다.

실체화 (Realization) 관계

사물이 할 수 있거나 해야하는 기능으로, 서로를 그룹화 할 수 있는 관계
사물에서 기능 쪽으로 속이 빈 점선 화살표를 연결하여 표현한다.

ref)