Software Engineering
Software Engineering
In the context of software development, there are • Modular and reusable: Objects can be
two orthogonal views: the traditional approach encapsulated into classes, and these
and the object-oriented approach. These views classes can be easily reused in different
represent different perspectives on how software parts of the system or in other projects.
is developed and organized. • Iterative and incremental: The
development process is iterative, with
1. Traditional Approach: The traditional
each iteration building upon the previous
approach to software development focuses
one. It allows for flexibility and
on functions or procedures. It considers
adaptability to changes during
software as a collection of procedures or
development.
functions that manipulate isolated data.
• Reduced complexity and redundancy: By
The main characteristics of the traditional
organizing software around objects, the
approach include:
object-oriented approach aims to reduce
• Emphasis on functions: The primary focus complexity and eliminate redundant code
is on breaking down the system into or functionality.
smaller functions or procedures that
SOFTWARE PROCESS
perform specific tasks.
• Sequential process: The development A software process refers to a set of activities
process follows a sequential order, moving that are followed to create a software product. It
from one phase to another (e.g., provides a structured approach to software
requirements gathering, design, development and helps ensure that the resulting
implementation, testing) in a linear product is of high quality. There are different
fashion. types of software processes, but they all involve
• Increased complexity: As the project four fundamental activities :-
progresses, the complexity of managing
and maintaining the software system tends 1. Software specification: This involves
to increase. defining the functionality and constraints
• Longer duration: Due to the sequential of the software. It is important to clearly
nature of the process and potential understand what the software needs to do
complexities, the duration of the project and how it should operate.
may be longer. 2. Software design and implementation: In
2. Object-Oriented Approach: The object- this activity, the software is designed and
oriented approach to software then implemented based on the
development centers on objects, which are specifications. It involves creating the
combinations of data and functionality. It actual code and programming the
focuses on organizing software around software.
objects, classes, and modules that can be 3. Software validation: The software is tested
easily replaced, modified, and reused. The to ensure that it meets the requirements
key characteristics of the object-oriented and functions as expected. This step is
approach include: crucial to identify any issues or bugs in
• Emphasis on objects: The primary focus is the software and ensure its correctness.
on identifying and modeling real-world 4. Software evolution: Over time, software
objects and their interactions within the needs may change or new features may
software system. be required. This activity involves making
updates and modifications to the software systems if there are any, to find out what the
to meet changing customer needs. system needs to do. They try to understand what
problems the system should solve. Once they
These activities may have sub-activities and
have a good understanding of the problems, they
supporting process activities such as requirements
create a document called a "requirements
validation, documentation, and software
specification" that describes what the system
configuration management.
should do. This document is like a contract
In addition to activities, software processes may between the clients and the developers.
also include other elements such as products (the
In simple terms, requirement elicitation is like
outcomes of activities), roles (responsibilities of
when you and your friends want to build a cool
people involved), and pre- and post-conditions
toy, and you sit together to decide what the toy
(statements that are true before and after an
should be able to do. You talk about what
activity).
problems the toy should solve and what features
Software processes can be categorized as either it should have. Then, you write down all the
plan-driven or agile processes. Plan-driven things the toy needs to do in a special document
processes involve planning all activities in that everyone agrees on. That way, everyone
advance and measuring progress against the plan. knows what the toy will be like and what it
Agile processes, on the other hand, involve should be able to do.
incremental planning and are more adaptable to
When we talk about requirements specification
changing customer requirements. The choice
and analysis model, we are basically talking
between these approaches depends on the type of
about two different ways of describing and
software being developed.
understanding a computer system that we want to
In simpler terms, a software process is a roadmap create.
that guides the development of software. It
The requirements specification is like a document
includes steps like understanding what the
that uses normal words and sentences to explain
software should do, designing and building it,
what the system should do. It helps us talk and
testing it to make sure it works correctly, and
understand the system better with the people who
adapting it over time as needs change. The
want it, like the clients and the users. It's like
process provides stability, control, and
when you write a story or a description of
organization to ensure the production of quality
something using your own words.
software. It can be planned in advance or
adapted incrementally based on the project's On the other hand, the analysis model is a
needs. different way of representing the system. It uses
special symbols and diagrams to show how
CHAPTER TWO
different parts of the system fit together and how
REQUIREMENT ELICITATION they work. It's like drawing a picture or making
a map of the system using special signs and
Requirement elicitation is a process in software
shapes.
engineering where people who want to create a
computer system work together to figure out The important thing to know is that both the
what the system should do. The people who want requirements specification and the analysis model
the system (we call them clients) and the people are trying to show the same information about
who will build the system (we call them the system, but they use different languages and
developers) talk and discuss to understand the ways of expressing it. The requirements
purpose of the system. specification is more like a conversation, while
the analysis model is like a picture or a map.
During requirement elicitation, clients and
They are both helpful for different purposes. The
developers talk to each other and look at existing
requirements specification helps us talk to the So, actors are the different characters or things
people who want the system, while the analysis that interact with the system, and use cases are
model helps the developers understand and the fun and exciting things they can do together.
communicate with each other.
TYPES OR REQUIREMENTS
So, imagine you and your friends are planning a
When we talk about requirements for a computer
big event. You can write a list of things you
system, we have different types of requirements
want to happen in the event using words and
that help us understand what the system needs to
sentences. That's like the requirements
do.
specification. And then, you can also draw a map
or a diagram to show how different parts of the Functional requirements are like rules or
event will be organized, like where the stage will instructions that describe how the system should
be, where the food will be, and where the games interact with the things around it, like people,
will be. That's like the analysis model. Both the other devices, or the environment. They are
list and the map help you and your friends independent of how the system will be made or
understand and plan the event, but they use what its purpose is. For example, a functional
different ways of explaining things. requirement could be that a game operator
should be able to create a new game. It's like
When we're trying to understand a computer
saying that the person who runs the game should
system, we need to know who will use it and
have the ability to make a new game.
what they will do with it. We use two important
things to help us describe the system: actors and Nonfunctional requirements are about things that
use cases. are not directly related to how the system works
or what it does, but are still important for how
Actors are like the different people, machines, or
well the system performs. They are about aspects
things that interact with the system. They can be
like speed, reliability, or user experience. For
the people who will use the system, other
example, a nonfunctional requirement could be
computers that the system needs to talk to, or
that the system should respond within 1 second.
even the environment where the system will be
It's like saying that the system needs to react
used. It's like the different characters or players
quickly when someone interacts with it.
in a game.
Constraints or system requirements are
Use cases are like stories or scenarios that show
specifications or rules that are imposed by the
how these actors and the system will interact
client or the environment. These are specific
with each other. They describe the different
things that the system must have or follow in
actions or steps that can happen between an
order to work with certain hardware or software.
actor and the system for a specific part of the
For example, a constraint could be that the
system's functionality. It's like playing out
system must be built using the Java programming
different situations or adventures in a game.
language. It's like a special requirement that the
For example, imagine you have a game console, client or the environment wants the system to
and you want to know who will play with it and meet.
what they can do. The players who will use the
So, think of it like baking a cake. Functional
game console are the actors. They can be you,
requirements are like the instructions that tell
your friends, or even other devices like a
you how to mix the ingredients and put them in
controller or a special sensor. The use cases are
the oven. Nonfunctional requirements are like the
like the different game levels or challenges you
things you want the cake to be, like moist,
can play. Each use case describes what the player
delicious, and not too crumbly. Constraints or
and the game console will do together, like
system requirements are like special rules you
jumping, shooting, or solving puzzles.
have to follow, like using a specific type of oven or function to make them clear and
or a certain brand of chocolate. specific.
In summary, functional requirements tell us how 2. Be complete and accurate: Make sure each
the system should interact with its surroundings, requirement is fully described and
nonfunctional requirements focus on things like includes all the necessary details.
speed and reliability, and constraints or system
3. Include technical requirements: Consider
requirements are special rules or specifications
any technical specifications or constraints
that need to be followed.
that need to be met.
FUNCTIONAL REQUIREMENTS
4. Align with objectives and principles: Link
Functional requirements are like instructions that the requirements to the overall goals and
describe what a software system should do. They principles of successful software delivery.
explain how the system should interact with its
5. Document critical constraints: If there are
surroundings and what tasks it should perform.
any known limitations or restrictions that
Here are some important points about functional
significantly affect a requirement, they
requirements:
should be clearly mentioned.
1. Operations on screens: The requirements
Here are some examples of functional
should mention what actions can be
requirements:
performed on each screen of the software.
• The software should automatically validate
2. Data handling: The requirements should
customer information in the ABC Contact
explain how the system will manage and
Management System.
process data.
• The Sales system should allow users to
3. System reports and outputs: The record customers' sales.
requirements should describe the different • Only managerial-level employees should
types of reports or outputs that the have the right to view revenue data.
system should generate. • The software system should be integrated
with a banking API.
4. Workflows: The requirements should
• The system should allow users to edit
provide information about the different
their profile.
steps or processes that the system will
follow. When writing requirements, it's important to
avoid using confusing terms or phrases such as
5. User permissions: The requirements should
"support," "but not limited to," "etc.," and
specify who is allowed to create, modify,
"and/or." These terms can make the requirements
or delete data in the system.
unclear or ambiguous.
6. Regulatory and compliance needs: The
NON FUNCTIONAL REQUIREMENTS
requirements should include any
requirements related to following rules or Nonfunctional requirements are like special rules
regulations. or qualities that a software system should have,
but they are not about what the system actually
To create a good functional requirements
does. They focus on different aspects of the
document, it's important to follow some best
system that make it better or more enjoyable to
practices:
use. Here are some important points about
1. Keep requirements separate: Each nonfunctional requirements :-
requirement should focus on a single task
1. Not directly related to function:
Nonfunctional requirements are about
things other than what the system does. performance, security, and more. They help
They are about how the system performs ensure that the system is not only functional but
or how it feels to use. also enjoyable and reliable to use.
• Performance: These requirements deal Usability requirements also include things like
with how fast and responsive the system how much help is available to the user while
is. For example, the system should they're using the system. This can include online
respond quickly within a certain time guides or manuals that explain how to use the
limit. system or how to do certain tasks.
• Security: These requirements ensure that So, imagine you have a new gadget or a game
the system protects information and console. Usability is about how easy it is for you
prevents unauthorized access. For to figure out how to use it without getting
example, the system should require a confused. The usability requirements might say
strong password for user authentication. that the buttons should be labeled clearly, the
menus should have pictures or icons to help you
• Reliability: These requirements are about
understand them, and there should be a user
how reliable and stable the system is. For
manual or online help available to answer your
example, the system should be able to
questions.
handle a large number of users without
crashing. In simpler terms, usability is about how user-
friendly something is and usability requirements
• Scalability: These requirements address the
are the rules that make sure things are easy to
system's ability to handle an increasing
understand and use.
number of users or data. For example, the
system should be able to support more 2) RELIABILITY
users as the business grows.
Reliability is about how well a system or a part
• Compatibility: These requirements ensure of it can do its job consistently and without any
that the system works well with different problems. It's like how trustworthy and
devices or software. For example, the dependable something is.
system should be compatible with various
Reliability requirements are the rules or
web browsers.
conditions that ensure the system works reliably.
So, nonfunctional requirements are like special They include things like how often the system
qualities or rules that make the system better. should have problems or fail, and how well it
They cover different aspects like usability, can handle certain faults or security attacks.
These requirements help make sure the system input or a command. It's like how fast the system
can be trusted to perform its functions when can start doing what you ask it to do.
needed.
Throughput is about how much work or tasks the
Sometimes, the term "dependability" is used system can handle and complete within a specific
instead of reliability. Dependability means that amount of time. It's like how many things the
you can rely on the system to provide the service system can do in a given period.
it's supposed to deliver. It includes not just
Availability is about how often the system is
reliability, but also other qualities like robustness
operational and accessible for use. It's like how
and safety.
frequently the system is ready and working when
Robustness is about how well the system can you need it.
handle difficult or challenging situations. For
Accuracy is about how precise and correct the
example, it's about how well a video game can
system's output or results are. It's like how well
continue running even if there are some errors or
the system can give you the right answers or
if the environment conditions are not perfect.
information.
Safety is about making sure the system doesn't
So, let's imagine you have a computer game.
cause any harmful or catastrophic consequences
Performance requirements are about how fast the
to the surroundings. It's like how a car should be
game reacts when you press a button or make a
designed to be safe and not cause accidents or
move. The response time requirement might say
harm people.
that the game should respond within a certain
So, imagine you have a computer or a number of milliseconds after you press a button.
smartphone. Reliability is about how often it
Throughput is about how many actions or tasks
works without crashing or having errors.
the game can handle at the same time. The
Reliability requirements might say that the system
throughput requirement might say that the game
should not fail more than a certain number of
should be able to process a certain number of
times within a specific period. Dependability is
moves or actions per second.
about being able to trust that the computer or
smartphone will work when you need it. It Availability is about how often the game is
includes not just reliability, but also how well it working and accessible. The availability
can handle difficult situations and how safe it is requirement might say that the game should be
to use. available to play at least 99% of the time,
meaning it can only be down or unavailable for a
In simpler terms, reliability is about how
very small percentage of the time.
trustworthy and consistent a system is, and
reliability requirements are the rules that make Accuracy is about how well the game provides
sure the system works well. Dependability accurate results or scores. The accuracy
includes reliability, robustness, and safety, and requirement might say that the game's scoring
it's about being able to rely on the system to do system should be precise and give the correct
its job effectively. points for each action or achievement.
1. Identifying Actors: We figure out the So, imagine you and your friends are planning a
different people, machines, or things that board game. The requirements elicitation
will interact with the system. They are activities would involve figuring out who will
called actors. For example, in a shopping play the game (actors), thinking about different
app, actors could be the customers, the situations during the game (scenarios), describing
sellers, and the payment gateway. what each player will do (use cases), making the
use cases more detailed, understanding how
2. Identifying Scenarios: We think about
players and tasks are connected, and considering
different situations or scenarios where the
any additional requirements like the game's speed
system will be used. We consider what
or safety.
the actors will do and how they will
interact with the system. For example, a In simpler terms, requirements elicitation
scenario could be a customer searching activities are about understanding a problem and
for a product and making a purchase. creating a description of what the computer
system needs to do. We use different techniques,
3. Identifying Use Cases: Use cases are like
like identifying actors, scenarios, and use cases,
stories or descriptions of what the system
to map out the requirements. It's like making a
will do in each scenario. They represent
plan for how the system will work and what it
specific tasks or functions that the actors
will be able to do.
and the system will perform together. For
example, a use case could be "Customer IDENTIFYING ACTORS
places an order."
In the process of requirements elicitation, one of
4. Refining Use Cases: We take the initial the key steps is identifying the actors. Actors are
use cases and make them more detailed the different types of users and external systems
and specific. We add more information that interact with the computer system being
about the steps, inputs, and outputs developed. By understanding these actors, we can
involved in each use case. This helps us better determine the specific functionality and
understand exactly what needs to happen tasks that the system needs to support. This
in the system. involves asking questions about user groups, their
main functions, secondary functions, and any
5. Identifying Relationships Among Actors
external systems the system needs to interact
and Use Cases: We look at how the actors
with. Once the actors are identified, the next step
and use cases are connected or related to
is to define the functionality accessible to each
each other. This helps us understand the
actor through scenarios and use cases. This helps
flow of interactions in the system. For
create a clear understanding of how the system
example, a customer actor may be related
will be used and what it needs to accomplish for
to multiple use cases like searching,
different users and external entities.
adding items to the cart, and making
payments. Identifying actors involves figuring out the
different types of users and external systems that
6. Identifying Nonfunctional Requirements:
will interact with the computer system we're
Apart from the specific tasks, we also
building. We ask questions like:
consider other requirements like how fast
the system should respond, how secure it 1. Which user groups will use the system for
needs to be, or how easy it should be to their work?
use. These are called nonfunctional 2. Which user groups will perform the main
functions of the system?
3. Which user groups will have secondary In simpler terms, identifying scenarios involves
functions like maintenance and creating detailed descriptions of specific situations
administration? or tasks that users will encounter when using the
4. Are there any external hardware or system. Developers observe users to understand
software systems that the system needs to their needs and then write scenarios that help
interact with? them better understand how the system should
function in real-life situations. These scenarios
By answering these questions, developers can
provide a clear picture of what the system needs
understand the various users that the system will
to do from the user's point of view.
support. Once the actors are identified, the next
step is to determine what each actor should be To identify scenarios, we can ask the following
able to do in the system. This is done by using questions :-
scenarios, which are like stories that describe
1. What tasks does the user want the system
specific situations, and formalizing them into use
to do? This helps us understand the
cases, which are detailed descriptions of tasks or
specific actions or functions the user
functions.
expects from the system.
In simpler terms, identifying actors means
2. What information does the user need to
figuring out the different types of users and
access? We explore what kind of data the
external systems that will be involved with the
user wants to see and interact with. We
computer system. We ask questions to understand
also determine who creates this data and
who will use the system and what they will do.
if it can be changed or removed, and by
This helps us determine the specific tasks or
whom.
functions that each user should be able to
perform. 3. Are there any external changes that the
user needs to inform the system about?
IDENTIFYING SCENARIOS
We consider if there are any updates or
In the process of requirements elicitation, another events outside the system that the user
important activity is identifying scenarios. needs to communicate to the system, and
Scenarios are detailed descriptions of specific how frequently this should be done.
situations or tasks that users will encounter when
4. Which events does the system need to
using the computer system or application. They
inform the user about, and how quickly
provide a narrative of what people do and
should this information be delivered? We
experience as they interact with the system.
determine if there are any important
During this activity, developers closely observe updates or notifications that the system
users and create a set of scenarios that outline needs to provide to the user, and how
the typical functionality the future system should fast this should happen.
provide. These scenarios serve as a means for
In simpler terms, when identifying scenarios, we
developers to communicate with users and gain a
ask questions to understand what tasks the user
deeper understanding of the application domain,
wants the system to do and what information
or the specific area or context in which the
they need. We also consider any external changes
system will be used.
or events that the user or the system should be
A scenario is a focused and informal description aware of. By answering these questions, we can
that highlights a single feature or task of the create detailed descriptions of specific situations
system, as seen from the perspective of a single or tasks that users will encounter when using the
user or actor. It provides a concrete example of system, providing a better understanding of how
how the system will be used and what actions or the system should function in different scenarios.
interactions are expected.
IDENTIFYING USE CASES distinguish the interactions between the
user and the system.
A scenario is like a specific example or situation
that shows how a particular function or task in 4. Use active voice for step descriptions: Use
the system can be used. It's like a real-life story case steps should be written in the active
that describes what happens step by step when voice to explicitly state who is
someone interacts with the system. accomplishing each step. This makes it
clear and easy to understand.
A use case, on the other hand, is like a
collection of all possible scenarios related to a 5. Clearly show the causal relationship
specific function or task. It's like a summary of between steps: The relationship between
different situations that can occur when using each step should be clear, showing the
that particular function or task in the system. cause and effect or the logical flow
between them.
When developers and users agree on a set of
scenarios, developers can create use cases based 6. Describe a complete user transaction: A
on those scenarios. The use cases help us use case should describe a complete
understand the overall scope or coverage of the sequence of interactions between the user
system and provide a complete flow of events and the system to achieve a specific goal
that happen when the use case is initiated or or task.
started.
7. Document exceptions separately: Any
In simpler terms, a scenario is an example that exceptional or error situations should be
shows how a specific function or task works in described separately from the main flow
the system. A use case is a summary that of events.
includes all the possible scenarios related to that
8. Avoid describing the user interface: A use
function or task. Use cases help us understand
case should focus on the user's actions
how different interactions and events flow
and the system's responses, rather than
through the system when using that function or
specific details of the user interface
task.
design.
SIMPLE USE CASE WRITING GUIDE
9. Keep use cases concise: Use cases should
When creating use cases, there are certain not be too long. Ideally, they should be
guidelines to follow: limited to two or three pages. If a use
case becomes lengthy, it can be
1. Use a verb phrase to name the use case:
decomposed into smaller use cases using
The name of the use case should indicate
relationships like "include" and "extend".
what the user is trying to accomplish. It
should be clear and descriptive. In simpler terms, when creating use cases, we
give them names that describe what the user
2. Name actors with noun phrases: Actors,
wants to accomplish. Actors are named based on
which are the users or external systems,
their roles. We clearly define which steps are
should be named using nouns that
done by the user and which are done by the
describe their roles or responsibilities in
system. Use case steps are described in a way
the system.
that shows who is doing each action. The
3. Clearly define the system boundary: It relationship between steps should be clear, and
should be clear which steps are performed the use case should describe a complete user
by the user (actor) and which steps are transaction. Any exceptions or errors are
performed by the system. This helps described separately. The focus should be on the
user's actions and the system's responses, not the
specific user interface. Use cases should be kept on how the system should perform, how it should
concise and, if needed, can be divided into be documented, the resources it should consume,
smaller parts. its security measures, and its overall quality.
REFINING USE CASES Let's break it down in simpler terms and go into
more detail:
Refining use cases is an activity where developers
add more details to the use cases to make sure 1. Performance: This refers to how well the
the requirements specification is complete. They system should perform in terms of speed,
describe each use case more thoroughly and responsiveness, and efficiency. It includes
consider how the system should behave in the requirements like response time (how
presence of errors or exceptional conditions. quickly the system should react),
throughput (how much work the system
In simpler terms, refining use cases means
can handle), and availability (how often
developers take the existing use cases and provide
the system should be accessible).
more information about them. They make sure all
the necessary details are included and think 2. Documentation: This involves requirements
about how the system should handle errors or related to providing clear and
unusual situations. This helps ensure that the comprehensive documentation for the
requirements for the system are fully described system. It ensures that users and
and well-defined developers have access to detailed
instructions, user manuals, guides, or any
IDENTIFYING RELATIONSHIPS AMONG USE
other necessary documentation.
CASES
3. Resources: These requirements focus on
Identifying relationships among use cases is an
how the system should utilize resources
activity where developers determine how different
such as memory, processing power,
use cases are related to each other. They look for
network bandwidth, or storage space. It
dependencies or connections between use cases
may include limitations or specifications
and consolidate the use case model by extracting
on resource usage to ensure the system
common functionalities. This ensures that the
operates efficiently.
requirements specification is consistent and well-
organized. 4. Security: This refers to requirements
related to protecting the system and its
In simpler terms, identifying relationships among
data from unauthorized access, breaches,
use cases means that developers look at how
or malicious activities. It involves
different tasks or functions in the system are
measures like user authentication, data
connected. They find out which use cases rely on
encryption, access control, and adherence
or depend on other use cases to be completed.
to relevant security standards.
They also identify common functionalities that are
shared by multiple use cases and separate them 5. Quality, Reliability, and Supportability:
to avoid repetition. This helps ensure that the These requirements encompass various
requirements for the system are clear, coherent, aspects related to the overall quality,
and don't have any conflicts or contradictions reliability, and supportability of the
system. It includes factors like robustness
IDENTIFYING NON-FUNCTIONAL REQUIREMENTS
(how well the system handles errors or
Identifying nonfunctional requirements is an unexpected situations), maintainability
activity where developers, users, and clients come (how easily the system can be maintained
together to agree on certain aspects of the system or modified), and support options
that are not directly related to its functionality. (availability of technical support or help
These aspects include constraints or specifications desk services).
6. Interface: This involves requirements contradict itself. There should be no
concerning the user interface and how it conflicting or contradictory statements
should look, feel, and function. It includes within the document. It ensures that all
aspects like usability (how user-friendly requirements align and work together to
and intuitive the interface should be) and achieve the desired system behavior.
accessibility (ensuring the interface is
3. Clarity: Clarity refers to the unambiguous
usable for individuals with disabilities).
and clear expression of requirements.
7. Legal and Compliance: These requirements Each requirement should have only one
address legal and regulatory obligations interpretation and should be easily
that the system must adhere to. It may understandable by all stakeholders.
include data privacy regulations, industry- Ambiguous terms, words with multiple
specific standards, intellectual property meanings, should be avoided to prevent
rights, or any other legal considerations confusion and misunderstandings.
relevant to the system's domain.
4. Correctness: Correctness means that the
In summary, identifying nonfunctional requirements accurately represent the
requirements is about defining specifications system that the client needs and that the
beyond the system's functionality. It includes developers intend to build. The
aspects such as performance, documentation, requirements should describe the desired
resource usage, security, quality, interface, and features and behavior of the system and
legal compliance. These requirements ensure that its environment of interest, without
the system not only performs its tasks but also including unintended or unnecessary
meets certain standards of performance, usability, features.
security, and compliance with relevant
5. Ambiguous terms: Ambiguous terms are
regulations.
words that can be interpreted in different
REQUIREMENT VALIDATION (COMPLETENESS , ways and can lead to misunderstandings.
CONSISTENCY , CLARITY AND CORRECTNESS ) Examples of such terms include
"minimize," "maximize," "rapid," "easy,"
Requirement validation is an important step in
"sufficient," "adequate," and "quick." To
the development process where the client, users,
ensure clarity, it's important to provide
and developers continuously check and confirm
clear definitions or explanations for such
that the requirements specification is complete,
terms.
consistent, clear, and correct. It ensures that
everyone involved has a shared understanding of Requirement validation is crucial because it helps
what the system needs to do. ensure that everyone is on the same page and
that the requirements accurately capture what the
Let's break it down in simpler terms and provide
system should do. It prevents misunderstandings,
more detail:
inconsistencies, and misinterpretations that could
1. Completeness: The requirements lead to costly errors during development.
specification is considered complete if it
In summary, requirement validation is about
includes all possible scenarios and aspects
checking that the requirements specification is
of the system. It means that all the
complete, consistent, clear, and correct. It
different situations and behaviors the
confirms that all necessary scenarios and
system may encounter are described,
behaviors are described, there are no
including exceptional cases.
contradictions, the requirements are unambiguous,
2. Consistency: Consistency means that the and they accurately represent the desired system.
requirements specification does not This validation process is essential for successful
development and ensuring that the system meets 6. Use Case Approach: The use case
the client's needs and expectations. approach involves identifying actors,
scenarios, and use cases to describe the
interactions and functionality of the
REQUIREMENT-ELICITATION METHODS/ system. It helps in understanding user
TECHNIQUES requirements and specifying system
behavior.
During the process of requirements elicitation,
various methods can be used to gather The success of an elicitation technique depends
information and extract requirements from on factors such as the experience and skills of the
stakeholders. Here are some commonly used analysts, developers, users, and customers
methods: involved. The maturity of these individuals
influences their ability to effectively
1. Interviews: Interviews involve direct
communicate, understand needs, and extract
conversations between the analysts and
requirements using the chosen elicitation
stakeholders to gather information and
technique.
understand their perspectives. It allows for
in-depth discussions, clarifications, and In summary, requirements elicitation can involve
exploration of requirements. various methods such as interviews, document
analysis, brainstorming, FAST, QFD, and the use
2. Document analysis: This method involves
case approach. Each method offers a unique way
studying existing documents such as user
of gathering information and extracting
manuals, business processes, and technical
requirements from stakeholders. The effectiveness
specifications to extract relevant
of these methods depends on the skills and
information and requirements. It helps in
experience of the individuals involved in the
understanding the current system and its
process.
documentation.
1) INTERVIEWS
3. Brainstorming-sessions: Brainstorming
involves bringing together a group of The objective of conducting an interview is to
stakeholders to generate ideas, understand what the customer expects from the
suggestions, and requirements software. Since it's not possible to interview every
collaboratively. It encourages creative person involved, representatives from different
thinking, open discussion, and the groups are selected based on their knowledge and
exploration of different perspectives. credibility.
Brainstorming sessions are group activities where After creating their lists, the participants combine
people come together to generate a lot of new them and eliminate any duplicate entries. The
ideas and share their viewpoints. The main goal team then splits into smaller sub-teams, each
is to encourage creative thinking and gather a focusing on developing detailed specifications for
wide range of perspectives. different items from the consolidated list. By
working collaboratively, the sub-teams create
In these sessions, it's important to have a skilled
mini-specifications that capture the requirements
facilitator who can manage any biases or conflicts
for each item.
that may arise within the group. The facilitator
ensures that everyone's ideas are heard and Finally, all the inputs from the meeting, including
valued. the consolidated list and the sub-teams' mini-
specifications, are used to draft a comprehensive
During the brainstorming session, all ideas are
set of specifications for the system. This approach
documented so that everyone can see them. This
helps ensure that the expectations of both
helps in keeping track of all the suggestions and
ensures that no idea is overlooked.
developers and customers are considered and 2. List out all requirements from the
included in the requirements specification. customer: Gather all the things that the
customer wants the software to do.
In summary, FAST is a method that involves
collaborative teamwork to gather and define 3. Assign importance to each requirement:
requirements. Participants create lists of Give a value or rating to show how
environmental factors, system outputs, and system important each requirement is.
inputs. These lists are consolidated, and sub-
4. Categorize the final list of requirements:
teams develop detailed specifications for different
At the end, classify each requirement into
items. The outputs from the meeting are then
one of the following categories:
used to create a comprehensive set of
specifications for the system. • Possible to achieve: These are
requirements that can be
5) QUALITY FUNCTION DEPLOYMENT
implemented.
In this technique, the main focus is on making • Should be deferred and the reason
the customer happy, so it emphasizes for it: Some requirements may
requirements that are valuable to the customer. need to be postponed for later due
There are three types of requirements identified: to certain reasons.
• Impossible to achieve and should
1. Normal requirements: These are the basic
be dropped off: Some requirements
objectives and goals of the proposed
may not be possible to fulfill, so
software that are discussed with the
they should be removed from the
customer. For example, for a result
list.
management system, normal requirements
could include entering marks and In simpler terms, this technique focuses on
calculating results. making the customer happy by considering their
important requirements. There are three types of
2. Expected requirements: These
requirements: normal, expected, and exciting. The
requirements are so obvious that the
steps involve identifying stakeholders, listing
customer doesn't need to explicitly
customer requirements, assigning importance to
mention them. An example would be
each requirement, and categorizing them as
protecting the software from unauthorized
achievable, deferred, or impossible to achieve.
access.
6) USE CASE APPROACH
3. Exciting requirements: These are features
that go beyond the customer's This technique combines words and pictures to
expectations and provide great satisfaction help us understand the requirements better. A
when they are present. For instance, if scenario is an example of how a specific function
unauthorized access is detected, the or task is carried out in the system.
system should automatically create a
Use cases describe the "what" of a system, not
backup and shut down all processes.
the "how." They provide a functional view of the
Here are the major steps involved in this system by describing the interactions between
procedure: actors (external agents like people or machines)
and the system. Use cases show who does what
1. Identify all the stakeholders: This means
with the system. A complete set of use cases
listing out all the people involved in the
covers all the possible ways the system can be
project, such as users, developers, and
used.
customers.
The use case design has three main components:
1. Actors: Actors are the external agents that own set of advantages and disadvantages , some
interact with the system. They can be of the most common SDLC models include :-
people, machines, or other entities. Actors
➢ Waterfall model
are represented as stick figures. There are
➢ Agile model
two types of actors: primary actors, who
➢ spiral model
need assistance from the system to ➢ v-model
achieve their goals, and secondary actors, ➢ incremental model
who provide assistance to the system. ➢ iterative model
2) Design :- In this phase , the software ✔ It gives easy to control and clarity for the
architecture and design are created based on the customer due to a strict reporting system.
requirements gathered in the previous phase.
Disadvantages of waterfall model
3) Implementation :- This phase involves the
actual coding of the software based on the design
✔ In this model , the risk factor is higher ,
created in the previous phase.
so this model is not suitable for more
significant and complex projects
4) Testing :- In this phase , the software is tested
to ensure it meets the requirements and is free of
✔ This model can no accept the changes in
errors or bugs.
requirements during development.
5) Deployment :- Once the software has been
✔ It becomes tough to go back to the phase
tested and approved , it Is deployed to the
, for example , if the application has now
production environment.
shifted to the coding phase , and there is
a change in requirement , it becomes
6) Maintenance :- This phase involves ongoing
though to go back and change it.
maintenance and support of the software
including bug fixes , updates and enhancements.
✔ Since the testing done at a larger stage ,
it does not allow identifying the
When to use SDLC Waterfall model ? challenges and risks in the earlier phase ,
and there is a change in requirement , it
Some circumstances where the used of the becomes tough to go back and change it.
waterfall model is most suited are :-
✔ Since the testing done at a larger stage ,
➔ When the requirements are constant and it does not allow identifying the
not changed regularly challenges and risks in the earlier phase ,
➔ A project is short so the risk reduction strategy is difficult
➔ The situation is calm to prepare.
➔ When the software application is large
Iterative Model
➔ When there is a requirement of changes
in future.
The iterative model is a software development
model where software is developed in small
Advantages (PROS) of iterative model :-
chunks or iterations , each of which includes all
the phases of the software development life
➔ Testing and debugging during smaller
cycle , such as planning , design ,
iteration is easy
implementation and testing. In contrast to the
waterfall model , which is linear and sequential ,
➔ A parallel development can plan
the iterative model is cyclical and allows for
feedback and adjustments throughout the
➔ It is easily acceptable to ever changing
development process. Each iteration results in a
needs of the project
working software product that can be tested and
evaluated providing valuable insights that can
➔ Risks are identified and resolved during
inform the next iteration , this approach is often
iteration
used in Agile development methodologies.
When to use the iterative model ? The incremental model is beneficial for large
projects where it is difficult to predict all the
➔ When requirements are defined clearly requirements at the beginning of the development
and easy to understand process. It allows for flexibility in adapting to
changing requirements or needs and for
continuous feedback and improvement throughout
the development process.
Compared to other software development The Spiral model also allows for incremental
methodologies, the Spiral model is more flexible releases of the software, which means that the
and adaptable, because it allows for changes and team can release parts of the software as they're
adjustments to be made throughout the completed, instead of waiting until the entire
development process. It also places a greater project is finished. This helps to keep the
emphasis on risk management, which can help to customer informed of the progress of the project,
prevent problems and delays later on. and allows them to provide feedback and make
adjustments along the way.
Overall, the Spiral model is a flexible and
adaptable approach to software development that
emphasizes risk management and continuous Let’s Define them in simpler terms
improvement. It's a good choice for complex and
Imagine you want to bake a delicious cake, but
high-risk projects, where it's important to have a
you're not sure how it should turn out. The spiral
structured and systematic approach while also
model is like trying different recipes and making
allowing for flexibility and adaptation.
the cake better each time.
UML DIAGRAMS
➔ Class diagrams
➔ Sequence diagrams
Secondly , the communication between the actors The include relationship is represented by a
and the use case must be defined in dashed arrow pointing from the base use case to
understandable way. This helps to ensure that the the included use case , with the label «include»
diagram accurately represents the interactions on the arrow. The base use case should reference
between the different components of the system. the included use case in its description and the
included use case should not reference the base
Thirdly , specified notations should be used as use case.
and when required. This helps to ensure that the
diagram follows a standard conventions and ways Extend :- The extend relationship in use case
for others to understand. diagrams is used to indicate optional behavior
that can be added to a base use case. The
Finally , the use cases should be enclosed with in optional behavior is represented by an “extension
a rectangle called the system boundary box , point” in the base use case. The extend use case
which indicates the scope of the system. All the is optional and not mandatory.
use cases inside the rectangle represent the
functionality that we intend to implement and For example , consider a use case “order
anything outside the rectangle is considered out Product” which involves selecting a product and
of scope for the system. addition it to the cart , and checking out.
However , the system may have an additional
By following these rules , the use case diagram feature where the user can apply a discount code
can be created in a structured and effective way , during check out. This is additional behavior can
ensuring that it accurately represents the system’s be represented as an extension of the “Order
functionality and is easy to understand for all Product” use case.
stake holders.
In this case , we would draw an “extend”
<< Include >> and << Extend >> relationship from the “Order product” use case
called “Apply Discounted code”. The “extend”
In UML use case diagrams , include and extend relationship is shown with a dashed arrow
are two relationships between use cases that pointing from the base use case to the extending
describe how they are related to each other. use case. The extension point in the base use
case would be labeled “Apply Discount Code”.
Include :- An include relationship is used when
one use case includes the functionality of another During the execution of the base use case , the
use case. It represents a common behavior that is system checks whether any extending use cases
reused in several use cases. The including use are applicable based on the extension point. If an
case adds additional behavior to the included use extension is applicable , it is executed in the
case. The included use case is mandatory and not addition to the base use case. If no extensions
optional. are applicable , the base use case is executed as
normal.
In the include relationship , one use case (called
the “base” use case) includes functionality of CLASS DIAGRAMS
another use case (called the “included” use case).
This means that the steps of the included use UML (Unified Modeling Language) class diagrams
case are inserted in to the base use case are a type of static structure diagram that depict
wherever the include relationship appears. the classes , interfaces and their relationships to
each other in a software system.
For example , suppose we have two use cases ,
“create account” and “login”. The “Login” use In a class diagram , a rectangle represents a class
case includes the “create account” use case , , with the class name appearing at the top. The
meaning that when a user attempts to log in but class attributes and methods are listed in separate
compartments inside the rectangle. The attributes
represent the properties or data associated with the behavior it performs. The parameters of the
the class , while the methods represent the method , if any , should be listed.
behaviors or actions the class can perform.
In addition to these three sections , the class
Relationships between classes are depicted by diagram also shows the relationships between
lines connecting the classes. There are several classes. The relationships can be of different types
types of relationships , including inheritance such as association , aggregation and inheritance.
(represented by a solid line with an arrow head These relationships help to define the behavior
pointing to the super class) , association and structure of the system being modeled.
(represented by a line connecting two classes) ,
and aggregation or composition (represented by a
diamond – shaped arrow head pointing to the
containing class)
The middle section of the class diagram contains Dependency relationship represents the concept of
the attributes of the class , which describe the using or depending on another element in the
quality of the class. Attributes are the properties system. It is a relationship in which one
of an object that define its state. They are element , called the client , uses or depends on
written along with their visibility factors , which another element , called the supplier for its
indicate whether they are public (+) , private implementation or operation. The supplier
(-) , protected (#) or package ( ~). A meaningful provides service , function or resource that is
name should be assigned to each attribute to needed by the client to operate.
explain it usage inside the class.
For example , a car engine is dependent on the
The lower section of the class diagram contains fuel system , which supplies fuel to the engine. If
the methods or operations of the class. Methods the fuel system fails , the engine will not operate
define the behavior of an object and describe properly. In this case , the engine represents the
how it interacts with data. Each method is client , and the fuel system represent the
represented in the form of a list , where each supplier.
method is written in a single line. The method’s
name should be descriptive , and clearly indicate
this case , there is an association between the
customer class and the car rental class , as a
customer is associated with a specific car rental
transaction. The association can be represented as
Generalization follows :
relationship between the classes. For example, let's say you have a company
The aggregation relationship is represented called "ABC Corp" and several employees
working for it. The aggregation relationship
by a line with a hollow diamond at the
whole class's end, pointing towards the part shows that "ABC Corp" has a group of
employees, but each employee can have their
class. The hollow diamond signifies the
aggregation relationship. It shows that the own existence and identity outside of the
company. Even if one employee decides to
part class is a component or part of the
whole class. leave or resign, the company "ABC Corp"
will still continue to exist.
For example, let's consider a class diagram
for a car rental system. The system has two Think of it like a house and its rooms. The
house is the "whole," and the rooms are the
classes: "Car" and "RentalAgency." The
"RentalAgency" class has an aggregation "parts." Each room can exist on its own,
even if it's not part of that specific house
relationship with the "Car" class. This means
that the "RentalAgency" contains or has anymore. The house can still stand and
function even if a room is vacant or no
instances of the "Car" class as part of its
operations. longer part of it.
In simpler terms, when we design a system, we Layers and partitions are ways to organize and
divide it into different layers, which are like divide a system into manageable parts. Here are
different levels of the system. Each layer groups some examples of layers and partitions that can
together related parts of the system. Layers have exist in a system:
a specific order, and each layer depends on the
Layers:
services provided by the layer below it. We can
also divide each layer horizontally into smaller 1. Presentation Layer: This layer deals with
groups called partitions. These partitions provide the user interface of the system, how it
services to other partitions within the same layer. looks and how users interact with it.
Another way to manage complexity is to divide 2. Business Logic Layer: This layer contains
the system into peer subsystems, where each the rules and logic that govern the
subsystem handles a specific set of tasks. This operations and functionality of the system.
helps make the system more organized and easier 3. Data Access Layer: This layer is
to work with. responsible for interacting with the
database or data storage system to
Let’s simplify it
retrieve and manipulate data.
Imagine you have a big puzzle to solve, but it 4. Infrastructure Layer: This layer handles
has too many pieces and is very complicated. To the underlying technical aspects of the
make it easier, you can divide the puzzle into
system, such as networking, security, and the system. Think of it like a blueprint or plan
system configuration. for building a house.
Three-Tier Architectural Style: This style organizes Similarly, in software testing, we do different
subsystems into three layers. The interface layer tests to check the software's functionality and
includes objects that interact with the user, such make it bug-free. It's like checking each part of
as windows or web pages. The application logic the cake to make sure it's cooked well and tastes
layer contains control and entity objects that delicious.
handle the processing, rule checking, and For example, one type of testing is called
notifications. The storage layer deals with storing, "functional testing." It's like tasting the cake to
retrieving, and querying persistent data. see if it has the right flavors and ingredients.
Four-Tier Architectural Style: This is an extension Another type is called "performance testing." It's
of the three-tier architecture with an additional like checking if the cake is moist and fluffy.
layer. The interface layer is split into a There are many other types of testing, like
Presentation Client layer (on user machines) and "security testing" to make sure the software is
a Presentation Server layer (on servers). This safe, "user interface testing" to check if it's easy
allows for different presentation clients to be used to use, and "compatibility testing" to see if it
while sharing some presentation objects across works well on different devices.
clients, reducing redundancy. For example, a
By performing these different types of testing, we
banking system can have a web interface, an
can find and fix any problems in our software
ATM interface, and an application client, with
and make it stable and bug-free. It's like making
sure our cake is perfect and delicious before verifying the system's behavior. They may
serving it to others. input data, interact with the user
interface, and manually validate the
So, in simpler terms, the various types of
expected outputs.
software testing are like different ways of
checking our software to make sure it works 3. Defect Reporting: If any defects or issues
correctly and doesn't have any issues. It's like are discovered during testing, testers
making sure our cake tastes good and doesn't report them to the development team for
have any problems before we enjoy it. resolution. They provide detailed
information about the defect, including
steps to reproduce it and any supporting
documents or logs.
2. White Box Testing :- White box testing is Let's explain the types of black box testing,
like having access to the inside of the box including functional and non-functional testing, in
and examining its components. In white simpler terms.
box testing, the tester has knowledge of
Black box testing is like examining a closed box
the internal structure, logic, and code of
without knowing what's inside. It focuses on the
the software being tested.
software's external behavior and functionality, For example, consider checking if the toy car is
without considering the internal code or durable, has good battery life, or is easy to use.
structure. Similarly, in non-functional testing, the tester
evaluates aspects like performance, security,
usability, reliability, and compatibility of the
software.
2. Mapping Use Cases to Objects with 7. Reviewing the Analysis Model: In this
Sequence Diagrams: In this activity, we activity, we carefully check and review
connect the actions or tasks that users the analysis model we created. We make
want to do (use cases) with the objects in sure that everything makes sense and that
the software. We create diagrams we haven't missed any important details.
(sequence diagrams) that show the order It's like double-checking our work and
of actions and interactions between making sure the story we've created is
objects. It's like drawing a storyboard to complete and accurate.
see how different objects work together to
In simpler terms, the analysis activities involve
make the software do what users want.
figuring out important things, connecting user
3. Modeling Interactions among Objects with tasks with software objects, understanding how
CRC Cards and Identifying Associations: In objects interact, recognizing groups of closely
this activity, we create cards (CRC cards) related objects, identifying specific details of
for each object and write down their objects, understanding the hierarchy of objects,
responsibilities and interactions. It's like and reviewing our work to ensure it's correct. It's
making character cards for a story and like creating a story where we decide who the
describing what each character does. We characters are, how they interact, and what
also figure out how different objects are special abilities or qualities they have, and then
related or connected to each other making sure everything fits together nicely.
(associations). It's like understanding how
characters in a story interact or work
IDENTIFYING ENTITY OBJECTS
together.
4. Identifying Aggregates: In this activity, we When we want to build something like a toy or a
game, we need to understand what it should do
find groups of objects that work closely
and how it should work. Requirements elicitation
together or are strongly related. It's like
is like the first step in figuring out what our
recognizing a team of characters who software should be like.
always work together in a story. We call
these groups aggregates. It helps us Let's simplify the explanation of the requirements
understand how different objects are elicitation process and the heuristics used to
organized and connected. identify objects, attributes, and associations:
3. Heuristics for Identifying Objects, EXAMPLE :- Let's simplify the explanation of the
Attributes, and Associations: Heuristics are use case and its related entity objects:
like helpful rules or guidelines that help
Use Case: ReportEmergency This use case is about
us make decisions. In this case, we use
a task called "Report Emergency" that involves
heuristics to identify objects, attributes,
two people, the FieldOfficer (a police or fire
and associations from the requirements
officer on duty) and the Dispatcher (a police
document.
officer who manages incidents). The FieldOfficer
Here are some heuristics we can use: initiates the task, and it requires communication
with the Dispatcher.
• Terms that need clarification: We look for
words or phrases that are not clear or Flow of Events:
need more explanation. It's like finding
1. The FieldOfficer starts the "Report
parts of the requirements that we need to
Emergency" task on her device.
ask questions about to understand better.
2. The software presents a special form to
• Recurring nouns: We look for words that the FieldOfficer, like a digital paper with
appear frequently in the requirements. It's fields to fill in.
like noticing names or things that are 3. The FieldOfficer fills in the form by
mentioned multiple times. selecting the emergency level, type,
location, and giving a brief description of
• Real-world entities: We look for names of
the situation. She also describes possible
things in the real world that the software
responses to the emergency situation.
needs to keep track of. It could be
4. Once the FieldOfficer completes the form,
people, places, or things. It's like
she submits it.
recognizing important characters or
5. The software receives the form and
objects in a story.
notifies the Dispatcher, like sending a
• Real-world activities: We look for actions message to get the Dispatcher's attention.
or tasks that the software needs to track. 6. The Dispatcher reviews the information in
It's like identifying important actions or the form and creates an "Incident" entry
events in a story. in the system's database using a special
function called "OpenIncident." The
• Data sources or sinks: We look for things
Dispatcher selects a response to the
that the software needs to interact with,
reported emergency and acknowledges the
like getting data from a printer or sending
report.
data to another system. It's like
7. The software shows the acknowledgment
recognizing objects that the software
and the selected response to the
needs to connect with.
FieldOfficer, like displaying a message on
In simpler terms, during requirements elicitation, her device.
we carefully read and understand the information
Entity Objects: In this use case, there are specific
provided to identify important things and make
things or concepts that play important roles. We
sense of what the software should do. We use
call these things entity objects.
helpful rules like looking for recurring words,
important entities, activities, and things that the • Dispatcher: This is like a police officer
software needs to interact with. It's like finding who manages incidents. They receive
characters, objects, and actions in a story and reports and make decisions on how to
respond to emergencies.
• EmergencyReport: This is like the initial guide us in recognizing what things are boundary
report about an incident made by the objects.
FieldOfficer to inform the Dispatcher. It
Here are some heuristics we use:
includes details about the emergency
situation. • User Interface Controls: We look for
buttons or controls that people need to
• FieldOfficer: This is like a police or fire
use to start a task. For example, a
officer who is on duty and reports
"Report Emergency" button is a control
emergencies to the Dispatcher.
that people can press to start reporting an
• Incident: This is like a situation that emergency.
requires attention from a FieldOfficer. It
• Data Entry Forms: We look for places
could be something like a crime or an
where people need to enter information
accident.
into the software. For example, an
In simpler terms, the use case "ReportEmergency" "Emergency Report Form" is a place
is a task where a FieldOfficer on duty reports an where people can fill in details about an
emergency to a Dispatcher. The FieldOfficer fills emergency.
in a form with details about the emergency, and
• System Notices and Messages: We look for
the software notifies the Dispatcher. The
messages or notices that the software
Dispatcher reviews the information, takes action,
shows to people in response to their
and acknowledges the report. During this process,
actions. For example, an
there are important things involved, like the
"Acknowledgment Notice" is a message
people (FieldOfficer and Dispatcher), the report
that the software displays to let people
itself (EmergencyReport), and the incident that
know that their action has been received.
needs attention.
• Actor Terminals: When multiple people
IDENTIFYING BOUNDARY OBJECTS
are involved in a task, we use special
Let's simplify the explanation of boundary objects names for the parts of the interface that
and the heuristics used to identify them: each person interacts with. For example,
a "Dispatcher Station" is the part of the
Boundary objects are like the parts of the interface that the dispatcher uses.
software that help us interact with the people
using it. They are like the bridges between the It's important to always use words that the
system and the actors (the people using the people using the software will understand. We
software). should not use technical words or terms that are
only used by the people building the software.
In each task or action that people want to do We want to make sure everyone can understand
(use case), they interact with at least one how to interact with the software.
boundary object. The boundary object collects the
information from the person and translates it into In simpler terms, boundary objects are like the
a form that the software can understand and use. parts of the software that help us interact with it.
They are like buttons and forms that we use to
For example, think of a button on a screen or a communicate with the software. To find these
form where we enter information. These are boundary objects, we look for buttons, forms,
examples of boundary objects. They help us messages, and special names for different people's
communicate with the software by pressing parts of the interface. It's important to use words
buttons or filling in information. that everyone can understand.
To help us identify boundary objects, we have
some helpful rules called heuristics. These rules
EXAMPLE :- Let's simplify the explanation of the • DispatcherStation: This is like a computer
use case and its related boundary objects: used by the Dispatcher to review and
Use Case: ReportEmergency This is a task that handle the reported emergencies.
involves two people, the FieldOfficer and the
Dispatcher. The FieldOfficer initiates the "Report In simpler terms, the use case "ReportEmergency"
Emergency" function using her device, and it is a task involving a FieldOfficer and a
involves communication with the Dispatcher. Dispatcher. The FieldOfficer starts by pressing a
special button and filling in a form about an
Flow of Events: emergency. The software then notifies the
1. The FieldOfficer activates the "Report Dispatcher, who reviews the information and
Emergency" function on her device. takes appropriate action. During this process,
2. The software presents a form to the there are special objects like buttons, notices,
FieldOfficer, like a special page with forms, and computers that help with the
fields to fill in. interaction between the people and the software.
3. The FieldOfficer fills in the form by
IDENTIFYING CONTROL OBJECTS
selecting the emergency level, type,
location, and giving a brief description of Let's simplify the explanation of control objects
the situation. Once done, she submits the and the heuristics used to identify them:
form.
Control objects are like the coordinators or
4. The software receives the form and
managers in a use case. They are responsible for
notifies the Dispatcher.
making sure things happen in the right order and
5. The Dispatcher reviews the information in
coordinating the actions of other objects. Control
the form and creates an incident in the
objects are usually created at the beginning of a
system's database using the
use case and stop existing once the use case is
"OpenIncident" function. The Dispatcher
finished.
selects a response and acknowledges the
report. To help us identify control objects, we have some
6. The software displays the acknowledgment helpful rules called heuristics. These rules guide
and the selected response to the us in recognizing what things are control objects.
FieldOfficer.
Here are some heuristics we use :-
Boundary Objects: In this use case, there are
• One Control Object per Use Case: We
certain parts of the software that help in the
have one control object that oversees the
interaction between the FieldOfficer and the
entire use case. It's like having one person
system. These parts are called boundary objects.
in charge of making sure everything goes
• ReportEmergencyButton: This is like a smoothly.
special button that the FieldOfficer presses
• One Control Object per Actor: If multiple
to start the "Report Emergency" task.
people are involved in a use case, we
• AcknowledgmentNotice: This is like a
have one control object for each person.
notice or message that shows the
Each control object is responsible for
Dispatcher's acknowledgment to the
coordinating the actions of that particular
FieldOfficer.
person.
• EmergencyReportForm: This is like a
special form that appears on the • Lifespan of a Control Object: The control
FieldOfficer's device when she selects the object should exist throughout the whole
"Report Emergency" function. It has fields use case or for as long as the person is
where she can enter information about interacting with the software. It's like the
the emergency.
control object is active as long as the MAPPING USE CASES TO OBJECTS
person is using the software. WITH SEQUENCE DIAGRAMS
Now, let's see how these control objects work in
Let's simplify the explanation of sequence
the "ReportEmergency" use case:
diagrams and the heuristics used to draw them:
• ReportEmergencyControl: This control
Sequence diagrams are like visual representations
object manages the reporting function for
of how different objects interact with each other
the FieldOfficer. It is created when the
in a use case. They show the behavior and
FieldOfficer selects the "Report
communication between objects over time.
Emergency" button. It presents a form
(EmergencyReportForm) to the FieldOfficer In a sequence diagram:
and collects the information from the
• Columns represent the objects that are
form. It creates an EmergencyReport and
involved in the use case. The leftmost
sends it to the Dispatcher. It waits for an
column is usually the person who starts
acknowledgment from the Dispatcher and,
the use case (the actor).
upon receiving it, creates an
• Horizontal arrows represent messages or
AcknowledgmentNotice and shows it to
signals being sent from one object to
the FieldOfficer.
another.
• ManageEmergencyControl: This control • When an object receives a message, it
object manages the reporting function for triggers an action called an operation.
the Dispatcher. It is created when an • The activation of an operation is shown
EmergencyReport is received. It displays a as a vertical rectangle that represents the
form (IncidentForm) to the Dispatcher. time the operation is active.
Once the Dispatcher creates an Incident,
Sequence diagrams also help us understand the
allocates resources, and submits an
lifetime of objects involved:
acknowledgment, the
ManageEmergencyControl forwards the • A dashed line between an object's
acknowledgment to the FieldOfficer. rectangle and the bottom of the diagram
represents the time span when the object
In simpler terms, control objects are like
exists.
managers or coordinators in a use case. They
• Objects that already exist before the
make sure things happen in the right order and
sequence diagram starts are shown at the
coordinate the actions of other objects. For the
top.
"ReportEmergency" use case, we have control
• Objects created during the interaction are
objects for the FieldOfficer and the Dispatcher.
represented by a "create" message
The FieldOfficer's control object oversees the
pointing to the object.
reporting process, while the Dispatcher's control
• Objects that are no longer needed are
object manages the handling of the report. They
shown with a cross, indicating when they
ensure that the right forms are displayed,
cease to exist.
information is collected, and acknowledgments
are exchanged. To draw sequence diagrams, we follow some
helpful rules called heuristics: