Requirements Engineering
System requirements 문서를 생성하고 유지보수 하기 위한 과정으로 세 개의 sub-processes로 진행된다.
- Elicitation: 도출
- Validation: 검증
- Management: 관리
Requirements Elicitation
애플리케이션 도메인, 시스템이 무엇을 서비스 해야하는지, 시스템의 성능, 하드웨어의 제약사항 등을 찾아내는 과정이다.
- 이를 수행하기 위해 다양한 이해 관계자와 소통해야 한다.
- 이해 관계자/의뢰인은 개발자와 domain knowledge가 다르다는 것을 유념해야한다.
- 목적, 컴퓨터 솔류선을 요구하는 문제에 대한 기초적인 이해, 프로젝트의 맥락과 환경, 고객이 바라는 시스템의 영향력, 고객이 가진 동기와 기대치를 이해하는 것이 중요하다.
Elicitation Techniques
- Interviewing: Closed interviews(미리 준비한 질문), Open interviews(즉흥적인 질문)를 적절히 섞는다. 인터뷰는 의뢰인이 구체적으로 무엇을 원하는지 알 수 있는 좋은 방법이다. 인터뷰어는 오픈마인드를 가지고, 편견이 없어야하며, 경청해야한다.
- Scenarios: 실제 사례를 예시로 얻어내어 의뢰인이 원하는 소프트웨어 사용의 흐름을 읽기 좋다.
- Use-cases: 시나리오는 유스케이스로서 작성될 수 있는데, 이는 상호작용을 표현하기 좋지만, 고수준 비즈니스, 제약사항, 비기능적 요구사항을 도출하기 어렵다.
- Ethnography: 직접 현장에서 관찰하며 요구사항을 이해해보는 것이다. 하지만 세부적인 일은 알기 어려울 수 있다.
- Questionnaires: 설문조사를 하는 것인데, 응답률이 낮거나, 사람들이 응답을 건성으로 할 수도 있다. 그러므로 설문 문항을 잘 써야 한다.
- Appreticing: 직접 의뢰인이 하는 일에 참여하여 체험해보며 요구사항을 이해해 보는 것이다.
- Brainstorming: 프로젝트 관련된 개발자, 이해 관계자들이 모여서 브레인 스토밍하는 것이다. 옳고 그름을 결정 하려고 하는 자리가 아닌 만큼 다양한 아이디어를 끄집어 내기 위해 노력해야한다.
- Document Inspection: 이미 존재하는 유사 시스템에 대한 문서를 참고하는 것이다.
Requirements Validation
Requirement에 고객이 원하는 것이 잘 정의 되었는지 확인하는 과정이다.
- Validity checks: 유저가 원하는 프로그램인지?
- Consistency checks: 요구사항들끼리 일관성이 있는지?
- Completeness checks: 빠진 것은 없는지?
- Realism checks: 현실성 있는 요구사항인지?
- Verifiability: 테스팅 가능 한지?
- Requirements reviews
요구사항을 다시 체크
- Prototyping
작동하는 모델을 프로토타입으로하여 시스템이 잘 작동하지 확인
- Test-case generation
테스트케이스를 생성하고 그것을 통과/불통과하는지
Requirements Management
요구사항은 소프트웨어 개발 과정에서 언제든지 바뀔 수 있다.
Enduring requirements: 거의 잘 바뀌지 않는 요구사항
Volatile requirements: 개발 도중에 바뀔 수 있는 요구사항
Source traceability: requirement -> stakeholder, 누가 이 요구사항을 제안하였는지 알 수 있음
Requirements traceability: requirement <-> requirement, 요구사항 간의 종속성을 알 수 있음
Design traceability: requirement -> design, 요구사항에 대한 디자인이 무엇인지 알 수 있음
이는 Traceability matrix인데, D은 row에 있는 요구사항이 column에 있는 요구사항 의존한다는 것이고, R는 약한 연관관계가 있음을 의미한다.
'Computer Science > Software Engineering' 카테고리의 다른 글
[Software Engineering] UML(Unified Modeling Language) : Structural Diagram (0) | 2025.01.27 |
---|---|
[Software Engineering] System Models (0) | 2025.01.21 |
[Software Engineering] Software Requirements (0) | 2025.01.09 |
[Software Engineering] Feasibility Study (0) | 2025.01.06 |
[Software Engineering] Software Processes (2) | 2025.01.03 |