0% found this document useful (0 votes)
52 views26 pages

SE Module 2

Uploaded by

vaishnavit885
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views26 pages

SE Module 2

Uploaded by

vaishnavit885
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 26

Course Code: BCS501

Software Engineering and Project


Management
Module-02
Chapter:-1 - Understanding Requirements
Requirements Engineering
The Challenge of Building Software:
• Software development is engaging and creative but can lead to premature action without proper
understanding of requirements.
• Some developers argue that understanding evolves during the build, stakeholders understand better
with early iterations, and rapid changes make detailed requirements unnecessary.
• These arguments have elements of truth but can lead to project failure if not managed properly.
• A crucial software engineering action starting during the communication activity and continuing
into the modelling activity.
• It builds a bridge to design and construction, originating from stakeholders' needs or a broader
system definition.
Tasks of Requirements Engineering:
Inception:
• Establishes a basic understanding of the problem, stakeholders, desired solution, and preliminary
communication and collaboration.
• Projects usually begin from a business need or market opportunity.
• Stakeholders define the business case, market scope, feasibility, and project scope, initiating discussions
with the software engineering team.
Elicitation:
• Involves gathering requirements from customers/users, often encountering problems of scope,
understanding, and volatility.
• Challenges include ill-defined system boundaries, misunderstandings about needs, and evolving
requirements.
• An organized approach to requirements gathering is essential.
Elaboration:
• Refines and expands the information obtained during inception and elicitation, developing a detailed
requirements model.
• Focuses on developing a refined model that identifies software functions, behaviours, and
information.
• User scenarios are used to extract and define analysis classes and their attributes, services,
relationships, and collaborations.
Negotiation:
• Reconciles conflicts between different stakeholders’ requirements through prioritization, cost and risk
assessment, and iterative discussions.
• Resolves conflicts between different stakeholders' requirements through iterative prioritization and
compromise to achieve mutual satisfaction.
Specification:
• Documents requirements in various forms, such as written documents, graphical models, usage
scenarios, prototypes, or combinations thereof.
• Requirements can be documented in various forms, with flexibility depending on the project size and
complexity.
• Consistent presentation of requirements is beneficial for clarity.
Validation:
• Assesses the quality of requirements to ensure they are unambiguous, consistent, complete, and
conform to standards.
• Technical reviews are conducted to ensure requirements are clear, complete, and correct, involving a
review team of engineers, customers, users, and stakeholders.
Requirements Management:
• Tracks and controls changes to requirements throughout the project's life, similar to software
configuration management.
• Ongoing activity to manage changes to requirements throughout the project's lifecycle, involving
identification, control, and tracking of changes.
ESTABLISHING THE GROUNDWORK
There could be many issues to start Requirement Engineering Process:
• Customers or end users may be located in a different city/country.
• Customers do not have a clear idea of the requirements.
• Lack of technical knowledge or customers have limited time to interact with requirement engineer.
Hence by following the below steps we can start a requirement engineering process.
1. Identifying Stakeholders:
• Defined as anyone who benefits directly or indirectly from the system being developed.
• Common stakeholders include business managers, product managers, marketing, internal/external
customers, end users, consultants, product engineers, software engineers, and support/maintenance
engineers.
• Begin with an initial list of stakeholders and expand it by asking each stakeholder for additional
contacts.
2. Recognizing Multiple Viewpoints:
• Different stakeholders have different views and priorities for the system.
• Marketing focuses on marketable features, business managers on budget and timelines, end users
on usability, software engineers on technical infrastructure, and support engineers on
maintainability.
• Collect and categorize stakeholder information to address inconsistencies and conflicts in
requirements.
3. Working toward Collaboration:
• Collaboration involves stakeholders providing their viewpoints and working together to resolve
conflicts.
• A requirements engineer identifies commonalities and conflicts, facilitating decision-making.
• A strong project champion often makes final decisions on requirements.
4. Asking the First Questions:
Initial Questions (Context-Free):
- Who initiated the request?
- Who will use the solution?
- What are the economic benefits?
- Are there alternative solutions?

Follow-Up Questions (Problem & Solution Context):


- What defines good output?
- What problems does the solution address?
- Describe the business environment.
- Any special performance concerns?

Meta-Questions (Communication Effectiveness):


- Are you the right person to answer?
- Are your answers official?
- Are my questions relevant?
- Am I asking too many questions?
- Can someone else provide more info?
- Should I ask anything else?
5. Moving Beyond Initial Q&A:
• Initial Q&A sessions are effective for the first meeting but should transition to a more
dynamic format.
• This evolution involves:
- Problem-solving
- Negotiation
- Specification
• These elements contribute to more effective requirements elicitation.
Eliciting Requirement
1. Initial Meeting Preparation:
-Attendees: Include software engineers and stakeholders.
-Rules & Agenda: Set clear guidelines for preparation and participation.
Ensure the agenda covers key points but remains informal enough to encourage open idea exchange.
- Facilitator: Appoint a facilitator to manage the meeting.
- Definition Mechanism: Use tools like worksheets, flip charts, wall stickers, or electronic platforms (e.g.,
bulletin boards, chat rooms) to organize and present ideas.
2. Inception Phase:
- Initial Q&A Sessions: Establish the scope of the problem and gather initial perceptions of a solution.
- Preliminary Product Request: Create a document summarizing the project's goals and initial requirements.
- Distribution: Share the product request with all attendees before the meeting.
3. Requirements Gathering Meeting:
Before the Meeting:
- Attendees review the product request.
- Prepare lists of objects, services, constraints, and performance criteria.
During the Meeting:
- Present individual lists for each topic area.
- Combine lists, removing redundancies and adding new ideas.
- Discuss and refine to reach a consensus on objects, services, constraints, and performance criteria.
Post-Meeting:
- Develop mini-specifications for items needing further detail.
- Review and refine these with stakeholders, incorporating new requirements as needed.
- Maintain an issues list for unresolved topics.
QFD (Quality Function Deployment):
Translates customer needs into technical requirements to maximize customer satisfaction. It identifies
three types of requirements:
1. Normal Requirements:
- Explicit objectives and goals stated by the customer (e.g., specific system functions, performance
levels).
2. Expected Requirements:
- Basic, implicit features essential to the product (e.g., ease of use, reliability, simple installation).
Absence leads to dissatisfaction.
3. Exciting Requirements:
- Unexpected features that pleasantly surprise customers (e.g., innovative elements like multitouch
screens in smartphones).
Usage Scenarios:
Creating scenarios (or use cases) helps to understand how different user classes will use the system. These
scenarios describe the system's functions and features in practical use, aiding in the transition to technical
software engineering activities
Elicitation Work Products: The outputs of requirements elicitation vary by project size but typically include:
1. Statement of Need and Feasibility: Clarifies the project's necessity and practicality.
2. Bounded Statement of Scope: Defines the system or product's boundaries.
3. List of Participants: Documents the customers, users, and stakeholders involved.
4. Technical Environment Description: Details the system’s operational context.
5. Requirements List: Organized by function, including domain constraints for each requirement.
6. Usage Scenarios: Offer insights into system use under different conditions.
7. Prototypes: Created as needed to refine and better define requirements.
Each work product is reviewed by all participants to ensure accuracy and completeness.
Developing Use Cases: Alistair Cockburn defines a use case as a description of how the system behaves
in response to requests from stakeholders, serving as a contract between them and the system. It tells a
story of how an end user interacts with the system in specific scenarios.
1.Actors:
1. Definition: Entities that interact with the system, playing specific roles. These can be people or
devices.
2. Primary Actors: Directly interact with the system to achieve a goal.
3. Secondary Actors: Support the system so that primary actors can fulfill their roles.
4. Example: In a home security system, actors could include the homeowner, setup manager,
sensors, and monitoring subsystem.
2.Identifying Actors:
1. Not all actors are identified initially. Primary actors are identified early, while secondary actors
are added as the system understanding evolves.
3. Developing Use Cases:
•Key Questions:
•Who are the primary and secondary actors?
•What are the actors' goals?
•What preconditions should exist?
•What tasks or functions do the actors perform?
•What exceptions might occur?
•What variations in interactions are possible?
•What information does the actor acquire, produce, or change?
•How does the actor inform the system about changes?
•What information does the actor need from the system?
•Does the actor need to be alerted about unexpected changes?
4. Example Use Case: SafeHome System
•Actors:
•Homeowner
•Setup Manager
•Sensors
•Monitoring Subsystem
•Homeowner Interactions:
•Entering a password
•Checking the status of security zones and sensors
•Pressing the panic button
•Activating/deactivating the system
Basic Use Case: System Activation
• Homeowner checks if the system is ready via the control panel.
• Homeowner enters a four-digit password.
• Homeowner selects "stay" or "away" to activate the system.
• The system confirms activation with a visual indicator.
Detailed Use Case:
Initiate Monitoring
•Primary Actor: Homeowner
•Goal in Context: To set the system to monitor sensors.
•Preconditions: System must be programmed with a password and recognize sensors.
•Trigger: Homeowner decides to activate the system.
•Scenario:
 Homeowner observes the control panel.
 Homeowner enters the password.
 Homeowner selects "stay" or "away".
 Homeowner sees the alarm light indicating the system is armed.
