Current Time
Buying Groceries is simple
Current Time
Engineering a Software
Introduction
Science or Engineering
• Science is about understanding the origins,
nature, and behaviour of the universe and all it
contains; engineering is about solving
problems by rearranging the stuff of the world
to make new things.
• This is expressed as scientists "build in order
to learn," while engineers "learn in order to
build."
Technology
A manner of accomplishing a task especially
using technical processes, methods, or
knowledge
Basic Ideas
Addressing Complexities
A simple system
A bit detailing …
More detailing …
Similar is the Software System
Why is Software Inherently Complex
“ The complexity of the software is an
essential property, not an accidental one.”
Brooks
Elements of Complexity
• The complexity of problem domain
• The complexity of development process
• The complexity in software
• Behavior of discrete systems
Complexity of Problem Domain
Ultimately …
Then we can conclude that
The task of software development team is to
engineer the illusion of simplicity.
How ?????
We need to understand the complexity and its
attributes to resolve it.
System
• A collection of components organized to
accomplish a specific function or set of
functions.
• The term system encompasses individual
applications, systems in the traditional sense,
subsystems, systems of systems, product lines,
product families, whole enterprises, and other
aggregations of interest.
IEEE Std 610.12−1990, IEEE Standard Glossary of Software Engineering Terminology
Defining SE
Software engineering may be defined as the systematic
design and development of software products and the
management of the software process.
• 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) descriptive information in both hard copy and
virtual forms that describes the operation and use of
the programs
Objectives of SE
• The production of programs that meet
specifications,
• Are demonstrably accurate,
• Produced on time,
• And within budget.
Why SE?
• The economies of ALL developed nations are
dependent on software
• More and more systems are software
controlled
• Software engineering is concerned with
theories, methods and tools for professional
software development
Why SE?
• Software costs often dominate computer
system costs. The costs of software on a PC are
often greater than the hardware cost
• Software costs more to maintain than it 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
Nature of Software
• Product
• Moderator for delivering the product
Software Diversity
• There are many different types of software
system and there is 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
Software is a Product
• 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 is a Product
• 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
Applications
• 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.
Applications
• 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.
Applications
• 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.
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.
Applications
• 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.
Applications
• 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.
Myths
Myth 1. The cost of computers is lower than that
of analog or electromechanical devices.
– Hardware is cheap compared to other electromechanical
devices
– However, cost of software, with reliability and
maintenance, is enormous
• e.g. Space-Shuttle software has 400,000 words
(relatively small) but costs NASA approximately
$100,000,000 a year to maintain.
– Software Costs can become exorbitant over time.
Myths
Myth 2. Software is easy to change.
– Yes, changes are easy to make -- but hard to make without
introducing errors.
– Every change must be verified and rectified
– Becomes more “brittle” with changes
– We become hesitant to change software over time --
recognizing
Myths
Myth 3: Increasing software reliability will
increase safety
– Software errors may not be related to safety at all
– Compliance with requirements specification may not
remove errors
– Safety-critical software errors can often be traced to
Requirements
– Software may be correct and 100% reliable -- yet
responsible for serious accidents
Myths
Myth 4: Testing software or “proving” (using
formal verification techniques) software correct
can remove all the errors.
– Exhaustive testing is impossible
– Only a relatively small part of the state space can be
covered
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 Good software should deliver the required functionality
software? 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.
Exercise
1. Examples of each type of software applications
that we discussed. Within each type list:
i. Features (Free Version vs Subsrcription)
ii. Developer
iii. License / Open Source
2. Skills of a Software Engineer.