Software Engg - Week-02
Software Engg - Week-02
• Process Improvement
Testing Approach
Process Cycle
Customer Involvement
Example con’t
Software
Software
specification (or Software verification
Software design and evolution (software
requirements and validation:
implementation: maintenance):
engineering): The software must
The software is to be The software is being
Define the main conforms to it’s
designed and modified to meet
functionalities of the specification and meets
programmed. customer and market
software and the the customer needs.
requirements changes.
constrains around them.
Linear and Parallel Software
• A linear process flow executes each of the five framework activities in sequence, beginning with
communication and culminating with deployment.
Planning Construction
Parallel Process
• Executes One Or More Activities In Parallel With Other Activities.
Iterative Process Flow
• An iterative process flow repeats one or more of the activities before proceeding
to the next.
Evolutionary Process
• An evolutionary process flow executes the activities in a
“circular” manner.
Software Process Model
• A software process model is an abstraction of the actual process, which is being described.
• It can also be defined as a simplified representation of a software process.
• Each model represents a process from a specific perspective.
• Basic software process models on which different type of software process models can be
implemented
Waterfall Model
• The waterfall model is a sequential approach, where each fundamental activity of a process
represented as a separate phase, arranged in linear order.
• In the waterfall model, you must plan and schedule all of the activities before starting working on
them (plan-driven process).
• The waterfall model, sometimes called the classic life cycle,
Waterfall Model
1. Embedded systems where the software has to interface with hardware systems. Because of
the inflexibility of hardware
• For example, consider an embedded system in a car's anti-lock braking system. The hardware components
responsible for processing sensor data and controlling the brakes have specific functionalities and cannot be
easily modified or upgraded after manufacturing.
.
Waterfall - con’t
2. Critical systems where there is a need for extensive safety and security analysis of the
software specification and design
For example, consider an aircraft's flight control system. The specification and design
documents must detail how the system responds to various inputs, ensures stability, and
includes fail-safe mechanisms.
Waterfall - con’t
3. Large software systems that are part of broader engineering systems developed by
several partner companies.
eg: such as a modern electric vehicle (EV) with an integrated charging infrastructure. This
example involves large software systems as part of a broader engineering system, and the
hardware, both in the vehicle and the charging infrastructure, is developed using a common
model to streamline collaboration and interoperability.
Water Fall Model
• Requirements analysis and definition
• The system’s services, constraints, and goals are established by consultation with system users. They are
then defined in detail and serve as a system specification.
Component
Integration
a
t io
Design
n
Testing
n
a t io
id
Val
Code Unit
Generation Testing
Executable
Product
Issues With Waterfall Model
• Real projects rarely follow the sequential flow that the model proposes. Although the linear model
can accommodate iteration, it does so indirectly. As a result, changes can cause confusion as the
project team proceeds.
• It is often difficult for the customer to state all requirements explicitly. The waterfall model
requires this and has difficulty accommodating the natural uncertainty that exists at the beginning
of many projects.
• The customer must have patience. A working version of the program(s) will not be available until
late in the project time span. A major blunder, if undetected until the working program is reviewed,
can be disastrous.
Content
• Incremental development
• Incremental development benefits,
• Incremental development problems,
• Integration and configuration,
• Types of reusable software
waterfall
Water Fall Model Phases
Plan-driven Approaches
• Plan-driven processes are processes where all of the process activities are planned
in advance and progress is measured against this plan.
• The waterfall model is not the right process model in situations where informal
team communication is possible and software requirements change quickly.
Drawback of Water Fall Model
• A Previous phase has to be complete before moving onto the next phase.
• Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing
customer requirements.
• The waterfall model is mostly used for large systems engineering projects where a system is
developed at several sites.
Incremental Development
• Incremental development is based on the idea of developing an initial
implementation, getting feedback from users and others, and evolving
the software through several versions until the required system has
been developed.
Incremental Development-Process
Incremental Development Benefits
The cost of implementing requirements changes is reduced. The amount of analysis and documentation that
has to be redone is significantly less than is required with the waterfall model.
It is easier to get customer feedback on the development work that has been done. Customers can comment
on demonstrations of the software and see how much has been implemented. Customers find it difficult to
judge progress fromsoftware design documents.
Early delivery and deployment of useful software to the customer is possible, even if all of the functionality
has not been included. Customers are able to use and gain value from the software earlier than is possible
with a waterfall process..
Incremental
Approach Has Two
Problems:
Problems might cause due to
system architecture as such not all
requirements collected up front for
the entire software lifecycle
Integration and configuration
• Based on software reuse where systems are integrated from existing components
or application systems (sometimes called COTS -Commercial-off-the-shelf)
systems).
• Reused elements may be configured to adapt their behaviour and functionality to a
user’s requirements
• Reuse is now the standard approach for building many types of business system
Types of reusable software
• Stand-alone application systems (sometimes called COTS) that are configured for
use in a particular environment.
• Collections of objects that are developed as a package to be integrated with a
component framework such as .NET or J2EE.
• Web services that are developed according to service standards and which are
available for remote invocation.
Reuse oriented The requirements are
modified to reflect the
software engineering available components,
and the system
specification is re-
defined.
• In the waterfall model, they are organized in sequence, whereas in incremental development they
are interleaved.
• How these activities are carried out depends on the type of software being developed, the
experience and competence of the developers, and the type of organization developing the
software.
Software specification/ Requirements Engineering
• Software specification or requirements engineering is the process of understanding and defining
what services are required from the system and identifying the constraints on the system’s
operation and development.
• Requirements engineering is a particularly critical stage of the software process, as mistakes made
at this stage inevitably lead to later problems in the system design and implementation.
• Before the requirements engineering process starts, a company may carry out a feasibility or
marketing study to assess whether or not there is a need or a market for the software
Requirements Engineering Process translating the information gathered
during requirements analysis into a
document that defines a set of
requirements.
User requirement
End-User requirement
This is the process of deriving
the system requirements
through observation of existing
systems
Change Change
anticipation For example, a prototype system Tolerance Proposed changes may be
may be developed to show some implemented in increments that
key features of the system to have not yet been developed. If
customers. They can experiment this is impossible, then only a
with the prototype and refine their single increment (a small part of
requirements before committing the system) may have to be altered
to high software production cost. to incorporate the change.
Two Ways Of Coping With Change And Changing System
Requirements
System Incremental
prototyping delivery
Prototyping
• A prototype is an early version of a software system that is used to demonstrate concepts, try out design
options, and find out more about the problem and its possible solutions.
• A software prototype can be used in a software development process to help anticipate changes that may
be required:
The process • which has focused on improving process and project management and
introducing good software engineering practice into an organization.
maturity • The primary goals of this approach are improved product quality and
approach process predictability.
• b) Virtual reality system This is a system where the requirements will change and there will be
an extensive user interface components. Incremental development with, perhaps, some UI
prototyping is the most appropriate model. An agile process may be used.
•
Analysis
• c) University accounting system This is a system whose requirements are fairly well-known
and which will be used in an environment in conjunction with lots of other systems such as a
research grant management system. Therefore, a reuse-based approach is likely to be appropriate
for this.
• d) Interactive travel planning system with a complex user interface but which must be stable
and reliable. An incremental development approach is the most appropriate as the system
requirements will change as real user experience with the system is gained
Thankyou