Stephen H. Kaisler9780471483472, 0471483478
Table of contents :
Cover……Page 1
CONTENTS……Page 9
INTRODUCTION……Page 19
1.1 THE MEANING OF PARADIGM……Page 20
1.2.1 Software Architecture……Page 21
1.2.2 Choosing a Programming Language……Page 22
1.3 DESIGNING AND DEVELOPING SOFTWARE……Page 23
1.3.1 Reusability……Page 24
1.4 UNDERSTANDING PROBLEM PARADIGMS……Page 25
1.4.3 Problem Classes……Page 26
1.5 OVERVIEW OF BOOK……Page 27
1.7 EXERCISES……Page 28
PARADIGM OVERVIEW……Page 29
2.1.1 Sequential Versus Concurrent Problems……Page 31
2.1.2 Transformational Versus Reactive Programs……Page 34
2.2.1 Search……Page 35
2.2.4 Generation and Enumeration……Page 36
2.2.6 Sorting……Page 37
2.2.7 Graph Traversal……Page 38
2.3.1 Programming Language Paradigms……Page 39
2.3.2 Imperative Programming Languages……Page 40
2.3.3 Functional Programming Languages……Page 41
2.3.4 Object-Oriented Programming Languages……Page 42
2.3.5 Logic Programming Languages……Page 44
2.3.6 Understanding Programming Languages……Page 45
2.4 DESIGN PATTERNS……Page 46
2.4.1 Types of Patterns……Page 47
2.5 COMPONENTS……Page 48
2.5.2 Interconnection……Page 49
2.6 SOFTWARE ARCHITECTURES……Page 51
2.7 FRAMEWORKS……Page 52
2.7.1 Design Patterns Versus Frameworks……Page 53
2.7.3 Building Frameworks……Page 54
Software Architecture Patterns……Page 55
2.9 EXERCISES……Page 56
— Part 1. DESIGN PATTERNS……Page 57
3.1 A BRIEF HISTORY OF PATTERNS……Page 59
3.3 PATTERN SPACES……Page 60
3.5 DESCRIBING PATTERNS……Page 62
3.6 HOW DO WE DISCOVER PATTERNS?……Page 63
3.7.1 How We Use Patterns……Page 64
3.7.3 Ensuring Consistency……Page 65
3.9 EXERCISES……Page 66
4.1 SINGLETON……Page 67
4.1.1 Describing the Singleton Pattern……Page 68
4.1.2 Implementing the Singleton Pattern in C++……Page 69
4.1.3 Implementing the Singleton Pattern in Java……Page 71
4.2.1 Types of Wrappers……Page 72
4.2.2 Simple Wrappers……Page 75
4.2.4 Providing Single Interfaces to Different Objects……Page 76
4.2.5 Object Fusion……Page 77
4.2.7 Principles for Wrapping……Page 78
4.3 THE ABSTRACT FACTORY PATTERN……Page 79
4.3.1 Example: DBFactory……Page 80
4.3.2 Implementing the Abstract Factory……Page 81
4.3.4 Analysis of the Abstract Factory Pattern……Page 83
4.4 OBSERVER PATTERN……Page 84
4.4.1 Implementing the Observer Pattern……Page 85
4.4.3 Implementation Issues……Page 87
4.5 EXERCISES……Page 88
5.1 STYLE GUIDES……Page 90
5.2 AN HCI PATTERN LANGUAGE……Page 91
5.2.1 Motivation……Page 92
5.3 WEB DESIGN PATTERNS……Page 93
5.3.1 Welie’s Patterns……Page 94
5.3.2 Tidwell’s Web Patterns……Page 96
5.5 EXERCISES……Page 97
6.1 COPLIEN’S PATTERNS……Page 98
6.1.1 Size the Schedule……Page 99
6.1.4 Hub, Spoke and Rim……Page 100
6.2.1 Object-to-Object Communication……Page 101
6.2.2 Object Relationship Patterns……Page 102
6.3.1 Design By Committee……Page 104
6.3.3 Paralysis Through Analysis……Page 105
6.3.6 Some Architectural Antipatterns……Page 106
6.5 EXERCISES……Page 107
7.1 DESIGN PATTERN ISSUES……Page 108
7.1.2 Patterns as Building Blocks……Page 109
7.2 SOME SIMPLE PATTERN DESIGN PRINCIPLES……Page 110
7.3 LIMITATIONS OF DESIGN PATTERNS……Page 111
7.4 FURTHER READING……Page 112
7.5 EXERCISES……Page 113
— Part 2. COMPONENTS……Page 115
COMPONENT CONCEPTS……Page 117
8.1.1 Component Facets……Page 118
8.1.2 Describing Interfaces……Page 119
8.1.3 Are Components Objects?……Page 121
8.1.4 Ada Packages as Components……Page 122
8.2 WHY USE COMPONENTS?……Page 126
8.2.1 Component Composition……Page 127
8.2.2 Component Integration……Page 129
8.2.3 Component Substitution……Page 130
8.3.1 The CORBA Component Models……Page 131
8.3.2 Other Component Models……Page 134
8.3.3 Component Model Elements……Page 135
8.4.1 Static Binding……Page 138
8.4.2 Dynamic Binding……Page 139
8.5.1 Properties of Reusable Components……Page 141
8.5.2 Guidelines for Reusability……Page 142
8.5.4 Component Reuse Metrics……Page 143
8.6 EXERCISES……Page 145
9.1 EVENT-BASED COMPONENTS……Page 147
9.1.2 Event-Based Component Integration……Page 149
9.1.3 Event Models……Page 150
9.1.4 Web Services……Page 151
9.2.1 Types of Java Events……Page 152
9.2.3 Generic Listener Example……Page 154
9.3 DISTRIBUTED COMPONENTS……Page 156
9.3.1 Distributing Components……Page 157
9.3.3 Interoperability……Page 158
9.3.4 Advantages and Disadvantages of a Distributed System……Page 161
9.4.2 Transaction Properties……Page 162
9.6 EXERCISES……Page 163
10.1 CORBA……Page 164
10.1.1 CORBA Concepts……Page 165
10.1.2 CORBA Benefits……Page 167
10.1.4 CORBA Performance Issues……Page 168
10.2.1 SOM Objects……Page 169
10.2.3 OpenDoc Technology……Page 172
10.3 MICROSOFT’S COM/DCOM……Page 180
10.3.1 Component Object Model……Page 181
10.3.2 Interobject Communication……Page 184
10.3.3 Access to COM Objects……Page 187
10.3.4 Distributed COM……Page 189
10.3.5 Security Support……Page 192
10.4.1 The Concept of JavaBeans……Page 194
10.4.3 Enterprise JavaBeans (EJB)……Page 195
10.4.5 Java Distributed Object Model……Page 198
10.4.6 Jini……Page 199
Javabeans……Page 201
10.6 EXERCISES……Page 202
COMPONENT-BASED SOFTWARE ENGINEERING……Page 203
11.2 PROBLEMS WITH CBSE……Page 204
11.2.2 Finding Components……Page 205
11.2.3 Using Components……Page 206
11.2.5 Harvesting Components for Reuse……Page 207
11.3.1 Interoperability……Page 208
11.3.4 Dependability of COTS Components……Page 211
11.4.1 Mapping Between Object Models……Page 212
11.4.4 Hooking into Legacy Components……Page 213
11.5 EXERCISES……Page 214
— Part 3. SOFTWARE ARCHITECTURES……Page 215
OVERVIEW OF SOFTWARE ARCHITECTURES……Page 217
12.1.1 Architectural Elements……Page 218
12.1.3 Architectural Description……Page 221
12.2.1 Motivation for Software Architecture……Page 222
12.2.3 Organizational Use……Page 223
SOFTWARE ENGINEERING……Page 224
12.3.2 Software Programming and Software Engineering……Page 225
12.4.1 What Is a Domain?……Page 226
12.4.2 DSSA Approach……Page 227
12.4.3 DSSA Structure……Page 228
12.4.4 Domain Analysis……Page 230
12.4.5 Domain Environments……Page 231
12.5.1 Software Architecture Roles……Page 232
12.5.2 Software Architecture Benefits……Page 234
12.5.3 Realizing Software Architecture Benefits……Page 235
12.7 WHAT TO LOOK FOR……Page 236
12.9 EXERCISES……Page 238
13.1 THE DATA FLOW MODEL……Page 239
13.1.1 Data Flow Characteristics……Page 240
13.1.3 Data Flow Implementation……Page 241
13.1.4 Fine-Grained Data Flow……Page 242
13.1.6 Systolic Arrays……Page 243
13.1.7 Summary of Data Flow Architecture……Page 244
13.2 BATCH SEQUENTIAL SYSTEMS……Page 245
13.3 PIPE AND FILTER ARCHITECTURE……Page 246
13.3.1 Pipeline Examples……Page 247
13.3.2 A Pipeline Model……Page 248
13.3.4 Pipe and Filter Examples……Page 249
13.3.5 The CMU Warp Processor……Page 251
13.3.6 Issues for the Pipe and Filter Model……Page 253
13.3.7 Assessment……Page 255
13.4 FURTHER READING……Page 256
13.5 EXERCISES……Page 257
14.1 MAIN PROGRAM AND SUBROUTINES……Page 258
14.1.2 Advantages and Disadvantages……Page 260
14.2 CLIENT–SERVER SYSTEMS……Page 261
14.2.1 Client and Server Design……Page 262
14.2.2 Two-Tier to N-Tier……Page 263
14.2.3 Connection Versus Connection-Oriented Service……Page 265
14.2.4 Stateless Versus Stateful Servers……Page 266
14.2.6 Issues Affecting Client–Server Systems……Page 267
14.3 OBJECT-ORIENTED SYSTEMS……Page 268
14.3.2 Inheritance Versus Delegation……Page 269
14.3.4 Distributed Object Systems……Page 271
14.4.1 Hierarchical Abstraction……Page 272
14.4.2 Advantages and Disadvantages……Page 273
14.6 EXERCISES……Page 275
15.1.1 Command Language Processors……Page 276
15.2.1 Early VM Systems……Page 277
15.2.2 IBM’s VM/SP……Page 278
15.2.4 The Java Virtual Machine……Page 280
15.3 RULE-BASED SYSTEMS……Page 281
15.3.2 RBS Types……Page 282
15.5 FURTHER READING……Page 286
15.6 EXERCISES……Page 287
16.1.1 CSP Concepts……Page 288
16.1.2 Problems with CSP……Page 289
16.2 EVENT-BASED SYSTEMS……Page 290
16.2.1 Event System Design……Page 291
16.2.2 Mediating Events……Page 293
16.2.3 CORBA Event Service……Page 295
16.2.5 The Cambridge Event Architecture……Page 296
16.3.1 Scalability……Page 298
16.3.5 Quality of Service……Page 299
16.4.2 Broker System Design……Page 300
16.4.3 Advantages and Disadvantages……Page 301
Event-Based Systems……Page 302
16.6 EXERCISES……Page 303
DATA-CENTRIC SYSTEMS……Page 304
17.1.1 Database Management Systems……Page 305
17.1.2 Object-Oriented Database Systems……Page 306
17.1.3 Active Database Systems……Page 307
17.2 BLACKBOARD SYSTEMS……Page 311
17.2.2 Problem-Solving Models……Page 312
17.2.4 Advantages and Disadvantages of Using a Blackboard……Page 313
17.3.1 Linda Objects……Page 314
17.3.3 Tuple Matching……Page 315
Database Management Systems……Page 316
17.5 EXERCISES……Page 317
18.1 BASIC CONCEPTS……Page 318
18.1.2 Coarse-Grained Systems……Page 319
18.1.3 Process Interaction……Page 320
18.1.4 Threads……Page 321
18.2 PARALLEL PROGRAMMING……Page 324
18.2.1 Embarrassingly Parallel……Page 326
18.2.2 Variations on a Theme……Page 328
18.3 DATA PARALLEL SYSTEMS……Page 329
18.3.1 A Data Parallel Example……Page 330
18.3.2 Data Parallel Languages……Page 331
18.3.3 Use of Data Parallel Model……Page 332
18.4.1 Synchronous Versus Asynchronous Messages……Page 333
18.4.2 Message Passing Interface……Page 334
18.4.3 Parallel Virtual Machine……Page 337
18.4.5 Fortran D Tools……Page 339
18.5 A PARALLEL PROGRAMMING METHODOLOGY……Page 340
18.5.1 Motivation……Page 341
18.5.3 Problem Decomposition……Page 342
18.5.4 Implementing a Parallel Algorithm……Page 343
18.5.5 Select an Algorithm Structure……Page 344
18.7 EXERCISES……Page 345
19.1 SOFTWARE ARCHITECTURE DESCRIPTION……Page 346
19.1.1 Architecture Description Languages……Page 347
19.1.2 An ADL Example……Page 348
19.1.3 Architectural Analysis……Page 349
19.2.2 Transparency……Page 350
19.2.3 Integrating Components……Page 351
19.2.6 Monolithic Middleware……Page 352
19.2.7 Reflective Architectures……Page 353
19.3 ANALYSIS OF SOFTWARE ARCHITECTURES……Page 354
19.3.1 Structural Analysis……Page 355
19.3.2 Systems Engineering Properties……Page 356
19.3.5 The Architecture Tradeoff Analysis Method……Page 357
19.4 FURTHER READING……Page 359
19.5 EXERCISES……Page 360
— Part 4. FRAMEWORKS……Page 361
FRAMEWORK CONCEPTS……Page 363
20.1.2 Classification by Usage……Page 365
20.1.3 Taligent’s Classification……Page 367
20.2.1 A Framework Architecture……Page 368
20.2.3 Framework Design Elements……Page 370
20.3 USING FRAMEWORKS……Page 372
20.3.2 Implementing Frameworks……Page 373
20.3.3 Advantages and Disadvantages of a Framework……Page 375
20.4.1 Why Describe Frameworks?……Page 376
20.4.2 Elements of a Framework Description……Page 377
20.4.3 Heuristics for Framework Documentation……Page 378
20.5 DESIGNING FRAMEWORKS……Page 379
20.5.1 Flexible Framework Design……Page 380
20.5.4 Aggregation……Page 381
20.5.8 Framework Design Guidelines……Page 382
20.6 PROBLEMS WITH FRAMEWORKS……Page 383
20.6.2 Composition……Page 384
20.6.3 Composition Issues……Page 385
20.7 FRAMEWORK DOMAINS……Page 390
20.9 EXERCISES……Page 391
GUI FRAMEWORKS……Page 392
21.1.1 Smalltalk’s Central Concept……Page 393
21.1.2 Brief Language Overview……Page 396
21.1.3 The Virtual Machine……Page 397
21.1.4 MVC uses Design Patterns……Page 398
21.2 MACAPP FRAMEWORK……Page 399
21.2.2 MacApp Contents……Page 400
21.2.3 MacApp Example……Page 401
21.3.2 The CommonPoint Frameworks……Page 402
21.4 OTHER FRAMEWORKS……Page 403
and MET……Page 404
21.6 EXERCISES……Page 407
22.1 JAVA AS A FRAMEWORK……Page 408
22.1.1 J2EE Overview……Page 409
22.1.3 Java Media Framework……Page 411
22.2.1 Why .NET?……Page 413
22.2.2 The .NET Framework Architecture……Page 414
22.3.1 San Francisco Components……Page 416
San Francisco Approach……Page 419
J2EE……Page 420
22.6 EXERCISES……Page 421
23.1 DEVELOPING FRAMEWORKS……Page 422
23.2 APPLICATION DEVELOPMENT USING A FRAMEWORK……Page 423
23.2.2 Refinement……Page 424
23.2.3 Extension……Page 425
23.3 TESTING FRAMEWORKS……Page 426
23.4.2 Developing Frameworks Is an Iterative Process……Page 427
23.4.4 Information Access……Page 428
23.5 EXERCISES……Page 429
BIBLIOGRAPHY……Page 431
GLOSSARY……Page 445
INDEX……Page 451
Reviews
There are no reviews yet.