OBCA-244
SOFTWARE
ENGINEERING
Software Engineering
PROGRAMME DESIGN COMMITTEE BCA (CBCS)
COURSE DESIGN COMMITTEE
COURSE PREPARATION TEAM
PRINT PRODUCTION
Copyright Reserved 2024
All rights reserved. No Part of this publication which is material protected by this
copy right notice may be reproduced or transmitted or utilized or stored in any
form or by any means, now known or hereinafter invented electronic digital or
mechanical including photocopying scanning, recording or by any information
storage or retrieval system without prior permission from the publisher.
Information contained in this book has been obtained by its Authors from sources
believed to be reliable and are correct to the best of their knowledge. However,
the Publishers and its Authors shall in no event be liable for any errors omissions
or damages arising out of use of this information and specifically disclaim any
implied warranties or merchantability or fitness for any particular use.
2
Software Engineering
SOFTWARE ENGINEERING
Unit - 1 Software Product and Process ................................................... 4
Unit - 2 Software Requirements ........................................................... 39
Unit - 3 Analysis, Design Concepts and Pri-Nciples ............................. 84
Unit - 4 Testing .................................................................................. 130
Unit – 5 Software Project Management .............................................. 167
3
Software Engineering
UNIT - 1
SOFTWARE PRODUCT AND PROCESS
STRUCTURE
1.0 Objectives
1.1 Introduction
1.2 S/W Engineering Paradigm
1.3 Verification- Validation
1.4 Life Cycle Models
1.5 System Engineering
1.6 Computer Based System
1.7 Business Process Engineering Overview
1.8 Product Engineering Overview
1.9 Let Us Sum Up
1.10 Key Words
1.11 Some Useful Books
1.12 Answer to check your progress
1.13 Terminal Questions
1.0 OBJECTIVES
After studying this unit you will be able to:
Define about software product and process
Understand software engineering paradigm
Differentiate between verification and validation
Describe various life cycle models
Explain the concept of system engineering
Define about computer-based system
4
Software Engineering
1.1 INTRODUCTION
Software is a program or set of programs containing instructions that
provide desired functionality. Engineering is the process of designing and
building something that serves a particular purpose and finds a cost-
effective solution to problems.
Software Engineering is the process of designing, developing, testing, and
maintaining software. It is a systematic and disciplined approach to
software development that aims to create high-quality, reliable, and
maintainable software.
Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and
maintenance.
It is a rapidly evolving field, and new tools and technologies are constantly
being developed to improve the software development process.
By following the principles of software engineering and using the
appropriate tools and methodologies, software developers can create high-
quality, reliable, and maintainable software that meets the needs of its
users.
Software Engineering is mainly used for large projects based on software
systems rather than single programs or applications.
The main goal of Software Engineering is to develop software applications
for improving quality, budget, and time efficiency.
Software Engineering ensures that the software that has to be built should
be consistent, correct, also on budget, on time, and within the required
requirements.
Key Principles of Software Engineering
Modularity: Breaking the software into smaller, reusable components
that can be developed and tested independently.
Abstraction: Hiding the implementation details of a component and
exposing only the necessary functionality to other parts of the software.
5
Software Engineering
Encapsulation: Wrapping up the data and functions of an object into a
single unit, and protecting the internal state of an object from external
modifications.
Reusability: Creating components that can be used in multiple projects,
which can save time and resources.
Maintenance: Regularly updating and improving the software to fix bugs,
add new features, and address security vulnerabilities.
Testing: Verifying that the software meets its requirements and is free of
bugs.
Design Patterns: Solving recurring problems in software design by
providing templates for solving them.
Agile methodologies: Using iterative and incremental development
processes that focus on customer satisfaction, rapid delivery, and
flexibility.
Continuous Integration & Deployment: Continuously integrating the
code changes and deploying them into the production environment.
In the context of software engineering, a product is any software created
in response to a client's request. In other terms, a product is the outcome
of a planned and managed software project. A product's objective and
scope should be established before project planning.
A software product is made up of several components, including design
and test documentation, requirement specifications, and user manuals. The
developer and customer must first establish the product's aim and scope to
create a desirable product. The product objective offers information about
the product's goal, whereas the scope provides information about the
product's essential facts, functions, and behavior.
Components of Product
The best software products begin with an excellent value proposition, and
they must be carefully designed and extensively tested to ensure that value
is delivered to the end user. A software product's components include:
1. Product Design
It is the visual aesthetic and interactive interface in which users may
interact with the product.
6
Software Engineering
2. Functionality and Features
When people utilize a software product, they interact with it through
functionality.
3. Content
The data or details contained in a software product are referred to as its
content.
A process supports software development by providing the structure of a
comprehensive software development strategy. A collection of framework
activities is utilized for all forms of software projects. The process acts as
a template that may be reused by constructing instances of it and utilized
to direct the project.
In the object-oriented paradigm, it is equivalent to the class where objects
are generated by creating class instances. A process manages not only the
first development cycle but also subsequent cycles. The instance of the
process accepts successive changes in the software's requirements.
Activities of Software Process
There are various activities of the software process. Some activities are as
follows:
1. Software Specification
It describes the software's main features and the constraints surrounding
them.
2. Design and Implementation
During this step, the software is designed and programmed.
3. Verification and Validation
The developed and programmed software should ensure that it meets the
needed criteria and the needs of the client.
4. Software Evolution
Software should be modified over time to ensure that it meets the needs of
the client and the market.
7
Software Engineering
1.2 S/W ENGINEERING PARADIGM
Software paradigm refers to method and steps, which are taken while
designing the software. Programming paradigm is a subset of software
design paradigm which is future for other a subset of software
development paradigm. Software is considered to be a collection of
executable programming code, associated libraries, and documentation.
Software development paradigm is also known as software engineering,
all the engineering concepts pertaining to developments software applied.
It consists of the following parts as Requirement Gathering, Software
design, Programming, etc. The software design paradigm is a part
of software development.
It includes design, maintenance, and programming.
Software paradigm is a theoretical framework that serves as a guide for
the development and structure of a software system. There are several
software paradigms, including:
Imperative paradigm: This is the most common paradigm and is based
on the idea that a program is a set of instructions that tell a computer
what to do. It is often used in languages such as C and C++.
Object-oriented paradigm: This paradigm is based on the idea of
objects, which are self-contained units that contain both data and
behavior.
Functional paradigm: This paradigm is based on the idea that a program
is a set of mathematical functions that transform inputs into outputs. It is
often used in languages such as Haskell, Lisp, and ML.
Logic paradigm: This paradigm is based on the idea that a program is a
set of logical statements that can be used to infer new information. It is
often used in languages such as Prolog and Mercury.
The Software Development Life Cycle (SDLC) is a process that software
developers use to plan, design, develop, test, deploy, and maintain
software systems. The most common SDLC models include:
8
Software Engineering
Waterfall model: This model is based on the idea that software
development is a linear process, with each phase building on the previous
one.
Agile model: This model is based on the idea that software development
is an iterative process, with small
1.3 VERIFICATION- VALIDATION
Verification and Validation is the process of investigating whether a
software system satisfies specifications and standards and fulfills the
required purpose. Barry Boehm described verification and validation as
the following:
Verification: Are we building the product right?
Validation: Are we building the right product?
Verification
Verification is the process of checking that software achieves its goal
without any bugs. It is the process to ensure whether the product that is
developed is right or not. It verifies whether the developed product fulfills
the requirements that we have. Verification is simply known as Static
Testing.
Static Testing
Verification Testing is known as Static Testing and it can be simply termed
as checking whether we are developing the right product or not and also
whether our software is fulfilling the customer’s requirement or not. Here
are some of the activities that are involved in verification.
Inspections
Reviews
Walkthroughs
Desk-checking
9
Software Engineering
Fig 1.1 Verfication and validation
Validation
Validation is the process of checking whether the software product is up
to the mark or in other words product has high-level requirements. It is the
process of checking the validation of the product i.e. it checks what we are
developing is the right product. It is a validation of actual and expected
products. Validation is simply known as Dynamic Testing.
Dynamic Testing
Validation Testing is known as Dynamic Testing in which we examine
whether we have developed the product right or not and also about the
business needs of the client.
Here are some of the activities that are involved in Validation.
1. Black Box Testing
2. White Box Testing
3. Unit Testing
4. Integration Testing
10
Software Engineering
Check Your Progress- 1
1. Explain software engineering.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
2. Describe verification and validation?
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
3. Write about the components of software product?
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
1.4 LIFE CYCLE MODELS
SDLC is a process followed for software building within a software
organization. SDLC consists of a precise plan that describes how to
develop, maintain, replace, and enhance specific software.
The life cycle defines a method for improving the quality of software and
the all-around development process.
Stages of the Software Development Life Cycle
SDLC specifies the task(s) to be performed at various stages by a software
engineer or developer. It ensures that the end product is able to meet the
customer’s expectations and fits within the overall budget. Hence, it’s vital
for a software developer to have prior knowledge of this software
development process.
11
Software Engineering
Fig 1.2 Stages of the Software Development Life Cycle Model SDLC
The SDLC model involves six phases or stages while developing any
software. SDLC is a collection of these six stages, and the stages of SDLC
are as follows:
Stage-1: Planning and Requirement Analysis
Planning is a crucial step in everything, just as in software development.
In this same stage, requirement analysis is also performed by the
developers of the organization. This is attained from customer inputs, and
sales department/market surveys.
The information from this analysis forms the building blocks of a basic
project. The quality of the project is a result of planning. Thus, in this
stage, the basic project is designed with all the available information.
Fig 1.3 Stage-1: Planning and Requirement Analysis
12
Software Engineering
Stage-2: Defining Requirements
In this stage, all the requirements for the target software are specified.
These requirements get approval from customers, market analysts, and
stakeholders.
This is fulfilled by utilizing SRS (Software Requirement Specification).
This is a sort of document that specifies all those things that need to be
defined and created during the entire project cycle.
Fig 1.4 Stage-2: Defining Requirements
Stage-3: Designing Architecture
SRS is a reference for software designers to come up with the best
architecture for the software. Hence, with the requirements defined in
SRS, multiple designs for the product architecture are present in the
Design Document Specification (DDS).
This DDS is assessed by market analysts and stakeholders. After
evaluating all the possible factors, the most practical and logical design is
chosen for development.
13
Software Engineering
Fig 1.5 Stage 3: Design
Stage-4: Developing Product
At this stage, the fundamental development of the product starts. For this,
developers use a specific programming code as per the design in the DDS.
Hence, it is important for the coders to follow the protocols set by the
association. Conventional programming tools like compilers, interpreters,
debuggers, etc. are also put into use at this stage. Some popular languages
like C/C++, Python, Java, etc. are put into use as per the software
regulations.
Fig 1.6 Stage 4: Development
14
Software Engineering
Stage-5: Product Testing and Integration
After the development of the product, testing of the software is necessary
to ensure its smooth execution. Although, minimal testing is conducted at
every stage of SDLC. Therefore, at this stage, all the probable flaws are
tracked, fixed, and retested. This ensures that the product confronts the
quality requirements of SRS.
Documentation, Training, and Support: Software documentation is an
essential part of the software development life cycle. A well-written
document acts as a tool and means to information repository necessary to
know about software processes, functions, and maintenance.
Documentation also provides information about how to use the product.
Training in an attempt to improve the current or future employee
performance by increasing an employee’s ability to work through learning,
usually by changing his attitude and developing his skills and
understanding.
Fig 1.7 Stage 5: Testing
Stage-6: Deployment and Maintenance of Products
After detailed testing, the conclusive product is released in phases as per
the organization’s strategy. Then it is tested in a real industrial
environment. It is important to ensure its smooth performance. If it
performs well, the organization sends out the product as a whole. After
retrieving beneficial feedback, the company releases it as it is or with
auxiliary improvements to make it further helpful for the customers.
15
Software Engineering
However, this alone is not enough. Therefore, along with the deployment,
the product’s supervision.
Fig 1.8 Stage 6: Deployment and Maintenance
Software Development Life Cycle Models
To this day, we have more than 50 recognized SDLC models in use. But
None of them is perfect, and each brings its favourable aspects and
disadvantages for a specific software development project or a team.
Let’s discuss the top five most popular SDLC models .
1. Waterfall Model
It is the fundamental model of the software development life cycle. This
is a very simple model. The waterfall model is not in practice anymore,
but it is the basis for all other SDLC models. Because of its simple
structure, the waterfall model is easier to use and provides a tangible
output. In the waterfall model, once a phase seems to be completed, it
cannot be changed, and due to this less flexible nature, the waterfall model
is not in practice anymore.
The Waterfall Model was the first Process Model to be introduced. It is
also referred to as a linear-sequential life cycle model. It is very simple to
understand and use. In a waterfall model, each phase must be completed
before the next phase can begin and there is no overlapping in the phases.
The Waterfall model is the earliest SDLC approach that was used for
software development.
The waterfall Model illustrates the software development process in a
linear sequential flow. This means that any phase in the development
process begins only if the previous phase is complete. In this waterfall
model, the phases do not overlap.
16
Software Engineering
Waterfall approach was first SDLC Model to be used widely in Software
Engineering to ensure success of the project. In "The Waterfall" approach,
the whole process of software development is divided into separate phases.
In this Waterfall model, typically, the outcome of one phase acts as the
input for the next phase sequentially.
The following illustration is a representation of the different phases of the
Waterfall Model.
Fig 1.9 Waterfall model
2. Agile Model
The agile model was mainly designed to adapt to changing requests
quickly. The main goal of the Agile model is to facilitate quick project
completion. The agile model refers to a group of development processes.
These processes have some similar characteristics but also possess certain
subtle differences among themselves.
Agile SDLC model is a combination of iterative and incremental process
models with focus on process adaptability and customer satisfaction by
rapid delivery of working software product. Agile Methods break the
product into small incremental builds. These builds are provided in
17
Software Engineering
iterations. Each iteration typically lasts from about one to three weeks.
Every iteration involves cross functional teams working simultaneously
on various areas like −
Planning
Requirements Analysis
Design
Coding
Unit Testing and
Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer
and important stakeholders.
3. Iterative Model
In the iterative model, each cycle results in a semi-developed but
deployable version; with each cycle, some requirements are added to the
software, and the final cycle results in the software with the complete
requirement specification.
In the Iterative model, iterative process starts with a simple
implementation of a small set of the software requirements and iteratively
enhances the evolving versions until the complete system is implemented
and ready to be deployed.
An iterative life cycle model does not attempt to start with a full
specification of requirements. Instead, development begins by specifying
and implementing just part of the software, which is then reviewed to
identify further requirements. This process is then repeated, producing a
new version of the software at the end of each iteration of the model.
4. Spiral Model
The spiral model is one of the most crucial SDLC models that provides
support for risk handling. It has various spirals in its diagrammatic
representation; the number of spirals depends upon the type of project.
Each loop in the spiral structure indicates the Phases of the Spiral model.
The spiral model combines the idea of iterative development with the
systematic, controlled aspects of the waterfall model.
18
Software Engineering
This Spiral model is a combination of iterative development process model
and sequential linear development model i.e. the waterfall model with a
very high emphasis on risk analysis. It allows incremental releases of the
product or incremental refinement through each iteration around the spiral.
Fig 1.10 Spiral model
5. V-Shaped Model
The V-shaped model is executed in a sequential manner in V-shape. Each
stage or phase of this model is integrated with a testing phase. After every
development phase, a testing phase is associated with it, and the next phase
will start once the previous phase is completed, i.e., development &
testing. It is also known as the verification or validation model.
The V-model is an SDLC model where execution of processes happens in
a sequential manner in a V-shape. It is also known as Verification and
Validation model.
19
Software Engineering
The V-Model is an extension of the waterfall model and is based on the
association of a testing phase for each corresponding development stage.
This means that for every single phase in the development cycle, there is
a directly associated testing phase. This is a highly-disciplined model and
the next phase starts only after completion of the previous phase.
Fig 1.11 V shaped model
6. Big Bang Model
The Big Bang model in SDLC is a term used to describe an informal and
unstructured approach to software development, where there is no specific
planning, documentation, or well-defined phases.
The Big Bang model is an SDLC model where we do not follow any
specific process. The development just starts with the required money and
efforts as the input, and the output is the software developed which may
or may not be as per customer requirement.
This Big Bang Model does not follow a process/procedure and there is a
very little planning required. Even the customer is not sure about what
exactly he wants and the requirements are implemented on the fly without
much analysis.
20
Software Engineering
Usually this model is followed for small projects where the development
teams are very small.
1.5 SYSTEM ENGINEERING
Systems engineering is the interdisciplinary approach of engineering
management that focuses on designing and managing complex systems.
Systems engineering evaluates individual elements and determines how
they can work together as a system that contributes to and accomplishes
specific goals. Engineers examine and use systems principles with
technological, mechanical and scientific methods. Engineers design
systems to interact with the surrounding environment in a particular way.
Engineers in this discipline develop systems that produce a particular
outcome, but that outcome depends on an engineer's industry. Not all
engineered systems are technological, but all serve a designated purpose.
For example, a systems engineer working in construction might develop a
better technical system for allocating resources to project sites. Another
example is an engineer working in manufacturing who's designing a
system for the assembly of automobile engines. Engineered systems often
include:
Hardware
Software
Technical equipment
Facilities
Personnel
Processes
Procedures
Policies
Natural elements
Sensors
Instrumentation
21
Software Engineering
Functions performed by systems engineers
Systems engineers identify the need for new or improved systems and
work through the development of these innovations in many industries. A
systems engineer also performs regular duties daily, though these may
vary based on where the engineer works.
Some of these daily responsibilities can include:
Identify challenges for which consumers need a solution
Develop step-by-step solutions for pending issues
Schedule the development of new systems
Perform a cost analysis for new projects
Oversee the manufacturing of new systems
Maintain engineering documents
Analyze reliability, failure rates and yield
Assess each stage of operations in a system for efficiency and
effectiveness
Adjust systems as needed to improve performance
Perform quantitative risk assessment for a system
Lead project teams
Monitor industry trends
Specialties for systems engineers
Systems engineers can work in various industries, developing specialized
systems to meet the needs of a diverse client base. Here's a list of systems
engineering specializations:
Software systems
Engineers working with software systems design and develop software
solutions.
They perform full lifecycle validation of systems and solutions to identify
technical constraints and capabilities. They develop test plans, scripts,
cases and procedures to evaluate software systems and identify
improvement areas. Engineers might also specialize in software systems
for health care, education or human resources.
22
Software Engineering
Network systems
Systems engineers who work with networks focus on the network
hardware and software a business uses to accomplish its regular tasks.
They manage users within the network and optimize network operations
regularly. Engineers also make repairs and upgrades to keep the network
functioning efficiently. These engineers might also improve systems for
the telecommunication industry and might specialize in cellular networks
or satellite systems.
Product development
Product development systems are those that produce new items. A systems
engineer working in product development evaluates the manufacturing
systems in place for production for companies that might be in industries
such as manufacturing, aerospace and defense. They identify
inefficiencies and seek to eliminate any use of excess time, effort or
materials. A systems engineer in this area focuses on minimizing waste
and increasing output.
Logistics
Logistics system engineers evaluate the distribution process for finished
goods. They design systems that improve the storage, transportation and
delivery of goods. An engineer working with logistics may develop new
methods for picking items from warehouse shelves, improved systems for
loading trucks and better transportation routing solutions for delivery.
Biosystems
Biosystems engineers work with systems related to the natural
environment. These may include water treatment plants, waste
management operations or food processing facilities.
A biosystems engineer focuses on the health and safety considerations
inherent in this industry to develop improved systems for handling
essential tasks in these areas.
Transportation
Transportation systems engineers work with the systems that transport
people and goods from one place to another. They may work with areas
such as traffic maintenance or emergency management. These engineers
23
Software Engineering
work closely with civil engineers to improve transportation systems and
management.
Stages of systems engineering
Engineers who work on systems often approach projects carefully to
understand complex systems. Whether they're designing a new system or
changing an existing one, it's essential to understand every stage of the
process.
Systems engineering typically happens in four stages, which are:
1. Task definition
In the first stage, the engineer specifies the new system's goal. They may
research specific needs within the industry, identify how current systems
are underperforming and meet with managers, clients or stakeholders to
better understand what's needed from the system.
2. Conception
In this phase, the engineer establishes a model for the system they plan to
develop. Engineers also consider alternative systems during this stage.
3. Design
The engineer completes blueprints, models and plans. They maintain
meticulous documentation throughout the engineering process, which
specifies the requirements for the design and procurement of systems and
system elements.
4. Implementation
In the final stage, the engineer manufactures and tests the new system. The
systems engineer carefully evaluates the system's performance, addresses
potential areas for improvement and proves that their newly developed
system meets all original specifications outlined in the first stage of the
process.
1.6 COMPUTER BASED SYSTEM
The computer based system has been introduced in the market, many years
ago. It has made its powerful place in some decades of time. That the
applications were very general like airline reservation. As time pass by
24
Software Engineering
such systems are becoming an essential and important part of every task
of any organization. The system engineers associated with such system
contributed a lot to make them a great success.
As we that the computer based system do not exist in a vacuum. They
contain a lot of components to be built. Generally when the software and
hardware are kept together in a form of a system. They must interact with
human, with software tasks, hardware tasks, databases etc. But as time
pass out their use has gradually expanded and now it’s seen that the
computer has almost covered each and every area and related
applications of that field of any organization. Small to small or big to big
all the works are directly done by the various applications of computer
based system. The definition of computer based system given by Webster
dictionary is.
A set or arrangement of elements that are organized to accomplish some
method. Procedure or control by processing information. So, the computer
based systems are the collection of its various elements, as shown in figure
below.
Fig 1.12 System elements
There are total six main elements of any computer based system. A
computer based system may be the combination of all or some of these
elements. They are described below:
1. Software: Software may be any computer program, data structure or
any associated document to accomplish a required task.
25
Software Engineering
2. Hardware: Hardware, element may be any electronic device like CPU,
memory keyboard, VDU, IC etc.
3. Human: Human factor may be the user or operator of the system.
4. Database: A large, organized collection of information which is
associated with the software and can be accessed through software.
5. Documentation: Report form manual or other descriptive material
which describes the various tasks of the system.
6. Procedures: A method or a sequence of steps, to be followed which
describes the specific use of each system element or the system itself.
It is not necessary that all of these elements should be collectively
combined in a particular manner; rather they can be combined in many
ways.
One property of the computer based systems is that even an element can
act as a macro element of the large system, means it can act as a
small part of a large system. So this is the system engineer task to define
the elements of the computer based system.
1.7 BUSINESS PROCESS ENGINEERING OVERVIEW
Business process engineering refers to the study of business processes so
that they can be improved and streamlined for optimum efficiency in terms
of both performance and cost.
Every business possesses its own set of operations and transactions. How
organisations perform their business activities can influence their success,
so it benefits them to review business processes and make necessary
improvements. Learning what process engineering in business entails and
how it helps organisations monitor their performance and improvement
can encourage business professionals and organisations to adopt the
practice. In this article, we discuss the meaning of business process
engineering (BPE), the steps for this approach, its importance and the
factors that can affect it.
Business process engineering is a method in which organisations analyse
their current business practices and create new strategies to increase
26
Software Engineering
overall efficiency, productivity and operational costs. The aim of BPE is
to discover the issues with a company's operations and redesign, recreate
and implement new processes to ensure higher productivity. BPE works
with an approach based on recent happenings and research to make
significant changes that cause subsequent improvement.
A professional within an organisation usually manages the process.
Sometimes organisations invite external consultants to analyse their
business model and provide more effective ideas or strategies. External
professionals typically view the business as a new system and can identify
issues with the processes objectively. Organisations may benefit from a
thorough review and strategic process.
5 steps to a BPE approach
The following lists the steps for performing process engineering for a
business:
1. Analyse the current mode of operation (CMO)
The first step in the BPE approach is analysing a business's CMO. This
process seeks to understand a business's current practices, techniques,
strategies and technologies to achieve results. Studying interrelationships
and collaboration within an organisation may also help you fully
understand its dynamics. It's beneficial to gather sufficient data about the
present operational procedures because it works as a comparison medium
after implementing the proposed changes.
2. Identify and analyse opportunities for improvement
Determine the points or areas within a CMO that require some
improvement. You may also analyse the possibility of completely
changing a business process if it's helpful. Discuss the issues facing the
existing business processes and validate why an improvement or change
is necessary. This step is important because it allows you to determine
what changes you might make and the exact points to implement the
changes.
3. Define the future mode of operation (FMO)
Once you analyse the CMO, you can determine areas that require changes
and improvement to create the FMO. With the knowledge about how a
27
Software Engineering
business currently operates and what current industry trends are, you can
design an improved mode of operation. The FMO aims to solve any issues
the current operational methods possess and provides adjustments in
lacking or outdated areas. These changes could involve introducing new
technologies, operations or products.
4. Develop a gap analysis and transition plan
This stage allows you to analyse improvements or changes in the business
process and develop how the transition to FMO may occur.
Gap analysis allows you to fully understand the new strategy,
methodology, timeline and all the expected changes. The transition plan
defines the practical steps to adopt the FMO as the new practice. It's
important to design a good transition plan to ensure the process goes
smoothly and produces the optimum results.
5. Implement the new strategy
Once there's an official plan, you can introduce the new strategy.
Implementation is the stage where you test the FMO to observe if it
produces the intended results. If the results aren't desirable, you can review
the previous steps and make necessary changes to ensure improvements.
It's beneficial for a team to test the implementation process first to confirm
its functionality and productivity. When the FMO works on a small scale,
an organisation may decide to extend its scope until the new process
becomes standard.
Importance of BPE:
Undergoing BPE may be a worthy investment for different reasons. A
company's goals and performance might influence its decision to
undertake a BPE process. The existing business practices may seem
efficient and effective, but improvements are always possible. Allowing a
business process engineer to analyse and propose changes means
companies are willing to review their operations and adopt new techniques
despite the cost.
For example, the technology industry is constantly advancing. This means
that scientists, researchers and engineers create new technologies that are
more efficient and productive than older ones. Therefore, organisations
28
Software Engineering
that rely on technology may benefit from BPE by analysing their
technological practices and implementing more recent improvements to
produce better results.
1.8 PRODUCT ENGINEERING OVERVIEW
Product engineering is creating and seeing a product through its entire life
cycle from conception to end-of-life. Product engineers are responsible for
designing, developing, testing, and maintaining products. This is true for
both physical and digital software products.
Product engineering involves overseeing many aspects of the product,
including its quality, cost, performance, usability, reliability, lifespan, and
serviceability. Without product engineering, a product would remain an
idea, so it plays a crucial role in developing a product. The industry of
product engineering is on the rise. According to Allied Market Research,
the global product engineering services market size was valued at $1085.8
billion in 2021 and is projected to reach $1610.6 billion by 2031.
Benefits of products engineering
There are several benefits of product engineering, including:
1. Improved Product Quality: Through the use of engineering
techniques and tools, product engineers can design and develop products
that are more reliable, efficient, and effective. The rigorous process of
testing and validating a product ensures that a high-quality product is
produced.
2. Cost Savings: By identifying and fixing issues early on in the
development process and constantly working to improve the product,
product engineers can help to reduce costs.
3. Increased Productivity: The ever-expanding field of Artificial
Intelligence (AI) and Machine Learning can increase productivity for
product engineers. Automating specific tasks can streamline the
development process.
4. Improved Customer Satisfaction: Since product engineering means
29
Software Engineering
being involved in a product’s entire life, from conception to end-of-life,
product engineers can ensure that customer needs and requirements are
being met throughout the process.
Product engineers interact with customers and users to solve problems and
work to improve the product based on feedback.
5. Increased Innovation: Product engineering can help drive innovation
by encouraging the development of new and improved products and
keeping up to date with new technologies and materials. Taking advantage
of the latest developments in AI and Machine Learning and being aware
of new technologies on the horizon will help increase innovation. So many
people engage in creating a product, including product managers,
designers, and technical architects who can work together to ensure they
are driving innovation.
6. Time-to-market advantage: Product engineers work closely with
design teams to ensure the product development process is streamlined and
issues are detected early on.
Phases of product engineering
The phases of product engineering typically include the following steps:
1. Concept Development: This phase involves generating ideas and
concepts for new products. It includes market research, customer needs
analysis, and feasibility studies to determine whether a concept is worth
pursuing.
2. Design: Once an idea is finalized, the design phase begins. This phase
involves the creation of detailed specifications, drawings, and models of
the product. One of the key components of this phase is determining what
features are necessary for a product and what would be nice to include.
Designing includes selecting materials, components, and manufacturing
processes, which means many people are involved – product managers,
designers, and technical architects.
3. Development: The development phase involves building and testing
prototypes in a timely fashion. This includes creating software and
hardware systems and integrating those components into a cohesive
30
Software Engineering
whole. Development teams must ensure that they can overcome
continuous disruptions in the product engineering landscape.
4. Testing and Validation: This phase involves the evaluation of the
product to ensure that it meets all design specifications and requirements.
It includes testing for performance, reliability, usability, and safety. This
also includes compliance testing and quality assurance (QA). QA services
can consist of end-to-end testing, test automation, and performance
testing.
5. Launch: In this phase, the product is released to the market. It is
heavily monitored for user feedback, and the product is refined and
enhanced based on the input. Depending on the product, the launch phase
would be when a product is implemented for a client or customer.
6. Maintenance and Support: This phase includes the development of
upgrades and updates, troubleshooting and problem resolution for
customers and users, and end-of-life management. It involves the overall
ongoing support and maintenance of the product.
These phases may vary depending on the size of the project and the
industry you are working in. Some industries may have additional phases
like regulatory compliance, certifications, and other more specific phases.
Responsibilities of a product engineer:
Product engineers are responsible for seeing a product through every phase
of its life cycle, from concept to end of life. The list of responsibilities for
a product engineer may vary depending on the company and industry but
include the following.
Product engineers have to design and develop the product, meaning they
develop both the hardware and software components and figure out how
to implement them into the completed product.
Engineers are also responsible for testing the product once it has been
developed – including testing for performance, reliability, and safety.
Managing costs and identifying cost-saving opportunities and the financial
impact of design choices is an important part of a product engineer’s job.
Product engineers must support manufacturing teams to ensure products
are built with the right specifications.
31
Software Engineering
They’re also responsible for creating and maintaining technical
documentation, including design specifications, test plans, and user
manuals.
Once a product is launched, engineers are responsible for problem-solving
and troubleshooting it, whether there are flaws in its design, production,
or usage. This includes continuously improving the product through
research and tests.
Product engineers must also ensure the product complies with industry
standards and has the proper certifications.
Product engineering use cases
Product engineering is applicable to a wide range of industries and
applications, including the following:
1. Consumer electronics: Product engineers in the electronics industry
are responsible for designing and developing products like smartphones,
laptops, and other consumer electronic devices.
2. Automotive: In the automotive industry, product engineers are
responsible for designing and developing various products – from engine
components to complete vehicles.
3. Medical Devices: Product engineers in the medical industry are
responsible for designing and developing products ranging from mobility
aids, such as wheelchairs and walkers, to large-scale diagnostic equipment
like MRI machines and X-ray scanners.
4. Industrial Equipment: Product engineers in this industry are
responsible for designing and developing products such as machinery,
tools, and industrial control systems used to manufacture or handle another
product.
5. Internet of Things (IoT): Product engineers in IoT have varying
responsibilities depending on the industry, but they include the following:
designing and developing devices, software, sensors, and systems that
connect to the internet, as well as designing, coding, and testing features
of devices.
32
Software Engineering
6. Software: Product engineers in the software industry are responsible
for designing, developing, testing, and implementing software
applications and systems that meet the needs of customers and
stakeholders. Engineers manage the entire software product lifecycle from
conception to production.
Check Your Progress-2
1. Discuss about the stages of systems engineering.
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
2. What is Business Process Engineering?
..........................................................................................................
..........................................................................................................
..........................................................................................................
3. Why is the main purpose of using spiral model?
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
1.9 LET US SUM UP
Software is a program or set of programs containing instructions
that provide desired functionality.
Software Engineering is the process of designing, developing,
testing, and maintaining software. It is a systematic and disciplined
approach to software development that aims to create high-quality,
reliable, and maintainable software.
A software product is made up of several components, including
design and test documentation, requirement specifications, and user
manuals.
33
Software Engineering
Software paradigm refers to method and steps, which are taken
while designing the software. Programming paradigm is a subset
of software design paradigm which is future for other a subset of
software development paradigm.
Verification and Validation is the process of investigating
whether a software system satisfies specifications and standards
and fulfills the required purpose.
SDLC is a process followed for software building within a
software organization. SDLC consists of a precise plan that
describes how to develop, maintain, replace, and enhance specific
software.
Systems engineering evaluates individual elements and determines
how they can work together as a system that contributes to and
accomplishes specific goals.
Product engineering is creating and seeing a product through its entire
life cycle from conception to end-of-life. Product engineers are
responsible for designing, developing, testing, and maintaining
products. This is true for both physical and digital software products.
Business process engineering refers to the study of business processes
so that they can be improved and streamlined for optimum efficiency
in terms of both performance and cost.
A product is any software created in response to a client's request. In
other terms, a product is the outcome of a planned and managed
software project. A product's objective and scope should be
established before project planning.
1.10 KEY WORDS
Software paradigm: It is a theoretical framework that serves as a
guide for the development and structure of a software system.
34
Software Engineering
Verification: It is the process of checking that software achieves its
goal without any bugs. It is the process to ensure whether the product
that is developed is right or not.
Validation: It is the process of checking whether the software
product is up to the mark or in other words product has high-level
requirements. It is the process of checking the validation of the product
i.e. it checks what we are developing is the right product.
Waterfall approach: In "The Waterfall" approach, the whole process
of software development is divided into separate phases. In this
Waterfall model, typically, the outcome of one phase acts as the input
for the next phase sequentially.
Agile model: Agile SDLC model is a combination of iterative and
incremental process models with focus on process adaptability and
customer satisfaction by rapid delivery of working software product.
Iterative model: In the iterative model, each cycle results in a semi-
developed but deployable version; with each cycle, some requirements
are added to the software, and the final cycle results in the software with
the complete requirement specification.
Spiral model: The spiral model combines the idea of iterative
development with the systematic, controlled aspects of the waterfall
model. This Spiral model is a combination of iterative development
process model and sequential linear development model i.e. the
waterfall model with a very high emphasis on risk analysis. It allows
incremental releases of the product or incremental refinement through
each iteration around the spiral.
V model: The V-model is an SDLC model where execution of
processes happens in a sequential manner in a V-shape. It is also known
as Verification and Validation model.
Big Bang model: The Big Bang model in SDLC is a term used to
describe an informal and unstructured approach to software
development, where there is no specific planning, documentation, or
well-defined phases.
35
Software Engineering
SRS: A software requirements specification (SRS) is a detailed
description of a software system to be developed with its functional and
non-functional requirements.
1.11 ANSWER TO CHECK YOUR PROGRESS
Refer 1 for Answer to check your progress- 1
Software Engineering is the process of designing, developing, testing,
and maintaining software. It is a systematic and disciplined approach to
software development that aims to create high-quality, reliable, and
maintainable software.
Refer 1 for Answer to check your progress- 1
Verification and Validation is the process of investigating whether a
software system satisfies specifications and standards and fulfills the
required purpose. Barry Boehm described verification and validation as
the following:
Verification: Are we building the product right?
Validation: Are we building the right product?
Refer 1 for Answer to check your progress- 1
A software product's components include:
1. Product Design
It is the visual aesthetic and interactive interface in which users may
interact with the product.
2. Functionality and Features
When people utilize a software product, they interact with it through
functionality.
3. Content
The data or details contained in a software product are referred to as its
content.
Refer 2 for Answer to check your progress- 2
Systems engineering typically happens in four stages, which are:
36
Software Engineering
1. Task definition
In the first stage, the engineer specifies the new system's goal. They may
research specific needs within the industry, identify how current systems
are underperforming and meet with managers, clients or stakeholders to
better understand what's needed from the system.
2. Conception
In this phase, the engineer establishes a model for the system they plan to
develop. Engineers also consider alternative systems during this stage.
3. Design
The engineer completes blueprints, models and plans. They maintain
meticulous documentation throughout the engineering process, which
specifies the requirements for the design and procurement of systems and
system elements.
4. Implementation
In the final stage, the engineer manufactures and tests the new system. The
systems engineer carefully evaluates the system's performance, addresses
potential areas for improvement and proves that their newly developed
system meets all original specifications outlined in the first stage of the
process.
Refer 2 for Answer to check your progress- 2
Business process engineering is a method in which organisations analyse
their current business practices and create new strategies to increase
overall efficiency, productivity and operational costs. The aim of BPE is
to discover the issues with a company's operations and redesign, recreate
and implement new processes to ensure higher productivity. BPE works
with an approach based on recent happenings and research to make
significant changes that cause subsequent improvement.
Refer 2 for Answer to check your progress- 2
The spiral model is one of the most crucial SDLC models that provides
support for risk handling. It has various spirals in its diagrammatic
representation; the number of spirals depends upon the type of project.
Each loop in the spiral structure indicates the Phases of the Spiral
model.
37
Software Engineering
The spiral model combines the idea of iterative development with the
systematic, controlled aspects of the waterfall model. This Spiral model
is a combination of iterative development process model and sequential
linear development model i.e. the waterfall model with a very high
emphasis on risk analysis. It allows incremental releases of the product
or incremental refinement through each iteration around the spiral.
1.12 SOME USEFUL BOOKS
Ian Sommerville, “Software engineering”, Seventh Edition, Pearson
Education Asia, 2007.
Roger S. Pressman, “Software Engineering – A practitioner’[Link]
ach”, Sixth Edition, McGraw-Hill International Edition, 2005.
Integrated approach to Software Engineering, 3rd Edition., Pankaj J
olate,Narosa Publication.
Introduction to Software Engineering by Ronald J. Leach · 2018
Software Engineering by K.K. Aggarwal · 2005
1.13 TERMINAL QUESTIONS
1. Write about the key Principles of Software Engineering?
2. Explain Software paradigm and its types?
3. Write about the stages of SDLC?
4. How does agile model help to facilitate quick project completion?
5. Explain V-shaped model along with a diagram?
6. What is system engineering? Explain the functions performed by
systems engineers?
7. Describe six main elements of a computer based system?
8. Write about the steps to a Business Process Engineering approach?
9. What are the benefits of products engineering?
10. Write about the activities of Software Process?
38