Download as pdf or txt
Download as pdf or txt
You are on page 1of 57

DMIoT, School of Computing

Software Engineering Academic Program

Fundamentals of Software Engineering


By
Yayehudar T.
Chapter Two
Software Processes and Models
Introduction
What is a process?
• A process is an organized set of activities, which transforms inputs to
outputs.
➢ We can use synonyms of process such as: procedure, method, course
of action, etc.
• Software engineering as a discipline has many processes.
➢ In the context of software engineering, a process is an adaptable
approach that enables the people doing the work (the software team)
to pick and choose the appropriate set of work actions and tasks.
• The intent is always to deliver software in a timely manner and with
sufficient quality to satisfy those who have sponsored its creation and
those who will use it.
Software process
➢ What is it?

• When you work to build a product or system, it’s important to go


through a series of predictable steps—a road map that helps you create
a timely, high-quality result.
• The road map that you follow is called a “software process.”

➢ Who does it?

➢ Software engineers and their managers adapt the process to their


needs and then follow it.

➢ In addition, the people who have requested the software have a role to
play in the process of defining, building, and testing it.
Cont’d…
➢ Why is it important?
• Because it provides stability, control, and organization to an activity
that can, if left uncontrolled, become quite chaotic.

➢ What are the steps?

• At a detailed level, the process that you adopt depends on the software
that you’re building.

➢ What is the work product?

• From the point of view of a software engineer, the work products are
the programs, documents, and data that are produced as a consequence
of the activities and tasks defined by the process.
Cont’d…
➢ How do you ensure that you have done it right?
• There are a number of software process assessment mechanisms that
enable organizations to determine the “maturity” of their software
process.
• However, the quality, timeliness, and long-term viability of the
product you build are the best indicators of the efficacy of the process
that you use.
Cont’d…
❑ Software process: organizing a structured set of activities
to develop software systems.
• These processes help in performing different software
engineering activities in an organized manner.
Characteristics of processes
• Produces intermediate and final products.
• Each process activity has entry and exit criteria
• Activities are organized in sequence, so timing is clear.
• Each process has guiding principles including goals of each
activity.
• Uses resources, subject to set of constraints (such as
schedule, no. of people working )
• May be composed of sub-processes with hierarchy or links
Cont’d…
❑There are many different software processes but all must
include four activities.
I. Software specification: the functionality of the software
and constraints on its operation must be defined.
II. Software design and implementation: the software to
meet the specification must be produced.
III.Software validation: the software must be validated to
ensure that it does what the customer wants.
IV.Software evolution: the software must evolve to meet
changing customer needs.
Sequential Software Process models
• Sequential models such as Waterfall or V-Model rely on
intensive periods of collecting and refining requirements for
a product before design and development activity can take
place.
• Products developed using these models are intended to be
complete when released to customers.
• Central to the approach is an assumption that by adhering to
the requirements captured at the beginning, the product will
fulfil the wishes of those customers.
Cont’d…

Source: www.richrtesting.com (Richard Rogers)


Iterative Software Process Models
• Emphasis on delivering less complex products, often to test
customer response before making adjustments.
• The techniques encourage regular feedback from customers,
and rapid response to that feedback;
• refining ideas and revisiting design and development
activities with the intention of delivering products which
better reflect what customers want.
Cont’d…

Source: www.richrtesting.com (Richard Rogers)


Software Development Life Cycle (SDLC)
• A Software Development Life Cycle (SDLC) is a well-defined,
structured sequence of stages in software engineering to develop the
intended software product.
• It is a process used by the software industry to design, develop and
test a high quality software.
➢ It aims to produce a high quality software that meets or exceeds
customer expectations, reaches completion with in times and cost
estimates.
• It is also called Software Development Process.
Cont’d…
• The software development lifecycle begins with the identification of a
requirement for software and ends with the formal verification of the
developed software against that requirement.
• So SDLC goes through a series of phases.
• Helps to understand the entire process
• Enables planning of resources in advance
• Enforces a structured approach to development
• Helps to track progress of the system
Cont’d…
❖ The software development life-cycle can be divided into 5-9 phases:
• Project initiation and planning
• Project identification and selection
• Feasibility study
• Project analysis
• System design
• Coding
• Testing
• Implementation
• Maintenance
Cont’d…
I. Problem definition
• It is the decision about problems in the existing system and the motivation
for system change.
• The need for changes in the existing system are identified and shortcomings
of the existing system are detected.➔ which leads to Feasibility Study.
II. Feasibility Study is an analysis of the viability of an idea.
• Answer the essential question of “should we proceed with the proposed
project idea?”
• Used to identify how, where, and to whom you intend to sell a service or
product.
• Provides detail concept about your business.
• How and where the business is operate
• How can I succeed
Cont’d…
➢ Organizational Feasibility: is how well a proposed information system
supports the objectives of the organization and is a strategic plan for an
information system.

➢ Economic feasibility (Cost/Benefits Analysis): how much start-up capital


is needed, sources of capital, returns on investment( profit ), etc.

• if a project can’t cover its development costs, it won’t be approved,

