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