0% found this document useful (0 votes)
16 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)
16 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.

Common questions

Powered by AI

Both the Incremental and RAD models offer flexibility for incorporating changes, but in different ways. The Incremental Model allows for requirement changes by dividing the project into standalone modules, effectively managing changes through successive iterations . The RAD Model, with its focus on rapid prototyping and iteration, allows requirement changes to be adopted directly through user feedback in workshops, thus promoting a dynamic response to requirement changes without extensive pre-planning .

The Waterfall Model divides the software development process into sequential phases where the output of one phase is the input for the next, preventing overlap between stages. It works well for projects with stable, clear, and well-documented requirements but struggles with accommodating changing requirements . In contrast, the Incremental Model breaks down development into standalone modules developed in phases. It is flexible and allows changes throughout development, with each iteration delivering additional system functionality. This makes it suitable for projects with a high risk of requirement changes and where early system delivery is desired .

The Iterative Model allows for the regular updates of software with successive enhancements, making it suitable for evolving requirements. It starts with a simple implementation and gradually incorporates changes through iterations, which contrasts with the Waterfall Model's linear progression that cannot accommodate changing requirements once a phase is completed . This iterative approach enables developers to adjust the software design in response to new understanding gained from previous iterations, thus effectively handling evolving requirements .

The Prototype Model is beneficial in situations where detailed requirements are not well-known at the outset and user interaction is required to refine system functionality. It encourages active user participation and quick feedback, leading to early detection of errors and missing or confusing functionalities. This model is advantageous when user requirements are uncertain or subject to change, as the iterative refinement of prototypes allows for flexible adjustments before the final product is developed .

The Spiral Model integrates risk management into each of its cycles, which is a distinct feature compared to other models. It involves continuous risk assessment and incorporates alternate solutions when risks are identified, thereby minimizing high risks effectively. This is unlike the Waterfall Model, which does not have built-in mechanisms for risk management throughout its linear process, or even the Incremental and Iterative Models, which focus on incremental and iterative feature additions but may not separately address risk at each cycle .

The RAD Model emphasizes rapid prototyping and user involvement through workshops and focus groups for requirement gathering. This facilitates early testing and feedback, allowing for user-driven refinements in the development process. The iterative concept and reuse of prototypes enable quick responses to user feedback, which can lead to better alignment with user needs and fewer errors, ultimately improving product quality and user satisfaction .

The Iterative and Evolutionary models complement each other by combining their approaches to managing software development. The Iterative Model enhances the software in stages, allowing for continual improvements and adaptations as understanding of requirements deepens over iterations . The Evolutionary Model, meanwhile, focuses on delivering functional modules incrementally, allowing user feedback to shape subsequent stages of development. Together, they support the incremental addition of features while adapting dynamically based on iterative user feedback, providing a balance of structured delivery with flexibility and user involvement .

Parallel development in the RAD model is vital for speeding up the development process by allowing different components or functions to be developed as mini-projects simultaneously. This parallelism reduces the overall time to delivery as different teams can work on various parts of the software at the same time, facilitating rapid prototyping and quick integration of components into a final product .

The Evolutionary Model suits large projects by facilitating incremental delivery of system modules. However, teams might face challenges such as difficulty in dividing the problem into acceptable incremental versions for delivery. There can be management and coordination issues due to the continuous delivery cycle and significant resources required over long durations. Additionally, frequent changes and user feedback can disrupt development progress, requiring careful planning and prioritization .

The Waterfall Model is suitable for projects with well-documented, clear, and stable requirements where the technology is understood and the product definition is stable. It is useful for projects that are short and where resource expertise is ample. Its linear and structured approach makes it less suitable for complex, long-term projects or where requirement changes are likely .

You might also like