➢ Technical Feasibility

➢ Operational Feasibility

➢ Schedule Feasibility

➢ Political Feasibility
Cont’d…
III. Project Analysis: a detailed study of the various operations
performed by a system and their relationships within and outside the
system.
• Examine and document the relevant aspects of the existing system,
its shortcomings and problems.
• Analyze the findings and record the results.
• Define and document the proposed system.
• Test the proposed design against the known facts.
• Produce a detailed report to support the proposals.
• Estimate the resources required to design and implement the
system.
Cont’d…
• The objective is to provide solutions to stated problems, usually in
the form of specifications to meet the users requirements and to make
recommendations for a new computer-based system.
•Analysis is iterative and progressive process.
IV. System Design: it is the most creative and challenging phase.
▪ Determining data required to produce the output
▪ Determining processing methods and using software
▪ Determining methods of data capture
▪ Defining detailed critical procedures
▪ Calculating timings of processing
Cont’d…
V. Coding: the goal of the coding phase is to translate the
design of the system into code in a given programming
language.
• affects both testing and maintenance
VI.Testing: testing is the major quality-control measure used
during software development.
• Its basic function is to detect errors in the software
VII.Implementation: it is mainly concerned with user
training, site selection, and preparation and file conversion.
Cont’d…
VIII.Maintenance: it is an important part of the SDLC.
▪ But it has some problems:
• Availability of a few maintenance tools.
• User may not accept the cost of maintenance.
• Standards and guidelines of project may be poorly
defined.
• A good test plan is lacking.
Classifications of SDLC Model
▪ There are a number of different models for software development
lifecycles which describe the interrelationships between software
development phases.
✓ Waterfall model
✓ prototype model
✓ incremental model
✓ V-shaped model
✓ Spiral model
Waterfall model
❑ Organize the activities in linear fashion.
• Each phase is end up with expected output in the forms of document.
• Waterfall model is the simplest model.
• All the phases of SDLC will function one after another in linear
manner.
• That is, when the first phase is finished then only the second phase
will start and so on.
Classical Waterfall Model
Cont’d…
▪ Classical waterfall model is idealistic:
• Assumes that no defect is introduced during any
development activity.
• In practice developers commit errors:
• Defects do get introduced in almost every phase of
the life cycle.
Iterative Waterfall Model
Cont’d…
▪ Defects usually get detected much later in the life cycle:
• For example, a design defect might go unnoticed till the coding or
testing phase.
▪ Once a defect is detected:
• The phase in which it occurred and parts of the work already
completed subsequent phases needs to be reworked.
▪ Therefore need feedback paths in the classical waterfall model.
Cont’d…
Waterfall model Strengths
• Easy to understand, easy to use
• Provides a reference to inexperienced staff
• Provides requirements stability
• Facilitates strong management control (plan, staff, track)

Waterfall Deficiencies
• All requirements must be known upfront
• Does not accommodate any change.
• There is no risk analysis.
• Can give a false impression of progress.
• Little opportunity for customer to pre-view the system.
Cont’d…
When to use the Waterfall Model
• Requirements are very well known and stable
• Technology is understood
• Experienced Development team
• When it is possible to produce a stable design
E.g. a new version of an existing product
• E.g. porting an existing product to a new platform.
Prototype process model
• It is model implementation of the project with limited
functionalities.
• The prototype model suggests that before development of
the actual software, a working prototype of the system
should be built first.
What is a Prototype?
• It is a quickly developed, easily modifiable and extendible
working model of the required application.
Cont’d…
Reasons for prototyping
• learning by doing: useful where requirements are only partially known

• improved communication

• improved user involvement

• reduces the need for documentation

• reduces maintenance costs i.e. changes after the application goes live
Cont’d…
Cont’d…
Prototyping: advantages
• The resulting software is more usable
• User needs are better accommodated
• The design is of higher quality
• The resulting software is easier to maintain
• Overall, the development incurs less effort

Prototyping Weaknesses
• Sometimes expensive
• Overall maintainability may be overlooked
• Process may continue forever (scope creep)
Cont’d…
What is the main goal of prototyping model?
• To avoid early freezing of the requirements.

• Instead of freezing the requirement, prototype is built to


understand the requirement.

• To enable the client to better understand the requirement.


Cont’d…
When to use the Prototyping Model?
• When requirements are not known at the beginning of the
project.
• When requirements are unstable and constantly changing.
• When quick demonstrations are required.
• When user requires proof of concept.
Incremental process model
• Incremental development is dividing the project in various
independent parts and developing these sub-parts at the
same rate/ different rate and integrating them when ready.
➢ Steps
• Develop a system in smaller portions at a time.
• Then slowly add increased functionality.
• Each subsequent release of the system adds function to the
previous release, until all designed functionality has been
implemented.
Cont’d…
Cont’d…

Incremental Model Strengths


• Develop high-risk or major functions first
• Each release delivers an operational product
• Customer can respond to each build
• Uses “divide and conquer” breakdown of tasks
• Lowers initial delivery cost
• Initial product delivery is faster
• Customers get important functionality early
Cont’d…
Incremental Model Weaknesses
 Requires good planning and design
 Requires early definition of a complete and fully functional system to
