Академический Документы
Профессиональный Документы
Культура Документы
Unit I
Introduction to the software engineering
Topics
Introduction
1.1 The software life cycle
1.2 Goals for quality software
1.3 Program design
1.4 Fundamental ideas of object-oriented design
1.5 Sources of program errors
1.6 Strategies to avoid program errors
1.7 Testing approaches
1.8 Basic Concepts
Summary
24/09/15
Universidad Politcn
Introduction
At this point in your computing career, you have
completed at least one semester of computer science
course work.
You can take a problem of medium complexity, write an
algorithm to solve the problem, code the algorithm in
C++ or JAVA, and demonstrate the correctness of your
solution.
24/09/15
Universidad Politcn
Introduction
At least, that's what the syllabus for your introductory
class said you should be able to do when you
complete the course.
Now that you are starting your second (or third?)
semester, it is time to stop and review those principles
that, if adhered to, guarantee that you can indeed do
what your previous syllabus claimed.
24/09/15
Universidad Politcn
Requirements
definition
Implementation
of the design
Delivery
Testing and
verification
Maintenance
Operation
24/09/15
Universidad Politcn
24/09/15
Universidad Politcn
24/09/15
Universidad Politcn
24/09/15
Universidad Politcn
24/09/15
Universidad Politcn
10
24/09/15
Universidad Politcn
11
24/09/15
Universidad Politcn
12
24/09/15
Universidad Politcn
13
24/09/15
Universidad Politcn
14
24/09/15
Universidad Politcn
15
24/09/15
Universidad Politcn
16
30
10
1
Requirements
24/09/15
2
Specification
3
Planning
4
Design
Implementation Integration
Universidad Politcn
Maintenance
17
Software Development
Lifecycle
Waterfall Model
Requirements
Design
Implementation
Integration
Validation
Deployment
24/09/15
Universidad Politcn
18
Software Development
Lifecycle
Spiral Model
Evaluate alternatives,
identify, resolve risks,
develop prototypes
Determine objectives
alternatives, constraints
Develop, verify
next-level product
24/09/15
Universidad Politcn
19
Requirements
Problem Definition Requirements Specification
determine exactly what the customer and user want
develop a contract with the customer
specifies what the software product is to do
Difficulties
client asks for wrong product
client is computer/software illiterate
specifications are ambiguous, inconsistent, incomplete
24/09/15
Universidad Politcn
20
Architecture/Design
Requirements Specification Architecture/Design
architecture: decompose software into modules with
interfaces
design: develop module specifications (algorithms, data
types)
maintain a record of design decisions and traceability
specifies how the software product is to do its tasks
Difficulties
miscommunication between module designers
design may be inconsistent, incomplete, ambiguous
24/09/15
Universidad Politcn
21
Difficulties
module interaction errors
order of integration may influence quality and
productivity
24/09/15
Universidad Politcn
22
Difficulties
rigid design
lack of documentation
personnel turnover
24/09/15
Universidad Politcn
23
24/09/15
Universidad Politcn
24
24/09/15
Universidad Politcn
25
24/09/15
Universidad Politcn
26
24/09/15
Universidad Politcn
27
24/09/15
Universidad Politcn
28
24/09/15
Universidad Politcn
29
24/09/15
Universidad Politcn
30
24/09/15
Universidad Politcn
31
24/09/15
Universidad Politcn
32
24/09/15
Universidad Politcn
33
24/09/15
Universidad Politcn
34
24/09/15
Universidad Politcn
35
24/09/15
Universidad Politcn
36
24/09/15
Universidad Politcn
37
24/09/15
Universidad Politcn
38
24/09/15
Universidad Politcn
39
24/09/15
Universidad Politcn
40
24/09/15
Universidad Politcn
41
24/09/15
Universidad Politcn
42
24/09/15
Universidad Politcn
43
24/09/15
Universidad Politcn
44
24/09/15
Universidad Politcn
45
24/09/15
Universidad Politcn
46
24/09/15
Universidad Politcn
47
24/09/15
Universidad Politcn
48
24/09/15
Universidad Politcn
49
24/09/15
Universidad Politcn
50
24/09/15
Universidad Politcn
51
24/09/15
Universidad Politcn
52
24/09/15
Universidad Politcn
53
24/09/15
Universidad Politcn
54
24/09/15
Universidad Politcn
55
24/09/15
Universidad Politcn
56
24/09/15
Universidad Politcn
57
24/09/15
Universidad Politcn
58
24/09/15
Universidad Politcn
59
24/09/15
Universidad Politcn
60
24/09/15
Universidad Politcn
61
24/09/15
Universidad Politcn
62
24/09/15
Universidad Politcn
63
Universidad Politcn
64
24/09/15
Universidad Politcn
65
24/09/15
Universidad Politcn
66
24/09/15
Universidad Politcn
67
24/09/15
Universidad Politcn
68
24/09/15
Universidad Politcn
69
24/09/15
Universidad Politcn
70
24/09/15
Universidad Politcn
71
24/09/15
Universidad Politcn
72
24/09/15
Universidad Politcn
73
24/09/15
Universidad Politcn
74
24/09/15
Universidad Politcn
75
24/09/15
Universidad Politcn
76
24/09/15
Universidad Politcn
77
24/09/15
Universidad Politcn
78
24/09/15
Universidad Politcn
79
24/09/15
Universidad Politcn
80
24/09/15
Universidad Politcn
81
Summary
When details are hidden at each level, the code
becomes simpler and more readable, which makes the
program easier to write and modify.
24/09/15
Universidad Politcn
82
Summary
Both functional decomposition and object-oriented
design processes produce modular units that are also
easier to test, debug, and maintain.
One positive side effect of modular design is that
modifications tend to be localized in a small set of
modules, so the cost of modifications is reduced.
24/09/15
Universidad Politcn
83
Summary
Remember that whenever a module is modified, it
must be retested to make sure that it still works
correctly in the program.
By localizing the modules affected by changes to the
program, we limit the extent of retesting needed.
24/09/15
Universidad Politcn
84
Summary
An understanding of the wide range of activities
involved in software development-from requirements
analysis through maintenance of the resulting
program-leads to an appreciation of a disciplined
software engineering approach.
The life-cycle verification activities are:
24/09/15
Universidad Politcn
85
Summary
24/09/15
Universidad Politcn
86
Bibliography
Grady Booch, Object Oriented Design with Applications
(Benjamin Cummings, 1991).
K.
B.
Beck
and
W.
Cunningham,
http://c2.com/doc/oopsla89/paper.html.
Grady Booch, "What Is and Isn't Object Oriented Design."
American Programmer, special issue on object orientation, vol.
2, no. 7-8, Summer 1989.
B. W. Boehm, Software Engineering Economics (Englewood
Cliffs, N.J.: Prentice-Hall, 1981).
24/09/15
Universidad Politcn
87