Requirements Engineering
- Software requirement is a condition needed by a user to solve problem or achieve an objective
- should be clear, correct and well-defined
-
It is the process of defining, documenting and maintaining requirements in the design process
-
Types of Requirements
- Functional Requirements
- related to functional/working aspects of software
- Example -> Authentication, business rules, audit tracking, certification requirements, etc.
- Most common way of giving functional requirements is documenting as plain text
- Diagrams, use Cases, models prototypes, etc. are also formats of preparing functional requirements
- These are Mandatory! Important for system operation
- Describes What the product does
- Functional Testing is here -> API testing, system, integration, etc.
- Non-functional Requirements
- Are not related to the software's functional aspect./
- The expected characteristics of target software
- Examples, Security, Storage, Configuration, Performance, Cost, disaster recovery, Flexibility, Interoperability, Accessibility, etc.
- Two sub-types
- Execution Qualities
- observable at runtime -> Security and usability
- Evolution Qualities
- Statically Observable
- testability, maintainability, extensibility and scalability
- Execution Qualities
- These specify the quality attribute of the software
- Describes the working of the product
- Non-functional testing such as usability, performance, stress, security, etc.
- Not mandatory | Not important for system operation but may be desirable.
- Functional Requirements
-
Requirements: User vs System
-
Establishing Groundwork
- Identifying Stakeholders
- Any person who benefits directly or indirectly from the system being developed is a stakeholder.
- Recognising multiple viewpoints
- As information is gathered from multiple viewpoints, collecting requirements may be inconsistent
- Working Towards Collaboration
- n stakeholders may have n different opinions on the requirements
- Customers must work together with software development team to create a successful system
- Asking the first questions
- For identifying stakeholders
- Who is requesting the project?
- who will be using the solution?
- economic value of the solution?
- Understanding Problems and Solution
- to help gain a better understanding of problem and to allow the customer to express his or her thoughts on a solution
- For identifying stakeholders
Requirements Engineering¶
- The process of collecting the software requirements from the client and then understanding, analysis, and documenting it is called requirement engineering
- Requirement Engineering consists of seven different tasks:
- Inception -> asks a set of questions to establish software process
- Elicitation -> requirement gathering from stakeholders
- Possible problems of scope, understanding and volatility between customers and developers
- Elaboration
- Negotiation
- Specification
- Validation
- Management
Requirements Engineering Process¶
# Feasibility Study¶
- The goal is to decide whether to take the project or not
- Technical Feasibility: Evaluates the current technologies, which are needed to achieve customer requirements within the time and budget.
- Operational Feasibility: Required software solve business problems and customer requirements.
-
Economic Feasibility: It decides whether the necessary software can generate financial profits for an organization.
-
Requirement Elicitation & Analysis
- Techniques of Requirements Elicitation:
- Interviews
- Surveys
- Focus Groups
- Observation
- Prototyping
- Techniques of Requirements Elicitation:
- Software Requirements Specification(SRS) defines
- How the intended software will interact with hardware.
- External interface / GUI
- Speed of operation, Response time of system
- Portability of software across various platforms
- Maintainability
- Speed of recovery after crashing
- Security, Quality. Limitations etc.
- Software Requirement Validation
- the requirements discussed in SRS are validated or tested
- checked if they are practically implementable, correctness as per functionality and software, existence of ambiguity, any changing/additional requirement
- Software Requirement Management
-
- Tracking & Controlling Changes: Handling changing requirements from customers.
- Version Control: Keeping track of different versions of system.
- Traceability: Trace to software is design, develop or test as per requirements or not.
- Communication: If changing requirements has any issues contact with clients within time.
- Monitoring & Reporting: Monitoring development process & report the status.
-
SRS Template¶
![[SRS Template.png]]
-
Characteristics of a good SRS
- Correctness
- Completeness
- Consistency
- Unambiguous
- Ranking for importance and stability (For specific priority requirements)
- Modifiability
- Verifiability
- Traceability
- Design Independence
- Testability
- Understandable by the customer
- The right level of abstraction
-
A data model is an abstract view of the data referred to in the product being developed.
- Types of Data Model
- Conceptual Data Model -> front view of the of each data entity
- Logical Data Model -> etailed description of each data entity their attributes & relationships between entities
- Physical Data Model -> layout of the actual database with all its components
Data Modeling Techniques¶
- Object Oriented
- Entity Relationship -> System representation at very High level
- Network -> More advance than hierarchical | a child can have multiple parent nodes
- Relational ->
- Hierarchical -> single root node, tree like structure