jump to first page (c) 1999, a. lakhotia 1 software engineering? arun lakhotia university of...
TRANSCRIPT
Jump to first page
(c) 1999, A. Lakhotia
1
Software engineering?
Arun Lakhotia
University of Louisiana at Lafayette
Po Box 44330
Lafayette, LA 70504, USA
Jump to first page(c) 1999, A. Lakhotia
2
Overview
Why Software Engineering? What is Software Engineering?
Jump to first page(c) 1999, A. Lakhotia
3
Why Software Engineering?
Jump to first page(c) 1999, A. Lakhotia
4
To Develop Products to Solve Bigger Problems
Problem Code size Person times
Class assignments 20-200 lines 4-5 days
Assembler 2,000 lines 3 months
Basic Interpreter 15,000 lines 4 years
C Compiler (simple) 25,000 lines 8 years
Optimizing, retargateable C compiler
290,000 lines 40 years
ATM Machines 1 Million lines ???
Telephone systems 3 million lines
Jump to first page(c) 1999, A. Lakhotia
5
To Develop Reliable Products
Reliability of system P = Probability a component will fail N = Number of components Reliability = P * P * .. * P = PN
N P = 0.5 P = 0.99
1 0.5 0.99
10 0.00976 0.9043
100 7.88 E –31 0.36603
1,000 ******* 0.0000431
10,000 ******* 2.248 E –44
100,000 ******* ******
Jump to first page(c) 1999, A. Lakhotia
6
To Manage Chaos Due to Communication
Jump to first page(c) 1999, A. Lakhotia
7
To Reduce Cost of Fixing Errors
Phase in which error is detected
Relative cost of repair
Requirements 0.1 – 0.2
Design 0.5
Coding 1
Unit test 2
Acceptance test 5
Maintenance 20
Jump to first page(c) 1999, A. Lakhotia
8
To Decrease Risks
Paid, not delivered
29%
Used after serious rework
19%
Used as delivered
2%
Used after changes
3%
Delivered, not used47%
Jump to first page(c) 1999, A. Lakhotia
9
What is Software Engineering? Definitions
Establishment and use of sound engineering principles in order to obtain economically software that is reliable and works on real machines. [Bauer, 1972]
The practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them. [Boehm, 1976]
Application of tools, methods, and disciplines to produce and maintain an automated solution to a real-world problem. [Blum, 1993]
Management of people, processes, and products and use of scientific knowledge to design, construct, validate, and maintain software products that are reliable, economical, and useful. [Lakhotia, 1995].
Jump to first page(c) 1999, A. Lakhotia
10
What is Software Engineering?
Manage: People Processes Products
and use scientific knowledge to Design Construct Validate Maintain software products
that are: Reliable Economical, and Useful
Jump to first page(c) 1999, A. Lakhotia
11
Manage Software Development Processes
Software process models Life-cycle models Process maturity models Statistical process control models
Process models provide a template of tasks performed during development, ordering of these tasks, and relative effort needed for each task.
Jump to first page(c) 1999, A. Lakhotia
12
Software Development Process Models: Waterfall model
Life cycle models: Waterfall model
System Engineering
Code
DesignAnalysis
Test
Maintain
Jump to first page(c) 1999, A. Lakhotia
13
Software Development Process Model: Spiral Model
Life cycle models: Spiral model
Described in class
Jump to first page(c) 1999, A. Lakhotia
14
Software Development Process Model: Waterfall model with V&V
Life cycle models: Waterfall model with V&V
Described in class
Jump to first page(c) 1999, A. Lakhotia
15
Management of Products
Build models Object-oriented models Data models Function models
Techniques Requirement acquisition User interface design Formal specification Coding standards and styles
Jump to first page(c) 1999, A. Lakhotia
16
Management of Products, cond.
Evaluate products Testing Code walkthrough Review Formal verification Measure static properties Measure dynamic properties Measure reliability Estimate bugs
Jump to first page(c) 1999, A. Lakhotia
17
Management of Products, contd.
Maintain Port to different hardware or software platform Add new features Apply bug fixes Manage versions Manage configurations
Retire Move to new technology Extract business rules from dying code Replace product without disruption
Jump to first page(c) 1999, A. Lakhotia
18
Management of People
Organization of teams Communication protocols
Meetings Reviews Demonstrations Log books
Incentives for quality and quantity Measure productivity