Requirements engineering
[Requirement]
- The descriptions of the services that a system should provide and the constraints on its operation.
[Requirement Engineering (RE)]
- The process of finding out, analyzing, documenting and checking these services and constraints.
(The first stage(The very first stage는 feasibility study) of the software engineering process)
User and system requirements
[Example of user and system requirements]
- MentCare: A medical system that maintains information about patients suffering from mental health problems and __their treatments.
Types of requirements
[Why are these 2 requirements necessary?]
- Different types of readers use the requirements in different ways.
[System stakeholders for MentCare]
- Any person or organization who is affeacted by the system in some way and who has a legitimate interest
- Patients: whose information is recorded in the system.
- Doctors: who are responsible for assessing and treating patients.
- Nurses: who coordinate the consultations with doctors.
- Receptionists: who manage patients' appointments.
- IT staff: who are responsible for installing the system.
Functional and non-functional requirements
[SW system requirements]
- Functional requirements
- Statements of services the system should provide. (e.g., input/output)
- Statements of what the system should not do.
- Non-functional requirements
- Constraints on the services offered by the system. (e.g., timing constraint)
- Constraints that apply to the entire system! rather than individual system features.
Functional requirements
[Functional requirements]
-
Describing what the system should do.
-
Varying from general requirements to very specific requirements.
-
Imprecision(부정확함) in the requirements
- Leading to disputes between customers and SW developers.
- Delaying system delivery and increases costs.
[(Ideal) functional requirements]
- Completeness in requirements
- All services required by the user should be defined.
- Consistency in requirements
- Requirements should not be contradictory.
-> In practice, it is impossible to achieve requirements consistency and completeness for large systems.
Non-functional requirements
[Non-functional requirements]
- Constrain characteristics of the system as a whole
- Response time, memory use, reliability, ...
- Non-functional requirements > individual functional requirements.
- Failing to meet the requirement mean that the whole system is unusable.
- Non-functional requirements arise through user needs.
- ex) budget constraints, organizational policies, safety regulations, privacy legislation.
[Types of non-functional requirements]
[Examples of non-functional requirements]
- Mentcare system
[Types of non-functional requirements]
[Problems in non-functional requirements]
- Stakeholders propose requirements as general goals.
- ex) case of use, rapid user response, ...
[Solutions in non-functional requirements]
- Writing non-functional requirements quantitatively(양적으로) for testing.
- Translating the customer's goals into measurable(측정 가능하도록) requirements.
Requirements engineering processes
[3 Key activites in requirements engineering]
- Elicitation and analysis
- Interacting with stakeholders.
- Specification
- Converting these requirements into a standard form.
- Validation
- Checking that the requirements define the system that customer wants.
In practice, RE is an iterative process in which the activities are interleaved.
[A spiral view of the requirements engineering process]
Start! -> Feasibility Study -> Requirement Engineering (Elicitation -> Specification -> Validation) -> ...
Requirements elicitation
[Goal]
- Understanding the work that stakeholders do and how they use a new system to help support that work.
[Problems]
- Stakeholders don't know what they really want from a SW system.
- Stakeholders express requirements in their own terms.
- Different stakeholders express their requirements in different ways.
- Political factors may influence the systme requirements.
- The requirements dynamically chagne during the analysis process.
[The requirements elicitation and analysis process]
-
-
Requirements discovery and understanding
- Interacting with stakeholders to discover their requirements.
-
Requirements classification and organization
- Grouping related requirements and organizaing them into cohorent clusters.
-
Requirements prioritization and negotiation
- Prioritizing requirements and resolving requirements conflicts.
-
Requirements documentation
- Documenting requirements. (e.g., early draft of SW requirement, whiteboard, wikis)
Requirements elicitation techniques
[2 fundamental approaches to requirements elicitation]
- Interviewing (= Talking to people about whay they do).
- Closed interviews, where the stakeholder answers predefined questions.
- Open interviews, in which there is no predefined agenda.
- Observation or Ethnography(만족지학)
- Watching people doing their job to see what artifacts they use, how the use them, and so on
[Eliciting domain knowledge throught intervies is difficult]
- Usage of domain specific terminologies.
- Difficulty for explaining some familiar domain knowledge.
- Omitting to mention fundamental knowledge to stakeholders.
Stories and scenarios
[Stories and scenarios]
- A description of how the system can be used for a particular task.
- Stories: narrative text for a high-level description of system use. (간단)
- Scenarios: specific information collected such as inputs and outputs. (더 구체적)
[The purpose of Stories]
- Facilitating(촉진) discussion of how the system might be used.
- Acting as a starting point for eliciting the requirements for that system.
[Scenarios]
Requirements specification
[Requirements specification]
[Notations for writing system requirements]
-
Natural language: 요구사항을 번호가 매겨진 자연어 문장으로 작성/ 각 문장은 하나의 요구사항을 나타냄
-
Structured natural language: 자연어로 작성하지만, 요구사항을 표준 양식 또는 템플릿에 따라 작성/ 각 필드 또는 섹션은 요구사항의 특정 측면에 대한 정보를 제공함
-
Graphical notations: 시스템의 기능 요구사항을 그래픽 모델과 함께 표현함/ 일반적으로 UML(Unified Modeling Language)의 사용 사례 및 순서 다이어그램과 같은 그래픽 요소와 텍스트 주석을 사용하여 요구사항을 정의
-
Mathematical specifications: 수학적 개념을 기반으로 요구사항을 정의함/ 유한 상태 기계 또는 집합과 같은 수학적 원리를 사용하여 요구사항을 형식적으로 정의하며, 명확성을 높일 수 있지만 일반적인 고객들이 형식적 명세를 이해하기 어려울 수 있음
Natural language specification
[Natural language]
- The most widely used way of specifying SW requirements.
- (+) expressive, intuitive, and universal
- (-) vague, ambiguous
[Guildlines for writing natural language requirements]
- Use language consistently to distinguish between mandatory and desirable requirements. (e.g., shall vs should)
- Use text highlighting to identify key parts of the requirement.
- Do not assume that readers understand technical SE language.
- Associate(연관짓다) a rationale(이론적 해석) with each user requirement. (e.g., why? who?)
Structured specifications
[Structured specifications]
- A way of writing system requirements where requirements are written in a standard way rather than as free-form text.
- A description of the function or entity being specified.
- A description of its inputs and outputs.
- The information needed for the computation.
- A description of the action to be taken.
- A precondition, post-condition.
- A description of the side effects (if any) of the operation.
[The tabular specification]
- Useful when there are a number of possible alternative situation.
- Useful when complex computations are to be specified.
Use cases
[Use cases]
- A way of describing interactions between users and a system.
사용자 시나리오 및 요구사항을 기술하는 방법 중 하나. Use cases는 시스템이 어떻게 사용될 것인지, 사용자가 시스템과 상호 작용하는 방식을 자세하게 설명함.
- Actor (human or other systems), Each class of interaction
The software requirements document (SRS - Software Requirements Specification)
[The software requirements document]
-
An official statement of what the system developers should implement. (The software requirements specification or SRS)
-
Including both the user and system requirements.
-
Having a diverse set of users.
- customers, managers, engineers, test engineers, ...
[Users of a requirements document]
- Showing possible users of the document and how they use it.
[The structure of a requirements document (SRS)]
-
Preface(서문)
- 문서의 목적과 예상 독자층, 버전 히스토리, 새 버전을 작성하는 이유, 각 버전의 요약 변경 사항 등을 설명
-
Introduction(소개)
- 시스템의 필요성, 시스템 기능, 문서의 목적을 소개
-
Glossary(용어집)
- 문서에서 사용되는 기술 용어와 정의를 제공/ 독자의 전문지식을 가정하지 않고 용어를 설명
-
User Requirements Definition(사용자 요구사항 정의)
- 사용자를 위한 서비스 및 기능을 설명/ 기능 이외의 비기능적 시스템 요구사항을 기술
-
System Architecture(시스템 아키텍처)
- 시스템의 높은 수준 아키텍처 개요을 제공/ 다양한 구성 요소와 시스템 모듈의 분배를 설명
-
System Requirements Specification(시스템 요구사항 명세)
- 기능 및 비기능적 요구사항을 더 자세하게 기술하고 요구사항 간의 관계를 정의
-
System Models(시스템 모델)
- 시스템을 그래픽 모델을 사용하여 설명/ 시스템 구성 및 상호 작용을 시각적으로 나타냄
-
System Evolution(시스템 진화)
- 시스템의 기본 가정과 미래 변화에 대한 정보를 제공/ 시스템 디자이너가 미래 변경을 고려하도록 도와줌
-
Appendices(부록)
-
Index(색인)
Requirements validation
[Requirements validation]
- The process of checking whether requirements define the system that the customer really wants.
- Critical process in a requirements document.
- The errors can lead to extensive rework costs when these problems are discovered after the system is in service.
[Requirements validation techniques]
- Requirements reviews
- Prototyping
- Test-case generation
[Different types of checks in requirements validation]
- Validity: The requirements reflect the real needs of system users.
- Consistency: Requirements in the document should not conflict.
- Completeness: Requirements define all functions and the constraints.
- Realism checks: Requirements can be implemented within the budget.
- Verifiability (testable): Requirements should always be written so that they are verifiable. (e.g., a set of test-cases)
Requirements change
[Requirements Change]
- The requirements for large software systems are always changing.
- Interfacing the system with other systems.
- New legislation and regulations may be introduced.
- People who pay for a system and the users of that system are not same.
[Issues for requirements management planning]
Summary