
Software Factories : Assembling Applications with Patterns, Models, Frameworks, and Tools
by Greenfield, Jack; Short, Keith; Cook, Steve; Kent, Stuart; Crupi, John-
This Item Qualifies for Free Shipping!*
*Excludes marketplace orders.
Rent Book
New Book
We're Sorry
Sold Out
Used Book
We're Sorry
Sold Out
eBook
We're Sorry
Not Available
How Marketplace Works:
- This item is offered by an independent seller and not shipped from our warehouse
- Item details like edition and cover design may differ from our description; see seller's comments before ordering.
- Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
- Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
- Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.
Summary
Author Biography
Table of Contents
Preface | p. xv |
Acknowledgments | p. xxiii |
Foreword | p. xxvii |
Introduction to Software Factories | p. 1 |
Introduction | p. 3 |
Tools Lag Platforms | p. 4 |
The Software Development Landscape | p. 7 |
Platform Technology Evolution | p. 8 |
Building Applications with Services | p. 24 |
Software Development Challenges | p. 30 |
Discontinuous Innovation | p. 32 |
Notes | p. 34 |
Dealing with Complexity | p. 35 |
The Problem of Complexity | p. 35 |
Feature Delocalization | p. 38 |
Working at the Wrong Level of Abstraction | p. 41 |
Raising the Level of Abstraction | p. 53 |
Packaging Abstractions | p. 61 |
Current Methods and Practices | p. 66 |
Encapsulation | p. 67 |
Partitioning Responsibility | p. 68 |
Documenting Design | p. 73 |
Automating Development | p. 77 |
Organizing Development | p. 82 |
Notes | p. 85 |
Dealing with Change | p. 87 |
The Problem of Change | p. 87 |
Responses to Change | p. 87 |
Software Aging | p. 88 |
Software As Simulation | p. 90 |
Sources of Change | p. 99 |
Current Methods and Practices | p. 100 |
Preventing Stagnation | p. 101 |
Reducing Brittleness | p. 104 |
Reducing Fatigue | p. 106 |
Paradigm Shift | p. 109 |
Chronic Problems | p. 109 |
Monolithic Construction | p. 110 |
Gratuitous Generality | p. 115 |
One-Off Development | p. 120 |
Process Immaturity | p. 121 |
Critical Innovations | p. 125 |
Systematic Reuse | p. 125 |
Development by Assembly | p. 129 |
Model-Driven Development | p. 139 |
Process Frameworks | p. 150 |
Software Factories | p. 155 |
Industrializing Software Development | p. 155 |
The Economics of Reuse | p. 156 |
Economies of Scale and Scope | p. 157 |
Systematic Software Reuse | p. 159 |
Integrating the Critical Innovations | p. 161 |
What Is a Software Factory? | p. 163 |
What Is a Software Factory Schema? | p. 164 |
What Is a Software Factory Template? | p. 173 |
Building a Software Factory | p. 174 |
Building a Software Product | p. 175 |
A Software Factory Example | p. 180 |
Implications of Software Factories | p. 185 |
Development by Assembly | p. 185 |
Software Supply Chains | p. 186 |
Relationship Management | p. 187 |
Domain Specific Assets | p. 187 |
Organizational Changes | p. 188 |
Mass Customization of Software | p. 188 |
Realizing the Software Factory Vision | p. 189 |
Notes | p. 190 |
Critical Innovations | p. 191 |
Models and Patterns | p. 193 |
Intent versus Implementation | p. 193 |
What Is Intent? | p. 194 |
Capturing Intent | p. 195 |
A Closer Look at Patterns | p. 197 |
Creating and Using Patterns | p. 198 |
Weaving Patterns into Languages | p. 201 |
Patterns in Product Families | p. 204 |
Encapsulating Pattern Languages | p. 205 |
What Is Encapsulation? | p. 206 |
Defining Languages with Encapsulation | p. 208 |
Formalizing Pattern Languages | p. 210 |
What Are Models? | p. 212 |
Models as Abstractions | p. 213 |
Model Visualization | p. 214 |
Models as Metadata | p. 217 |
Models as Development Artifacts | p. 218 |
Modeling or Programming? | p. 226 |
Programming with Models | p. 231 |
Model-Driven Development | p. 231 |
Generating Software | p. 233 |
Automating Patterns | p. 238 |
Automating Refactoring | p. 249 |
Automating Builds | p. 249 |
Automating Deployment | p. 249 |
Automating Testing | p. 251 |
Debugging with Models | p. 252 |
Using Multiple Views | p. 253 |
Architectural Description | p. 253 |
Domain Specificity | p. 254 |
Modeling Aspects | p. 258 |
How to Model Software | p. 263 |
Types of Information | p. 264 |
Level of Abstraction | p. 266 |
Style of Specification | p. 271 |
Domain-Specific Languages | p. 274 |
Business Ramifications | p. 274 |
Technical Ramifications | p. 275 |
Next Steps | p. 277 |
Notes | p. 277 |
Language Anatomy | p. 279 |
Example Language | p. 282 |
Abstract Syntax | p. 285 |
Context-Free Grammars and BNF | p. 286 |
Metamodels | p. 289 |
Abstract Syntax Graphs | p. 293 |
Well-Formedness Rules | p. 294 |
Comparison of CFGs and Metamodels | p. 297 |
Concrete Syntax | p. 299 |
Serialization Syntax | p. 306 |
Semantics | p. 309 |
Translational Semantics | p. 310 |
Trace-Based Semantics | p. 312 |
Programming versus Modeling | p. 318 |
Notes | p. 319 |
Families of Languages | p. 321 |
Language Families | p. 321 |
Tool Factories | p. 328 |
Tool Factory Architecture | p. 328 |
The State of the Art | p. 333 |
Systematic Reuse | p. 337 |
Software Product Families | p. 337 |
Software as a Product | p. 338 |
How Families Are Formed | p. 338 |
Working Within a Family | p. 340 |
Solving Problems in Advance | p. 341 |
The Role of Architecture | p. 342 |
Commonality and Variability | p. 344 |
Where Families Are Found | p. 345 |
Software Product Lines | p. 347 |
Creating Economies of Scope | p. 348 |
Required Adaptations | p. 350 |
Software Supply Chains | p. 355 |
Notes | p. 358 |
Software Product Lines | p. 359 |
Product Line Development | p. 359 |
Product Line Analysis | p. 361 |
Product Line Design | p. 375 |
Product Line Implementation | p. 379 |
Product Development | p. 382 |
Problem Analysis | p. 382 |
Product Specification | p. 382 |
Collateral Development | p. 385 |
Product Implementation | p. 385 |
Product Line Evolution | p. 391 |
Product Line Deployment | p. 391 |
Platform-Based Abstractions | p. 393 |
Platform-Based Abstractions | p. 393 |
Platform-Based Abstractions in Product Lines | p. 395 |
Properties of Platform-Based Abstractions | p. 397 |
Classes, Libraries, and Frameworks | p. 401 |
Class Frameworks | p. 403 |
Summary | p. 411 |
Components and Services | p. 413 |
Software Components | p. 413 |
Definition | p. 413 |
Interface Specifications | p. 415 |
Component Dependencies | p. 423 |
Component-Based Development | p. 426 |
Defining Product Line Component Architectures | p. 432 |
From Components to Services | p. 438 |
Service Components | p. 438 |
Business Protocols and Contracts | p. 439 |
Service-Oriented Architectures | p. 445 |
Web Services Technology | p. 446 |
What's Different This Time? | p. 448 |
Web Service Data Semantics | p. 448 |
WS Process Semantics | p. 450 |
Summary | p. 452 |
Notes | p. 453 |
Mappings and Transformations | p. 455 |
Transformations | p. 455 |
Types of Transformation | p. 456 |
Vertical Transformations | p. 458 |
Horizontal Transformations | p. 462 |
Transformation Problems | p. 470 |
Model-to-Model Transformations | p. 471 |
Model-to-Code Transformations | p. 473 |
Solving the Composition Problem | p. 476 |
Solving the Traceability Problem | p. 479 |
Summary | p. 481 |
Notes | p. 481 |
Generating Implementations | p. 483 |
Describing Transformations | p. 483 |
Mapping Rules Have IF-THEN Parts | p. 485 |
Implementing Mapping Rules | p. 489 |
Specifying Horizontal Transformations | p. 493 |
Describing Aspect Weaving | p. 493 |
Describing Refactoring Rules | p. 495 |
Patterns as Sets of Mapping Rules | p. 496 |
Transformation Systems | p. 500 |
Black-Box and White-Box Transformations | p. 501 |
Grey-Box Transformation Systems | p. 503 |
Applying Black-Box Transformations | p. 505 |
Summary | p. 508 |
Software Factories in Depth | p. 509 |
A Software Factory Example | p. 511 |
A Review of the Approach | p. 511 |
Building an Online eCommerce Application Family | p. 512 |
Product Line Analysis | p. 515 |
Product Line Definition | p. 515 |
Problem Domain Scoping | p. 518 |
Solution Domain Scoping | p. 521 |
Business Case Analysis | p. 524 |
Product Line Design | p. 526 |
Product Line Architecture Development | p. 526 |
Product Line Requirements Mapping | p. 546 |
Product Line Implementation | p. 548 |
Asset Provisioning | p. 548 |
Asset Packaging | p. 557 |
Product Development | p. 557 |
Product Specification | p. 558 |
Conclusion | p. 560 |
Notes | p. 561 |
Frequently Asked Questions | p. 563 |
How Do Software Factories Differ From...? | p. 563 |
How Do Software Factories Differ from RAD? | p. 564 |
How Do Software Factories Differ from MDA? | p. 567 |
How Do Software Factories Differ from the UP? | p. 573 |
How Do Software Factories Differ from Agile Modeling? | p. 577 |
How Agile Are Software Factories? | p. 580 |
Agile Development Principles | p. 580 |
Agile Development Practices | p. 582 |
How Will Software Factories Be Adopted? | p. 584 |
Types of Business Applications | p. 586 |
Business Application Characteristics | p. 586 |
How Mature Are Software Factories? | p. 588 |
Language Technology | p. 589 |
Tool Extensibility | p. 589 |
Pattern Composition | p. 590 |
Deferred Encapsulation | p. 590 |
Standard Assets for Popular Domains | p. 591 |
How Should Software Factories Be Implemented? | p. 591 |
New Development Artifacts | p. 592 |
New Development Scope | p. 592 |
New Development Activities | p. 592 |
Implementing Software Factories | p. 593 |
What's Different This Time? | p. 594 |
Abstraction and Refinement | p. 597 |
The Unified Modeling Language | p. 611 |
Bibliography | p. 629 |
Index | p. 641 |
Table of Contents provided by Ingram. All Rights Reserved. |
An electronic version of this book is available through VitalSource.
This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.
By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.
Digital License
You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.
More details can be found here.
A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.
Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.
Please view the compatibility matrix prior to purchase.