0% found this document useful (0 votes)
7 views77 pages

Module 2

Module 2 introduces software engineering, emphasizing the systematic approach to developing quality software that is maintainable, correct, reusable, testable, reliable, portable, and adaptable. It discusses various software life cycle models, including the Waterfall, Incremental, Iterative, RAD, and Evolutionary models, each with their own advantages and disadvantages. The document highlights the importance of a disciplined process in software development to meet requirements and deliver projects on time and within budget.

Uploaded by

badhushakassim24
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views77 pages

Module 2

Module 2 introduces software engineering, emphasizing the systematic approach to developing quality software that is maintainable, correct, reusable, testable, reliable, portable, and adaptable. It discusses various software life cycle models, including the Waterfall, Incremental, Iterative, RAD, and Evolutionary models, each with their own advantages and disadvantages. The document highlights the importance of a disciplined process in software development to meet requirements and deliver projects on time and within budget.

Uploaded by

badhushakassim24
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 77

MODULE 2

INTRODUCTION TO SOFTWARE
ENGINEERING
INTRODUCTION
• Software Engineering has the objective of
solving the problems by producing good
quality, maintainable software, on time, within
budget.
• To achieve this objective, we have to focus in a
disciplined manner on both the quality of
product and the process used to develop the
product.
• Software Engineering is a systematic
approach to the design, development,
operation, and maintenance of a software
system.
Objectives of Software Engineering:

• Maintainability –
It should be feasible for the software to evolve to meet changing requirements.
• Correctness –
A software product is correct, if the different requirements as specified in the SRS document have been
correctly implemented.
• Reusability –
A software product has good reusability, if the different modules of the product can easily be reused to
develop new products.
• Testability –
Here software facilitates both the establishment of test criteria and the evaluation of the software with
respect to those criteria.
• Reliability –
It is an attribute of software quality. The extent to which a program can be expected to perform its desired
function, over an arbitrary time period.
• Portability –
In this case, software can be transferred from one computer system or environment to another.
• Adaptability –
In this case, software allows differing system constraints and user needs to be satisfied by making changes
to the software.
Definition......
• “The establishment and use of software
Engineering principles in order to obtain
economically developed software that is
reliable and works efficiently on real
machines”.
• “A discipline whose aim is the production of
quality software, software that is developed
on time, within budget, and that satisfies its
requirements”.
Program Versus Software
• Sw is more than program.
• It consists of program, documentation and
procedures used to setup and operate
software system.
Components of Sw systems..
• A program is a set of instructions which is given to a computer
in order to achieve a specific task whereas a software is when a
program is made available for commercial business and is
properly documented along with its licensing.
Software=Program+documentation+licensing.
• A program is one of the stages involved in the development of
the software, whereas a software development usually follows a
life cycle, which involves the feasibility study of the project,
requirement gathering, development of a prototype, system
design, coding and testing.
• User Interface means by which the user and a computer system
interact, in particular the use of input devices and software.
• Software product has a large no of users, it
must be properly designed, carefully
implemented and properly tested.
• Any program is a subset of software and it
becomes software only if documentation and
operating procedure manuals are prepared.
• Program consists of a set of instructions which
is a combination of source code and object
code.
List of Documentation
• Operating procedures consist of instructions
to set up and use the system and instructions
on how to meet the system failure.
Software Process
• The software process is the way in which we
produce software.
• A software process (also knows
as software methodology) is a set of related
activities that leads to the production of
the software.
• These activities may involve
the development of the software from the
scratch, or, modifying an existing system.
Why is it difficult to improve software
process
• Not enough time
• Lack of knowledge
• Wrong motivations
• Insufficient commitment
Software Characteristics
• “It doesnot wear out”.
• Behaviour and nature is quite different than
other products of human life.
The following are the characteristics of software:
• Software does not wear out.
• Software is not manufacture.
• Reusability of components.
• Flexibility of software.
• Maintainability of software.
• Portability of software.
• Reliability of Software.
Product and Process
Product:
 What is delivered to the customer.
 It may include source code , specification
document, manuals, other documentations
etc.
 It is nothing but a set of deliverables only.
Process:
• Is the way in which we produce software.
• It is the collection of activities that lead to a
product.
• Efficient process is required to produce good
quality software.
Software Process Metrices and Product
Metrices
• Software metrices are used to quantitatively
characterise different aspects of software
process or s/w product.
• Process metrics quantify the attributes of s/w
development process and environment.
Eg:
 Productivity
 Quality
 Failure rate
 Efficiency etc
• Product metrics are measures for the s/w
product
Eg:
 Size
 Reliability
 Complexity
 functionality
Software Life Cycle Models
• A software life cycle model (also termed
process model) is a pictorial and diagrammatic
representation of the software life cycle.
• A life cycle model represents all the methods
required to make a software product transit
through its life cycle stages..
Waterfall Model
• 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
Waterfall Model
Waterfall Model - Design

