Post on 06-Apr-2018
8/3/2019 Lesson 1 Software Engineering
1/25
Intro to Software Engineering
Software Engineering
Lesson 1
8/3/2019 Lesson 1 Software Engineering
2/25
Software Engineering
The establishment and use of sound engineering
principles in order to obtain economically,
software that is reliable and works efficiently onreal machines
8/3/2019 Lesson 1 Software Engineering
3/25
Introduction to Software Engineering
Objectives
Define Software
Identify software components, evolution &
application
Define Software Engineering
Discuss software paradigms
8/3/2019 Lesson 1 Software Engineering
4/25
Introduction to Software Engineering
What is Software ?
A set of instructions which when executed
provide desired functions & performance
Data structures that enable programs to
adequately manipulate data & information
8/3/2019 Lesson 1 Software Engineering
5/25
Software DefinitionDefinitions ofSoftware on the Web:
A computer program, which provides the instructions whichenable the computer hardware to work. System software,such as Windows or MacOS, operate the machine itself,
and applications software, such as spreadsheet or wordprocessing programs, provide specific functionality.www.getnetwise.org/glossary.php
Computer programs; instructions that make hardware work.Two main types of software are system software
(operating systems), which control the workings of thecomputer, and applications, such as word processingprograms, spreadsheets, and databases.www.microsoft.com/office/newtosite/glossary.asp
http://www.getnetwise.org/glossary.phphttp://www.microsoft.com/office/newtosite/glossary.asphttp://www.microsoft.com/office/newtosite/glossary.asphttp://www.getnetwise.org/glossary.php8/3/2019 Lesson 1 Software Engineering
6/25
Introduction to Software Engineering
Characteristics of Software It is developed or engineered, not manufactured in the classical
sense
Most software is custom-built, rather than being built fromcomponents
It does not wear out
Software is intangible Hard to understand development effort
Software is easy to reproduce Cost is in its development
in other engineering products, manufacturing is the costly stage
The industry is labor-intensive Hard to automate
8/3/2019 Lesson 1 Software Engineering
7/25
The Nature of Software ...
Untrained people can hack something
together
Quality problems are hard to notice
Software is easy to modify
People make changes without fully
understanding it
Software does not wear out It deteriorates by having its design changed:
erroneously, or
in ways that were not anticipated, thus making it complex
8/3/2019 Lesson 1 Software Engineering
8/25
The Nature of Software
Conclusions
Much software has poor design and is getting
worse
Demand for software is high and rising
We are in a perpetual software crisis
We have to learn to engineer software
8/3/2019 Lesson 1 Software Engineering
9/25
Types of Software...
Custom
For a specific customer
GenericSold on open market
Often called
COTS (Commercial Off The Shelf)
Shrink-wrapped
Embedded
Built into hardware
Hard to change
8/3/2019 Lesson 1 Software Engineering
10/25
Types of Software
Differences among custom, generic and
embedded software
Custom Generic EmbeddedNumber ofcopies in use low medium high
Total processing power
devoted to running this type
of software
low high medium
Worldwide annual
development effort
high medium low
8/3/2019 Lesson 1 Software Engineering
11/25
Types of Software
Real time software
E.g. control and monitoring systems
Must react immediately
Safety often a concern
Data processing software
Used to run businesses
Accuracy and security of data are key
Some software has both aspects
8/3/2019 Lesson 1 Software Engineering
12/25
What is Software Engineering?...
The process of solving customers problemsby the systematic development and
evolution of large, high-quality softwaresystems within cost, time and otherconstraints
8/3/2019 Lesson 1 Software Engineering
13/25
What is SE?
Solving customers problems
This is the goal of software engineering
Sometimes the solution is to buy, not build
Adding unnecessary features does not help
solve the problem
Software engineers must communicateeffectively to identify and understand the
problem
8/3/2019 Lesson 1 Software Engineering
14/25
What is Software Engineering?
Systematic development and evolution
An engineering process involves applying wellunderstood techniques in a organized and disciplined
way
Many well-accepted practices have been formallystandardized
e.g. by the IEEE or ISO
Most development work is evolution
8/3/2019 Lesson 1 Software Engineering
15/25
What is SE?
Large, high quality software systems
Software engineering techniques are needed because
large systems cannot be completely understood by oneperson
Teamwork and co-ordination are required
Key challenge: Dividing up the work and ensuring that
the parts of the system work properly together The end-product that is produced must be of sufficient
quality
8/3/2019 Lesson 1 Software Engineering
16/25
What is Software Engineering?
Cost, time and other constraints
Finite resources
The benefit must outweigh the cost
Others are competing to do the job cheaper and
faster
Inaccurate estimates of cost and time havecaused many project failures
8/3/2019 Lesson 1 Software Engineering
17/25
Software costs often dominate 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
Software costs
8/3/2019 Lesson 1 Software Engineering
18/25
Stakeholders in Software
Engineering1. Users
Those who use the software
2. Customers
Those who pay for the software
3. Software developers
4. Development Managers
All four roles can be fulfilled by the same person
8/3/2019 Lesson 1 Software Engineering
19/25
Software Quality...
Usability
Users can learn it and fast and get their job done easily
Efficiency
It doesnt waste resources such as CPU time and memory Reliability
It does what it is required to do without failing
Maintainability
It can be easily changed Reusability
Its parts can be used in other projects, so reprogramming is not
needed
8/3/2019 Lesson 1 Software Engineering
20/25
Software Quality...
QUALITY
SOFTWARE
Developer:
easy to design;
easy to maintain;
easy to reuse its parts
User:
easy to learn;
efficient to use;
helps get work done
Customer:
solves problems atan acceptable cost in
terms of money paid and
resources used
Development manager:
sells more and
pleases customerswhile costing less
to develop and maintain
8/3/2019 Lesson 1 Software Engineering
21/25
Software Quality
The different qualities can conflict
Increasing efficiency can reduce maintainability orreusability
Increasing usability can reduce efficiency
Setting objectives for quality is a key engineeringactivity
You then design to meet the objectives Avoids over-engineering which wastes money
Optimizing is also sometimes necessary
E.g. obtain the highest possible reliability using a fixedbudget
8/3/2019 Lesson 1 Software Engineering
22/25
Importance of product characteristics
The relative importance of these characteristics
depends on the product and the environment in
which it is to be used In some cases, some attributes may dominate
In safety-critical real-time systems, key attributes
may be dependability and efficiency
Costs tend to rise exponentially if very highlevels of any one attribute are required
8/3/2019 Lesson 1 Software Engineering
23/25
Efficiency costsCost
Efficiency
8/3/2019 Lesson 1 Software Engineering
24/25
Introduction to Software Engineering
Questions
Why so long to complete programs ?
Why costs so high ?
Why still contain errors when handed over ?
Why so difficult to measure progress ?
8/3/2019 Lesson 1 Software Engineering
25/25
The END
Zainudin Johari
Senior Lecturer
Unity
B Sc. (Hons) Computer Science, UPM
M Sc. Computer Science (Information Systems) UPM