공부해보잠
요구사항 정의 본문
요구사항의 개념 및 특징
요구사항의 개념
소프트웨어가 해결해야 할 문제와 제공해야 할 서비스, 그리고 시스템 운영에 필요한 제약조건 등을 기술한 설명입니다.
- 개발 대상 소프트웨어가 무엇을 해야 하는지와 어떤 제약사항을 충족해야 하는지를 정의.
요구사항의 특징
이해관계자 간 의사소통
- 요구사항은 소프트웨어 전반적인 내용을 확인할 수 있는 기준으로, 개발자, 고객, 사용자 등 이해관계자 간 의사소통을 원활하게 합니다.
기반 자료 제공
- 요구사항은 이후 설계, 구현, 테스트 등 소프트웨어 개발 과정의 모든 단계의 기반이 됩니다.
목표 및 계획 수립
- 정확하게 정의된 요구사항을 바탕으로 개발 목표와 계획을 체계적으로 수립할 수 있습니다.
품질에 직접적 영향
- 잘 정의된 요구사항은 소프트웨어의 품질, 유지보수성, 사용자 만족도에 큰 영향을 미칩니다.
요구사항의 유형
일반적으로 기술하는 내용에 따라 기능 요구사항(Functional Requirements)과 비기능 요구사항(Non-Functional Requirements)으로 구분하며, 기술 관점과 대상의 범위에 따라 시스템 요구사항(System Requirements)과 사용자 요구사항(User Requirements)으로 나뉩니다.
기능 요구사항 | 소프트웨어가 제공해야 하는 서비스나 기능에 대한 요구사항. | - 사용자는 회원가입 및 로그인을 할 수 있어야 한다. - 결제 시스템은 신용카드와 PayPal 결제를 지원해야 한다. |
비기능 요구사항 | 소프트웨어의 품질, 성능, 보안, 테스트 등과 같은 기능 외적인 특성 및 동작 환경에 대한 요구사항. | - 시스템은 초당 10,000건의 트랜잭션을 처리할 수 있어야 한다. - 사용자 데이터는 SHA-256으로 암호화되어야 한다. |
시스템 요구사항 | 시스템 전체의 성능, 하드웨어, 네트워크 환경 등 기술적 요구사항. | - 서버는 16GB RAM, 8코어 CPU를 갖추어야 한다. - 데이터베이스는 MySQL 8.0 이상을 사용해야 한다. |
사용자 요구사항 | 사용자 관점에서 시스템이 제공해야 하는 요구사항. | - 사용자는 직관적인 대시보드를 통해 실시간 데이터를 조회할 수 있어야 한다. - 모바일과 웹 환경에서 모두 사용 가능해야 한다. |
비기능 요구사항 세부 항목 및 부가설명
시스템 장비 구성 요구사항: 실행 환경을 위해 필요한 하드웨어와 네트워크 장비의 사양.
- 예: CPU, 메모리, 저장 장치, 네트워크 속도.
성능 요구사항: 처리 속도, 응답 시간, 처리량 등 시스템의 성능 측정 기준.
- 예: 1초 이내 응답 시간 보장.
인터페이스 요구사항: UI/UX 설계 및 시스템 간 데이터 전송 방식을 규정.
- 예: RESTful API 사용.
데이터 요구사항: 데이터의 저장, 백업, 복구, 삭제 정책.
- 예: 데이터는 매일 자정 자동 백업.
보안 요구사항: 암호화, 인증, 접근 제어를 통해 데이터와 시스템 보호.
- 예: 사용자 비밀번호는 SHA-256으로 암호화.
품질 요구사항: 시스템의 전반적인 품질 속성을 정의.
- 가용성: 시스템이 정상적으로 운영되는 비율.
- (예: 99.9% 가용성 보장).
- 정합성: 데이터가 일관되고 정확하게 유지되는 정도. (예: 데이터 동기화 정확도 100%).
- 상호호환성: 다른 시스템과 상호작용이 가능한 정도. (예: 외부 결제 API 연동).
- 대응성: 사용자 요구나 환경 변화에 대한 대응 속도. (예: 1일 내 기능 수정 반영).
- 신뢰성: 장애 발생 없이 안정적으로 운영되는 정도.(예: 시스템 장애율 0.01% 이하).
- 유지관리성: 시스템 유지보수 및 관리의 용이성. (예: 신규 개발자 1주일 내 적응 가능).
- 이식성: 다른 환경으로의 전환 용이성. (예: Linux와 Windows 모두 지원).
- 확장성: 증가하는 사용자나 데이터를 처리할 수 있는 능력.(예: 서버 확장 시 2배 성능 증가).
- 보안성: 데이터와 시스템의 보호 수준. (예: OWASP 보안 가이드라인 준수).
테스트 요구사항: 테스트 가능성과 관련된 정의.
- 예: 테스트 자동화 지원.
프로젝트 관리 요구사항: 일정, 비용, 인력 계획.
- 예: 6개월 내 개발 완료.
프로젝트 지원 요구사항: 운영 및 유지보수와 관련된 지원 계획.
- 예: 1년간 무상 유지보수 제공.
요구사항 개발 프로세스
개발 대상에 대한 요구사항을 체계적으로 도출하고 이를 분석한 후, 분석 결과를 명세서(Specification Document)에 정리한 다음, 이를 확인 및 검증하는 일련의 구조화된 활동입니다.
특징:
- 요구사항 개발 프로세스 시작 전, 타당성 조사(Feasibility Study)가 선행되어야 합니다.
- 타당성 조사는 비즈니스 목적 부합 여부, 예산 적정성 등을 검토한 보고서를 작성합니다.
- 요구사항 개발은 요구공학(Requirement Engineering)의 한 요소입니다.
요구사항 개발의 주요 단계
도출(Elicitation)
- 사용자 및 이해관계자로부터 요구사항을 수집.
- 주요 방법: 인터뷰, 설문조사, 워크숍 등.
분석(Analysis)
- 수집된 요구사항을 검토하여 중복, 충돌, 모호성을 해결.
- 우선순위를 부여하고 타당성을 검토.
명세(Specification)
- 정제된 요구사항을 문서화하여 명확하고 일관되게 표현.
- 결과물을 명세서(Specification Document)에 기록.
확인(Validation)
- 요구사항이 사용자 기대를 충족하며 오류가 없는지 검토 및 검증.
- 사용자와 최종 확인 작업을 수행.
요구공학(Requirement Engineering)
무엇을 개발해야 하는지 요구사항을 정의하고, 이를 분석, 명세, 검증 및 관리하는 프로세스를 연구하는 학문입니다.
목적:
요구사항의 변경 원인을 이해하고, 요구사항 관리 프로세스를 개선함으로써 소프트웨어 프로젝트 실패 가능성을 최소화합니다.
특징:
- 소프트웨어가 점점 복잡하고 대형화됨에 따라 사용자 요구사항도 복잡해지고 잦은 변경이 발생.
- 요구사항의 불명확하거나 잘못된 관리는 프로젝트 실패의 주요 원인 중 하나.
- 요구사항 관리의 품질을 개선하여 문제 발생 가능성을 최소화하고 프로젝트 성공률을 높임.
요약:
요구공학은 요구사항을 체계적으로 정의, 관리하며 소프트웨어 개발의 신뢰성과 품질을 향상시키는 데 중점을 둡니다.
.
요구사항 도출(Requirement Elicitation, 요구사항 수집)
시스템, 사용자, 및 관련된 이해관계자들 간의 의견을 교환하여 요구사항을 식별하고 이해하는 과정입니다. 소프트웨어가 해결해야 할 문제를 정의하는 첫 번째 단계입니다.
특징:
- 소프트웨어 개발 생명 주기(SDLC) 동안 반복적으로 이루어짐.
- 개발자와 고객 간 관계가 형성되고, 이해관계자(Stakeholder)가 식별됨.
- 다양한 이해관계자 간의 효율적인 의사소통이 성공적인 요구사항 도출의 핵심.
주요 기법:
- 청취와 인터뷰: 고객과의 대화를 통해 요구사항을 직접 수집.
- 설문: 대규모 사용자 그룹에게 표준화된 질문 제공.
- 브레인스토밍: 3인이상이 자유롭게 의견을 교환하며 다양한 아이디어를 창의적으로 도출.
- 워크샵: 이해관계자들과 집중 토론을 통해 요구사항 정의.
- 프로토타이핑: 시제품을 만들어 요구사항을 시각화하고 검증.
- 유스케이스: 사용자 관점에서 시스템 사용 시나리오를 정의.
요구사항 분석(Requirement Analysis)
개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정입니다.
특징:
- 사용자 요구사항의 타당성을 조사하고 비용과 일정에 대한 제약을 설정
- 내용이 중복되거나 하나로 통합되어야 하는 등 서로 상충되는 요구사항이 있으면 이를 중재하는 과정
- 도출된 요구사항들을 토대로 소프트웨어 범위를 파악
- 도출된 요구사항들을 토대로 소프트웨어와 주변 환경이 상호 작용하는 방법을 이해
- 요구사항 분석에는 자료흐름도(DFD), 자료사전(DD) 등의 도구가 사용된다.
부가설명 :
- 자료흐름도(DFD: Data Flow Diagram): 시스템 내에서 데이터가 흐르고 변환되는 과정을 시각적으로 표현하며, 데이터가 프로세스와 저장소 사이에서 어떻게 이동하는지 설명.
- 자료사전(DD: Data Dictionary): 자료흐름도에 사용된 데이터와 그 속성을 정의한 문서로, 데이터의 명확한 정의와 일관성 유지를 지원.
요구사항 명세(Requirement Specification)
특징 :
- 기능 요구사항: 빠짐없이 완전하고 명확하게 기술해야 함.
- 비기능 요구사항: 필요한 부분만 명확하게 기술해야 함.
- 요구사항은 사용자가 이해하기 쉬우며, 개발자가 효과적으로 설계할 수 있도록 작성되어야 함.
- 설계 과정에서 잘못된 부분이 발견될 경우, 그 내용을 요구사항 정의서에서 추적할 수 있어야 함.
- 구체적인 명세 작성을 위해 **소단위 명세서(Mini-Spec)**가 사용될 수 있음.
부가설명 :
- 소단위 명세서(Mini-Spec): 특정 기능이나 요구사항에 대해 상세하게 기술한 문서로, 설계와 구현 과정에서 참조 가능하도록 작성.
요구사항 확인(Requirement Validation, 요구사항 검증)
개발 자원을 요구사항에 할당하기 전에 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동입니다.
특징 :
- 분석가가 요구사항을 정확하게 이해하고 명세서를 작성했는지 검증(Validation) 필요.
- 요구사항이 실제 요구를 반영하는지, 서로 상충되는 요구사항은 없는지 점검.
- 개발 완료 후 문제가 발견되면 재작업 비용이 발생하므로 요구사항 검증은 매우 중요.
- 요구사항 명세서의 내용이 이해하기 쉬운지, 일관성 있는지, 회사 기준에 맞는지, 누락된 기능은 없는지 검토.
- 요구사항 문서는 이해관계자들이 검토하여 확인.
- 요구사항 검증은 문제를 사전에 발견하는 데 유용하지만, 모든 문제를 확인할 수는 없음.
- 요구사항 관리 도구를 이용하여 정의 문서들에 대해 형상 관리(Configuration Management) 수행.
부가설명 :
- 형상 관리(Configuration Management):
- 소프트웨어 개발 과정에서 생성되는 산출물(요구사항, 설계 문서, 소스 코드 등)의 변경 사항을 체계적으로 관리하는 활동.
- 변경 이력을 추적하고, 모든 개발 산출물이 최신 상태로 유지되도록 보장.
- 대표적인 형상 관리 도구: Git, SVN, ClearCase 등.
소프트웨어 요구사항 명세서 / 요구사항 명세 기법
소프트웨어 요구사항 명세서(SRS : Software Requriment Specification)
업계 표준 용어로 소프트웨어가 반드시 제공해야 하는 기능, 특징, 제약조건 등을 명시합니다.
특징:
- 시스템의 모든 동작뿐만 아니라 성능, 보안, 사용성 등과 같은 품질 요건도 기술되어야 함.
- 프로젝트의 유형에 맞게 양식을 만들어 사용.
- 시스템 기능, 데이터, 외부 인터페이스, 품질 요구사항 등을 개별 요구사항 명세서에 작성.
요구사항 명세 기법
요구사항 명세 기법은 정형 명세 기법과 비정형 명세 기법으로 나뉩니다.
구분 | 정형 명세 기법 | 비정형 명세 기법 |
기반 | 수학적 원리 기반, 모델 기반 | 상태/기능/객체 중심 |
작성 방법 | 수학적 기호와 정형화된 표기법 사용 | 자연어, 도형, 다이어그램 등을 활용 |
특징 | - 요구사항을 정확하고 간결하게 표현 - 요구사항 간 일관성 검증 가능 - 추상적이고 사용자 이해도가 낮음 |
- 자연어와 시각적 표현을 사용해 의사소통 용이 - 작성 결과에 일관성이 떨어질 수 있음 - 해석이 달라질 가능성 |
장점 | - 수학적 기반으로 정확성과 검증 가능 - 복잡한 시스템의 논리적 표현에 적합 |
- 사용자와의 소통이 쉽고 요구사항의 빠른 이해 가능 - 시각적 도구를 활용하여 직관적 표현 가능 |
단점 | - 높은 기술적 요구와 학습 곡선 - 사용자 및 이해관계자가 이해하기 어려움 |
- 요구사항 간 모호성과 중복 발생 가능 - 검증 과정에서 오류 발견 어려움 |
종류 | VDM, Z, Petri-net, CSP 등 | FSM(Finite State Machine), Decision Table, ER 모델링, State Chart(SADT) 등 |
출저 및 참고
정보처리 산업기사 기본서(시나공)
'자격증 > 정보처리' 카테고리의 다른 글
요구사항 분석 CASE와 HIPO (0) | 2025.01.27 |
---|---|
요구사항 분석 (0) | 2025.01.27 |
XP(eXterme Programming)기법 (0) | 2025.01.26 |
스크럼(Scrum) 기법 (0) | 2025.01.26 |
소프트웨어 개발 방법론 (0) | 2025.01.26 |