Overview of Software Engineering: VIT Chennai
Overview of Software Engineering: VIT Chennai
ENGINEERING
VIT Chennai
1
OVERVIEW OF SOFTWARE
ENGINEERING
• 5 hours SLO: 1
• Nature of Software, Software Engineering,
Software – process, project, product, Process
Models – Classical & Evolutionary models,
Overview of System Engineering
2
What is software?
• Computer programs and associated documentation
• Generic products
– Stand-alone systems that are marketed and sold to any customer
who wishes to buy them.
– Examples – PC software such as graphics programs, project
management tools; CAD software; software for specific markets
such as appointments systems for dentists.
• Customized products
– Software that is commissioned by a specific customer to meet
their own needs.
– Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
Chapter 1 Introduction 4
Product specification
• Generic products
– The specification of what the software should do
is owned by the software developer and decisions
on software change are made by the developer.
• Customized products
– The specification of what the software should do
is owned by the customer for the software and
they make decisions on software changes that are
required.
Chapter 1 Introduction 5
Application types
• Stand-alone applications
– These are application systems that run on a local
computer, such as a PC. They include all necessary
functionality and do not need to be connected to a
network.
• Interactive transaction-based applications
– Applications that execute on a remote computer and are
accessed by users from their own PCs or terminals. These
include web applications such as e-commerce applications.
• Embedded control systems
– These are software control systems that control and
manage hardware devices. Numerically, there are probably
more embedded systems than any other type of system.
Chapter 1 Introduction 6
Application types
• Batch processing systems
– These are business systems that are designed to process
data in large batches. They process large numbers of
individual inputs to create corresponding outputs.
• Entertainment systems
– These are systems that are primarily for personal use and
which are intended to entertain the user.
• Systems for modeling and simulation
– These are systems that are developed by scientists and
engineers to model physical processes or situations, which
include many, separate, interacting objects.
Chapter 1 Introduction 7
Application types
• Data collection systems
– These are systems that collect data from their
environment using a set of sensors and send that
data to other systems for processing.
• Systems of systems
– These are systems that are composed of a number
of other software systems.
Chapter 1 Introduction 8
Essential attributes of good software
Chapter 1 Introduction 9
Software characteristics
• Software is developed or engineered, it
is not manufactured in the classical
sense.
• Software doesn't "wear out."
• Although the industry is moving toward
component-based construction, most
software continues to be custom-built.
10
Software doesn’t “wear out”:
11
Wear vs. Deterioration
12
How Programs Are Usually Written …
16
Software Engineering Definition
• Fritz Bauer, a German computer scientist,
defines software engineering as:
Software engineering is the establishment and
use of sound engineering principles in order to
obtain economically software that is reliable
and work efficiently on real machines.
17
What is the difference between software
engineering and computer science?
21
What is the difference between software
engineering and system engineering?
• Software engineering is part of System
engineering
• System engineering is concerned with all
aspects of computer-based systems
development including
– hardware,
– software and
– process engineering
• System engineers are involved in
system specification,
architectural design,
integration and deployment
Frequently asked questions about
software engineering
Question Answer
Chapter 1 Introduction 23
Frequently asked questions about
software engineering
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs,
engineering? 40% are testing costs. For custom software, evolution
costs often exceed development costs.
What are the best software engineering While all software projects have to be professionally
techniques and methods? managed and developed, different techniques are
appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems require
a complete and analyzable specification to be developed.
You can’t, therefore, say that one method is better than
another.
What differences has the web made to The web has led to the availability of software services
software engineering? and the possibility of developing highly distributed service-
based systems. Web-based systems development has led
to important advances in programming languages and
software reuse.
Chapter 1 Introduction 24
Software Process
25
Software Process…
• Any software process must include the following four
activities:
• Software specification (or requirements engineering):
Define the main functionalities of the software and the
constrains around them.
• Software design and implementation: The software is to
be designed and programmed.
• Software verification and validation: The software must
conforms to it’s specification and meets the customer
needs.
• Software evolution (software maintenance): The software
is being modified to meet customer and market
requirements changes.
26
Software process..
• In practice, they include sub-activities such as
requirements validation, architectural design,
unit testing, …etc.
• There are also supporting activities such as
configuration and change management,
quality assurance, project management, user
experience.
27
Software process..
• When we talk about a process, we usually talk about the activities
in it. However, a process also includes the process description,
which includes:
• Products: The outcomes of the an activity. For example, the
outcome of architectural design maybe a model for the software
architecture.
• Roles: The responsibilities of the people involved in the process. For
example, the project manager, programmer, etc.
• Pre and post conditions: The conditions that must be true before
and after an activity. For example, the pre condition of the
architectural design is the requirements have been approved by the
customer, while the post condition is the diagrams describing the
architectural have been reviewed.
28
Software process..
• Software process is complex, it relies on
making decisions. There’s no ideal process and
most organizations have developed their own
software process.
• For example, an organization works on critical
systems has a very structured process, while
with business systems, with rapidly changing
requirements, a less formal, flexible process is
likely to be more effective.
29
A Layered Technology
tools
methods
process model
a “quality” focus
Software Engineering
30
A Process Framework
Process framework
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints
Umbrella Activities
31
Framework Activities
• Communication
• Planning
• Modeling
– Analysis of requirements
– Design
• Construction
– Code generation
– Testing
• Deployment
32
Umbrella Activities
• Software project management
• Formal technical reviews
• Software quality assurance
• Software configuration management
• Work product preparation and
production
• Reusability management
• Measurement
• Risk management
33
Adapting a Process Model
– the overall flow of activities, actions, and tasks and the
interdependencies among them
– the degree to which actions and tasks are defined within
each framework activity
– the degree to which work products are identified and
required
– the manner which quality assurance activities are applied
– the manner in which project tracking and control activities
are applied
– the overall degree of detail and rigor with which the
process is described
– the degree to which the customer and other stakeholders
are involved with the project
– the level of autonomy given to the software team
– the degree to which team organization and roles are
prescribed
34
The Essence of Practice
• Polya suggests:
1. Understand the problem (communication and
analysis).
2. Plan a solution (modeling and software
design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and
quality assurance).
35
Understand the Problem
• Who has a stake in the solution to the
problem? That is, who are the stakeholders?
• What are the unknowns? What data,
functions, and features are required to
properly solve the problem?
• Can the problem be compartmentalized? Is it
possible to represent smaller problems that
may be easier to understand?
• Can the problem be represented graphically?
Can an analysis model be created?
36
Plan the Solution
• Have you seen similar problems before? Are there patterns that are
recognizable in a potential solution? Is there existing software that
implements the data, functions, and features that are required?
• Has a similar problem been solved? If so, are elements of the
solution reusable?
• Can subproblems be defined? If so, are solutions readily apparent
for the subproblems?
• Can you represent a solution in a manner that leads to effective
implementation? Can a design model be created?
37
Carry Out the Plan
• Does the solution conform to the plan? Is
source code traceable to the design
model?
• Is each component part of the solution
provably correct? Has the design and
code been reviewed, or better, have
correctness proofs been applied to
algorithm?
38
Examine the Result
• Is it possible to test each component part
of the solution? Has a reasonable testing
strategy been implemented?
• Does the solution produce results that
conform to the data, functions, and
features that are required? Has the
software been validated against all
stakeholder requirements?
39
Hooker’s General Principles
40
The Four Ps: People, Project,
Product, and Process
in Software Development
VIT Chennai
The Four Ps: People, Project,
Product, and Process
in Software Development
• People: The architects, developers, testers,
and their supporting management, plus users,
customers, and other stakeholders are the
prime movers in a software project
• Project: The organizational element through
which software development is managed. The
outcome of a project is a released product.
• Product: Artifacts that are created during the
life of the project, such as models source
code, exécutables, and documentation
• Process: A software engineering process is a
definition of the complete set of activities
needed to transform users’ requirements into
a product. A process is a template for creating
projects
Tools
• Tools: Software that is used to automate the
activities defined in the process.
The 4 Ps in software development.
People Are Crucial
64
Process Flow
65
Process Flow
Linear process flow executes each of the five activities
in sequence.
An iterative process flow repeats one or more of the
activities before proceeding to the next.
An evolutionary process flow executes the activities in a
circular manner. Each circuit leads to a more complete
version of the software.
A parallel process flow executes one or more activities
in parallel with other activities ( modeling for one aspect
of the software in parallel with construction of another
aspect of the software.
66
Process Assessment and Improvement
• SP cannot guarantee that software will be delivered on time, meet the needs, or has the desired
technical characteristics. However, the process can be assessed to ensure that it meets a set of
basic process criteria that have been shown to be essential for a successful software engineering.
• Standard CMMI Assessment Method for Process Improvement (SCAMPI) — provides a five step
process assessment model that incorporates five phases: initiating, diagnosing, establishing,
acting and learning.
• CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a
diagnostic technique for assessing the relative maturity of a software organization; uses
the SEI CMM as the basis for the assessment [Dun01]
• SPICE—The SPICE (ISO/IEC15504) standard defines a set of requirements for software
process assessment. The intent of the standard is to assist organizations in developing
an objective evaluation of the efficacy of any defined software process. [ISO08]
• ISO 9001:2000 for Software—a generic standard that applies to any organization that
wants to improve the overall quality of the products, systems, or services that it provides.
Therefore, the standard is directly applicable to software organizations and companies.
[Ant06]
67
The Waterfall Model
68
Advantages
• Relatively simple to understand
• Each phase of development proceeds
sequentially
• Allows managerial control where a schedule
with deadlines is set for each stage of
development
• Helps in controlling schedules, budgets, and
documentation
69
Disadvantages
• * Requirements need to be specified before
the development proceeds.
• The changes of requirements in later phases
of the waterfall model cannot be done.
• No user involvement and working version of
the software is available when the software is
being developed
• Assumes that requirements are stable and are
frozen across the project span
70
When to use the waterfall model:
71
V Model
• It is always better to
introduce testing in the early
phase of SDLC
• Before starting the actual
testing, testing team has to
work on various activities
like preparation of Test
Strategy, Test Planning,
Creation of Test cases & Test
Scripts which is work parallel
with the development
activity which help to get the
test deliverable on time.
72
The V-Model
A variation of waterfall model
depicts the relationship of
quality assurance actions to
the actions associated with
communication, modeling and
early code construction
activates.
73
Advantages of V-model:
• Simple and easy to use.
• Testing activities like planning, test designing
happens well before coding. This saves a lot of
time. Hence higher chance of success over the
waterfall model.
• Proactive defect tracking – that is defects are
found at early stage.
• Avoids the downward flow of the defects.
• Works well for small projects where
requirements are easily understood.
74
Disadvantages of V-model:
75
• When to use the V-model:
• The V-shaped model should be used for small
to medium sized projects where requirements
are clearly defined and fixed.
• The V-Shaped model should be chosen when
ample technical resources are available with
needed technical expertise.
76
The Incremental Model
77
The Incremental Model
• When initial requirements are reasonably well
defined, but the overall scope of the development
effort precludes a purely linear process. A
compelling need to expand a limited set of new
functions to a later system release.
• It combines elements of linear and parallel process
flows. Each linear sequence produces deliverable
increments of the software.
• The first increment is often a core product with
many supplementary features. Users use it and
evaluate it with more modifications to better meet
the needs.
78
advantages
• Avoids the problems resulting in risk driven approach
in the software
• Understanding increases through successive
refinements
• performs cost-benefit analysis before enhancing
software with capabilities.
• Incrementally grows in effective solution after every
iteration
• Does not involve high complexity rate
• Early feedback is generated because implementation
occurs rapidly for a small subset of the software
79
Disadvantages
• Required planning at the management and
technical level
• Becomes invalid when there is time constraint
on the project schedule or when the users
cannot accept the phased deliverables
80
• When to use the Incremental model:
• This model can be used when the requirements
of the complete system are clearly defined and
understood.
• Major requirements must be defined; however,
some details can evolve with time.
• There is a need to get a product to the market
early.
• A new technology is being used
• Resources with needed skill set are not
available
• There are some high risk features and goals. 81
Evolutionary Models
• Software system evolves over time as requirements often
change as development proceeds. Thus, a straight line to a
complete end product is not possible. However, a limited
version must be delivered to meet competitive pressure.
• Usually a set of core product or system requirements is well
understood, but the details and extension have yet to be
defined.
• You need a process model that has been explicitly designed to
accommodate a product that evolved over time.
• It is iterative that enables you to develop increasingly more
complete version of the software.
• Two types are introduced, namely Prototyping and Spiral
models.
82
Evolutionary Models: Prototyping
• When to use: Customer defines a set of general objectives but does not identify
detailed requirements for functions and features. Or Developer may be unsure of the
efficiency of an algorithm, the form that human computer interaction should take.
• What step: Begins with communication by meeting with stakeholders to define the
objective, identify whatever requirements are known, outline areas where further
definition is mandatory. A quick plan for prototyping and modeling (quick design) occur.
Quick design focuses on a representation of those aspects the software that will be
visible to end users. ( interface and output). Design leads to the construction of a
prototype which will be deployed and evaluated. Stakeholder’s comments will be used
to refine requirements .
• Both stakeholders and software engineers like the prototyping paradigm. Users get a
feel for the actual system, and developers get to build something immediately.
However, engineers may make compromises in order to get a prototype working
quickly. The less-than-ideal choice may be adopted forever after you get used to it.
83
Evolutionary Models: Prototyping
Quick
plan
communication
Modeling
Quick design
Deployment Construction
delivery & of prototype
feedback Construction
of prototype
84
Advantages
• Provides a working model to the user early in the process,
enabling early assessment and increasing user’s confidence
• The developer gains experience and insight by developing
a prototype thereby resulting in better implementation of
requirements
• The prototyping model serves to clarify requirements,
which are not clear, hence reducing ambiguity and
improving communication between the developers and
users
• There is a great involvement of users in software
development. Hence the requirements of the users are met
to the greatest extent
• Helps in reducing risks associated with the software
85
DISADVANTAGES
• If the user is not satisfied by the developed prototype , then a new
prototype is developed. This process goes on until a perfect
prototype is developed. Thus, this model is time consuming and
expensive
• The developer loses focus of the real purpose of prototype and
hece, may compromises with the quality of the software. For
example, developers may use some inefficient algorithms or
inappropriate programming languages while developing prototype
• Prototyping can lead to false expectations.
• The primary goal of prototyping is speedy development, thus, the
system design can suffer as it is developed in series without
considering integration of all other components
86
Evolutionary Models: The Spiral
• It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall
model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent
engineering of software intensive systems.
• Two main distinguishing features: one is cyclic approach for incrementally growing a system’s degree of
definition and implementation while decreasing its degree of risk. The other is a set of anchor point
milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions.
• A series of evolutionary releases are delivered. During the early iterations, the release might be a model
or prototype. During later iterations, increasingly more complete version of the engineered system are
produced.
• The first circuit in the clockwise direction might result in the product specification; subsequent passes
around the spiral might be used to develop a prototype and then progressively more sophisticated
versions of the software. Each pass results in adjustments to the project plan. Cost and schedule are
adjusted based on feedback. Also, the number of iterations will be adjusted by project manager.
• Good to develop large-scale system as software evolves as the process progresses and risk should be
understood and properly reacted to. Prototyping is used to reduce risk.
• However, it may be difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise.
87
Evolutionary Models: The Spiral
88
What is it?
• The Spiral Development ( or Lifecycle) Model
is a systems development method used in
information technology.
• It combines the features of the prototyping
model and the waterfall model.
• It is favored for large, expensive, and
complicated models.
89
Steps of the Spiral Model
1. Define the problem with as much detail as
possible by interviewing the client and
potential users of the system, as well as,
studying any existing system.
2. A preliminary design is created for the new
system.
3. A first prototype of the new system is
constructed from the preliminary design and
is a scaled down version of the final product.
90
Steps of the Spiral Model
4. A second prototype is derived by the
following procedure
– Evaluate the first prototype for strengths,
weaknesses and risks
– Define the requirements of the 2nd prototype
– Plan and design the 2nd prototype
– Construct and test the 2nd prototype
91
Steps of the Spiral Model
5. At this point the customer may decide to
scrap the whole project if the risk is too high.
– Development cost overruns
– Operating-cost miscalculation
– Other factors that might result in a substandard
product
92
Steps of the Spiral Model
6. Evaluate the current prototype in the same
way as the previous prototype and create
another one if needed
7. Iterate the proceeding steps until the
customer is satisfied that the current
prototype represents the final product.
8. Construct the final system
93
Steps of the Spiral Model
9. The final system is thoroughly evaluated and
tested and routine maintenance is carried
out for the life of the product.
94
Advantages
• Estimates of the budget and schedule become more
realistic as work progresses because of the questions that
have been raised
• Easier to cope with the changes inherent to software
development
• Software engineers can start working on the project earlier
rather than wading through a lengthy early design process.
• Re-evaluation after each step allows changes in user
perspectives, technology advances, or financial
perspectives
• Estimation of budget and schedule gets realistic as the
work progressses
95
Disadvantages
• Estimates of budget and time are harder to
judge at the beginning of the project since the
requirements evolve through the process
96
When to use Spiral model:
• When costs and risk evaluation is important
• For medium to high-risk projects
• Long-term project commitment unwise
because of potential changes to economic
priorities
• Users are unsure of their needs
• Requirements are complex
• New product line
• Significant changes are expected (research 97
Three Concerns on Evolutionary Processes
98
Problem 1
• Suppose you have to develop software for a
client with minimum risk involved in
development. But the client is not in a
position to define the detailed input and
output requirements. In this situation which
software process model would you use?
Justify your answer
99
Problem 2
• Expert solutions Inc. is a company engaged in
software consultancy and wants to set up a
specialized software development
environment to support system software
activities. There are no guidelines available
with the management for setting up such a
centre as they have so far only worked in
application areas. Suggest a process model
which can help the company set up its
operations and develop software
100