Catalogue
8.1 Separation of Concerns
8.2 Whole Components
8.3 Icons Clarify Components
8.4 Pictures Depict Nodes
8.5 Specification Backplane
8.6 Components Manage Change
8.7 Configured and Released Packages
8.8 Model for Maintenance
The patterns in this chapter deal with the modeling problems connected to deploying a piece of software. These problems are different from design or construction problems—the problem domain is typically a set of
givens
, including physical elements, such as the network architecture of an organization; as well as soft elements, such as the human organizational structure. Even for a commercial software product, both the target platforms and the intent of the out-of-the-box experience need to be
Models of the physical system have a different level of abstraction and a different audience from analysis or design models. They are more closely tied to
From a programming perspective, components are interesting because of "pluggability," "replaceability," and reuse. From a modeling perspective, components are simpler things:
The design situation that a deployment team faces is a bit of a mirror image to that of the developers. Given a product, their challenge is still to understand their users, but they do this to be better at communicating and managing the solution, not in order to see the problem as the users see it and solve the users' problems.
The deployment team uses models not in order to conceptualize and build—as a means of
Although the problems a deployment team faces may have fewer conceptual
Most development processes don't pay a lot of attention to the needs of the people who will be shepherding a system after it is made available. Many development organizations
|
PROBLEM |
How to ensure that the deployed documentation is effective and useful for all stakeholders. |
|
CONTEXT |
Specification is over, and the rubber meets the road. Developers are implementing, and deployment needs models to help with planning and management after the system is turned over. |
|
FORCES |
|
|
SOLUTION |
Understand that the stakeholders in the deployment of a system are not exactly the same as the stakeholders in the development. Ensure that their separate concerns are addressed in a fashion that is consistent with the way that development was handled. Follow the same approach to documenting software as developing it:
The users of the documentation may have many of the same
|
|
RESULTING CONTEXT |
A deployed system with model-based and architected documentation that is
|
|
DISCUSSION |
Implementation isn't just about coding, and deployment isn't just about the physical partitioning of processes and access mechanisms. Each stakeholder has ongoing needs that a complete system must address.
The UML implicitly recognizes the importance of including consistent documentation as part of a total system package. Components are not just implementation concerns of the developers; instead, they
So, implementation and deployment artifacts need to be documented with a long-
See the following pattern, "Whole Components," for some ideas on how to do this. |
|
PROBLEM |
How to define a component to maximize its manageability and reflect the needs of all its stakeholders. |
|
CONTEXT |
Using components as model containers for long-term documentation and change management. |
|
FORCES |
|
|
SOLUTION |
Bundle all of the extras associated with an executable component (documentation, test files, source code, change history) into an overall component: a whole component . Document each of the extras as a component and diagram the relationships in UML-compliant fashion (typically, by using depends and realizes relationships). |
|
RESULTING CONTEXT |
UML-compliant packaging of the
|
|
DISCUSSION |
According to the UML Specification , "a component type represents a distributable piece of implementation of a system, including software code (source, binary, or executable), but also including business documents, and so on, in a human system" (Rational Software Corporation 1999, 3-170). D'Souza and Wills (1998) and the Rational Unified Process both see components this way: as the executables that are delivered via implementation, and the packaging of all the additional stuff that's needed to make the implementation and deployment successful. I call components that model the containment of all the supporting material whole components , which is an extension of both Geoffrey Moore's notion of whole products and the Software Engineering Institute's version of his idea. I discuss both of these in Chapter 10, "The UML in Context," but the whole product notion says that any product needs more than simply what it provides by itself in order to be successful and usable.
What else is needed depends on the product itself. Given the principles of
These all need to be available to the stakeholders in the ongoing deployment of a component (various managers, support staff, maintenance programmers, and so on), and need to be clearly visible and accessible. A whole component provides a way of holding all of these together as a piece.
|
|
PROBLEM |
How to graphically present all the aspects and constituent
|
||||||||||
|
CONTEXT |
Using components as model containers for long- term documentation and change management. |
||||||||||
|
FORCES |
|
||||||||||
|
SOLUTION |
Use standardized icons for nonexecutable components that need to be kept in synch with an executable component. These can include source code files, business documents, database tables, help files, and so on. The icons replace the use of stereotype tags on the standard UML notation for component. The UML provides some built-in stereotypes, and The Unified Modeling Language User Guide (Jacobson, Booch, and Rumbaugh 1999a) recommends some icons for them:
All the relationships that are available for use with a component are, of course, available with these component types, but for the most part you'll want to show only dependencies (see Figure 8.1).
Figure 8.1. An executable component with a help file and DLL-supporting artifacts that need to be changed as a
|
||||||||||
|
RESULTING CONTEXT |
A clear depiction of the constituent elements and supporting artifacts that need to be managed together. |
||||||||||
|
DISCUSSION |
The audience for the information about the system components is both the development team and the deployment team. Using iconic forms of stereotyped components helps to bridge the gap between them, providing a more accessible format that clearly distinguishes types of components visually. |
|
PROBLEM |
How to graphically present information about the hardware environment to maximize comprehensibility by all stakeholders in a deployment. |
||||||
|
CONTEXT |
Using deployment diagrams to support documentation of the physical architecture of a system. |
||||||
|
FORCES |
|
||||||
|
SOLUTION |
Use clip art as icons for non-component elements that sit on nodes. As with component icons, these icons replace the use of stereotype tags, but in this case, they replace very localized stereotypes. Create a library of node stereotypes with icons that reflect the actual machines in use. For example:
Figure 8.2 shows an example of a very simple deployment diagram that uses graphic icons. Figure 8.2. Deployment diagram with clip art picture icons.
|
||||||
|
RESULTING CONTEXT |
A localized depiction of the topology of the physical architecture that can act as a map for all the stakeholders in the physical system,
|
||||||
|
DISCUSSION |
According to the UML Specification , "A node is a physical object that represents a processing resource…(including) computing devices but also human resources or mechanical processing resources" (Rational Software Corporation 1999, 3-168). Because of the unique nature of each organization's infrastructure and physical environment, nodes are "probably the most stereotyped building block in the UML," according to The Unified Modeling Language User Guide (Jacobson, Booch, and Rumbaugh 1998a, 26-7). However, even though they're intended only for local consumption, nodes still need to be standardized as part of an organization's architectural style. Unlike components, though, they are better represented in a familiar way that is specific and local, rather than the more generic icons used for components. |
|
PROBLEM |
Documenting detailed information in a model. |
|
CONTEXT |
Making decisions about how to make information available while avoiding information overload. |
|
FORCES |
|
|
SOLUTION |
Leave information that is too detailed or that does not need to be highlighted in the
specification
part of the model—the text, rather than the pictures. This is different from elision: There's no need to
|
|
RESULTING CONTEXT |
Clean diagrams that
|
|
DISCUSSION |
A
backplane
is an electronic circuit board containing
Desmond D'Souza distinguishes between two types of textual information that are important for creating successful models: formal text and what he calls "narrative." A catalysis package has a dictionary for bridging the gap between the formal and the informal; its narrative includes "text, pictures, illustrations, anecdotes, footnotes" (D'Souza and Wills 1998, 291) and any other material needed to help human users make sense from amodel. |
|
PROBLEM |
How to manage lifetime changes to a system model so that system changes are reflected in the model itself. |
|
CONTEXT |
Maintaining a UML-
|
|
FORCES |
|
|
SOLUTION |
Tie change
|
|
RESULTING CONTEXT |
The whole component provides a clear and obvious location for all the information needed to investigate a change request. Note: some of this information may be kept in the specification backplane . |
|
DISCUSSION |
Change requests that are received after a system is deployed are different from changes
In an architected system environment, the traceability of impact and the consistency of a change across all impacted artifacts are critical factors in the success of a change. However, change management has always presented management with a problem: determining the granularity of the "atomic unit of software work," as Walker Royce describes it (1999, 125). Components,
|
|
PROBLEM |
Establishing a model framework that will provide an easy-to-use, reliable means to organize and control revisions of artifacts. Providing support for and integration with project management, change management, and release management processes. |
|
CONTEXT |
Developing, deploying, and maintaining a system. |
|
FORCES |
|
|
SOLUTION |
Use packages as a way of bundling configurations and (by
|
|
RESULTING CONTEXT |
A model that includes a disciplined approach to configuration management that encompasses both internal and external releases.
A package becomes the basis for "versioning," configuration management, reuse, and so on. All the product artifacts can be
|
|
DISCUSSION |
The
Unified Modeling Language Reference Guide
says
Configuration management is not confined to software systems. Ideally, all electronic corporate files should be under configuration management: manuals, documentation, forms templates, document templates, management
The main difference between configuration management of these non-software objects and software components such as source code, technical and user manuals, and other system-related components is that they will often not be under the control of a formal project manager because they do not often need to be promoted, and only have their versions managed. For details about configuration management in a UML-based development environment, Walker Royce provides a good overview (1998, 174-181) which is consistent with both D'Souza and Wills (1998) and the RUP. |
|
PROBLEM |
Building models that support ongoing development and maintenance. |
|
CONTEXT |
Systems that are built and delivered incrementally, in which releases deployed after the initial Greenfield release are typically
|
|
FORCES |
|
|
SOLUTION |
Model from the beginning with maintenance in mind, and make a packaging of the critical model elements that are meaningful to a maintenance effort. These are typically more physical and may just be the production documentation for a release. |
|
RESULTING CONTEXT |
A consistently organized and named collection of product artifacts that supports change management, problem management, and
|
|
DISCUSSION |
One way to look at a package is as a "named container for a unit of development work," according to Desmond D'Souza and Alan Wills (1998, 287). D'Souza and Wills further describe a package as "its own world" and suggest that "you can know and believe only what is within it" (286). A package becomes the basis for versioning, configuration management, reuse, and so on. All the product artifacts can be assembled in one or more appropriate packages that represent different views for different purposes. These artifacts can and should include test models, test results, business rules, relevant patterns and anything else, including other packages. The Unified Modeling Language Reference Guide says specifically that packages are intended to "organize large models and evolve them" (Jacobson, Booch, and Rumbaugh 1999b). It points out that every model element "must be owned by exactly one package or other model element." This ownership mechanism reinforces the appropriate control in a component-based, incrementally architected environment; control that is especially important when considering the impact of reuse in doing maintenance. |