Lecture 1- Introduction (Lecture 1)
Dr. Muhammad Ali Nizamani
22/09/2020 Chapter 1 Introduction 1
What is Software?
Software is: (1) instructions (computer programs)
that when executed provide desired features,
function, and performance; (2) data structures
that enable the programs to adequately manipulate
information and (3) documentation that describes
the operation and use of the programs.
2
What is Software?
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.
3
What is Software?
4
Wear vs. Deterioration
increased failure
rate due to side effects
Failure
rate
change
actual curve
idealized curve
Time
5
Software Applications
system software
application software
engineering/scientific
software
embedded software
product-line software
WebApps (Web
applications)
AI software
6
Software—New Categories
Open world computing—pervasive, distributed
computing
Ubiquitous computing—wireless networks
Netsourcing—the Web as a computing engine
Open source—”free” source code open to the
computing community (a blessing, but also a potential
curse!)
Also … (see Chapter 31)
Data mining
Grid computing
Cognitive machines
Software for nanotechnologies
7
Legacy Software
Why must it change?
software must be adapted to meet the needs
of new computing environments or
technology.
software must be enhanced to implement new
business requirements.
software must be extended to make it
interoperable with other more modern
systems or databases.
software must be re-architected to make it
viable within a network environment.
8
a
Software Engineering
9
he
ce
d,
Software Engineering
10
A Layered Technology
tools
methods
process model
a “quality” focus
Software Engineering
11
Software engineering
Software engineering is an engineering discipline that is
concerned with all aspects of software production from
the early stages of system specification through to
maintaining the system after it has gone into use.
Engineering discipline
Using appropriate theories and methods to solve problems
bearing in mind organizational and financial constraints.
All aspects of software production
Not just technical process of development. Also project
management and the development of tools, methods etc. to
support software production.
30/10/2014 Chapter 1 Introduction 12
Importance of software engineering
More and more, individuals and society rely on advanced
software systems. We need to be able to produce
reliable and trustworthy systems economically and
quickly.
It is usually cheaper, in the long run, to use software
engineering methods and techniques for software
systems rather than just write the programs as if it was a
personal programming project. For most types of
system, the majority of costs are the costs of changing
the software after it has gone into use.
30/10/2014 Chapter 1 Introduction 13
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.
30/10/2014 Chapter 1 Introduction 14
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.
30/10/2014 Chapter 1 Introduction 15