Software Engineering - Module 2
Software Engineering - Module 2
7. **Use Cases and User Stories**: Use cases and user stories are
narrative descriptions of system behavior from the perspective of
end-users. Use cases describe interactions between users and the
system to accomplish specific goals, while user stories capture user
requirements in a simple, user-centric format. Use cases and user
stories help identify functional requirements and define the scope of
the software system from the user's perspective.
1. **Functional Requirements**:
Functional requirements describe the specific behavior and
functionality that the software system must exhibit to satisfy user
needs and achieve its intended purpose. These requirements specify
what the system should do in terms of inputs, processes, and outputs.
Functional requirements typically address the following aspects of the
system:
2. **Non-Functional Requirements**:
Non-functional requirements, also known as quality attributes or
quality requirements, describe the qualities or characteristics that the
software system must possess in addition to its functional behavior.
These requirements specify how the system should perform in terms
of qualities such as performance, reliability, usability, security, and
scalability. Non-functional requirements typically address the following
aspects of the system:
● Detailed but not overly specific: Provides enough detail to understand the
decisions.
Diagram:
Here's a simplified diagram illustrating the role of the SRS in the software development
process:
organizations can lay the foundation for successful software development projects.
of stakeholders for the software product. This analysis forms the basis for designing,
Activities:
1. Requirement Elicitation:
requirements.
Example:
Imagine developing a mobile application for a food delivery service. Here's how the
1. Requirement Elicitation:
expectations.
improvements.
● Identify potential conflicts in user stories (e.g., ensuring user privacy while
3. Requirement Documentation:
Diagram:
Stakeholder Input
|
v
Requirement Elicitation (Interviews, Surveys,
etc.)
|
v
Requirement Analysis & Refinement (Prioritization,
Clarification)
|
v
Software Requirement Specification (SRS)
|
v
Software Design & Development
process.
● Enhanced communication and collaboration: Provides a shared
process.
teams can lay the groundwork for creating products that meet the needs of their users
and stakeholders.
Q) what is use case modeling? Design a use case model for ATM
system.
Use Case Modeling Explained
those interactions.
● Actors: Represent the entities (users, external systems) that interact with the
system.
specific goal.
● Effective test case development: Provides a basis for creating test cases that
● Improved system design: Guides the design and development of the system by
Actors:
● Customer
● Bank
Use Cases:
● Withdraw Cash:
○ Description: The customer withdraws cash from their account using the
ATM.
○ Scenarios:
● Check Balance:
○ Description: The customer checks their account balance using the ATM.
○ Scenarios:
● Deposit Cash:
○ Description: The customer deposits cash into their account using the
○ Scenarios:
This use case model provides a high-level overview of the main functionalities of an
ATM system from the customer's perspective. More detailed scenarios and alternative
flows can be developed for each use case to fully capture the system's behavior.
Note: This is a simplified example, and additional use cases, actors, and scenarios
might be needed depending on the specific functionalities and features of the ATM
system.
7. **Use Cases and User Stories**: Use cases and user stories are
narrative descriptions of system behavior from the perspective of
end-users. Use cases describe interactions between users and the
system to accomplish specific goals, while user stories capture user
requirements in a simple, user-centric format. Use cases and user
stories help identify functional requirements and define the scope of
the software system from the user's perspective.
These are just some of the ways and means for collecting software
requirements. The choice of method(s) depends on factors such as
project scope, stakeholder preferences, available resources, and
project constraints. A combination of multiple techniques is often used
to ensure comprehensive coverage and a holistic understanding of
stakeholder needs and requirements. Effective requirement gathering
lays the groundwork for successful software development by ensuring
that the resulting system meets user needs, expectations, and quality
standards.
1. **Software Engineering**:
- Software engineering is a broad discipline that encompasses the
entire process of designing, developing, testing, and maintaining
software systems.
- It emphasizes systematic approaches to software development,
focusing on principles, practices, and techniques for managing
complexity, ensuring quality, and meeting stakeholder needs.
- Software engineering encompasses various methodologies and
paradigms, including traditional approaches like waterfall, iterative,
and agile methods, as well as newer paradigms like DevOps and
continuous delivery.
- Software engineering addresses a wide range of concerns,
including requirements engineering, software architecture, design
patterns, testing, deployment, and maintenance.
- It emphasizes principles such as modularity, abstraction,
encapsulation, and separation of concerns to promote software
quality, maintainability, and scalability.
1. **Functional Requirements**:
- Describe the specific behavior and functionality that the software
system must exhibit to meet user needs and achieve its objectives.
- Examples include features, capabilities, and interactions with users
or external systems.
2. **Non-Functional Requirements**:
- Describe the qualities or characteristics that the software system
must possess in addition to its functional behavior.
- Examples include performance, reliability, usability, security,
scalability, and maintainability.
3. **Business Requirements**:
- Describe the high-level goals, objectives, and constraints of the
business or organization that the software system is intended to
support.
- Examples include business processes, workflows, regulations, and
compliance requirements.
4. **User Requirements**:
- Describe the needs, preferences, and expectations of the
end-users who will interact with the software system.
- Examples include user personas, use cases, user stories, and user
interface requirements.
5. **System Requirements**:
- Describe the requirements related to the software system as a
whole, including its architecture, interfaces, data storage, and
integration with other systems.
- Examples include system architecture, data requirements,
integration requirements, and performance metrics.
6. **Quality Requirements**:
- Describe the quality attributes or quality criteria that the software
system must meet to satisfy user needs and expectations.
- Examples include reliability, performance, usability, security, and
compliance with industry standards.
1. **Interviews**:
- Direct interaction with stakeholders to gather insights, preferences,
and concerns.
- Structured or unstructured interviews can be conducted depending
on the context and objectives.
5. **Prototyping**:
- Create simplified, interactive representations of the software
system to gather feedback from stakeholders.
- Rapid prototyping techniques enable iterative refinement based on
stakeholder input.
6. **Document Analysis**:
- Review existing documentation, such as business requirements
documents, user manuals, and technical specifications, to extract
relevant requirements.
- Identify key stakeholders, business processes, and system
constraints.
8. **Requirement Workshops**:
- Intensive, focused sessions involving stakeholders and
development team members to elicit, refine, and prioritize
requirements.
- Encourage collaboration, consensus-building, and shared
understanding among stakeholders.
9. **Card Sorting**:
- Organize and categorize requirements or features into meaningful
groups or themes based on stakeholder input.
- Identify common patterns, themes, and relationships among
requirements.
10. **Storyboarding**:
- Create visual representations or sequences of screens,
interactions, or workflows to illustrate user scenarios and
requirements.
- Helps stakeholders visualize the user experience and understand
how requirements fit together.
These are just some of the techniques used for eliciting requirements
in software development. The choice of technique(s) depends on
factors such as project scope, stakeholder preferences, available
resources, and project constraints. A combination of multiple
techniques is often used to ensure comprehensive coverage and a
holistic understanding of stakeholder needs and requirements.