Software as a
Product
•Software is expensive!!
Every software project has a
trade-off between:
● Functionality
● Resources (cost)
● Timeliness
Categories of Software Proucts
✧ 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; CASE Tools;
✧ Bespoke 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
A skilled software developer knows about a wide variety
of approaches, methods, tools. The craft of software
engineering is to select appropriate methods for each
project and apply them effectively.
Chapter 1 Introduction 13
Challenges
✧ Heterogeneity
▪ Increasingly, systems are required to operate as
distributed systems across networks that include
different types of computer and mobile devices
✧ Business and social change
▪ Business and society are changing isignificantly fast
as emerging economies develop and new technologies
become available. They need to be able to change their
existing software and to rapidly develop new software
✧ Security and trust
▪ As software is intertwined with all aspects of our lives, it is
essential that we can trust that software
Chapter 1 Introduction 14
Chapter 1 Introduction
✧Software costs often dominate computer
system costs. The costs of software on a
PC are often greater than the hardware
cost.
Financial ✧Software costs more to maintain than it
Implications does to develop. For systems with a long
life, maintenance costs may be several
times development costs
✧ Software engineering is concerned with
cost-effective software development
15
Question Answer
Characteristics What is software? Computer programs and associated
documentation. Software products may be
of Software developed for a particular customer or may be
developed for a general market.
Products
What are the attributes of good Good software should deliver the required
software? functionality and performance to the user
and should be maintainable, dependable
and usable.
What is software engineering? Software engineering is an engineering
•General discipline that is concerned with all
characteristics:
aspects of software production.
What are the fundamental Software specification, software
• Usability
software engineering activities? development, software validation and
software evolution.
• Maintainability What is the difference between Computer science focuses on theory and
software engineering and fundamentals; software engineering is
• Dependability computer science? concerned with the practicalities of
developing and delivering useful software.
• Efficiency What is the difference between System engineering is concerned with all
software engineering and system aspects of computer-based systems
engineering? development including hardware, software
and process engineering. Software
engineering is part of this more general
process.
Software
Engineering……
“It is an engineering approach for software
development” Wikipedia
It is a process of that encapsulates
requirements gathering, and analysis,
producing a software product based on the
identified requirements ensuring the system
quality meets time and cost dimensions.
Rigorously following the process can avoid the
likelihood of uncertainties occurrence.
✧More and more systems are
Importance software controlled
of Software ✧ Software engineering is
Engineering concerned with theories,
methods and tools for
professional software
development
✧Expenditure on software
represents a
significant fraction of GNP in
all developed countries
It’s a process
✧ Software specification (requirement),
where customers and engineers define
the software (problem) that is to be
produced (product) and the constraints
on its operation (project).
✧ SE Diversity
✧ No universal set of software techniques
that is applicable to all of these
✧ The software engineering methods and
tools used depend on the type of
application being developed, the
requirements of the customer and the
background of the development team 19
Example: ATM Machine
Understanding the money-machine problem: