안녕하세요, 마상 입었다가(면접 광탈 ㄷㄷ ㅠㅠ) 돌아온
Dorothy 입니다. 오늘은 기본중의 기본이지만 반드시 알아야 할 것에 대해서 공부해 볼게요. 프로젝트 시작단계에서 꼭 체크해야 하는 필수 요소!!
바로 소프트웨어 개발 요구사항 명세서 작성방법 에 대하여 알아보도록 하겠습니다. 개발과정에서 꼭 필요한 단계인데, 명시화해서 모두에게 전달한다는 것과 고객의 니즈를 파악하는 동시에 업무담당자들도 목표를 파악할수 있다는 점에서 꼭 필요한 과정이죠. 흔히들 놓치기 쉽고, 형식적으로 작성하는 경우가 많아요. 하지만 프로젝트의 성공적인 수행을 하기 위해서는 기본이 중요하겠죠? 마치 건축을 할 때 주춧돌이나 대들보가 중요한 것처럼요. 사설이 길었네요. 자, 그러면 시작합니다!
[1] SRS의 필요성과 작성 요소
소프트웨어 개발 요구사항 명세서(Software Requirements Specification, SRS)는 소프트웨어 프로젝트의 성공적인 수행을 위해 필수적입니다. 요구사항 명세서는 소프트웨어가 해결해야 할 문제, 기능, 성능, 제약 조건 등을 명확히 문서화하여 개발팀, 고객, 이해관계자 모두가 같은 방향을 이해하도록 돕는 역할을 합니다. 아래는 SRS 작성 방법에 대한 가이드입니다.
1. 목표와 범위 정의
- 목표: 소프트웨어 개발의 목적을 간략히 설명하고, 소프트웨어가 해결하고자 하는 문제를 정의합니다.
- 범위: 개발할 소프트웨어의 범위를 명확히 하고, 프로젝트의 목표와 맞지 않는 부분(제외 범위)도 함께 명시합니다.
2. 관련자와 이해관계자
- 소프트웨어에 영향을 미치는 모든 관련자와 이해관계자를 나열합니다.
- 각 이해관자의 요구 사항을 명확히 기록하고, 그들과의 커뮤니케이션 계획도 포함할 수 있습니다.
3. 시스템 개요
- 소프트웨어 시스템의 전반적인 구조와 기능을 설명합니다. 일반적으로는 시스템 다이어그램, 흐름도, 그리고 아키텍처 개요를 포함합니다.
- 이 섹션은 소프트웨어가 어떻게 동작할지, 어떤 요소로 구성될지에 대한 큰 그림을 제공해야 합니다.
4. 기능 요구사항
- 기능 목록: 소프트웨어가 제공해야 할 주요 기능을 하나씩 나열합니다.
- 각 기능에 대한 설명: 기능이 어떻게 동작할지, 입력과 출력은 무엇인지, 그 기능이 어떻게 시스템과 상호작용하는지에 대해 설명합니다.
- 사용자 시나리오: 사용자들이 소프트웨어를 사용하는 주요 시나리오를 기술하고, 각 기능이 어떻게 사용될지 명확히 설명합니다.
5. 비기능 요구사항
- 성능 요구사항: 처리 속도, 응답 시간, 메모리 사용량 등과 같은 시스템 성능에 대한 요구 사항을 기술합니다.
- 확장성: 시스템이 확장 가능한 방식, 향후 추가적인 기능이나 트래픽 증가에 어떻게 대응할지 설명합니다.
- 보안: 인증, 권한 부여, 데이터 보호, 암호화 등 보안 관련 요구 사항을 명시합니다.
- 호환성: 다른 시스템, 플랫폼 또는 소프트웨어와의 호환성 요구사항을 설명합니다.
- 가용성 및 신뢰성: 시스템이 얼마나 자주 사용할 수 있어야 하며, 장애 발생 시 어떻게 복구될지에 대한 요구 사항을 다룹니다.
6. 시스템 인터페이스
- 사용자 인터페이스 (UI): 사용자 인터페이스에 대한 요구 사항을 포함합니다. UI의 레이아웃, 디자인, 사용성 등에 대한 설명이 포함될 수 있습니다.
- 외부 시스템 인터페이스: 소프트웨어가 외부 시스템과 통신해야 할 경우, 그 인터페이스에 대한 요구사항을 정의합니다. 예를 들어 API나 데이터 교환 형식을 설명합니다.
7. 데이터 요구사항
- 데이터 모델: 시스템에서 사용할 데이터 구조, 데이터베이스 설계, 데이터 저장 방식 등을 기술합니다.
- 데이터 흐름: 소프트웨어 내에서 데이터가 어떻게 이동하고, 처리되는지 설명합니다.
- 데이터 무결성: 데이터의 정확성, 일관성, 보안, 백업 및 복구 방안 등을 포함합니다.
8. 제약 조건
- 개발에 적용되는 법적, 규제적, 기술적 제약 조건들을 설명합니다. 예를 들어, 특정 언어 또는 프레임워크 사용의 제한 사항, 규제 요구사항, 하드웨어 제약 조건 등이 포함될 수 있습니다.
9. 사용자 및 관리자 요구사항
- 사용자 요구사항: 일반 사용자, 관리자, 그리고 다른 역할에 따른 요구 사항을 나열합니다.
- 교육 및 훈련: 시스템 사용을 위한 사용자 교육, 문서, 훈련 등이 필요한 경우 이를 명시합니다.
10. 검증 및 테스트 계획
- 소프트웨어 요구 사항이 제대로 구현되었는지를 검증할 방법을 정의합니다.
- 각 요구 사항에 대해 어떻게 테스트할지, 성능이나 보안 테스트에 대한 계획을 기술합니다.
11. 프로젝트 관리
- 일정: 개발 일정 및 마일스톤을 정의합니다.
- 자원: 프로젝트에 필요한 인력, 하드웨어, 소프트웨어 자원을 나열합니다.
- 위험 관리: 예상되는 리스크와 그에 대한 대응 방안을 포함합니다.
12. 유지보수 요구사항
- 소프트웨어 출시 이후의 유지보수 계획을 설명합니다. 버전 관리, 수정 사항 반영 방법 등을 포함합니다.
[2] SRS 작성 시 유의사항
- 명확하고 구체적이어야 함: 모호한 표현을 피하고 구체적이고 측정 가능한 목표를 명시해야 합니다.
- 일관성 유지: 요구사항 간의 충돌이 없어야 하며, 모든 관련 문서와의 일관성을 유지해야 합니다.
- 수정 가능성: 소프트웨어가 개발됨에 따라 요구사항은 변경될 수 있기 때문에, 요구사항 명세서는 쉽게 수정 가능해야 합니다.
- 이해관계자의 검토: 작성된 요구사항은 모든 이해관계자가 검토할 수 있도록 하고, 피드백을 받아 지속적으로 업데이트합니다.
이러한 방법을 따르면, 소프트웨어 개발 요구사항 명세서를 효과적으로 작성할 수 있을 것입니다.
참 쉽죵~? (안 쉬움 ㅠㅠ)
많은 예제를 통한 연습이 필요한 영역인듯합니다.
이상입니다!!
'8. ETC' 카테고리의 다른 글
[Network] HTTP(하이퍼텍스트 전송 프로토콜)의 각 버전 (0) | 2024.10.03 |
---|---|
[SRS] 요구사항 정의서 & 요구사항 명세서 작성법 (2) | 2024.09.30 |
[Git] 머지(merge)와 리베이스(rebase) (66) | 2024.08.20 |