UML Based Object-Oriented Development: Experience With Inexperienced Developers
UML Based Object-Oriented Development: Experience With Inexperienced Developers
Department of Telecommunications Research & Development Centre Research & Development Centre
Faculty of Electrical Engineering and Ericsson Nikola Tesla d.d. Ericsson Nikola Tesla d.d.
Computing, University of Zagreb
Zagreb, Croatia, HR-10000 Zagreb, Croatia, HR-10000 Zagreb, Croatia, HR-10000
1. Introduction 2. UML
World development and lifestyle increasingly depend The unified modeling language (UML) is a graphical
on software. Software-intensive systems, as language for visualizing, specifying, constructing,
technological achievements, as well as social and documenting software-intensive systems. UML
demands, are growing in size, complexity, provides a standard way of writing system's
distribution and importance. However expansion of blueprints, covering conceptual things, classes
these systems changes the limits of software industry written in a specific programming language, database
know-how. As a result, building and maintenance of schemes and reusable software components. It is a
software becoming increasingly complex. standard notation, used by everyone involved in
software production, deployment and maintenance.
Various software development projects fail in
different ways but they all share common symptoms. UML includes nine diagrams for describing the
Some of them are: inaccurate understanding of end- system:
user needs; inability to deal with changing
o Class diagram describes a set of classes,
requirements; software that is not easy to maintain or
interfaces and their relationships. It shows the
extend or late discovery of serious project flaws.
view of the system’s static design. This diagram
Analysis of the symptoms reveal that their root
is very useful in modeling object-oriented
causes are: ad hoc management of the requirements;
systems.
ambiguous and unambiguous communication;
overwhelming complexity; undetected
inconsistencies in the requirements, design and
55
M. Kušek et al.: UML Based Object-oriented Development: Experience with Inexperienced Developers
Elaboration
Transition
Inception
56
M. Kušek et al.: UML Based Object-oriented Development: Experience with Inexperienced Developers
USI USI
understand the designed behavior. Misunderstanding
between the designers and customers is avoided with
the use of UML, but misunderstanding itself usually
Figure 3. James: Model of the system causes the projects fail. Negotiating practice with the
customers (who are frequently prone to changing
The second project, called BOND, was expected to
their mind) has not been very successful and should,
result in a distributed processing simulator (Figure 4).
therefore, be adjusted to UML. Another good side of
The distributed processing system could be, for
having use-cases is that they are valuable source for
example, a Web site with the cluster of Web servers.
creating test-case scenarios in testing and validating
The main purpose of the project was aimed to create
partly or fully implemented systems.
functional prototype of the simulation system. All
nodes in the system received the requests. Those UML diagrams give the means to express ideas, but
from highly loaded nodes could be re-scheduled to ideas come from experience. Less experienced
other nodes. designers may not understand the background of a
particular design of a senior designer, but they can
The prototype was extended by mobile agents
understand it and are definitely able to improve
responsible for the system maintenance and
themselves on it. UML helps in acquiring object-
monitoring. The agents collected the data about
oriented way of thinking. Less experienced designers
remote sites and saved them on the management site.
very often say: “I can’t express it with UML”, but in
In order to run the simulation, network topology and most cases this means there is something wrong with
load distribution had to be defined. Load distribution an object-oriented design. Hence, using UML is very
was specified as the incidence of job arrival per node. helpful to all categories of designers.
All that could be done through GUI. During
Unlike with SDL the developers find UML easy to
simulation, the user could change simulation
use in that it has no strict formal structure or
parameters (network topology and load distribution),
terminology, although some basic rules must be
view the system statistics and analyze overall system
respected. In SDL usage, the prerequisite is higher
performance in the course and after simulation.
level of expertise. As expected, experienced users
were more efficient in describing and designing the
system. Previous knowledge of the object-oriented
system development was very helpful in using UML.
57
M. Kušek et al.: UML Based Object-oriented Development: Experience with Inexperienced Developers
UML was helpful for understanding and developing information from UML is kept and transferred into
object-oriented thinking. SDL. Consequently, visual design along with all the
possibility of system verification and validation
UML has tackled another important issue. Parallel
offered by the tools, remains available to designers.
design of different parts of the system is almost
obligatory, except of the very simple ones. System design with UML is very dependent on the
Precondition for proper system division comprises type of the system under development. The
two things: experiments support the conclusions arrived at. UML
is much more appropriate for designing the systems
definition of relatively independent subsystems,
having complex static architecture (e.g. data and
having appropriate functionality, and
GUI-related systems).
ensuring full collaboration of these subsystems,
SDL, on the other hand, is more appropriate for the
once they are designed.
systems with much internal communication. GUI
UML addresses them by packages and interfaces. systems and all systems involving a lot of
There are no package diagrams, but a designer can communication with the outer world can be
use class diagrams instead. By doing so, not only developed with SDL, although it is more difficult
implementation but also design is hidden behind the than with UML. The proposed solution is a
interfaces, facilitating subsequent changes and combination of UML and SDL. Figure 6 gives an
maintenance. It is even possible to develop particular example of such a design process that utilizes this
parts of the system using different tools (without any approach (Figure 6).
UML), and than to make reverse engineering into
The applied UML tool has code generators for
UML design (Figure 5). This particularly refers to
several most interesting programming languages.
GUI design. Given that redesigning and adding new
Preconditions for code generation are completeness
functionality is often the case (not usual with a brand
and correctness of the model. Hence, prior to code
new system), using legacy code can make substantial
generation there is always an automatic check of the
savings.
system design.
Major disadvantage of UML design in code
Agent
1 1
LocalManager
GlobalManager generation is the loss of much information. Code
generators use only class diagrams. Complete
s tartSimulation()
s topSimulation()
analyseOverallNetworkPerformance() updateMatrixElements(matrix)
updateLBMethods ()
setLBMethod() startModules() updateTopology()
moveToNextNode() stopModules()
startBalancer() openNetworkStructureEditor()
openLoadMatrixEditor()
stopBalancer() openLBMEditor()
1 getLoadInfo()
1 1
1
1
Database
Link
1
name
Reverse
Engineering rather than dynamic behavior. In our case, code
Legacy generation is practically absent. However, it does not
Code
mean that all other diagrams are worthless. They are
used in describing and documenting the system.
Figure 5. Reverse engineering Otherwise generated code is very clean, readable,
(GUI and legacy code) well structured and documented. Notes added to
UML diagrams are included into generated code as
Obviously, UML handles architectural problems comments. Code is clearly classified into the sections
well. Defining behavior is its weaker side. There is a for attributes, constructors, and user defined methods.
whole lot of diagrams (sequence, collaboration, Another practical feature is that the generated code
activity and state-chart diagrams), but the designers clearly reflects the system design (relationship
can use them for their own needs only. They do not between classes, their associations, role names, etc.).
contribute at all to automatic code generators.
Capturing behavior of the mentioned communication UML tools in the development and system analysis
application is worthless in automatic code generation, help us to test the system manually. SDL tools,
but not in documenting the way it works. The though, have powerful capabilities for automatic
designers would definitely prefer the code to give inspection of the newly created systems. UML tools
some reflection of the captured behavior. do not support processes of validation and
Consequently, UML to SDL (Specification and verification available by SDL tools. They merely
Description Language [4]) converter offered by some provide basic structural check. This is another good
vendors is a big step forward. SDL is suitable for the reason for the use of UML and SDL approaches
in-depth system design and verification. Also, SDL is (Figure 6).
also successful in expressing system dynamic
behavior. With the use of a translator, a lot of
58
M. Kušek et al.: UML Based Object-oriented Development: Experience with Inexperienced Developers
59
M. Kušek et al.: UML Based Object-oriented Development: Experience with Inexperienced Developers
Requirements capture
10
8
Testing 6 Amount of materials
The non-UML documents clearly show that the group Visualization Level of provided details
References
[1] G. Booch, J.Rumbaugh, I. Jacobson, The Unified
Modeling Language Use Guide, Addison-Wesley,
1999.
[2] M. Fowler, Kendall Scott, UML Distilled, 2nd edition
Addison-Wesley, 2000.
[3] P. Kruchten, The Rational Unified Process, 2nd edition
Addison-Wesley, 2000.
[4] J. Ellsberger, D. Hogrefe, A. Sarma, SDL Formal
Figure 9. Class diagram created with UML tool Object-oriented Language for Communicating
Systems, Prentice Hall 2000.
The non-UML group used flow diagrams that helped [5] O. Laitenberger, C. Atkinson, M. Sclich, K. El Amam,
system visualization. It is known to be a very useful An Experimental Comparison of Reading Techniques
method for facilitating development process. Like for Defect Detection in UML Design Documentation,
flow diagrams, UML diagrams help visualize the Fraunhofer, Kaiserslautern, 1999.
system. Flow diagrams visualize only behavior of the
system, whereas UML diagrams visualize all its
aspects.
Results of the experiment can be summarized in one
figure (Figure 10). The achievements of both groups
60