• 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.
• Requirement Gathering and analysis − All possible
requirements of the system to be developed are
captured in this phase and documented in a
requirement specification document.
• System Design − The requirement specifications
from first phase are studied in this phase and the
system design is prepared. This system design helps
in specifying hardware and system requirements
and helps in defining the overall system
architecture.
• Implementation − With inputs from the system
design, the system is first developed in small
programs called units, which are integrated in the
next phase. Each unit is developed and tested for
its functionality, which is referred to as Unit Testing.
• Integration and Testing − All the units developed in
the implementation phase are integrated into a
system after testing of each unit. Post integration
the entire system is tested for any faults and
failures.
• Deployment of system − Once the functional and
non-functional testing is done; the product is
deployed in the customer environment or released
into the market.
• Maintenance − There are some issues which come
up in the client environment. To fix those issues,
patches are released. Also to enhance the product
some better versions are released. Maintenance is
done to deliver these changes in the customer
environment.
Waterfall Model - Application

• Requirements are very well documented, clear


and fixed.
• Product definition is stable.
• Technology is understood and is not dynamic.
• There are no ambiguous requirements.
• Ample resources with required expertise are
available to support the product.
• The project is short.
Waterfall Model - Advantages

• Simple and easy to understand and use


• Easy to manage due to the rigidity of the model. Each
phase has specific deliverables and a review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are
very well understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented.
Waterfall Model - Disadvantages

• High amounts of risk and uncertainty.


• Not a good model for complex and object-
oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where
requirements are at a moderate to high risk of
changing.
• It is difficult to measure progress within stages.
• Cannot accommodate changing requirements.
Incremental Model
• Incremental Model is a process of software
development where requirements are broken
down into multiple standalone modules of
software development cycle.
• Incremental development is done in steps
from analysis design, implementation,
testing/verification, maintenance.
Incremental Model…..
• Each iteration passes through
the requirements, design, coding and testing
phases.
Incremental Model…..
Incremental Model…..
• The system is put into production when the
first increment is delivered.
• The first increment is often a core product
where the basic requirements are addressed,
and supplementary features are added in the
next increments.
• Once the core product is analyzed by the
client, there is plan development for the next
increment
Characteristics of an Incremental module

• System development is broken down into


many mini development projects
• Partial systems are successively built to
produce a final total system
• Highest priority requirement is tackled first
• Once the requirement is developed,
requirement for that increment are frozen
Incremental PhasesActivities performed in
incremental phases
• Requirement Analysis:Requirement and
specification of the software are collected
• Design:Some high-end function are designed
during this stage
• Code:Coding of software is done during this
stage
• Test:Once the system is deployed, it goes
through the testing phase
When to use Incremental models?

• Requirements of the system are clearly


understood
• When demand for an early release of a product
arises
• When software engineering team are not very
well skilled or trained
• When high-risk features and goals are involved
• Such methodology is more in use for web
application and product based companies
Advantages
• The software will be generated quickly during
the software life cycle
• It is flexible and less expensive to change
requirements and scope
• Throughout the development stages changes
can be done
• This model is less costly compared to others
• A customer can respond to each building.
• Errors are easy to be identified
Advantages….
• It requires a good planning designing
• Problems might cause due to system architecture
as such not all requirements collected up front
for the entire software lifecycle
• Each iteration phase is rigid and does not overlap
each other
• Rectifying a problem in one unit requires
correction in all the units and consumes a lot of
time
ITERATIVE MODEL

• 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.
DESIGN
• Iterative process starts with a simple
implementation of a subset of the software
requirements and iteratively enhances the
evolving versions until the full system is
implemented.
• At each iteration, design modifications are
made and new functional capabilities are
added.
• iterative and Incremental development is a
combination of both iterative design or
iterative method and incremental build model
for development.
• "During software development, more than
one iteration of the software development
cycle may be in progress at the same time."
Application

• Requirements of the complete system are


clearly defined and understood.
• Major requirements must be defined; however,
some functionalities or requested
enhancements may evolve with time.
• There is a time to the market constraint.
• A new technology is being used and is being
learnt by the development team while working
on the project.
• Resources with needed skill sets are not
available and are planned to be used on
contract basis for specific iterations.
• There are some high-risk features and goals
which may change in the future.
PROS

• Some working functionality can be developed


quickly and early in the life cycle.
• Results are obtained early and periodically.
• Parallel development can be planned.
• Progress can be measured.
• Less costly to change the scope/requirements.
• Testing and debugging during smaller iteration
is easy.
CONS
• More resources may be required.
• Although cost of change is lesser, but it is not very
suitable for changing requirements.
• More management attention is required.
• System architecture or design issues may arise
because not all requirements are gathered in the
beginning of the entire life cycle.
• Defining increments may require definition of the
complete system.
• Not suitable for smaller projects.
RAD MODEL
• RAD model is Rapid Application
Development model.
• It is a type of incremental model.
• In RAD model the components or functions
are developed in parallel as if they were mini
projects.
• The developments are time boxed, delivered
and then assembled into a working prototype.
• The RAD (Rapid Application Development) model
is based on prototyping and iterative development
with no specific planning involved.
• The process of writing the software itself involves
the planning required for developing the product.
• Rapid Application Development focuses on
gathering customer requirements through
workshops or focus groups, early testing of the
prototypes by the customer using iterative
concept, reuse of the existing prototypes
(components), continuous integration and rapid
delivery.
What is RAD?

