Title:
Building reliable component-based software systems
Publication Information:
Norwood, MA : Artech House, 2002
ISBN:
9781580533270
Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010020187 | QA76.76.C66 B85 2002 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
CBSE (component-based software engineering) is the emerging discipline of the development of software components and systems incorporating such components. This resource provides a practical guide to building reliable component-based software systems. It aims to give software-development professionals the guidance they need to effectively manage complex software through the integration of pre-existing components. Moreover, the book discusses the benefits and risks to be considered when developing components and systems using components.
Table of Contents
Preface | p. xxi |
Organization of This Book | p. xxii |
Who Should Read This Book? | p. xxiii |
How to Use This Book | p. xxiv |
Web Site | p. xxiv |
Acknowledgments | p. xxiv |
Introduction | p. xxvii |
Component-Based Software Engineering | p. xxix |
Challenges of CBSE | p. xxx |
Components in Reliable Systems | p. xxxiii |
References | p. xxxvi |
Part 1 The Definition and Specification of Components | p. 1 |
1 Basic Concepts in CBSE | p. 3 |
Introduction | p. 3 |
Components | p. 4 |
Different Component Definitions | p. 5 |
Objects and Components | p. 8 |
Interfaces | p. 9 |
Contracts | p. 10 |
Patterns | p. 12 |
Frameworks | p. 14 |
Relations Between Concepts | p. 16 |
Frameworks and Components | p. 17 |
Frameworks and Contracts | p. 18 |
Frameworks and Patterns | p. 18 |
Conclusion | p. 19 |
Summary | p. 20 |
References | p. 21 |
2 Specification of Software Components | p. 23 |
Introduction | p. 23 |
Current Component Specification Techniques | p. 24 |
Specifying the Semantics of Components | p. 27 |
Specifying Extrafunctional Properties of Components | p. 34 |
Summary | p. 37 |
References | p. 37 |
Part 2 Software Architecture and Components | p. 39 |
3 Architecting Component-Based Systems | p. 41 |
Introduction | p. 41 |
Role of Software Architecture | p. 42 |
Assessment and Evaluation | p. 42 |
Configuration Management | p. 43 |
Dynamic Software Architectures | p. 44 |
Designing Software Architectures | p. 44 |
Architecture Design Process | p. 45 |
Architectural Styles | p. 46 |
Architecture-Driven Component Development | p. 49 |
Custom Components | p. 50 |
Preexisting Components | p. 50 |
Component-Driven Architecture Development | p. 51 |
Summary | p. 53 |
References | p. 54 |
4 Component Models and Technology | p. 57 |
Introduction | p. 57 |
A Short Historical Perspective | p. 58 |
Component Interface and Connections | p. 59 |
Performing Services Transparently | p. 60 |
Notation and Plan | p. 61 |
Acme ADL | p. 62 |
Components and Ports | p. 63 |
Connectors and Roles | p. 63 |
Systems and Attachments | p. 64 |
Representations and Bindings | p. 64 |
Properties, Constraints, Types, and Styles | p. 65 |
Discussion | p. 65 |
JavaBeans Component Model | p. 66 |
Key Features | p. 66 |
Interface of a Component | p. 67 |
Implementation of a Component | p. 68 |
Components Assembly | p. 69 |
Packaging and Deployment | p. 70 |
COM, DCOM, MTS, and COM+ | p. 71 |
Interfaces and Assembly | p. 71 |
Implementation | p. 71 |
Framework | p. 72 |
Life Cycle | p. 72 |
CCM | p. 73 |
Interface and Assembly | p. 73 |
Assemblies | p. 75 |
Implementation of a Component | p. 75 |
Framework: The Container Approach | p. 76 |
Life Cycle | p. 77 |
.NET Component Model | p. 77 |
Interfaces and Assembly | p. 77 |
Implementation | p. 78 |
Framework | p. 78 |
Life Cycle | p. 79 |
The OSGI Component Model | p. 79 |
Two Levels of Components | p. 79 |
Interface of a Bundle Component | p. 80 |
Assembly of Bundle Components | p. 80 |
Implementation of a Bundle Component | p. 83 |
Summary | p. 83 |
Interface | p. 83 |
Assembly | p. 84 |
Implementation | p. 84 |
Framework | p. 84 |
Conclusion | p. 85 |
References | p. 86 |
Part 3 Developing Software Components | p. 87 |
5 CBD Process | p. 89 |
Introduction | p. 89 |
Software Process Models | p. 90 |
The Sequential Model | p. 91 |
Evolutionary Development | p. 92 |
Unified Process | p. 95 |
CBD | p. 97 |
Reuse Approach | p. 97 |
Separation of Development Processes | p. 98 |
Component-Based Software Life Cycle | p. 100 |
Development with Components | p. 101 |
Component Development | p. 108 |
Summary | p. 111 |
References | p. 111 |
6 Semantic Integrity in CBD | p. 115 |
Introduction | p. 115 |
General Issues of Semantic Concern | p. 116 |
Specification Levels | p. 117 |
Weak and Strong Contracts | p. 117 |
Required and Provided Interfaces | p. 118 |
Levels of Formalism for Semantic Specifications | p. 118 |
An Example | p. 119 |
No Semantics | p. 119 |
Intuitive Semantics | p. 120 |
Structured Semantics | p. 121 |
Executable Semantics | p. 122 |
Formal Semantics | p. 124 |
Phases in a Component's Life | p. 126 |
Creation Phase | p. 126 |
Use Phase | p. 127 |
Maintenance Phase | p. 128 |
A Taxonomy for Component Semantics | p. 128 |
Summary | p. 130 |
References | p. 131 |
7 Role-Based Component Engineering | p. 135 |
Introduction | p. 135 |
Encouraging the Use of Roles | p. 138 |
Role Technology | p. 142 |
Using Roles at the Design Level | p. 142 |
Using Roles at the Implementation Level | p. 143 |
Frameworks and Roles | p. 145 |
Black-Box and White-Box Frameworks | p. 146 |
A Model for Frameworks | p. 148 |
Dealing with Coupling | p. 150 |
Summary | p. 152 |
References | p. 152 |
Part 4 Using Software Components | p. 155 |
8 Dispelling the Myth of Component Evaluation | p. 157 |
Introduction | p. 157 |
Multiple-Criteria Evaluation | p. 160 |
Genus: Preference Structure-Based Evaluation | p. 160 |
Species: Multiple-Attribute Utility Evaluation | p. 166 |
Exploding the Myth of Component Evaluation | p. 167 |
Components, Assemblies, Properties, and Determinants | p. 168 |
Dispensing with Inconsequential Component Evaluation | p. 169 |
Distinguishing Abstract from Concrete Interfaces | p. 170 |
Partial Satisfaction of Evaluation Attributes | p. 171 |
Fundamental Exemplar Incompleteness | p. 172 |
Assembly Evaluation and Search | p. 173 |
Multiple-Attribute Evaluation and Beyond | p. 175 |
Summary | p. 176 |
References | p. 176 |
9 Component Composition and Integration | p. 179 |
Introduction | p. 179 |
Component Integration | p. 181 |
From Integration to Composition | p. 182 |
Predictable Assembly from Certifiable Components | p. 185 |
Prediction-Enabled Component Technology | p. 186 |
Summary | p. 189 |
References | p. 190 |
10 Predicting System Trustworthiness | p. 193 |
Introduction | p. 193 |
What Else Can Be Done? | p. 195 |
Two Additional Useful Techniques for Predicting Component Interoperability | p. 200 |
Summary | p. 202 |
References | p. 203 |
Part 5 Software Product Lines | p. 205 |
11 Components in Product Line Architectures | p. 207 |
Introduction | p. 207 |
From Products to Components | p. 208 |
Developing a Single Product | p. 209 |
Component Markets | p. 209 |
Established Reuse | p. 211 |
Product Families and Product Lines | p. 212 |
Product Populations | p. 213 |
The Lessons | p. 214 |
Component Approaches | p. 215 |
Libraries | p. 215 |
Object-Oriented Frameworks | p. 216 |
Component Frameworks | p. 217 |
Lego | p. 218 |
Koala | p. 219 |
Frameworks as Components | p. 219 |
Summary | p. 220 |
Conclusion | p. 220 |
References | p. 220 |
12 The Koala Component Model | p. 223 |
Introduction | p. 223 |
Requirements for Koala | p. 223 |
Binding and Bind Time | p. 224 |
Koala Components | p. 226 |
Provides and Requires Interfaces | p. 227 |
Binding, Gluing, and Switches | p. 228 |
Diversity Interfaces | p. 229 |
Product-Line Architecture | p. 229 |
Creating Products | p. 233 |
Managing Versions and Variants | p. 233 |
Subtyping | p. 234 |
Conclusion | p. 235 |
References | p. 236 |
Part 6 Real-Time Software Components | p. 237 |
13 Components in Real-Time Systems | p. 239 |
Introduction | p. 239 |
Characteristics and Challenges of Real-Time Systems | p. 241 |
Real-Time Component Models | p. 243 |
Infrastructure Components | p. 244 |
Application-Specific Component Models | p. 246 |
Examples of Component Models | p. 246 |
Designing Component-Based Real-Time Systems | p. 249 |
Top-Level Design | p. 250 |
Detailed Design | p. 251 |
Architecture Analysis | p. 251 |
Scheduling | p. 251 |
WCET Verification | p. 252 |
Implementation of New Components | p. 253 |
System Build and Test | p. 254 |
Component Library | p. 254 |
Composition of Components | p. 255 |
Example: Real-Time Components in Rubus OS | p. 257 |
Rubus | p. 257 |
Extensions for CBSE | p. 258 |
Reuse of Real-Time Components | p. 259 |
On-Line Upgrades of Components | p. 260 |
Summary | p. 261 |
References | p. 262 |
14 Testing Reusable Software Components in Safety-Critical Real-Time Systems | p. 265 |
Introduction | p. 265 |
Reuse and Exhaustive Testing | p. 267 |
Reuse and Statistical Evidence | p. 270 |
Component Reuse, Statistical Evidence, and Failure Behavior | p. 270 |
Sequential Systems | p. 272 |
Real-Time Systems | p. 274 |
Concurrent Real-Time Systems | p. 276 |
Summary | p. 278 |
References | p. 278 |
15 Providing Real-Time Services for COTS Components | p. 281 |
Introduction | p. 281 |
Windows NT as an RTOS | p. 283 |
Real-Time Features of Windows NT | p. 285 |
Observations and Recommendations | p. 289 |
Windows NT in a Real-Time Setting | p. 290 |
Design of the Real-Time Application | p. 291 |
Experimental Results | p. 293 |
Summary of Results | p. 296 |
Conclusion | p. 296 |
References | p. 298 |
Part 7 Case Studies--CBD in Industrial Applications | p. 299 |
16 Component-Based Embedded Systems | p. 303 |
Introduction | p. 303 |
Problem Domain | p. 304 |
Implications for Component Technology | p. 305 |
Contractually Specified Interfaces | p. 306 |
Unit of Composition and Independent Deployment | p. 307 |
Explicit Context Dependencies | p. 308 |
Component Granularity | p. 308 |
Reuse | p. 309 |
Architecture and Frameworks | p. 310 |
Location Transparency | p. 310 |
Portability and Platform Independence | p. 310 |
Component Wiring | p. 311 |
Embedded Systems with Synchronous Components | p. 311 |
Synchronous Approach | p. 311 |
Synchronous Software Components | p. 312 |
Case Study Description | p. 313 |
Architecture | p. 314 |
Dynamic Behavior | p. 316 |
Intercomponent Communication | p. 317 |
Prerequisites of Effective Development | p. 319 |
Summary | p. 322 |
References | p. 322 |
17 Architectural Support for Reuse: A Case Study in Industrial Automation | p. 325 |
Introduction | p. 325 |
Industrial Automation Systems | p. 326 |
The Motivation for a Platform | p. 329 |
The Aspect Integrator Platform | p. 331 |
The AspectObject Paradigm and Object Organization | p. 332 |
The Architecture of the Aspect Integrator Platform | p. 333 |
Developing a Domain-Specific Application | p. 346 |
Reuse in AIP-Based Applications | p. 348 |
Some Words of Caution | p. 350 |
Summary | p. 351 |
References | p. 352 |
18 A Framework for Integrating Business Applications | p. 355 |
Introduction | p. 355 |
Motivation | p. 356 |
Information Organizer: Support for Building Integrated Systems | p. 358 |
Information Organizer Basic Parts | p. 358 |
BOM | p. 359 |
BOF | p. 362 |
Modeling and Integration | p. 363 |
Structure of Aspects and Objects | p. 364 |
Patterns Constructed Using the BOF | p. 365 |
BPS | p. 368 |
Practical Experience | p. 370 |
Summary | p. 371 |
References | p. 372 |
19 Industrial Experience with Dassault Systeme Component Model | p. 375 |
Introduction | p. 375 |
The OM Component Model | p. 376 |
Defining an OM Component | p. 377 |
Using OM Components to Build Applications | p. 377 |
Implementing OM Components | p. 378 |
Discussion | p. 380 |
Different Kinds of Architecture | p. 381 |
Lessons Learned | p. 382 |
Framework Evolution | p. 382 |
Architecture and Components from an Industrial Perspective | p. 383 |
Summary | p. 384 |
References | p. 385 |
Contributors | p. 387 |
About the Authors | p. 388 |
Index | p. 399 |