Skip to main content

skip to main content

developerWorks  >  Architecture  >

Build effective system models

Modeling with structural forms, organizing themes, and diagram pivots

developerWorks
Document options

Document options requiring JavaScript are not displayed

Discuss


Rate this page

Help us improve this content


Level: Intermediate

Benjamin Lieberman, Ph.D., Principal Software Architect, BioLogic Software Consulting, LLC

20 Mar 2007

Effective models communicate information accurately and efficiently to a specific audience. Unified Modeling Language (UML) models face a particular challenge because of their diverse audience, which can include developers, business owners, analysts, testers, and project managers. UML models that follow best practices feature views that are directed toward a specific form, have a common theme across all diagrams, and contain a pivot around which each diagram is focused. In this article, you'll learn how to organize and present UML model views based on the principles of form, theme, and pivot.

Introduction

Visual modeling has long been considered one of the key best practices for software development. Diagrams allow designers and analysts to more readily and effectively present complex information to a diverse audience. Unfortunately, many models are poorly constructed, disorganized, and under utilized. To gain the maximum benefit from visual model presentation, you should consider not only the content of the model, but also the presentation of the information. When creating effective system models, you need to focus on three main concepts: selection of a diagram form, organization of the diagrams around a common theme, and the creation of views focused on a specific characteristic of information called a pivot.

IEEE 1471: System model viewpoints
The Institute of Electrical and Electronics Engineers (IEEE) standards body accepted specification 1471 in 2004 to describe architectural models for software-intensive systems. This standard defined the term viewpoint as a specific collection of model elements directed toward the needs of a specific system stakeholder. The standard doesn't list specific viewpoints, but it does present a technique for documenting a viewpoint stakeholder. This approach includes the name of the viewpoint, the targeted stakeholder groups, the model contents, and the presentation forms for each defined viewpoint in the model. For more information on viewpoints, review the standard IEEE 1471 or check out a Wikipedia entry on this topic.

Model forms

There are two interrelated model forms: the representational form and the organizational form. A common representational form in software development is UML, which details the specific notation and semantics for a collection of 13 diagram types, each targeted at a specific aspect of software system development from requirements to deployment. These include structural diagrams, such as class, object, and deployment, and behavioral diagrams, such as sequence, activity, and state. The sheer size of such a diagram collection means you must thoroughly understand each form, carefully consider the intended audience, and spend time crafting a collection of consistent and cohesive diagrams that convey the intended purpose of the model. For example, a system designer is interested in the logical and physical aspects of a system, so the most useful forms are class and sequence diagrams rather than use-case and activity diagrams. By contrast, a system analyst is interested in the functionality described in the use-case diagram and less interested in the details of construction and deployment. UML semantics enforce specific modeling relationships. For example, a message relationship can only occur between two instances of objects.

Quite a few other modeling forms besides UML are often adopted for software modeling, including the Department of Defense Architecture Framework (DODAF), The Open Group Architecture Framework (TOGAF), and the Zachman Framework. (See Resources for more information on the Zachman Framework.) Different languages are also available, such as the Integrated Computer-Aided Manufacturing (ICAM) definition language, entity-relationship data models, and system models captured in Systems Modeling Language (SysML). Regardless of the modeling form or language you use, you must have a consistent way to describe the system of interest.

You can capture the organizational form of a model as a group of viewpoints (see the sidebar). A viewpoint is defined as a collection of model views that are represented by a collection of diagrams, documents, and other related artifacts. You create each viewpoint to satisfy a particular stakeholder interested in the model content (see Figure 1).


Figure 1. Application model viewpoints
Application Viewpoints

See a larger version of this image.

Software applications must satisfy a diverse set of stakeholder needs, and consequently, the models describing these systems must likewise be complex. For example, business stakeholders are interested in the Requirements viewpoint, which you can use to organize use-case diagrams, activity diagrams, and other information about the system features. Many possible viewpoints exist for a software system, including the classic 4+1 views from Philippe Kruchten (learn more in the Resources section), as well as ones that focus on environmental considerations, maintenance, and automated tests. Table 1 describes a standard collection of viewpoints that should be useful to any software system model.


Table 1. Common useful viewpoints
ViewpointViewpoint elementsUsage guideline
RequirementsUse cases, supplemental requirements, business rulesContains a description of the stakeholder needs, system features, and requirements
DeploymentDeployment environment and packagingContains the system deployment views that illustrate the deployment into development, testing, user acceptance, and production, and details configuration information for each deployment
EnvironmentServer maps, network maps, system distributionThe working environment for the software, including allocation to various system components
CodeComponent descriptions, communications/messaging, physical packagingContains the implementation details for all code-based development, including file-system structure, build dependencies, and configuration parameters
LogicalSystem behavior, system structure, data models, architectural layers, design patternsDetails the full logical view of the application, including data, behavior, and structure (such as architectural layers and patterns)
MaintenanceMonitoring, alarm, reporting/logging, recoveryReserved for operational details of the systems, such as reporting, monitoring, logging, and recovery procedures
TestUnit test cases, automationSupports full-spectrum testing, including unit, integration, system, and regression testing

Model themes

After you decide on an appropriate form for your model, you need to organize your information according to the theme of each of the system architectural areas. For example, a critical aspect of all software systems is the organization of internal dependencies; one way to express these relationships is with a layered architecture. The theme for the collection of model views that represents this area is dependency management. So, the model themes are governed by the nature of the system, including the system purpose and goals. The contents of the viewpoints in a model are gathered around particular themes, as Table 2 demonstrates.


Table 2. Application model themes
ThemeDescriptionExample
LayeringDependency managementData access layer
Business categoryStable business operations and processesContract negotiation
IntegrationAdapters, connectors, and interfaces between subsystems and componentsThird-party relational database
WorkflowsSystem operations and control of executionRules engine
RulesConstraints on the system behaviorData validation
EnvironmentOperation systems, resources, and configurationsServer process allocation
Build, package, and deliverSystem components, physical delivery mediums, and mechanicsBuild files (.zip and .tar files, FTP delivery, and HTTP downloads)

To illustrate, let's consider one specific viewpoint and the themes present in that viewpoint. For example, assume the system under consideration is a scheduling application for a plumbing-repair company. The company needs to efficiently assign routes to each truck and technician so that the technician travels the least distance between successive job sites. A number of stakeholders have an interest in this system, including the business owners, system developers, technicians, system administrators, data-management personnel, requirements engineers, testers, and architects. Specific viewpoints address each stakeholder's needs. For example, the Use Case viewpoint allows the requirements engineers and business owners to discuss the features of the system functionality. The Logical viewpoint features both structural and behavioral aspects. The structural aspect can have a number of themes, one of which is the idea of resource scheduling. In this case, the resources of interest are technicians, trucks, and jobs that need to be scheduled. Figure 2 shows one such structural view.


Figure 2. Job and schedule management
Job Scheduling

Figure 2 also illustrates how a diagram uses a pivot (discussed in the Diagram pivots section) to present the model information. The pivot here is the structural relationships of the JobSchedule component. In particular, the ScheduleManager is called to the viewer's attention because of the difference in coloration and the upper-central placement of the diagram element. Note that the diagram shows no extraneous information, such as debug logging. This ensures that a single message is conveyed -- the message embodied by the diagram pivot.

In addition to the structural diagram, several other diagrams may illustrate behavior, such as sequence diagrams and state diagrams (see Figure 3).


Figure 3. Job state chart
Job State Chart

All of these diagrams share the common theme of "resource scheduling" and are grouped accordingly in the model. By grouping model views by theme, you ensure that the model presents a collection of organized views that are directed toward a particular viewer (for example, a stakeholder) and represent a cohesive area of the system description.



Back to top


Diagram pivots

Finally, you must consider the content of each specific diagram. To ensure that each diagram presents its information effectively, you need to ensure that the diagram contents are based on a single, particular piece of information. The pivot provides a focus for the diagram's elements, and it ensures that only relevant information is included on a particular diagram. For example, in the state diagram for Job shown in Figure 3, there is no mention of another state object; the diagram focuses solely on Job and its state transitions. If another object had been included, the diagram would be blurred in its focus and message.

The most important point to keep in mind is this: Use the diagram to communicate model contents to viewers. Everything else is organization structure to aid in finding the said diagram in the first place. Consequently, if the viewer is confused by the diagram message, perhaps because there are too many messages, then it's unlikely the diagram will have the intended impact.