• Rapid application development is a software


development methodology that uses minimal
planning in favor of rapid prototyping.
• A prototype is a working model that is functionally
equivalent to a component of the product.
• In the RAD model, the functional modules are
developed in parallel as prototypes and are
integrated to make the complete product for faster
product delivery.
• Since there is no detailed preplanning, it
makes it easier to incorporate the changes
within the development process.
• RAD projects follow iterative and incremental
model.
RAD Model
Phases of RAD Model
• Requirements planning phase:
 Requirements are captured using any group
elicitation.
 Active involvement of users for understanding
the project.
• User Description:
 Joint teams of developers and users are
constituted to prepare, understand and review
the requirements.
 automated tools are used to capture
information from users.
• Construction phase:
 Combine the detailed design,coding and
testing phase of waterfall model.
 release the product to the customer.
• Cut over phase:
 This phase incorporates acceptance testing by
the users, installation of the system, and user
training.
Evolutionary process Model
• This model resembles Iterative Enhancement
model.
• Evolutionary model is a combination
of iterative and Incremental models of
software development life cycle.
• Evolutionary models are iterative type models.
• They allow to develop more complete versions
of the software.
• Delivering your system in a big bang release,
delivering it in incremental process over time is
the action done in this model.
• The Evolutionary development model divides
the development cycle into smaller, incremental
waterfall models in which users are able to get
access to the product at the end of each cycle.
• Feedback is provided by the users on the
product for the planning stage of the next cycle
and the development team responds, often by
changing the product, plan or process.
• Evolutionary model suggests breaking down of
work into smaller chunks, prioritizing them and
then delivering those chunks to the customer one
by one.
• The number of chunks is huge and is the number of
deliveries made to the customer.
• The main advantage is that the customer’s
confidence increases as he constantly gets
quantifiable goods or services from the beginning
of the project
IMAGE
Application of Evolutionary Model
• It is used in large projects where you can
easily find modules for incremental
implementation.
• Evolutionary model is commonly used when
the customer wants to start using the core
features instead of waiting for the full
software.
Advantages
• In evolutionary model, a user gets a chance to
experiment partially developed system.
• It reduces the error because the core modules
get tested thoroughly.
Disadvantages:
• Sometimes it is hard to divide the problem
into several versions that would be acceptable
to the customer which can be incrementally
implemented and delivered.
Types of Evolutionary model
• Following are the evolutionary process
models.

1. The prototyping model


2. The spiral model
3. Concurrent development model
The Prototyping model

• Prototype is defined as first or preliminary form


using which other forms are copied or derived.
• Prototype model is a set of general objectives for
software.
• It does not identify the requirements like detailed
input, output.
• It is software working model of limited functionality.
• In this model, working programs are quickly
produced.
• 1. Communication
In this phase, developer and customer meet and discuss
the overall objectives of the software.

2. Quick designQuick design is implemented when


requirements are known.
• It includes only the important aspects like input and
output format of the software.
• It focuses on those aspects which are visible to the user
rather than the detailed plan.
• It helps to construct a prototype.
• 3. Modeling quick designThis phase gives the
clear idea about the development of software
because the software is now built.
• It allows the developer to better understand
the exact requirements.
• 4. Construction of prototype
The prototype is evaluated by the customer
itself.
• 5. Deployment, delivery, feedbackIf the user is
not satisfied with current prototype then it
refines according to the requirements of the user.
• The process of refining the prototype is repeated
until all the requirements of users are met.
• When the users are satisfied with the developed
prototype then the system is developed on the
basis of final prototype.
Advantages of Prototyping Model
• Prototype model need not know the detailed input, output,
processes, adaptability of operating system and full
machine interaction.
• In the development process of this model users are actively
involved.
• The development process is the best platform to
understand the system by the user.
• Errors are detected much earlier.
• Gives quick user feedback for better solutions.
• It identifies the missing functionality easily. It also identifies
the confusing or difficult functions.
Disadvantages
• The client involvement is more and it is not
always considered by the developer.
• It is a slow process because it takes more time
for development.
• Many changes can disturb the rhythm of the
development team.
• It is a thrown away prototype when the users
are confused with it.
The Spiral model

• Spiral model is a risk driven process model.


• It is used for generating the software projects.
• In spiral model, an alternate solution is
provided if the risk is found in the risk analysis,
then alternate solutions are suggested and
implemented.
• It is a combination of prototype and sequential
model or waterfall model.
• In one iteration all activities are done, for large
project's the output is small.
Advantages of Spiral Model
• It reduces high amount of risk.
• It is good for large and critical projects.
• It gives strong approval and documentation
control.
• In spiral model, the software is produced early
in the life cycle process.
Disadvantages of Spiral Model
• It can be costly to develop a software model.
• It is not used for small projects.

You might also like