OOSE
OOSE
OOSE
Waterfall Model :
Phases of Waterfall Model
Waterfall Model is a classical software development methodology that was
first introduced by Winston W. Royce in 1970. It is a linear and sequential
approach to software development that consists of several phases that must
be completed in a specific order.
The Waterfall Model has six phases:
1. Requirements Gathering and Analysis: The first phase involves
gathering requirements from stakeholders and analyzing them to understand
the scope and objectives of the project.
2. Design Phase: Once the requirements are understood, the design phase
begins. This involves creating a detailed design document that outlines the
software architecture, user interface, and system components.
3. Implementation and Unit Testing: The implementation phase involves
coding the software based on the design specifications. This phase also
includes unit testing to ensure that each component of the software is
working as expected.
4. Integration and System Testing: In the testing phase, the software is
tested as a whole to ensure that it meets the requirements and is free from
defects.
5. Deployment: Once the software has been tested and approved, it is
deployed to the production environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance,
which involves fixing any issues that arise after the software has been
deployed and ensuring that it continues to meet the requirements over time.
The classical waterfall model divides the life cycle into a set of phases. This
model considers that one phase can be started after the completion of the
previous phase. That is the output of one phase will be the input to the next
phase. Thus the development process can be considered as a sequential
flow in the waterfall. Here the phases do not overlap with each other. The
different sequential phases of the classical waterfall model are shown in the
below figure.
Phases :
1. Feasibility Study
The main goal of this phase is to determine whether it would be financially
and technically feasible to develop the software.
The feasibility study involves understanding the problem and then
determining the various possible strategies to solve the problem. These
different identified solutions are analyzed based on their benefits and
drawbacks, The best solution is chosen and all the other phases are carried
out as per this solution
strategy.
A.Verification Phases:
It involves static analysis technique (review) done without executing code. It
is the process of evaluation of the product development phase to find
whether specified requirements meet.
There are several Varification phases in the V-Model:
II.System Design:
Design of system will start when the overall we clear with the product
requirements, then need to design the system completely. these
understanding will do at the beginning of complete under the product
development process. these will be beneficial for the future execution of test
cases.
III.Architectural Design:
IV.Module Design:
This phase, known as Low Level Design (LLD), specifies the comprehensive
internal design for each and every system module. Compatibility between the
design and other external systems as well as other modules in the system
architecture is crucial. Unit tests are a crucial component of any development
process since they assist identify and eradicate the majority of mistakes and
flaws at an early stage. Based on the internal module designs, these unit
tests may now be created.
V.Coding Phase:
The Coding step involves actually writing the code for the system modules
that were created during the Design phase. The system and architectural
requirements are used to determine which programming language is most
appropriate.
The coding standards and principles are followed when performing the
coding. Before the final build is checked into the repository, the code
undergoes many code reviews and is optimised for optimal performance.
Validation Phases:
Unit Testing:
Unit Test Plans are developed during module design phase. These Unit Test
Plans are executed to eliminate bugs at code or unit level.
Integration testing:
After completion of unit testing Integration testing is performed. In integration
testing, the modules are integrated and the system is tested. Integration
testing is performed on the Architecture design phase. This test verifies the
communication of modules among themselves.
System Testing:
System testing test the complete application with its functionality, inter
dependency, and communication. It tests the functional and non-functional
requirements of the developed application.
Testing Phases:
Unit Testing: Unit Test Plans are developed during module design
phase. These Unit Test Plans are executed to eliminate bugs at code or
unit level.
System Testing: System testing test the complete application with its
functionality, inter dependency, and communication. It tests the functional
and non-functional requirements of the developed application.
Industrial Challenge:
As the industry has evolved, the technologies have become more complex,
increasingly faster, and forever changing, however, there remains a set of
basic principles and concepts that are as applicable today as when IT was in
its infancy.
Accurately define and refine user requirements.
Design and build an application according to the authorized user
requirements.
Validate that the application they had built adhered to the authorized
business requirements.
Principles of V-Model:
Large to Small: In V-Model, testing is done in a hierarchical perspective,
for example, requirements identified by the project team, create High-
Level Design, and Detailed Design phases of the project. As each of
these phases is completed the requirements, they are defining become
more and more refined and detailed.
Data/Process Integrity: This principle states that the successful design
of any project requires the incorporation and cohesion of both data and
processes. Process elements must be identified at each and every
requirement.
Scalability: This principle states that the V-Model concept has the
flexibility to accommodate any IT project irrespective of its size,
complexity or duration.
Cross Referencing: Direct correlation between requirements and
corresponding testing activity is known as cross-referencing.
Tangible Documentation:
This principle states that every project needs to create a document. This
documentation is required and applied by both the project development team
and the support team. Documentation is used to maintaining the application
once it is available in a production environment.
Why preferred?
When to use?
Advantages:
Disadvantages:
High risk and uncertainty.
It is not a good for complex and object-oriented projects.
It is not suitable for projects where requirements are not clear and
contains high risk of changing.
This model does not support iteration of phases.
It does not easily handle concurrent events.
Inflexibility: The V-Model is a linear and sequential model, which can
make it difficult to adapt to changing requirements or unexpected events.
Time-Consuming: The V-Model can be time-consuming, as it requires a
lot of documentation and testing.
Overreliance on Documentation: The V-Model places a strong emphasis
on documentation, which can lead to an overreliance on documentation at
the expense of actual development work.
Prototyping Model
Prototyping is defined as the process of developing a working replication of a product
or system that has to be engineered. It offers a small-scale facsimile of the end product
and is used for obtaining customer feedback. The Prototyping concept is described
below:
The Prototyping Model is one of the most popularly used Software Development Life
Cycle Models (SDLC models). This model is used when the customers do not know
the exact project requirements beforehand. In this model, a prototype of the end
product is first developed, tested, and refined as per customer feedback repeatedly till
a final acceptable prototype is achieved which forms the basis for developing the final
product.
Spiral Model is one of the most important Software Development Life Cycle
models, which provides support for Risk Handling. This article focuses on
discussing the Spiral Model in detail.
2. Risk Analysis
In the risk analysis phase, the risks associated with the project are identified
and evaluated.
3. Engineering
In the engineering phase, the software is developed based on the
requirements gathered in the previous iteration.
4. Evaluation
In the evaluation phase, the software is evaluated to determine if it meets the
customer’s requirements and if it is of high quality.
5. Planning
The next iteration of the spiral begins with a new planning phase, based on
the results of the evaluation.
The Spiral Model is often used for complex and large software development
projects, as it allows for a more flexible and adaptable approach to software
development. It is also well-suited to projects with significant uncertainty or
high levels of risk.
The Radius of the spiral at any point represents the expenses(cost) of the
project so far, and the angular dimension represents the progress made so
far in the current phase.
Each phase of the Spiral Model is divided into four quadrants as shown in the above figure. The
functions of these four quadrants are discussed below:
1. Objectives determination and identify alternative solutions: Requirements are gathered
from the customers and the objectives are identified, elaborated, and analyzed at the start
of every phase. Then alternative solutions possible for the phase are proposed in this
quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible solutions are
evaluated to select the best possible solution. Then the risks associated with that solution
are identified and the risks are resolved using the best possible strategy. At the end of this
quadrant, the Prototype is built for the best possible solution.
3. Develop the next version of the Product: During the third quadrant, the identified features
are developed and verified through testing. At the end of the third quadrant, the next
version of the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so-
far developed version of the software. In the end, planning for the next phase is started.
RAD Model
The Rapid Application Development Model was first proposed by IBM in the
1980s. The RAD model is a type of incremental process model in which
there is an extremely short development cycle. When the requirements are
fully understood and the component-based construction approach is adopted
then the RAD model is used. Various phases in RAD are Requirements
Gathering, Analysis and Planning, Design, Build or Construction, and finally
Deployment.
The critical feature of this model is the use of powerful development tools
and techniques. A software project can be implemented using this model if
the project can be broken down into small modules wherein each module
can be assigned independently to separate teams. These modules can
finally be combined to form the final product. Development of each module
involves the various basic steps as in the waterfall model i.e. analyzing,
designing, coding, and then testing, etc. as shown in the figure. Another
striking feature of this model is a short period i.e. the time frame for
delivery(time-box) is generally 60-90 days.
Multiple teams work on developing the software system using the RAD
model parallely.
1. Requirements Planning – It involves the use of various techniques used
in requirements elicitation like brainstorming, task analysis, form analysis,
user scenarios, FAST (Facilitated Application Development Technique),
etc. It also consists of the entire structured plan describing the critical
data, methods to obtain it, and then processing it to form a final refined
model.
2. User Description – This phase consists of taking user feedback and
building the prototype using developer tools. In other words, it includes re-
examination and validation of the data collected in the first phase. The
dataset attributes are also identified and elucidated in this phase.
3. Construction – In this phase, refinement of the prototype and delivery
takes place. It includes the actual use of powerful automated tools to
transform processes and data models into the final working product. All
the required modifications and enhancements are too done in this phase.
4. Cutover – All the interfaces between the independent modules developed
by separate teams have to be tested properly. The use of powerfully
automated tools and subparts makes testing easier. This is followed by
acceptance testing by the user.
The process involves building a rapid prototype, delivering it to the customer,
and taking feedback. After validation by the customer, the SRS document is
developed and the design is finalized.
When to use RAD Model?
When the customer has well-known requirements, the user is involved
throughout the life cycle, the project can be time-boxed, the functionality
delivered in increments, high performance is not required, low technical risks
are involved and the system can be modularized. In these cases, we can use
the RAD Model. when it is necessary to design a system that can be divided
into smaller units within two to three months. when there is enough money in
the budget to pay for both the expense of automated tools for code creation
and designers for modeling.
Advantages:
The use of reusable components helps to reduce the cycle time of the
project.
Feedback from the customer is available at the initial stages.
Reduced costs as fewer developers are required.
The use of powerful development tools results in better quality products in
comparatively shorter time spans.
The progress and development of the project can be measured through
the various stages.
It is easier to accommodate changing requirements due to the short
iteration time spans.
Productivity may be quickly boosted with a lower number of employees.
Disadvantages:
The use of powerful and efficient tools requires highly skilled
professionals.
The absence of reusable components can lead to the failure of the
project.
The team leader must work closely with the developers and customers to
close the project on time.
The systems which cannot be modularized suitably cannot use this
model.
Customer involvement is required throughout the life cycle.
It is not meant for small-scale projects as in such cases, the cost of using
automated tools and techniques may exceed the entire budget of the
project.
Not every application can be used with RAD.
Applications:
1. This model should be used for a system with known requirements and
requiring a short development time.
2. It is also suitable for projects where requirements can be modularized and
reusable components are also available for development.
3. The model can also be used when already existing system components
can be used in developing a new system with minimum changes.
4. This model can only be used if the teams consist of domain experts. This
is because relevant knowledge and the ability to use powerful techniques
are a necessity.
5. The model should be chosen when the budget permits the use of
automated tools and techniques required.
Drawbacks of rapid application development:
It requires multiple teams or a large number of people to work on the
scalable projects.
This model requires heavily committed developer and customers. If
commitment is lacking then RAD projects will fail.
The projects using RAD model requires heavy resources.
If there is no appropriate modularization then RAD projects fail.
Performance can be problem to such projects.
The projects using RAD model find it difficult to adopt new technologies.
Ppk@1981
CHAPTER 2
Object oriented is a computer science concept that has been widely implemented, specifically
in programming languages and applications/software. The object-oriented technique is
different from conventional programming, which focuses on functions/behaviors, while
object-oriented works on the interactions of one or more objects.
An object-oriented based system is modeled and created through the use of objects, where
each object's class instance has specific attributes and behaviors, and the relative methods or
behaviors are called to manipulate or utilize such a system. The essence of object-oriented is
that each of the created objects can be reused in the same and other programs and
applications.
OOP focuses on the objects that developers want to manipulate rather than the
logic required to manipulate them. This approach to programming is well-suited
for programs that are large, complex and actively updated or maintained. This
includes programs for manufacturing and design, as well as mobile applications;
for example, OOP can be used for manufacturing system simulation software.
The first step in OOP is to collect all of the objects a programmer wants to
manipulate and identify how they relate to each other -- an exercise known as data
modeling.
Examples of an object can range from physical entities, such as a human being
who is described by properties like name and address, to small computer programs,
such as widgets.
Once an object is known, it is labeled with a class of objects that defines the kind
of data it contains and any logic sequences that can manipulate it. Each distinct
logic sequence is known as a method. Objects can communicate with well-defined
interfaces called messages.
Classes are user-defined data types that act as the blueprint for individual
objects, attributes and methods.
Objects are instances of a class created with specifically defined data. Objects
can correspond to real-world objects or an abstract entity. When class is defined
initially, the description is the only object that is defined.
Methods are functions that are defined inside a class that describe the
behaviors of an object. Each method contained in class definitions starts with a
reference to an instance object. Additionally, the subroutines contained in an
object are called instance methods. Programmers use methods for reusability or
keeping functionality encapsulated inside one object at a time.
Attributes are defined in the class template and represent the state of an object.
Objects will have data stored in the attributes field. Class attributes belong to
the class itself.
Inheritance:
In OOP, inheritance follows the "is-a" relationship, meaning that the derived class is a more specific
version of the base class. For example, in a class hierarchy for vehicles, a "Car" class can inherit
from a more general "Vehicle" class, as a car is a type of vehicle.
Inheritance: Inheritance is an OOP mechanism allowing a new class (the derived or child class) to
acquire the properties and methods of an existing class (the base or parent class).
Polymorphism: Polymorphism is the ability of one function or method to perform different actions
depending on the input or the type of object it is called upon. Inheritance enables polymorphism by
allowing child classes to override or extend the functionality of parent class methods.
There are various benefits of using the parent-child relationship in inheritance, including:
Code Reusability: Inheritance allows the derived class to reuse the code from the
base class, reducing duplication and promoting maintainability.
Code Organization: Organizing your code into a hierarchy of classes with
inheritance can make it easier to understand the relationships and dependencies
between different parts of your program.
Modularity: With inheritance, you can modify or extend the functionality of a base
class without changing the base class itself. This modularity can enhance the
flexibility and scalability of your code.
The object-oriented modeling approach creates the union of the application and database
development and transforms it into a unified data model and language environment. Object-
oriented modeling allows for object identification and communication while supporting data
abstraction, inheritance and encapsulation.
Object-oriented modeling is the process of preparing and designing what the model’s code
will actually look like. During the construction or programming phase, the modeling
techniques are implemented by using a language that supports the object-oriented
programming model.
An object model is a visual representation of a system's objects, actions, and associated attributes.
An object model can be used, in conjunction with a design system, to create a consistent experience
across a system's higher-level constructs.
An object model is a visual representation of a system’s objects, actions, and associated attributes.
An object model can be used, in conjunction with a design system, to create a consistent experience
across a system’s higher-level constructs.
The Use Case Model is a behavioral model and depicts the system from a task perspective
(similar to user stories in Agile).
Admittedly, a complete Class Diagram can be time-consuming to complete and requires a set
of analysis skills more typical of an engineer or analyst. It’s not something a UX professional
today would typically prepare.
I would argue, however, that object-orientation is a lost and necessary part of UX design,
particularly for more complex applications.
The Narrative Object Model
What I am proposing is a simplified object model I call a Narrative Object Model —
narrative because it substantially replaces the UML notation with plain-English narrative.
Also, while the Class Diagram is highly structured, following the rules of UML, the Narrative
Object Model is lighter-weight and more flexible.
In my consulting work, I usually am starting with an existing system that we will redesign or
re-envision in some way. Starting the model by inspecting that system’s existing interface
accomplishes two things: 1) it gets me intimately familiar with that system in its current state
2) it provides a baseline object model that can then be extended to depict the desired future-
state.
The other primary source for an object model is user stories or other requirements-oriented
artifacts. For greenfield design work, these may be the only sources available.
We’ll begin an example model by looking at an existing interface, using the relatively simple
example of Twitter.com.
First, however, it’s important to define two central concepts: an object and an action. Simply
stated, objects are the nouns in a system and actions are the verbs. In an existing interface,
menus and button bars often contain clues to a system’s objects and actions.
When working with objects, it’s also important to remember the difference between the
object, which represents the concept, and an instance of an object. For example, most systems
have the concept of an Account, which would be an object. However, there are many
instances of an Account: the account of Louise Hughes, the account of Ramon Woods, etc.
Identifying Objects
Below is a screen capture of a Tweet from Twitter.com. We have a button bar below the
Tweet and a menu (shown expanded) to the right. We’ll use these to identify some nouns
(aka objects).
In our model, the objects become titled rectangles that we will connect together to show
relationships. Here are our object rectangles so far:
We definitely can (and will) do more with our objects. However, sometimes if I’m trying to
make sense of a poorly organized system, it’s enough, at least initially, to get the objects
identified and laid out on a page.
I find the most logical next step, once I’ve identified the objects, is to identify the
relationships between objects.
Rather than rely on notation to characterize the relationship between objects, the Narrative
Object Model uses descriptive text. The diagram below shows the objects we’ve identified
thus far with their relationships described.
The descriptions help illuminate the purpose of each object in context of the larger whole:
An Account can send a Direct Message
An Account can publish Tweets
Tweets can be curated into groups call Moments
Again you could stop your model at this point, after the relationships have been defined, if
you feel the model serves your purpose. However, it can be helpful to fill in more information
about each object…specifically its associated actions and attributes.
Identifying Actions
Next, let’s identify some Actions associated with a Tweet. We can again use the button bar
and menu as a starting point:
The object Tweet with attributes (middle pane) and actions (lower pane).
Here again, I’ve retained some notation from a Class Diagram. The colon after the attribute
Text indicates the type of data — in this case, the fact that Text is limited in length (280
characters or less). I’ve only included data type for the Text attribute because I’ve deemed it
to be especially meaningful to the user experience.
In addition to including more objects, I’ve added some visual elements to help me interpret
the model more easily. These include:
Indicating which objects are the core system objects (in bold outline)
Using traditional UML line-end treatments to characterize relationships further
Using color to associate objects with a similar purpose
For Twitter, I’ve indicated the Tweet and the Timeline objects as core, capitalizing the object
name and using a bold outline treatment.
Association
Aggregation
Component
Inheritance
Association Relationship
The simplest type of relationship is an association. Here we are showing the relationship
between an Account and a Tweet with a plain line. In our Narrative Object Model, the line
contains a verbal description of the relationship; the description includes reference to both
objects (in bold).
Aggregation Relationship
An aggregation relationship indicates an object that is merely a collection or list of other
objects. For example, in Twitter users can add Tweets to a collection called a Moment. A
Moment is a kind of collection of Tweets.
Component Relationship
A component relationship is a type of dependency relationship where one object is a
component of another. For Twitter, a Hashtag is an important component of a Tweet. The
concept of a Hashtag is entirely dependent upon the idea of a Tweet — if you remove the
concept of a Tweet from the system, the concept of Hashtag necessarily ceases to exist.
Inheritance Relationship
Last but not least is the inheritance relationship. This is a parent-child relationship where the
children objects inherit all or some of the parent object’s characteristics.
Our example model for Twitter isn’t showing any inheritance relationships. However, if I
was building a full object model for Twitter, I might use inheritance to depict different types
of accounts, for example, a User Account and an Administrator Account. These objects,
which share a subset of characteristics, are best treated as children of an Account.
An inheritance relationship is shown using an unfilled arrow pointed at the parent object. The
parent object contains the shared characteristics; only the unique characteristics are shown for
the children.
An inheritance relationship, shown by an unfilled arrow.
Note, however, in this example Account isn’t an actual object in the system — it’s an
abstraction we used to create a parent. Here again, we can use traditional Class Diagram
notation to indicate the abstract object <<Account>>.
Though inheritance may seem a bit fussy to include in the model, it’s also one of the most
useful relationships to understand. When designing, you want to make sure parent functions
are presented consistently across all the children.
Below is a more real-world model for an enterprise system. This model is based on an actual
workflow management system, though some details have been changed for presentation here.
You can see the more extensive use of inheritance, component, and aggregation relationships
— and expanded use of the verbal descriptions to help “tell the structural story” of the
system.
Start with the easy stuff — for example, just identifying some objects.
For larger systems, it may make sense to create two or more smaller models and then
bring them together.
Build out the model over time, in a series of shorter work sessions.
Do just enough to serve your purpose; avoid analysis paralysis.
Two people may model the same system slightly differently, and that’s OK.
To begin, I want to emphasize that the Narrative Object Model provides a single, specific
view of a system — a structural view. It’s not designed to replace other artifacts such as
storyboards, journey maps, user stories, and use cases that represent the user experience from
a task perspective. The object model is always a compliment to other design artifacts.
Let’s look at how the object model fits into the design process. The model can be used to
identify:
I also use the object model when doing screen-level design to make sure there is a clear
relationship between an object and all its associated actions.
Core experience
Categorization & Discovery
Account Management
System Users
Roles in a Transaction
Components of a Transaction
Work Management
Here again, it can make sense to design the objects within a category concurrently so that the
experience feels consistent.
It’s also useful to look at cases of inheritance (parent-child relationships). You want to make
sure parent functions are presented consistently across all the children.
A starting point is looking for CRUD actions (create, read, update, and delete). For example,
Twitter famously doesn’t allow users to update a Tweet once it’s been posted. As I am
modeling Twitter and checking that objects are complete, I would notice this omission. In this
case, the lack of an update function is intentional, but it could also have been overlooked. In
my experience overlooked basic functions are not uncommon.
It can also be helpful to look at objects that serve a similar function and compare them. For
example, in Twitter, a Tweet and a Direct Message serve a similar function — to
communicate with others. You can favorite a Tweet, but you can’t favorite a Direct Message.
Should users be able to favorite a Direct Message as well?
One reason to more completely fill out the actions and attributes for each object rectangle is
to do a thorough vocabulary cross-check. The model can ultimately serve as a source for a
controlled system vocabulary.
In addition to checking vocabulary across objects, it’s also handy to review terms within an
object. In Twitter, the word “Tweet” is used both as a noun and a verb. It’s evident that for
Twitter this makes sense, but it could be a legitimate question to raise.
Wrapping Up
In this article, I’ve attempted to lay out the case for object modeling. I consider object
modeling a skill in my UX tool belt, along with conducting research, facilitating workshops,
journey mapping, persona development, and the like. These are all inputs which, depending
upon the needs of the project, contribute to successful design outcomes.
UML Diagrams
Structure diagrams show the things in the modeled system. In a more technical term, they show
different objects in a system. Behavioral diagrams show what should happen in a system. They
describe how the objects interact with each other to create a functioning system.
to customize,
design, and
-use-case driven,
Advantages:
Disadvantages :
The Requirements Engineering process is a critical step in the software development life
cycle as it helps to ensure that the software system being developed meets the needs and
expectations of stakeholders, and that it is developed on time, within budget, and to the
required quality.
1. Requirements Elicitation
It is related to the various ways used to gain knowledge about the project domain and
requirements. The various sources of domain knowledge include customers, business
manuals, the existing software of same type, standards and other stakeholders of the project.
The techniques used for requirements elicitation include interviews, brainstorming, task
analysis, Delphi technique, prototyping, etc. Some of these are discussed here. Elicitation
does not produce formal models of the requirements understood. Instead, it widens the
domain knowledge of the analyst and thus helps in providing input to the next stage.
Requirements elicitation is the process of gathering information about the needs and
expectations of stakeholders for a software system. This is the first step in the requirements
engineering process and it is critical to the success of the software development project. The
goal of this step is to understand the problem that the software system is intended to solve,
and the needs and expectations of the stakeholders who will use the system.
There are several techniques that can be used to elicit requirements, including:
Focus Groups: These are small groups of stakeholders who are brought together to
discuss their needs and expectations for the software system.
It’s important to document, organize and prioritize the requirements obtained from all these
techniques to ensure that they are complete, consistent and accurate.
2. Requirements Specification
This activity is used to produce formal software requirement models. All the requirements
including the functional as well as the non-functional requirements and the constraints are
specified by these models in totality. During specification, more knowledge about the
problem may be required which can again trigger the elicitation process. The models used at
this stage include ER diagrams, data flow diagrams(DFDs), function decomposition
diagrams(FDDs), data dictionaries, etc.
The goal of this step is to create a clear and comprehensive document that describes the
requirements for the software system. This document should be understandable by both the
development team and the stakeholders.
There are several types of requirements that are commonly specified in this step,
including
1. Functional Requirements: These describe what the software system should do. They
specify the functionality that the system must provide, such as input validation, data
storage, and user interface.
2. Non-Functional Requirements: These describe how well the software system should
do it. They specify the quality attributes of the system, such as performance,
reliability, usability, and security.
3. Constraints: These describe any limitations or restrictions that must be considered
when developing the software system.
4. Acceptance Criteria: These describe the conditions that must be met for the software
system to be considered complete and ready for release.
In order to make the requirements specification clear, the requirements should be written in a
natural language and use simple terms, avoiding technical jargon, and using a consistent
format throughout the document. It is also important to use diagrams, models, and other
visual aids to help communicate the requirements effectively.
Once the requirements are specified, they must be reviewed and validated by the stakeholders
and development team to ensure that they are complete, consistent, and accurate.
Verification: It refers to the set of tasks that ensures that the software correctly implements a
specific function.
Validation: It refers to a different set of tasks that ensures that the software that has been
built is traceable to customer requirements. If requirements are not validated, errors in the
requirement definitions would propagate to the successive stages resulting in a lot of
modification and rework. The main steps for this process include:
1. The requirements should be consistent with all the other requirements i.e no two
requirements should conflict with each other.
Reviews, buddy checks, making test cases, etc. are some of the methods used for this.
Requirements verification and validation (V&V) is the process of checking that the
requirements for a software system are complete, consistent, and accurate, and that they meet
the needs and expectations of the stakeholders. The goal of V&V is to ensure that the
software system being developed meets the requirements and that it is developed on time,
within budget, and to the required quality.
1. Verification is the process of checking that the requirements are complete, consistent,
and accurate. It involves reviewing the requirements to ensure that they are clear,
testable, and free of errors and inconsistencies. This can include reviewing the
requirements document, models, and diagrams, and holding meetings and
walkthroughs with stakeholders.
2. Validation is the process of checking that the requirements meet the needs and
expectations of the stakeholders. It involves testing the requirements to ensure that
they are valid and that the software system being developed will meet the needs of the
stakeholders. This can include testing the software system through simulation, testing
with prototypes, and testing with the final version of the software.
3. V&V is an iterative process that occurs throughout the software development life
cycle. It is important to involve stakeholders and the development team in the V&V
process to ensure that the requirements are thoroughly reviewed and tested.
It’s important to note that V&V is not a one-time process, but it should be integrated and
continue throughout the software development process and even in the maintenance stage.
4. Requirements Management
There are several key activities that are involved in requirements management, including:
Requirements management is a critical step in the software development life cycle as it helps
to ensure that the software system being developed meets the needs and expectations of
stakeholders, and that it is developed on time, within budget, and to the required quality. It
also helps to prevent scope creep and to ensure that the requirements are aligned with the
project goals.
Advantages and Disadvantages
The advantages and disadvantages of the requirements engineering process in software
engineering include:
Advantages
Helps ensure that the software being developed meets the needs and expectations of
the stakeholders
Can help identify potential issues or problems early in the development process,
allowing for adjustments to be made before significant
Helps ensure that the software is developed in a cost-effective and efficient manner
Can improve communication and collaboration between the development team and
stakeholders
Helps to ensure that the software system meets the needs of all stakeholders.
Helps to identify potential conflicts and contradictions in the requirements, which can
be resolved before the software development process begins.
Helps to ensure that the software system is delivered on time, within budget, and to
the required quality standards.
Provides a solid foundation for the development process, which helps to reduce the
risk of failure.
Disadvantages
Can be difficult to ensure that all stakeholders’ needs and expectations are taken into
account
Can be challenging to ensure that the requirements are clear, consistent, and complete
Changes in requirements can lead to delays and increased costs in the development
process.
Requirements may change over time, which can result in delays and additional costs.
It may be challenging to ensure that all stakeholders understand and agree on the
requirements.
Activity Diagram
Activity Diagrams are used to illustrate the flow of control in a system and refer to the steps
involved in the execution of a use case. We can depict both sequential processing and
concurrent processing of activities using an activity diagram ie an activity diagram focuses on
the condition of flow and the sequence in which it happens.
An activity diagram portrays the control flow from a start point to a finish point
showing the various decision paths that exist while the activity is being executed.
They are used in business and process modeling where their primary use is to depict
the dynamic aspects of a system.
Swimlanes
We use Swimlanes for grouping related activities in one column. Swimlanes group related
activities into one column or one row. Swimlanes can be vertical and horizontal. Swimlanes
are used to add modularity to the activity diagram. It is not mandatory to use swimlanes.
They usually give more clarity to the activity diagram. It’s similar to creating a function in a
program. It’s not mandatory to do so, but, it is a recommended practice.
This is like setting the starting point and ending point of a journey.
Identify where your process begins (initial state) and where it concludes (final states).
For example, if you are modelling a process for making a cup of tea, the initial state
could be “No tea prepared,” and the final state could be “Tea ready.”
Think of the steps or actions required to go from the starting point to the ending point.
Continuing with the tea-making , intermediate activities could include “Boil water,”
“Pour tea into a cup”.
These are the factors that determine when you move from one activity to another.
Using the tea-making scenario, a condition could be “Water is boiled,” which triggers
the transition to the next activity.
Now, represent the identified states, activities, and conditions visually using the
appropriate symbols and notations in an activity diagram. This diagram serves as a
visual map of your process, showing the flow from one state to another.
If you look around a room, there is a set of physical objects that can be easily identified, classified,
and defined (in terms of attributes and operations). But when you "look around" the problem space
of a software application, the objects may be more difficult to comprehend.
We can begin to identify objects by examining the problem statement or performing a "grammatical
parse" on the processing narrative for the system to be built. Objects are determined by underlining
each noun or noun clause and entering it in a simple table. Synonyms should be noted. If the object
is required to implement a solution, then it is part of the solution space; otherwise, if an object is
necessary only to describe a solution, it is part of the problem space. What should we look for once
al
of the nouns have been isolated? Objects manifest themselves in one of the ways represented
in figure. Objects can be
• External entities (e.g., other systems, devices, people) that produce or consume information
to be used by a computer-based system.
• Things (e.g, reports, displays, letters, signals) that are part of the information domain for the
problem.
• Occurrences or events (e.g., a property transfer or the completion of a series of robot
movements) that occur within the context of system operation.
• Roles (e.g., manager, engineer, salesperson) played by people who interact with the system.
• Organizational units (e.g., division, group, team) that are relevant to an application.
• Places (e.g., manufacturing floor or loading dock) that establish the context of the problem
and the overall function of the system.
• Structures (e.g., sensors, four-wheeled vehicles, or computers) that define a class of objects
or in the extreme, related classes of objects.
This categorization is but one of many that have been proposed in the literature. For example,
Budd suggests a taxonomy of classes that includes producers (sources) and consumers
(sinks) of data, data managers, view or observer classes, and helper classes.
It is also important to note what objects are not. In general, an object should never have an
"imperative procedural name" . For example, if the developers of software for a medical imaging
system defined an object with the name image inversion, they would be making a subtle mistake.
The image obtained from the software could, of course, be an object (it is a thing that is part of the
information domain). Inversion of the image is an operation that is applied to the object. It is likely
that inversion would be defined as an operation for the object image, but it would not be defined as
a separate object to connote "image inversion." As Cashman states: "the intent of object-orientation
is to encapsulate, but still keep separate, data and operations on the data."
To illustrate how objects might be defined during the early stages of analysis, we return to the
SafeHome security system example. We already performed a "grammatical parse" on a
processing narrative for the SafeHome system . The processing narrative is reproduced:
SafeHome software enables the homeowner to configure the security system when it is
installed, monitors all sensors connected to the security system, and interacts with the
homeowner through a keypad and function keys contained in the SafeHome control panel
During installation, the SafeHome control panel is used to "program" and configure the
system. Each sensor is assigned a number and type, a master password is programmed for
arming and disarming the system, and telephone number(s) are input for dialing when a
sensor event occurs.
When a sensor event is sensed by the software, it rings an audible alarm attached to the
system. After a delay time that is specified by the homeowner during system configuration
activities, the software dials a telephone number of a monitoring service, provides
information about the location, reporting and the nature of the event that has been detected.
The number will be redialed every 20 seconds until telephone connection is obtained. All
interaction with SafeHome is managed by a user-interaction subsystem that reads input
provided through the keypad and function keys, displays prompting messages on the LCD
display, displays system status information on the LCD display. Keyboard interaction takes
the following form . . .
The list would be continued until all nouns in the processing narrative have been considered.
Note that we call each entry in the list a potential object. We must consider each further
before a final decision is made. Coad and Yourdon suggest six selection characteristics that
should be used as an analyst considers each potential object for inclusion in the analysis
model:
1. Retained information. The potential object will be useful during analysis only if
information about it must be remembered so that the system can function.
2. Needed services. The potential object must have a set of identifiable operations that can
change the value of its attributes in some way.
Specifying Attributes
Attributes describe an object that has been selected for inclusion in the analysis model. In
essence, it is the attributes that define the object—that clarify what is meant by the object in
the context of the problem space. For example, if we were to build a system that tracks
baseball statistics for professional baseball players, the attributes of the object player would
be quite different than the attributes of the same object when it is used in the context of the
professional baseball pension system. In the former, attributes such as name, position, batting
average, fielding percentage, years played, and games played might be relevant. For the
latter, some of these attributes would be meaningful, but others would be replaced (or
augmented) by attributes like average salary, credit toward full vesting, pension plan options
chosen, mailing address, and the like.
To develop a meaningful set of attributes for an object, the analyst can again study the
processing narrative (or statement of scope) for the problem and select those things that
reasonably "belong" to the object. In addition, the following question should be answered for
each object: "What data items (composite and/or elementary) fully define this object in the
context of the problem at hand?"
To illustrate, we consider the system object defined for SafeHome. Homeowner can
configure the security system to reflect sensor information, alarm response information,
activation/deactivation information, identification information, and so forth. Using the
content description notation defined for the data dictionary , we can represent these
composite data items in the following manner:
Each of the data items to the right of the equal sign could be further defined to an elementary
level, but for our purposes, they constitute a reasonable list of attributes for the system
object .
Defining Operations
Operations define the behavior of an object and change the object’s attributes in some way.
More specifically, an operation changes one or more attribute values that are contained within
the object. Therefore, an operation must have "knowledge" of the nature of the object's
attributes and must be implemented in a manner that enables it to manipulate the data
structures that have been derived from the attributes.
Although many different types of operations exist, they can generally be divided into three
broad categories: (1) operations that manipulate data in some way (e.g., adding, deleting,
reformatting, selecting), (2) operations that perform a computation, and (3) operations that
monitor an object for the occurrence of a controlling event.
As a first iteration at deriving a set of operations for the objects of the analysis model, the
analyst can again study the processing narrative (or statement of scope) for the problem and
select those operations that reasonably belong to the object. To accomplish this, the
grammatical parse is again studied and verbs are isolated. Some of these verbs will be
legitimate operations and can be easily connected to a specific object. For example, from the
SafeHome processing narrative , we see that "sensor is assigned a number and type" or that "a
master password is programmed for arming and disarming the system." These two phrases
indicate a number of things:
Upon further investigation, it is likely that the operation program will be divided into a
number of more specific suboperations required to configure the system. For example,
program implies specifying phone numbers, configuring system characteristics (e.g., creating
the sensor table, entering alarm characteristics), and entering password(s). But for now, we
specify program as a single operation.
In addition to the grammatical parse, we can gain additional insight into other operations by
considering the communication that occurs between objects. Objects communicate by passing
messages to one another.
Finalizing the Object Definition
The definition of operations is the last step in completing the specification of an object.
Operations were culled from a grammatical parse of the processing narrative for the system.
Additional operations may be determined by considering the "life history" of an object and
the messages that are passed among objects defined for the system.
The generic life history of an object can be defined by recognizing that the object must be
created, modified, manipulated or read in other ways, and possibly deleted. For the system
object, this can be expanded to reflect known activities that occur during its life (in this case,
during the time that SafeHome is operational). Some of the operations can be ascertained
from likely communication between objects. For example, sensor event will send a message
to system to display the event location and number; control panel will send system a reset
message to update system status; the audible alarm will send a query message; the control
panel will send a modify message to change one or more attributes without reconfiguring the
entire system object; sensor event will also send a message to call the phone number(s)
contained in the object. Other messages can be considered and operations derived. The
resulting object definition is shown in figure.
A similar approach would be used for each of the objects defined for SafeHome. After attributes and
operations are defined for each of the objects identified to this point, the beginnings of an OOA
model would be created.
Statechart Diagram
Object Diagram:
Object diagrams are a visual representation in UML (Unified Modeling Language) that illustrates the
instances of classes and their relationships within a system at a specific point in time. They display
objects, their attributes, and the links between them, providing a snapshot of the system’s structure
during execution. Since object diagrams depict behavior when objects have been instantiated, we
can study the behavior of the system at a particular instant.
In other words, “An object diagram in the Unified Modeling Language (UML), is a
diagram that shows a complete or partial view of the structure of a modeled system at
a specific time.
Object diagrams in UML are depicted using a simple and intuitive notations to show a
snapshot of a system at a specific point in time, displaying instances of classes and their
relationships.
What is an Object?
What is a Classifier?
In UML a classifier refers to a group of elements that have some common features like
methods, attributes and operations. A classifier can be thought of as an abstract metaclass
which draws a boundary for a group of instances having common static and dynamic
features.
For example:
When we instantiate a classifier in a system, the object we create represents an entity which
exists in the system. We can represent the changes in object over time by creating multiple
instance specifications. We use a rectangle to represent an object in an object diagram.
Inside the object box, attributes of the object are listed along with their specific values.
3. Link
We use a link to represent a relationship between two objects. We represent the number of
participants on the link for each, at the end of the link. The term link is used to specify a
relationship between two instance specifications or objects. We use a solid line to represent a
link between two objects.
For Example – In the figure below, an object of class Student is linked to an object of class
College.
4. Dependency Relationships
We use a dependency relationship to show when one element depends on another element. A
dependency is used to depict the relationship between dependent and independent entities in
the system.
Any change in the definition or structure of one element may cause changes to the
other.
For example – In the figure below, an object of Player class is dependent (or uses) an object
of Bat class.
5. Association
Association is a reference relationship between two objects (or classes). An association line
connects two object boxes, representing a relationship between instances of two classes. We
use association when one object references members of the other object. Association can be
uni-directional or bi-directional. We use an arrow to represent association.
For example – The object of Order class is associated with an object of Customer class.
6. Aggregation
Aggregation occurs when the lifecycle of the contained objects does not strongly
depend on the lifecycle of container objects.
For example – A library has an aggregation relationship with books. Library has books or
books are a part of library. The existence of books is independent of the existence of the
library.
7. Composition
Composition is a type of association where the child cannot exist independent of the other.
We use a filled diamond on the containing object with a line which joins it to the contained
object. Composition is also a special type of association. It is also a kind of parent child
relationship but it is not inheritance. So whenever independent existence of the child is not
possible we use a composition relationship.
Consider the example of a boy Gurkaran: Gurkaran is composed of legs and arms. Here
Gurkaran has a composition relationship with his legs and arms. Here legs and arms can’t
exist without the existence of their parent object.
5. Purpose of Object Diagrams
The main purpose of using object diagrams is:
They offer a detailed view of how objects interact with each other in specific
scenarios.
Implementation Guidance:
o They are valuable for integration testing, allowing testers to evaluate how
different objects collaborate and exchange information. This ensures that
integrated components of the system work seamlessly.
o Developers can use object diagrams to validate that the actual code aligns with
the intended relationships and interactions specified in the design. This helps
maintain consistency between the design and the implementation.
Scenario Illustration:
o Object diagrams are useful for illustrating and documenting specific scenarios
or use cases, providing a clear visual representation of how objects behave in
different situations.
2. Identify Objects: Identify specific instances or objects of each class that you want to
include in the diagram. These represent the actual things in your system.
3. Create Object Boxes: Draw rectangles to represent the specific instances or objects
of each class. Write the name of each object inside the box.
4. Add Attributes and Values: Inside each object box, list the attributes of that object
along with their specific values.
5. Draw Relationships: Connect the object boxes with lines to represent relationships
or associations between instances. Use arrows to indicate the direction of the
association if necessary.
6. Label Relationships: Label the relationships with multiplicity and role names if
needed. Label the association lines with a verb or phrase to describe the nature of the
relationship.
7. Review and Refine: Review your Object diagram to ensure it accurately represents
the system’s structure and relationships. Refine the diagram as needed based on
feedback and requirements.
8. Use Tools for Digital Drawing: While you can draw class diagrams on paper, using
digital tools can provide more flexibility and ease of modification. UML modeling
tools, drawing software, or even specialized diagramming tools can be helpful.
System Implementation:
o Object diagrams can be used for training purposes, helping new team members
understand the structure and behavior of specific instances in the system. They
also contribute to documentation by providing visual representations of object
relationships.
Chapter 5
Interaction Modeling
From the term Interaction, it is clear that the diagram is used to describe some type of
interactions among the different elements in the model. This interaction is a part of dynamic
behavior of the system.
Sequence and collaboration diagrams are used to capture the dynamic nature but from a
different angle.
We have two types of interaction diagrams in UML. One is the sequence diagram and the
other is the collaboration diagram. The sequence diagram captures the time sequence of the
message flow from one object to another and the collaboration diagram describes the
organization of objects in a system taking part in the message flow.
Following things are to be identified clearly before drawing the interaction diagram
The sequence diagram has four objects (Customer, Order, SpecialOrder and NormalOrder).
The following diagram shows the message sequence for SpecialOrder object and the same
can be used in case of NormalOrder object. It is important to understand the time sequence of
message flows. The message flow is nothing but a method call of an object.
The first call is sendOrder () which is a method of Order object. The next call is confirm ()
which is a method of SpecialOrder object and the last call is Dispatch () which is a method of
SpecialOrder object. The following diagram mainly describes the method calls from one
object to another, and this is also the actual scenario when the system is running.
The second interaction diagram is the collaboration diagram. It shows the object organization
as seen in the following diagram. In the collaboration diagram, the method call sequence is
indicated by some numbering technique. The number indicates how the methods are called
one after another. We have taken the same order management system to describe the
collaboration diagram.
Method calls are similar to that of a sequence diagram. However, difference being the
sequence diagram does not describe the object organization, whereas the collaboration
diagram shows the object organization.
To choose between these two diagrams, emphasis is placed on the type of requirement. If the
time sequence is important, then the sequence diagram is used. If organization is required,
then collaboration diagram is used.
The main purpose of both the diagrams are similar as they are used to capture the dynamic
behavior of a system. However, the specific purpose is more important to clarify and
understand.
Sequence diagrams are used to capture the order of messages flowing from one object to
another. Collaboration diagrams are used to describe the structural organization of the objects
taking part in the interaction. A single diagram is not sufficient to describe the dynamic
aspect of an entire system, so a set of diagrams are used to capture it as a whole.
Interaction diagrams are used when we want to understand the message flow and the
structural organization. Message flow means the sequence of control flow from one object to
another. Structural organization means the visual organization of the elements in a system.
Interaction diagram
A sequence diagram simply depicts the interaction between the objects in a sequential
order i.e. the order in which these interactions occur.
We can also use the terms event diagrams or event scenarios to refer to a sequence
diagram.
Sequence diagrams describe how and in what order the objects in a system function.
For example:
Here the user in seat reservation system is shown as an actor where it exists outside the
system and is not a part of the system.
1.2. Lifelines
A lifeline is a named element which depicts an individual participant in a sequence diagram.
So basically each instance in a sequence diagram is represented by a lifeline. Lifeline
elements are located at the top in a sequence diagram. The standard in UML for naming a
lifeline follows the following format:
If we want to model an unnamed instance, we follow the same pattern except now the
portion of lifeline’s name is left blank.
o A lifeline always portrays an object internal to the system whereas actors are
used to depict objects external to the system.
1.3. Messages
Communication between objects is depicted using messages. The messages appear in a
sequential order on the lifeline.
Synchronous messages
A synchronous message waits for a reply before the interaction can move forward. The
sender waits until the receiver has completed the processing of the message. The caller
continues only when it knows that the receiver has processed the previous message i.e. it
receives a reply message.
An asynchronous message does not wait for a reply from the receiver. The interaction moves
forward irrespective of the receiver processing the previous message or not. We use a lined
arrow head to represent an asynchronous message.
For example:
The creation of a new order on a e-commerce website would require a new object of Order
class to be created.
For example:
In the scenario below when the order is received by the user, the object of order class can be
destroyed.
Another example:
Consider a scenario where the device wants to access its webcam. Such a scenario is
represented using a self message.
1.7. Reply Message
Reply messages are used to show the message being sent from the receiver to the sender. We
represent a return/reply message using an open arrow head with a dotted line. The
interaction moves forward only when a reply message is sent by the receiver.
For example:
Consider the scenario where the device requests a photo from the user. Here the message
which shows the photo being sent is a reply message.
1.8. Found Message
A Found message is used to represent a scenario where an unknown source sends the
message. It is represented using an arrow directed towards a lifeline from an end point.
For example:
It can be due to multiple reasons and we are not certain as to what caused the hardware
failure.
For example:
1.10. Guards
To model conditions we use guards in UML. They are used when we need to restrict the flow
of messages on the pretext of a condition being met. Guards play an important role in letting
software developers know the constraints attached to a system or a particular process.
For example:
In order to be able to withdraw cash, having a balance greater than zero is a condition that
must be met as shown below.
The above sequence diagram depicts the sequence diagram for an emotion based music
player:
4. The device uses algorithms to detect the face and predict the mood.
o Understand the specific scenario or use case that you want to represent in the
sequence diagram. This could be a specific interaction between objects or the
flow of messages in a particular process.
3. Define Lifelines:
o Draw a vertical dashed line for each participant, representing the lifeline of
each object over time. The lifeline represents the existence of an object during
the interaction.
4. Arrange Lifelines:
o For each message, draw an activation bar on the lifeline of the sending
participant. The activation bar represents the duration of time during which the
participant is actively processing the message.
6. Draw Messages:
o Review the sequence diagram for clarity and correctness. Ensure that it
accurately represents the intended interaction. Refine as needed.
14. Tools:
o They provide a clear and visual representation of the flow of messages and
events in a specific scenario.
Requirements Clarification:
Abstraction Level:
Dynamic Nature:
o Sequence diagrams represent dynamic aspects of a system, and as a result,
they may change frequently during the development process. Keeping
sequence diagrams up-to-date with the evolving system can be a challenge,
especially in rapidly changing or agile development environments.
Ambiguity in Messages:
Real-Time Constraints:
Feeling lost in the vast world of System Design? It's time for a transformation! Enroll in our
Mastering System Design From Low-Level to High-Level Solutions - Live Course and
embark on an exhilarating journey to efficiently master system design concepts and
techniques.
UML Collaboration Diagram
The collaboration diagram is used to show the relationship between the objects in a system.
Both the sequence and the collaboration diagrams represent the same information but
differently. Instead of showing the flow of messages, it depicts the architecture of the object
residing in the system as it is based on object-oriented programming. An object consists of
several features. Multiple objects present in the system are connected to each other. The
collaboration diagram, which is also known as a communication diagram, is used to portray
the object's architecture in the system.
1. Objects: The representation of an object is done by an object symbol with its name
and class underlined, separated by a colon.
In the collaboration diagram, objects are utilized in the following ways:
o The object is represented by specifying their name and class.
o It is not mandatory for every class to appear.
o A class may constitute more than one object.
o In the collaboration diagram, firstly, the object is created, and then its class is
specified.
o To differentiate one object from another object, it is necessary to name them.
2. Actors: In the collaboration diagram, the actor plays the main role as it invokes the
interaction. Each actor has its respective role and name. In this, one actor initiates the
use case.
3. Links: The link is an instance of association, which associates the objects and actors.
It portrays a relationship between the objects through which the messages are sent. It
is represented by a solid line. The link helps an object to connect with or navigate to
another object, such that the message flows are attached to links.
4. Messages: It is a communication between objects which carries information and
includes a sequence number, so that the activity may take place. It is represented by a
labeled arrow, which is placed near a link. The messages are sent from the sender to
the receiver, and the direction must be navigable in that particular direction. The
receiver must understand the message.
When to use a Collaboration Diagram?
The collaborations are used when it is essential to depict the relationship between the object.
Both the sequence and collaboration diagrams represent the same information, but the way of
portraying it quite different. The collaboration diagrams are best suited for analyzing use
cases.
Following are some of the use cases enlisted below for which the collaboration diagram is
implemented:
1. o model collaboration among the objects or roles that carry the functionalities of use
cases and operations.
2. To model the mechanism inside the architectural design of the system.
3. To capture the interactions that represent the flow of messages between the objects
and the roles inside the collaboration.
4. To model different scenarios within the use case or operation, involving a
collaboration of several objects and interactions.
5. To support the identification of objects participating in the use case.
6. In the collaboration diagram, each message constitutes a sequence number, such that
the top-level message is marked as one and so on. The messages sent during the same
call are denoted with the same decimal prefix, but with different suffixes of 1, 2, etc.
as per their occurrence.