Next:Experiences using patterns at Up:Industrial experience with patterns Previous:Patterns in AT&T - Design patterns at Motorola - Ron Crocker
Much like AT&T, Motorola has several independent efforts investigating
the use of design patterns for system development. Unfortunately, I can
only discuss with any substance the effort that I'm involved
with Design patterns vs. software architecturesAt Motorola Cellular Infrastructure Group (CIG), recent efforts in applying design patterns to the development process have centered on the relationship between software architecture and design patterns. For some time now, the focus of the systematic improvement efforts at CIG have centered around finding an approach for system development that allows for ``large-grained'' reuse [13]. Initially, this program focused on the use of object-oriented approaches early in the life cycle, primarily to provide a foundation for this reuse. These attempts were not totally successful. Analyzing these projects indicated some common characteristics that effectively limited any large-grain reuse, including:
These findings are not particularly surprising given the strong product-oriented culture of Motorola. However, reaching corporate goals of a factor of 10 improvement in time-to-market requires substantially less work in development - you simply can't do the same amount of work in 1/10th the time. Enter the centralized software architecture organization, lead by the Strategic Software Technologies organization within CIG [14, 12]. As an organization, CIG has accumulated considerable domain expertise and has some very seasoned software architects. In evaluating several purported software architectures, again we found some common symptoms:
Each of these problems led directly to communication problems, which lessens the effectiveness of the architecture. Because the architectures are ambiguous, they can be interpreted in ways other than intended. Because the language was ``foreign'', the ambiguities tend to be amplified and the architectures become product-centric. Finally, questions about the architecture have nowhere to be directed and are hence left unanswered. Our search for technology solutions turned to design patterns. From previous readings, we knew that design patterns offered an approach for describing architectural entities independent from their implementation. We were concerned about the roots of design patterns coming from the object-oriented community, since our organization has little OO experience. Our approach was to simply not use design patterns in an OO form. We would use design patterns to capture problem-domain-specific entities in an implementation-independent way for sharing across projects (and products). Current statusSo far, we have a small catalog of design patterns focused on (in telephony terms) fault management. There is already an implicit design pattern being used in many of our products for handling faults in the equipment. It's robust and understood by the senior technical staff. The problem with this pattern is that it's only implicit. It exists in the heads of the senior people and in the code. In the cases where we reuse this pattern, the pattern is ``rediscovered'' from the code and re-implemented, often with minor improvements. None of these improvements, however, affect the basic ``higher-order'' pattern. These are the sort of patterns that we will be cataloging. Based on some near-term results using the fault management pattern, other problem areas are being identified for ``patternification''. Our expectation is that these patterns will interact to form a fabric of patterns for telephony. Pattern applicability spaces
We have a model of the world depicted roughly in Figure 1. We separate the development process into three large ``buckets'': Products, Problem-Space (entities), and Solution-Space (entities). The Products are implementations of solutions for specific customer use. CIG examples of products would include base stations, cellular telephone switches, and customer database products. Each of these products is rooted in its problem-space entities. Base stations require mobility management capabilities and radio management capabilities. These capabilities tend to be largely independent of both the product itself and implementations of the product. The issues identified above (product-specific nature of OO artifacts and specialized architectural language) have the effect of masking the inherent problem-space nature of these capabilities. The solution-space is where we implement both problem-independent capabilities and product-specific instances of the problem-space capabilities. For example, for the majority of the patterns described in [18] we would consider solely solution-space architectures (``Implementation Architectures'') that are problem-space independent; other problem-spaces may see those as both problem-space and solution-space patterns. Each of the spaces has an architectural basis. The Problem-Space architecture we call ``Reference Architecture'' to indicate that it is not a concrete implementation but rather a guide to developing products incorporating these problem-space entities. We view the critical aspects of these architectures being the definition of the (behavioral aspects of the) entities and their interactions, and therefore focus less on the particular implementation issues. The Solution-Space architectures we call ``Implementation Architectures'' since their primary focus is on particular instances of products. This brings us to consider technologies that can aid in describing the architectures in the given spaces. We consider design patterns a technology that spans the spaces, and believe that design patterns represent a technology that can be used to smooth the transition between spaces and final products. Other technologies we have investigated (object frameworks, meta-object protocols, and application-specific languages) tend to reside in the solution-space, as they apply more directly to the issues relating to implementing designs. SummaryThere are two thrusts in our use of design patterns. The first is in using the technology to encapsulate problem-space entities for larger-grained reuse across product families as described above. The other is in using object frameworks and application-specific languages to implement these patterns for easier implementation. Those investigations are on-going and not at a point to report progress. Nevertheless, we have seen some effects of using design patterns in our efforts so far:
Next:Experiences using patterns at Up:Industrial experience with patterns Previous:Patterns in AT&T - 11265-Jim Coplien Tue Aug 20 17:08:07 CDT 1996 |

