Software Engineering - Introduction
Introduction to Software Software Engineering is an engineering
Engineering discipline which is concerned with all
aspects of software production from the
Rajkumar Buyya early stages of system requirements
Grid Computing and Distributed Systems Lab through to maintaining the system after
Dept. of Computer Science and Software Engineering is has gone into use.
University of Melbourne, Australia
http:// [Link]
1 2
Software Engineering/ Computer Science Notes
“Engineering discipline” – Engineers make things work.
They apply theories, methods and tools that are
Computer Science is concerned with the appropriate but use them selectively and always try to
discover solutions to problems even when there are not
theories and methods which underlie applicable theories and methods to support them.
computers and software systems. Engineers have to work to organizational and financial
constraints.
“ All aspects of” - Software engineering is not just
Software Engineering is concerned with concerned with the technical process of software
the practical problem of producing development but also with activities such as software
project management and the development of tools,
software. methods and theories to support software production.
3 4
Software Crisis Aspects of Software Engineering
Have you ever received a bill for $0.00 ?
Did you respond by sending a cheque for $0 Historical Aspects
Have you any idea what this cheque did for our
computer system ? Economical Aspects
Whether we dealing with billing software or
word processing, software is being delivered: Maintenance Aspect
Over Time
Over Budget Team Programming Aspects
Low Quality
Full of bugs/ residual faults Design and Programming Aspects
Software engineering is an attempt to solve
these problems.
5 6
Historical Aspects Scope of Software Engineering
It is a fact that electric generators fail, but far
less frequently than payroll products.
Why cannot other engineering techniques
It is true that bridges/ cars/ aero-planes
sometimes collapse, but considerably less often be used to build operating systems?
than operating systems (e.g. MS Windows) do.
In the belief that software could be engineered
on the same footing as traditional engineering
Attitude to collapse
disciplines, a NATO study group coined the
term “Software Engineering” in 1967. Imperfect engineering
This was endorsed by the NATO Software Complexity
Engineering Conference in 1968.
Maintenance
7 8
Examples of Attitudes on Software Economic Aspects
People have the attitude that software collapse is not Techniques should be economically viable
considered and unusual occurrence and therefore don’t
pay as much attention to design.
A new coding method (CM_new) is 10%
How many you rebooted your Microsoft Windows OS?
Most of the time software engineers do not pay due
faster than the currently used method
attention to error scenarios, boundary conditions etc. (CM_old). Should it be used?
Divide by Zero conditions.
Common sense answer
Complexity of software is growing faster than the rate
we can master it. Of course
How many versions/bug fixes MS released within few years ? Software Engineering answer
As a part of regular maintenance software engineers What is the cost?
are expected to do major changes to software which is
not the case in other fields of engineering.
Actually this has become survival strategy for companies like
9 10
MS. Releasing new version every few months.
Maintenance Aspects Relative Cost/ Effort
Life Cycle – The series of steps software Requirements
7% Design
undergoes: 6% I mplementation
Requirements- Understand what the client wants
5%
Specification – Understand what the product is supposed to Testing
do 7%
Design – Identify the modules and the design
Implementation – Write code and unit test
Integration – Combine modules and test
Maintenance – Fixing problems and enhancements Maintenance
I ntegration
67%
Retirement – Product is no longer in use 8%
11 12
Cost to Detect and Fix Faults Team Programming Aspect
Large software products are developed
Relative Cost to detect and correct fault
by large software teams.
Members have different responsibilities
e.g. – requirements, design, implementation,
integration testing.
Projects between 1974 - 1980
Activities between teams have to be well
organized for efficiency.
e.g. – meetings, interfaces
13 14
Overview
I ntroduce two commonly used design
Software Design/ Programming paradigms.
Aspects Structured Design paradigm
Object Oriented Design paradigm
Design Principles
Understand general design principles.
15 16
Software Design - History Structured Paradigm
Before 1975 most organizations did not Structured Designs are
use specific design techniques.
Action (Function) Oriented
1975 – 1985 Structured Paradigm was OR
introduced.
Data Oriented
Structured paradigm had certain short
comings especially for large programs.
But not both
Object Oriented paradigm was introduced
and has become popular today.
17 18
Object Oriented Paradigm Structured vs OO Example
message
Both data and actions are of equal
Withdraw
importance. Deposit
Withdraw
Systems is a collection of interacting Deposit
Objects. Account
balance
message Account
balance
Object
Software component that incorporates DATA Determine Balance
and the ACTIONS that are performed on the Determine
balance
data. message
(b) Object Oriented
19
(a) Structured Paradigm Paradigm 20
Summary Reference
!
Software Engineering is an important discipline Stephen Schach,
due to increased dependence of most of our Classical and Object-
modern life (e.g., banking, entertainment) on Oriented Software
Engineering with UML
its products! and Java, Chapter 1,
By proper software engineering practices McGraw-Hill, New York,
software can be built with: USA.
"
Quality http:/ /[Link]/en
gcs/compsci/schach5/sam
Maintainability [Link]
!
On Time Any other book on
On Budget software engineering is
also fine!
21 22