Supporting collaborative software efforts requires skill and effort in identifying relationships, avoiding misunderstandings and building a sense of shared commitment to mutual goals—what some might call, popularly if not rigorously, “right-brain” tasks.
Those goals are aided, though, by informed choice and skillful use of “left-brain” formalisms and tools such as specification languages and diagramming conventions, module interface definitions and contracts, software asset management libraries, and a growing variety of highly polished collaboration environments.
UML (Unified Modeling Language), defined and maintained by the nonprofit Object Management Group industry consortium, enjoys growing acceptance. For software architects and developers as well as business process owners, UML serves as a common notation that can express fairly high-level workflows and lower-level implementation details. Development teams must realize, though, that some UML notations arent familiar or obvious to nontechnical participants in their projects.
“Graphical representation of implementation details is often misleading for non-UML experts. For example, navigation arrows are often mistaken for flows,” warned Danish developer Pavel Hruby in a paper presented at a workshop during the 1998 Object-Oriented Programming Systems, Languages and Applications conference in Vancouver, British Columbia. “It is advisable to use only a certain subset of UML representation options. For example, it is better to show compositions by placing elements inside each other rather than by using associations with filled diamonds.”
Any given UML diagram means exactly one thing to a UML expert, but there may be more than one way to express that meaning in valid UML. In such a case, developers would do well to make the effort to use the UML representation thats least likely to be misunderstood by others.
UML tool integration has been one of the defining trends of the software development environments delivered by major toolmakers in the past several years, and that integration has reached an impressive degree of seamless interaction between diagrams and conventional source code views.
Borland Software Corp.s JBuilder, Oracle Corp.s JDeveloper and Sun Microsystems Inc.s Java Studio Enterprise lead eWEEK Labs list of UML integration exemplars, and its no coincidence that all are Java environments. They gain leverage from the rigor of Javas end-to-end object orientation to offer a complete picture of the relationships among an applications elements.
The interface definitions of object-oriented development tools aid collaboration by letting developers strictly limit the view that one module can have of whats happening inside another. This ensures that a development team can refine internal implementations with confidence that they are not disrupting the dependent code of collaborators whom they may never meet.
Going beyond mere interface discipline, though, is the notion of “programming by contract” that was pioneered by Bertrand Meyer and is exemplified in his programming language Eiffel. Stating explicit preconditions and post-conditions to be verified before and after calls by one module to another, the contract approach—which can also be used in the form of assertions in C++ or Java—is a potent tool.
Developer productivity rises dramatically when aids such as UML diagramming or assertion-based verification are mainstreamed into developers tool sets rather than applied as magic fairy dust by specialists with their own tools in a later stage of a project. “When youre in the flow, you want to stay in the flow,” said Brent Carlson, vice president of technology at LogicLibrary Inc., in Pittsburgh. “When a developer is under the gun, that can make a big difference.”
LogicLibrarys flagship product, Logidex, provides code asset management and development governance tools of growing interest to large teams. Developer collaboration and process management tools are also a major focus of other toolmakers, including Borland and Microsoft Corp. Borlands introduction last month of its Borland Core Software Delivery Platform and Microsofts promised release of its Visual Studio Team System later this year give developers cause for hope that more collaboration help is on the way.