allow for the definition of increments
 Well-defined module interfaces are required
 Total cost of the complete system is not lower
Cont’d…
When to use the Incremental Model
 Most of the requirements are known up-front but are expected to
evolve over time

 A need to get basic functionality to the market early

 On projects which have lengthy development schedules


Spiral Model
• The spiral model is an evolutionary software process model that
couples the iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model.
• It implements the potential for rapid development of new versions of
the software.
• Using the spiral model, the software is developed in a series of
incremental releases.
• During the early iterations, the additional release may be a paper
model or prototype.
• During later iterations, more and more complete versions of the
engineered system are produced.
Cont’d…
Cont’d…
❑Each cycle in the spiral is divided into four parts:
✓ Objective setting: Each cycle in the spiral starts with the
identification of purpose for that cycle, the various alternatives that
are possible for achieving the targets, and the constraints that exists.
✓ Risk Assessment and reduction: The next phase in the cycle is to
calculate these various alternatives based on the goals and constraints.
• The focus of evaluation in this stage is located on the risk perception
for the project.
Cont’d…
✓ Development and validation: The next phase is to develop strategies
that resolve uncertainties and risks.
• This process may include activities such as benchmarking, simulation,
and prototyping.
✓ Planning: Finally, the next step is planned.
• The project is reviewed, and a choice made whether to continue with a
further period of the spiral.
• If it is determined to keep, plans are drawn up for the next step of the
project.
Cont’d…
❑ The development phase depends on the remaining risks.

• For example, if performance or user-interface risks are treated more essential


than the program development risks, the next phase may be an evolutionary
development that includes developing a more detailed prototype for solving
the risks.
❑ The risk-driven feature of the spiral model allows it to accommodate any
mixture of a specification-oriented, prototype-oriented, simulation-oriented,
or another type of approach.
• An essential element of the model is that each period of the spiral is
completed by a review that includes all the products developed during that
cycle, including plans for the next cycle.
• The spiral model works for development as well as enhancement projects.
Cont’d…
Spiral Model Strengths
• Provides early indication of insurmountable risks, without much cost

• Users see the system early because of rapid prototyping tools

• Critical high-risk functions are developed first

• The design does not have to be perfect

• Users can be closely tied to all lifecycle steps

• Early and frequent feedback from users

• Cumulative costs assessed frequently


Cont’d…
Spiral Model Weaknesses
• Time spent for evaluating risks too large for small or low-risk
projects
• Time spent planning, resetting objectives, doing risk analysis and
prototyping may be excessive
• The model is complex
• Risk assessment expertise is required
• Spiral may continue indefinitely
• May be hard to define objective, verifiable milestones that
indicate readiness to proceed through the next iteration
Cont’d…
When to use Spiral Model
• When creation of a prototype is appropriate
• When costs and risk evaluation is important
• For medium to high-risk projects
• Users are unsure of their needs
• Requirements are complex
• When changes may require at any time
• Large and high budget projects
• When deliverance is required to be frequent.
V Model
• It is a variant of the Waterfall
• emphasizes verification and validation
• V&V activities are spread over the entire life cycle.
• Verification and validation (V & V) is intended to show that a
system conforms to its specification and meets the requirements of the
system customer.
• In every phase of development:
• Testing activities are planned in parallel with development.
Cont’d…
Developers life cycle Testers life cycle
Cont’d…
Verification:
• It involves a static analysis method (review) done without executing code.
• It is the process of evaluation of the product development process to find
whether specified requirements meet.
Validation:
• It involves dynamic analysis method (functional, non-functional), testing is
done by executing code.
• Validation is the process to classify the software after the completion of the
development process to determine whether the software meets the customer
expectations and requirements.
• Verification and Validation process is joined by coding phase in V-shape.
• Thus it is known as V-Model.
52
Cont’d…
V-Shaped Steps
• Project and Requirements Planning – allocate resources
• Product Requirements and Specification Analysis – complete
specification of the software system
• Architecture or High-Level Design – defines how software functions
fulfill the design
• Detailed Design – develop algorithms for each architectural component
• Coding – transform algorithms into software
• Unit testing – check that each module acts as expected
• Integration and Testing – check that modules interconnect correctly
• System and acceptance testing – check the entire software system in its
environment
• Production, operation and maintenance – provide for enhancement and
corrections
Cont’d…
V model Strengths
• Emphasize planning for verification and validation of the product in
early stages of product development.
• Each deliverable must be testable
• Easy to use

V Model Weaknesses
• Does not support overlapping of phases

• Does not handle iterations or phases

• Does not easily handle later changes in requirements

• Does not support risk analysis activities


Cont’d…
When to use V Model
• All requirements are known up-front
• Solution and technology are known
• Natural choice for systems requiring high reliability:

• Embedded control applications


Cont’d…
Reading assignment:
✓ RAD model
✓ Agile model
✓ Big bang model
Thank You!
?
57

You might also like