Professional Documents
Culture Documents
OOSAD Chapter5 (2024)
OOSAD Chapter5 (2024)
OOSAD Chapter5 (2024)
Identify the difference between User Stories and System User Stories
Enroll in <<include>>
Enroll in
Registrar
University Course
<<extend>>
Applicant
International Applicant
RCMP Security System
Here's how sequence diagrams can be used to transition from use cases to
classes:
1. Identify Use Case Scenarios: Begin by identifying the key scenarios or flows of events
described in the use cases. These scenarios represent the sequences of interactions
between actors and the system to achieve specific goals or tasks.
2. Identify Participating Objects: For each use case scenario, identify the objects or classes
that participate in the interaction. These objects represent the entities or components
within the system that collaborate to fulfill the use case requirements.
3. Map Use Case Steps to Sequence Diagram: Map the steps or actions described in the
use case scenario to sequence diagram elements, including lifelines (representing objects),
messages (representing interactions), and activation boxes (representing the time when
objects are actively processing messages).
Here's how sequence diagrams can be used to transition from use cases to
classes:
4. Identify Message Flows: Determine the sequence of messages exchanged between objects during
the execution of the use case scenario. Messages may represent method calls, signals, or events
triggering specific behaviors within the system.
5. Refine Object Interactions: Refine the interactions between objects based on the system's class
structure and relationships. Consider how objects collaborate to fulfill their responsibilities, invoke
methods on other objects, and exchange data to achieve the desired behavior.
6. Identify Collaborating Classes: Identify the classes corresponding to the participating objects in the
sequence diagram. These classes represent the structural elements of the system and encapsulate the
behaviors and attributes necessary to fulfill the use case requirements.
Here's how sequence diagrams can be used to transition from use cases to
classes:
7. Update Class Diagrams: Use the information gathered from the sequence diagrams to
update the system's class diagrams. Add or refine classes, associations, attributes, and
methods based on the identified interactions and collaborations between objects.
8. Ensure Consistency: Ensure consistency between sequence diagrams and class diagrams
by validating that the interactions depicted in the sequence diagrams align with the class
structure and relationships defined in the class diagrams.
9. Iterate and Refine: Iterate on the sequence diagrams and class diagrams as needed to
incorporate feedback, address design complexities, and refine the system's architecture.
Continuously refine the design based on evolving requirements and design decisions.
Here's how sequence diagrams can be used to transition from use cases to
classes:
10. Document and Communicate: Document the sequence diagrams and class diagrams to
communicate the system's behavior and structure to stakeholders, developers, and other
project team members. Use these diagrams as visual aids to facilitate discussions, clarify
requirements, and guide implementation efforts.
By leveraging sequence diagrams to transition from use cases to classes, software
development teams can effectively translate high-level user requirements into detailed
system designs, ensuring that the resulting software system meets the desired
functionality and quality standards.
A sequence diagram
You can build either a sequence diagram or
collaboration(communication) diagram from the use-case and classes
(CRC) identified before.
Each use cases in a use-case diagram has its corresponding sequence
or collaboration diagram
You model the diagrams from the main flow of events, or the
alternate flow of events, or the scenarios, of each use case
Every object that you have identified in the sequence or
collaboration diagram, MUST have its corresponding class in the
class diagram
A sequence diagram
A sequence diagram
Message Operation
The sender of the Parameters are
message must containers (or
provide a variables) filled
container for the by the values
return value. from the
message.
A sequence diagram
Sequence diagrams are commonly used during the analysis and design phases of software
development to visualize and validate the dynamic behavior of a system.
They help in understanding how objects collaborate to fulfill specific use cases or
scenarios, identifying potential issues such as message sequencing errors or deadlocks,
and communicating system behavior to stakeholders and developers.
When creating sequence diagrams, it's important to focus on capturing the essential
interactions and message flows without getting bogged down in unnecessary detail.
They should be clear, concise, and aligned with the system's requirements and design
objectives.
Activity Diagram
A use case is a flow of activity in words. If the flow is simple and linear, it can
be understood on its own.
If the flow is complex and iterative, words will not suffice.
In a model-driven development process, however, no one model has to
stand alone.
Where words fail us, an activity diagram can paint a clearer picture.
Activity diagram is the tool that UML provides for business process modeling.
Activity diagram is a flexible tool and its application is not limited to use
cases.
Activity Diagram
It can be attached to any dynamic model or to any operation whose flow needs
clarification.
The level of detail that an activity diagram reveals or hides is mostly up to us.
To keep the diagram clear, we can hide a set of activities in a placeholder and
expand it in another diagram if and when the need arises.
Make Appointment for example has one activity, labeled Find Patient, that the
use case assumed would be understood as a part of the process.
However, we have made it explicit in the activity diagram to clarify the decision
point that follows it:
Is the patient a new one or an old one?
5/14/2024 Prepared by Meseret Hailu(2024) 41
Activity Diagram
Activity Diagram
To keep it clear, we have avoided exposing the logic inside the activity. (We
may need an activity diagram for Find Patient at a later stage.)
In the same manner, the activity Create Patient hides an extending use case with
the same name, called from an alternate step in Make Appointment.
If the flow of a use case is too complex for one clear activity diagram, we may
use the technique of hiding a set of activities under a label and expanding it
in another diagram.
Activity Diagrams are the most popular form of dynamic modeling, and for a
good reason: They are the best in representing the complexities of logical flow
Activity Diagram
Before we do this, however, we should ask whether the flow is not too complex
by itself.
The activity diagram has few elements.
With a little care in what to show and the careful labeling of what is shown,
it can be an effective means of communication between development
stakeholders, technical or nontechnical alike.
Activity Diagram
Example of an
Activity
Diagram
The Logical Flow
of Make
Appointment
Summary
Activity diagramming is a modeling technique used in software engineering and
business process management to represent the flow of activities or actions within a
system or process.
It is part of the Unified Modeling Language (UML) and provides a graphical
representation of workflows, business processes, or use cases.
Here are some key points about activity diagramming:
1. Visual Representation: Activity diagrams use a set of standardized symbols and
notation to represent activities, decisions, transitions, and concurrency within a
system or process. These diagrams provide a visual representation that is easy to
understand and communicate among stakeholders.
summary
2. Activities and Actions: In an activity diagram, activities represent the units of work or actions that
are performed within the system or process. These activities are typically represented as rounded
rectangles. Actions, which are the specific steps or tasks within an activity, are depicted as
rectangles within the activity.
3. Control Flow: Activity diagrams show the flow of control between activities through directed
arrows or transitions. These transitions indicate the sequence in which activities are performed and
can include conditions, such as decision points (diamond shapes), which determine the path of
execution based on certain criteria.
4. Concurrency and Parallelism: Activity diagrams can depict concurrent activities, where multiple
actions occur simultaneously. Fork and join symbols are used to represent parallel execution paths,
allowing for the modeling of concurrent processes within a system.
Summary
5. Swimlane: Swimlanes are used to organize activities based on the roles or responsibilities of
different actors or system components. Each swimlane represents a distinct participant in the
process, and activities within the swimlane indicate the tasks performed by that participant.
6. Tool Support: Various software tools support the creation and manipulation of activity diagrams,
ranging from specialized UML modeling tools to general-purpose diagramming software.
Activity diagramming is valuable for documenting, analyzing, and designing complex systems
or processes, particularly in software development, business process reengineering, and workflow
management. By providing a visual representation of activities and their relationships, activity
diagrams aid in understanding system behavior, identifying potential bottlenecks or inefficiencies,
and facilitating communication among stakeholders.
EXERCISES
1. After reading this chapter carefully, read the narrative again and see if you can
discover additional use cases that you missed in Use Cases: The Basics.
2. Create a use case template for your course work project
3. Generalize your actors if necessary.
4. Identify “include” and “extend” use cases.
5. Generalize your use cases if necessary.
EXERCISES
6. Create a use case diagram complete with “include” and “extend” use cases.
7. Read and try to understand what Collaboration Diagram and State Chart
Diagram.
8. Draw sequence diagrams for your course work project
9. Try to draw Collaboration Diagram and State Chart Diagram for your
course project
Structural Diagrams
Unit Topics
➤ Structural modeling within the
context of a conceptual information
system.
➤ Classes as building blocks of
structural modeling and objects as
units of information systems.
➤ Basic object-oriented concepts in
the context of structural modeling.
➤ Discovering class candidates by
parsing use cases.
➤ Elaborating and defining classes by
specifying and expanding their
responsibilities
Structural Diagrams
Behavioral modeling is the starting point for modeling software, but any
system must rely on a structure that supports that behavior.
It emphasizes the dynamic behavior of the system by showing
collaborations among objects and changes to the internal states of
objects.
Structural modeling represents a view of the building blocks of a system
or an entity and their interrelationships within a given scope.
Structural modeling
Structural modeling can
have one of three aims:
1. Understanding an
existing structure.
2. Changing an existing
structure.
3. Building an entirely
new structure.
Structural Diagrams(Static )
This Diagram emphasizes the static structure of the system using objects,
attributes, operations, and relationships.
1. Class Diagram – set of classes and their relationships. Describes
interface to the class
2. Object Diagram – set of objects (class instances) and their relationships
3. Component Diagram – logical groupings of elements and their
relationships
4. Deployment Diagram - set of computational resources (nodes) that host
each component.
This unit explores how to arrive at classes, the basic building blocks of an
object-oriented information system, and their relationships
It also introduces the class diagram, the most widely used tool in modeling for
object-oriented development.
A class is:
1. An abstraction of objects.
2. A template for creating objects.
3. A building block of modeling.
Class Diagram:- describes the structure of a system by showing the system’s
classes, their attributes, and the relationships among the classes.
Classes are the building blocks of structural modeling and the blueprints for
objects; objects are the structural units of the actual information system
Structural Diagrams
1. Class Diagram
Class diagram shows a set of classes and their interrelationships. It describes
interface to the class.
A class diagram is the most important visual tool in our modeling toolbox.
All object-oriented development environments support it better than other
modeling tools:
In this example, the diagram shows that one student may attend one or more courses,
while the teacher may teach one course or more.
Structural Diagrams
1. Class Diagram
3. Class Diagram
4. Class Diagram
5. Class Diagram
Multiplicity
specifies how many
instances of one
class can associate
with instances of
another class.
6. Class Diagram
Aggregation and
Composition: How
Parts Relate to the
Whole
Class Diagram
Assignment
1. Identify the possible classes of your system in the course work project
2. Draw the corresponding class diagram clearly specify the association
and the multiplicity
3. If there is any aggregation or composition try to show in your project
class diagram
4. Tools and Techniques: Various tools and techniques are available for creating UI
prototypes, ranging from paper sketches and wireframes to interactive mockups and
clickable prototypes. Common tools include Adobe XD, Sketch, Figma, InVision, Axure
RP, and Balsamiq, among others.
Remaining agile
Remaining agile in software development involves embracing the core principles of the Agile
Manifesto while adapting to changing requirements, delivering value iteratively, and fostering
collaboration within the development team and with stakeholders. Here are some key strategies
for remaining agile:
1. Customer Collaboration over Contract Negotiation: Continuously engage with stakeholders,
end-users, and customers to gather feedback, validate assumptions, and ensure alignment with
their needs and expectations. Prioritize collaboration and communication to build trust and
transparency.
2. Responding to Change over Following a Plan: Embrace change as a natural part of the
development process. Be flexible and responsive to changing requirements, priorities, and
market conditions. Adapt plans, strategies, and deliverables iteratively to maximize value
delivery.
Remaining agile
3. Iterative and Incremental Development: Break down the project into small, manageable
increments or iterations. Deliver working software early and often, focusing on delivering high-
priority features and functionalities incrementally. Solicit feedback from stakeholders at the end
of each iteration to inform future development efforts.
4. Cross-Functional Teams: Foster collaboration and self-organization within cross-functional
teams composed of individuals with diverse skills and expertise. Encourage teamwork,
knowledge sharing, and collective ownership of project goals to maximize productivity and
innovation.
5. Continuous Integration and Delivery: Implement practices such as continuous integration,
continuous delivery, and automated testing to ensure that code changes are integrated frequently
and delivered to production environments rapidly and reliably. Streamline the development
process and minimize cycle times to accelerate value delivery.
Remaining agile
6. Adaptive Planning: Embrace adaptive planning techniques that allow for flexibility and
responsiveness to changing requirements and priorities. Use lightweight planning tools such as
user stories, Kanban boards, or Scrum backlogs to prioritize tasks and manage workloads
dynamically.
7. Regular Reflection and Improvement: Foster a culture of continuous improvement by
regularly reflecting on team processes, practices, and outcomes. Conduct retrospectives at the
end of each iteration to identify strengths, weaknesses, and opportunities for improvement.
Encourage experimentation and innovation to drive evolutionary change.
8. Empirical Process Control: Embrace empirical process control principles by making decisions
based on real-time data, feedback, and empirical evidence rather than relying solely on
predictions or assumptions. Use metrics, key performance indicators (KPIs), and feedback loops
to monitor progress, identify bottlenecks, and adapt strategies accordingly.
Remaining agile
9. Risk Management and Mitigation: Proactively identify and address risks throughout the
project lifecycle. Implement risk management techniques such as risk analysis, mitigation
planning, and risk tracking to minimize the impact of potential threats on project success.
Encourage open communication and collaboration to address issues and resolve conflicts
effectively.
10. Embracing Change as a Competitive Advantage: View change as an opportunity for
innovation, growth, and competitive advantage rather than a hindrance or disruption. Embrace a
mindset of continuous learning, adaptation, and resilience to thrive in dynamic and uncertain
environments.
By embracing these principles and practices, software development teams can remain agile,
responsive, and adaptable in the face of changing requirements, market dynamics, and
technological advancements, ultimately delivering value to customers more effectively and
efficiently.
5/14/2024 Prepared by Meseret Hailu(2024) 85
User stories
User stories
User stories are concise, informal descriptions of a software system's functionality from an end
user's perspective. They are a key component of Agile development methodologies, particularly
Scrum, and are used to capture user requirements and drive development efforts. Here's a
breakdown of user stories:
1. Format: User stories are typically written in the format: "As a [user role], I want to [perform
some action], so that [achieve some goal]". For example, "As a registered user, I want to be able
to reset my password, so that I can regain access to my account".
2. User Role: This identifies the type of user or persona who will benefit from the functionality
described in the user story. It helps to provide context and clarify who the intended user is.
3. Action: This describes the specific action or functionality that the user wants to perform within
the system. It should be written in clear and actionable language, focusing on what the user
wants to accomplish.
User stories
4. Goal: This explains the purpose or objective behind the user's action. It clarifies the benefit or
value that the user expects to derive from the functionality described in the user story.
5. Independence: Each user story should be independent and deliverable on its own. This allows
for prioritization and incremental delivery of value to users.
6. Negotiable: User stories are meant to be a starting point for conversations between stakeholders,
product owners, and development teams. They should be open to negotiation and refinement
based on feedback and evolving requirements.
7. Estimable: User stories should be small enough to be estimated and implemented within a single
iteration or sprint. They should not be too large or vague, making it difficult to estimate effort
accurately.
User stories
8. Testable: User stories should be testable, meaning that there should be clear criteria for
determining when the functionality described in the user story is complete and meets the user's
expectations.
9. Acceptance Criteria: This outlines the specific conditions or criteria that must be met for the
user story to be considered complete. Acceptance criteria provide a shared understanding of what
constitutes a successful implementation of the user story.
10. Prioritization: User stories are prioritized based on their value to users and the business. The
most valuable and essential user stories are typically prioritized higher and implemented first.
User stories serve as a lightweight, collaborative tool for capturing user requirements, fostering
communication and collaboration among stakeholders, and guiding the iterative development of
software systems in Agile environments. They help ensure that development efforts are focused
on delivering tangible value to users and stakeholders throughout the project lifecycle.
5/14/2024
Prepared by Meseret Hailu(2024) 90
System user stories
5/14/2024
Prepared by Meseret Hailu(2024) 91
System user stories
5/14/2024
Prepared by Meseret Hailu(2024) 92
Chapter Four: Requirement Gathering and Modeling