People who create diagrams of complex systems have an odd tendency to continue to add more and more information to the diagram, to the point where the audience is completely overloaded. Perhaps they intend to create a single view that covers all of the interesting parts of the system. However, by presenting so much information in one visual image, the core message is lost in the details. I've seen this many times, but one particular example comes to mind from early in my scientific career. I was attending a seminar from a well-known researcher who was presenting his work on cell-signaling pathways. He started off well, with a few overview slides that each featured a single information point -- a clean pivot for each display. Then he presented his data on four complex graphs squeezed into a single slide. The text was unreadable for anyone seated more than two feet from the screen; even he had trouble distinguishing each axis label. The myriad of lines were all monochrome and meandered across each graph in a seemingly random manner, and the data points were indistinguishable from specks of dust. Nevertheless, this highly respected scientist spent the next 20 minutes explaining the data shown on this single slide. Taking a look around the room, I saw that nearly everyone (including myself) was confused, and most had completely lost interest.

The point of this story is that it's easy to get lost in the details of the presentation. If the presenter had simply broken the four graphs into separate slides, everyone would have been able to see the details. Moreover, this would have created an opportunity to separate the displays so that they dealt with only one point at a time -- a clean pivot. It would have been simple for the audience to follow the four graphs, and a single summary slide would have brought it all together again.

When thinking about each diagram's pivot, first consider the presentation (or model) as a whole. What is the full system story being told? How would this story best be presented so that each component gives sufficient detail? What should be left out so viewers can better focus on the important aspects? These kinds of questions lead to a good selection of pivot points. As with forms and themes, you can choose from many possible diagram pivots (see Table 3).


Table 3. Diagram pivot categories
PivotDescriptionExample
Control pointCentralized business-logic pointEnterprise JavaBeans (EJB) session object
Framework utilizationFramework elements implementation and integrationTransaction management and security
RiskHigh complexity, coupling, and changeArchitecturally relevant use-case realization
ArchitectureArchitecturally relevant use cases or system componentsArchitectural mechanism realization, such as messaging, security, and auditing
InterfaceRealization of interface touch points between subsystems and componentsCommercial off-the-shelf (COTS) integration adapters
Feature assignmentTraceability between requirements and designCollaboration diagram with use-case realization
PerformanceFocus on processing choke points, resource utilization, and throttlingWeb service
StructureStructural system aspects, such as containment hierarchy, state charts, and component relationships (dependencies)Class/component diagram
BehaviorBehavioral system aspects, such as messaging, object creation/destruction, method calls, and broadcast/listenerSequence diagram

In UML, each diagram focuses on a particular system aspect, such as class diagrams that capture structural information. However, only one information focal point (that is, the pivot) should exist within a particular diagram type. A poorly defined pivot can muddle a diagram's message.



Back to top


Summary

Creating a system model represents a significant effort in terms of time and money; allowing this important resource to fall into disuse due to a poorly conceived model structure is both wasteful and counterproductive. Models are intended to be reusable; there's no reason to spend a development team's valuable time on building a complex, detailed, but ultimately disposable artifact. To justify the cost of model creation and maintenance, you need to ensure that your model is highly useful.

Share this...

digg Digg this story
del.icio.us Post to del.icio.us
Slashdot Slashdot it!

There's little value in creating complex system models unless the information they contain is effectively organized to allow ease of maintenance coupled with rapid discovery of relevant information by the model audience. A disorganized model will rapidly become inaccurate, and perhaps more important, will be difficult to use, leading to eventual abandonment. Creating a model that features consistent form, is organized around common understandable themes, and offers a cohesive set of informative diagrams increase the likelihood of its short- and long-term value. Only then will the effort expended on visual modeling be rewarded with immense benefits.



Resources

Learn

Get products and technologies

Discuss


About the author

Ben Lieberman photo

Benjamin A. Lieberman serves as the principal architect for BioLogic Software Consulting, a firm providing services on a wide variety of software development topics, including requirements analysis, software analysis and design, configuration management, and development process improvement. Dr. Lieberman is also an accomplished professional writer and author of The Art of Software Modeling and numerous software-related articles. Dr. Lieberman holds a doctorate degree in biophysics and genetics from the University of Colorado.




Rate this page


Please take a moment to complete this form to help us better serve you.



YesNoDon't know
 


 


12345
Not
useful
Extremely
useful
 


Back to top