|
Preface
to the third edition
|
vii
|
|
|
|
|
1 Basic
concepts
|
1
|
|
1.1 Historical
background
|
2
|
|
1.2 What
are object-oriented methods?
|
10
|
|
1.3 Basic
terminology and ideas
|
10
|
|
1.3.1
Abstractions and encapsulation
|
17
|
|
1.3.2
Inheritance
|
26
|
|
1.3.3
Encapsulation, inheritance and object-orientation
|
33
|
|
1.4 Summary
|
36
|
|
1.5 Bibliographical
notes
|
37
|
|
1.6 Exercises
|
39
|
|
|
|
|
2
The benefits of object-oriented programming
and methods
|
41
|
|
2.1 The
benefits
|
43
|
|
2.2 Some
problems and pitfalls
|
58
|
|
2.3 Case
studies
|
62
|
|
2.4 Adoption
strategies
|
64
|
|
2.5 Summary
|
68
|
|
2.6 Bibliographical
notes
|
70
|
|
2.7 Exercises
|
71
|
|
|
|
|
3 Object-oriented
and object-based programming languages
|
73
|
|
3.1 Object-oriented
languages
|
74
|
|
3.1.1
Simula
|
74
|
|
3.1.2
Smalltalk and its dialects
|
76
|
|
3.1.3
C extensions
|
78
|
|
3.1.4
Eiffel
|
82
|
|
3.1.5
Java
|
84
|
|
3.1.6
Object-Oriented COBOL
|
86
|
|
3.2 Other
languages with object-oriented features
|
87
|
|
3.3 Functional
and applicative languages
|
89
|
|
3.4 AI
based systems
|
94
|
|
3.4.1
Lisp extensions
|
94
|
|
3.4.2
Other AI based development systems
|
98
|
|
3.5 Object
libraries, application frameworks and OO 4GLs
|
99
|
|
3.6 Other
developments
|
102
|
|
3.6.1
Other languages
|
102
|
|
3.6.2
Type theories and object-oriented programming
|
104
|
|
3.6.3
Object-oriented programming in conventional
languages
|
106
|
|
3.7 Selecting
an object-oriented language
|
107
|
|
3.8 Directions
and trends
|
109
|
|
3.9 Summary
|
110
|
|
3.10 Bibliographical
notes
|
112
|
|
3.11 Exercises
|
113
|
|
|
|
|
4 Distributed
computing, middleware and migration
|
115
|
|
4.1 Distributed
and client-server computing
|
116
|
|
4.1.1 Network
and architectural issues
|
125
|
|
4.2 Object
request brokers and middleware
|
126
|
|
4.2.1
The rôle of XML
|
135
|
|
4.3 Enterprise
Application Integration
|
137
|
|
4.4 Migration
strategies
|
141
|
|
4.4.1 Interoperation
of object-oriented systems with conventional
IT
4.4.2 Data
management strategies for wrappers
4.4.3 Practical
problems with migration
4.4.4 Reusing
existing software components and packages
4.4.5 Using
object-oriented analysis as a springboard
4.4.6
Object-oriented analysis and knowledge based
prototyping
4.4.7
Object technology as a migration strategy in
itself
|
142
145
147
149
151
153
155
|
|
4.5 Summary
|
157
|
|
4.6 Bibliographical
notes
|
160
|
|
4.7 Exercises
|
161
|
|
|
|
|
5 Database
technology
|
163
|
|
5.1 A
potted history of data models
|
164
|
|
5.1.1
Weaknesses of early databases
|
166
|
|
5.1.2
The relational model and how it helps
|
169
|
|
5.1.3
Semantic data models and data analysis methods
|
181
|
|
5.2 Weaknesses
in the relational model
|
188
|
|
5.2.1
Normalization
|
188
|
|
5.2.2
Integrity and business rules
|
189
|
|
5.2.3
Null Values
|
190
|
|
5.2.4
Abstract data types and complex objects
|
191
|
|
5.2.5
Recursive queries
|
191
|
|
5.3 Entity-Relationship
and deductive databases
|
192
|
|
5.3.1
Entity-Relationship databases
|
192
|
|
5.3.2
Deductive databases
|
193
|
|
5.4 Object-relational
databases
|
194
|
|
5.5 Query
languages
|
198
|
|
5.6
What is an object-oriented
database?
|
200
|
|
5.7 Benefits
of object-oriented databases
|
207
|
|
5.7.1
Benefits arising from a need to use object-oriented
programming
|
207
|
|
5.7.2
Benefits arising from enriched semantic capabilities
|
208
|
|
5.7.3
Benefits of object-oriented databases as such
|
209
|
|
5.7.4 Problems
with object-oriented databases
|
211
|
|
5.8 Survey
of OODB products
|
213
|
|
5.8.1
Commercial object-oriented databases
|
213
|
|
5.8.2
Other influential products and projects
|
220
|
|
5.9 Referential
integrity in object databases
|
223
|
|
5.10 Applications
of object-oriented databases
|
227
|
|
5.10.1
Distributed databases and full-content retrieval
|
228
|
|
5.11 Strategic
considerations
|
230
|
|
5.12 Summary
|
231
|
|
5.13 Bibliographical
notes
|
233
|
|
5.14
Exercises
|
235
|
|
|
|
|
6 Object-oriented
analysis and design
|
237
|
|
6.1 The
history of object-oriented design and analysis
methods
|
238
|
|
6.2 Software
engineering
|
242
|
|
6.2.1
Responsibility-driven versus data-driven
approaches
6.2.2
Translational versus elaborational approaches
|
247
248
|
|
6.3 Object-oriented
analysis and design using UML and Catalysis
|
249
|
|
6.3.1
Object structures
|
253
|
|
6.3.2
Using use cases to discover types
|
262
|
|
6.3.3
Invariants and rulesets
6.3.4
Invariants and encapsulation
6.3.5
State models
6.3.6
Moving to component design
6.3.8
The design process
|
269
282
290
293
300
|
|
6.3.9
Documenting models
|
301
|
|
6.3.10
Real-time extensions
|
302
|
|
6.4 Identifying
objects
|
304
|
|
6.4.1
Philosophy of knowledge and classification theory
|
306
|
|
6.4.2
Task analysis
|
311
|
|
6.4.3
Kelly grids
|
316
|
|
6.5 CASE
tools
|
319
|
|
6.6 Summary
|
321
|
|
6.7 Bibliographical
notes
|
321
|
|
6.8 Exercises
|
322
|
|
|
|
|
7 Architecture,
patterns and components
|
325
|
|
7.1 Software
and system architecture
|
|
|
7.2 Patterns,
architecture and decoupling
|
|
|
7.2.1
Design patterns for decoupling
|
|
|
7.3 Designing
components
|
|
|
7.2.1
Components for flexibility
|
|
|
7.2.2
Large-scale connectors
|
|
|
7.2.3
Mapping the business model to the implementation
|
|
|
7.2.4
Business components and libraries
|
|
|
7.4 Summary
|
|
|
7.5 Bibliographical
notes
|
|
|
7.6 Exercises
|
|
|
|
|
|
8 Requirements
engineering
|
378
|
|
8.1 Approaches
to requirements engineering
|
|
|
8.2 Requirements
engineering versus system specification
|
|
|
8.2.1
Collaborative work, work-flow automation and
groupware
|
|
|
8.3 De-scoping
large problems – the mission grid
|
|
|
8.4 Discovering
business objectives and priorities
|
|
|
8.5 Agents,
conversations and business processes
|
|
|
8.5.1
business process models
|
|
|
8.5.2
Activity diagrams and business process modelling
|
|
|
8.6 From
conversations to tasks and use cases
|
|
|
8.7 From
the Task Object Model to the Business Object
Model
|
|
|
8.8 Seamlessness
|
|
|
8.9 The
syllogism pattern for use case generation
|
|
|
8.10 Ensuring
the completeness of scenarios
|
|
|
8.11 Task
association sets and sequence diagrams
|
|
|
8.11.1
Conjunctive, disjunctive and nested association
sets
|
|
|
8.12 Executable
specifications and simulation
|
|
|
8.12.1
Discrete event and time-based simulation
|
|
|
8.13 Organizing
and running requirements workshops
|
|
|
8.13.1
Rôles adopted during a workshop
|
|
|
8.13.2
Who should attend workshops
|
|
|
8.13.3
Selecting a location
|
|
|
8.13.4
Workshop logistics
|
|
|
8.13.5
Workshop organizer's and facilitator's checklists
|
|
|
8.13.6
Facilitation skills
|
|
|
8.13.7
Who should record the session
|
|
|
8.13.8
Running a workshop
|
|
|
8.13.9
Using interviewing techniques in a workshop
context
|
|
|
8.14 Summary
|
|
|
8.15 Bibliographical
Notes
|
|
|
8.16 Exercises
|
|
|
|
|
|
9 Process
and project management
|
464
|
|
9.1 Why
follow a process?
|
|
|
9.2 What
must an object-oriented method do?
|
|
|
9.3 Classic
life cycle models
|
|
|
9.3.1
Waterfall, V and X models
|
|
|
9.3.2
Spiral models
|
|
|
9.3.3
The fountain model and MOSES
|
|
|
9.3.4
Fractals, conches and pinballs
|
|
|
9.4 Workshops,
time-boxes and evolutionary development
|
|
|
9.4.1
Principles of dynamic system development
|
|
|
9.5 Process
and product life-cycle models
|
|
|
9.5.1
OO life cycle models
|
|
|
9.5.2
Objectory and the Rational Unified Process
|
|
|
9.5.3
The OPEN Process Framework
|
|
|
9.6 The
TriReme contract-driven process model
|
|
|
9.6.1
Project Initiation stage and activity
|
|
|
9.6.2
Requirements activity
|
|
|
9.6.3
Analysis elaboration activity
|
|
|
9.6.4
Time-box planning activity
|
|
|
9.6.5
Development within a time-box: The Build activity
|
|
|
9.6.6
Design activity
|
|
|
9.6.7
Programming activity
|
|
|
9.6.8
Testing activity
|
|
|
9.6.9
User review and UAT activity
|
|
|
9.6.10
Consolidation, coordination, reuse and documentation
|
|
|
9.6.11
Evaluation and reuse evaluation activity
|
|
|
9.6.12
Implementation planning activity
|
|
|
9.6.13
Development planning and resource planning activities
|
|
|
9.6.14
Domain modelling and repository administration
activity
|
|
|
9.6.15
Bug fixing activity
|
|
|
9.6.16
General project management tasks and issues
|
|
|
9.6.17
Project rôles and responsibilities
|
|
|
9.7 Reuse
management
|
|
|
9.8 Metrics
and process improvement
|
|
|
9.9 Principles
of user interface design
|
|
|
9.9.1
Designing the HCI
|
|
|
9.9.1
Fundamentals of Cognitive Psychology
|
|
|
9.9.1
Principles for HCI design
|
|
|
9.9.1
Guidelines for user interface design
|
|
|
9.10 Testing
|
|
|
9.11 Changing
the IT organization
|
|
|
9.12 Summary
|
|
|
9.13 Bibliographical
notes
|
|
|
9.14 Exercises
|
|
|
|
|
|
10 Applications
|
582
|
|
10.1 Web
applications
|
|
|
10.2 Other
commercial applications
|
|
|
10.2.1
Graphical user interfaces
|
|
|
10.2.2
Simulation
|
|
|
10.2.3
Geographic information system
|
|
|
10.2.4
Concurrent systems and parallel hardware
|
|
|
10.2.5
Other applications
|
|
|
10.3 Expert
systems, AI and intelligent agents
|
|
|
10.3.1
Blackboards and actor systems
|
|
|
10.3.2
Neural networks and parallel computing
|
|
|
10.3.3
Intelligent agents
|
|
|
10.4 Back
to the future
|
|
|
10.5 Summary
|
|
|
10.6 Bibliographical
notes
|
|
|
|
|
|
Appendices
|
|
|
|
|
|
A Fuzzy
objects: inheritance under uncertainty
|
625
|
|
A.1 Representing
knowledge about objects in AI
|
|
|
A.2 Basic
concepts of fuzzy set theory
|
|
|
A.3 Fuzzy
objects
|
|
|
A.4 An
application
|
|
|
A.5 Fuzzy
objects, fuzzy quantifiers and nonmonotonic
logics
|
|
|
A.6 Business
policy and fuzzy models
|
|
|
A.7 Control
rules for fuzzy multiple inheritance systems
|
|
|
A.8 Design
theory for fuzzy objects
|
|
|
A.9 The
relationship of fuzzy objects to other concepts
|
|
|
A.10 Summary
|
|
|
A.11 Bibliographical
notes
|
|
|
|
|
|
B Seminal
OOA/D methods
|
663
|
|
B.1 Early
design methods and notations
|
|
|
B.2 Analysis
methods and notations
|
|
|
B.3 Transformational
versus elaborational methods
|
|
|
B.4 Methods
and process (MOSES, SOMA, Fusion, Texel)
|
|
|
B.5 Summary
|
|
|
B.6 Bibliographical
notes
|
|
|
|
|
|
C
UML notation summary
|
739
|
|
|
|
|
D Answers
to selected exercises
|
|
|
|
|
|
Glossary
of terms
|
|
|
|
|
|
References
and bibliography
|
|
|
|
|
|
Name
index
|
|
|
|
|
|
Subject
index
|
|