Module1 Part1
Module1 Part1
1
Text Books
Roger Pressman, Software Engineering: A Practitioner's
Approach, 7th Edition, McGraw-Hill, 2010.
Reference Books
1) Ian Sommerville,Software Engineering, 9th Edition,
Addision-Wesley, 2016
2) Pankaj Jalote, A Concise Introduction to Software
Engineering, Springer, 2008
3) William E. Lewis , “Software Testing and Continuous Quality
Improvement”, Third Edition, Auerbach Publications, 2008
2
OVERVIEW OF SOFTWARE
ENGINEERING
VIT Chennai
3
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
4
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 6
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 7
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 8
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 9
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 10
Essential attributes of good software
Chapter 1 Introduction 11
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.
12
Software doesn’t “wear out”:
13
Wear vs.
Deterioration
increased failure
rate due to side effects
Failure
rate
change
actual curve
idealized curve
Time
14
How Programs Are Usually Written …
17
Software Engineering Definition
18
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.
19
What is the difference between software
engineering and computer science?
23
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
What is software? Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software Software specification, software development, software
engineering activities? validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities
of developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including
hardware, software and process engineering. Software
engineering is part of this more general process.
Chapter 1 Introduction 25
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 26
Software Process
27
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.
28
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.
29
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.
30
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.
31
A Layered Technology
tools
methods
process model
a “quality” focus
Software Engineering
32
A Process Framework
Process framework
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints
Umbrella Activities
33
Framework Activities
• Communication
• Planning
• Modeling
– Analysis of requirements
– Design
• Construction
– Code generation
– Testing
• Deployment
34
Umbrella Activities
• Software project management
• Formal technical reviews
• Software quality assurance
• Software configuration management
• Work product preparation and production
• Reusability management
• Measurement
• Risk management
35
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
36
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).
37
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?
38
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?
39
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?
40
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?
41
Hooker’s General Principles
42