•Exceptions:
 System Not Ready: Homeowner checks and closes all sensors.
 Incorrect Password: Homeowner re-enters the correct password.
 Password Not Recognized: Contact support to reprogram.
 "Stay" Selected: Only perimeter sensors are activated.
 "Away" Selected: All sensors are activated.
•Priority: Essential
•When Available: First increment
•Frequency of Use: Regular
•Channels to Actor: Via control panel
•Secondary Actors: Support technician, sensors
•Channels to Secondary Actors: Phone line, radio frequency interfaces
•Open Issues:
•Explore alternate activation methods (e.g., abbreviated password).
•Consider adding additional text messages on the control panel.
•Set a time limit for entering the password.
•Provide deactivation options before the system is fully activated.
• Use cases should be reviewed meticulously to ensure clarity and completeness.
• Ambiguities in the use case can indicate potential problems that need addressing.
Building the requirements model:
The Intent of the Analysis Model:
- Provides a comprehensive description of the informational, functional, and behavioral domains
needed for a computer-based system.
- Changes as more is learned about the system and stakeholders refine their needs.
- Serves as a current representation of requirements.
- Some elements may stabilize over time, creating a solid foundation for design tasks.
- Other elements may remain volatile, indicating areas where stakeholder understanding is still
developing.
Elements of the Requirements Model:
Various ways to represent requirements for a computer-based system offer different perspectives, helping
to identify omissions, inconsistencies, and ambiguities.
1. Scenario-Based Elements:
- Describe the system from the user's perspective, beginning with basic use cases and evolving into more
detailed template-based use cases.
- These scenarios serve as foundational input for developing other modeling elements.
2. Class-Based Elements:
- Each usage scenario suggests a set of objects that the actor interacts with, which are categorized into
classes—groups of items sharing similar attributes and behaviors.
- Class diagrams, like UML class diagrams, illustrate these classes and their relationships, highlighting
attributes and operations that can modify them.
3. Behavioral Elements:
- Critical to the design and implementation of a system.
- Use state diagrams to represent the system's states and events that trigger state changes.
- Diagrams also illustrate actions resulting from specific events.
- Behavioral modeling extends to individual classes, detailing their specific behaviors.
4. Flow-Oriented Elements:
- Model the transformation of information as it travels through the system.
- Illustrate input, transformations applied, and resulting output.
- Flow models can be created for any computer-based system, irrespective of size or complexity.
Analysis Patterns:
- Suggest reusable solutions (e.g., class, function, behavior) within the application domain for modeling
various applications.
- Benefits of Analysis Patterns (Geyer-Schulz and Hahsler):
 Accelerate the creation of abstract analysis models that capture key requirements by providing reusable
models, examples, and descriptions of advantages and limitations.
 Aid in transforming the analysis model into a design model by recommending design patterns and reliable
solutions for common issues.
- Analysis patterns are integrated into the analysis model by referencing the pattern name and stored in a
repository for access by requirements engineers.
NEGOTIATING REQUIREMENTS
- Develop a project plan that meets stakeholder needs while addressing real-world constraints (e.g., time,
resources, budget).
- Strive for a "win-win" outcome where stakeholders receive a satisfying system or product, and the software
team works within realistic budgets and deadlines.
- Negotiation Activities (Boehm):
 Identify key stakeholders of the system or subsystem.
 Determine the "win conditions" of stakeholders.
 Negotiate these win conditions to reconcile them into a set of mutually beneficial terms.
- Successful completion of these steps leads to a win-win result, which is crucial for moving forward with
subsequent software engineering activities.
Validating Requirements:
- Each element is checked for inconsistencies, omissions, and ambiguity.
- Requirements are prioritized by stakeholders and organized into packages for implementation as software increments.
- Review Questions:
 Is each requirement aligned with the overall system/product objectives?
 Are all requirements specified at the appropriate level of abstraction (i.e., not overly technical)?
 Is each requirement necessary, or does it represent a non-essential add-on feature?
 Does each requirement have attribution (noting the source or individual)?
 Do any requirements conflict with others?
 Are all requirements achievable within the intended technical environment?
 Is each requirement testable after implementation?
 Does the requirements model accurately reflect the system's information, function, and behavior?
 Have requirements patterns been utilized to simplify the model?
 Have all patterns been validated and ensured consistency with customer requirements?
- Addressing these questions ensures the requirements model accurately reflects stakeholder needs and provides a solid
foundation for design.

You might also like