Documente Academic
Documente Profesional
Documente Cultură
for visual modeling and component construction of enterprise-level software applications. In much
the same way a theatrical director blocks out a play, a software designer uses Rational Rose to
visually create (model) the framework for an application by blocking out classes with actors (stick
figures), use case elements (ovals), objects (rectangles) and messages/relationships (arrows) in a
sequence diagram using drag-and-drop symbols. Rational Rose documents the diagram as it is being
constructed and then generates code in the designer's choice of C++, Visual Basic, Java, Oracle8,
CORBA or Data Definition Language.
Two popular features of Rational Rose are its ability to provide iterative development and round-trip
engineering. Rational Rose allows designers to take advantage of iterative development (sometimes
called evolutionary development) because the new application can be created in stages with the
output of one iteration becoming the input to the next. (This is in contrast to waterfall development
where the whole project is completed from start to finish before a user gets to try it out.) Then, as
the developer begins to understand how the components interact and makes modifications in the
design, Rational Rose can perform what is called "round-trip engineering" by going back and
updating the rest of the model to ensure the code remains consistent.
Rational Rose is extensible, with downloadable add-ins and third-party partner applications. It
supports COM/DCOM (ActiveX), JavaBeans, and Corba component standards.
Rose facilitates object-oriented analysis and design, better known as OOAD. In fact, Rose is an
acronym for Rational Object Oriented Software Engineering. The great thing about Rose is that it
allows analysts, engineers, writers, and project managers to create, view, manipulate, and modify
elements in a Unified Modeling Language (UML) across the entire enterprise, using one tool and one
language. The tool͛s true value is that it exposes software development problems early on in the
development life cycle, helping you manage everything from straightforward projects to more
complex software solutions. Basically, Rose supports use-case-driven object modeling.
jc UML modeling
jc Multilanguage development
jc Component-based development
At the ProjectWorld Boston conference, Rational Corporation called Rose an invaluable aid to any
development effort because it unifies software development teams through modeling. After working
with Rose on a frequent basis, I͛m beginning to agree.
Ä
First, let͛s explore why you͛d want to use Rational Rose. The most immediate advantages are that it:
jc h
You should consider using Rose when facing software that
doesn͛t fit users͛ needs, since Rose lets you go back and correct flaws within the legacy
application.
Rational Rose uses a GUI that includes a browser, a diagram window, a document window, a
standard toolbar, and a diagram toolbar. You simply configure the Rose interface to suit your needs.
Let͛s face itͶin today͛s Web-based IT environment, it becomes necessary to design scalable
architectures that are easily adapted to constantly changing business conditions. For those solutions
that rely on technologies like Enterprise Java, Web, XML, or embedded technology, Rose accelerates
implementation by automating proven architectural models for each solution. Rose also establishes
a platform for automating architecture-based best practices tailored to specific solution
technologies.
One of the highlights of Rose is its add-in feature, which allows you to simply install programming
languages to generate the necessary code. You can quite easily install C++, PowerBuilder, Forte,
Java, Visual Basic, Oracle 8/9, and XML as add-ins. Rose͛s add-in feature also lets you install
nonlanguage tools, such as the popular Microsoft Project. Once you͛re working on a model, you can
simply deactivate any of the add-in features you don͛t want.
A key factor about Rose is that it allows users to tailor the application to specifically suit their
requirements. Apart from providing a level of tractability throughout the software development life
cycle, Rose has many features and functionality that users today want to see, such as ready-built
frameworks for different types of modelsͶa framework in this context being a set of predefined
model elements that are needed to model a specific type of IT solution. Rose can also provide a set
of reusable components, and it even provides templates for creating new models.
You access frameworks through a Framework wizard, which has a library of predefined frameworks.
The Rational Unified Process (RUP) framework is one example in which Rose provides a model
structure that follows RUP guidelines. The RUP is also tightly integrated with Rose, making it easy to
use. Additionally, it͛s no problem to create your own frameworks based on existing models. Rose
lets you reuse common model elements.
You can also use stereotypes to subclassify UML model elements. For example, you can assign the
actor or interface stereotype to it, thereby defining your own stereotypes and assigning them to
model elements. This lets you create stereotypes for use cases, classes, packages, relationships,
operations, and attributes.
One additional aspect is that Rose facilitates forward and reverse engineering. Forward engineering
typically involves generating code skeletons from Rose models. Reverse engineering allows you to
update or reuse existing code by pinpointing and isolating deviations from the original design.
The list goes on and onͶfrom creating simple associations to reflexive relationships between classes
to dependency relationships between packages and relationships. I believe Rose is truly impressive.
4
shows the various platforms that Rational Rose supports.
Rose utilizes diagrams as views of the information in a model. Once developed, Rose automatically
maintains consistency between the diagram and its specifications. The following key diagrams are
used:
jc =
Rose uses class diagrams to graphically describe generic descriptions of the
system you͛re going to build. Class diagrams contain icons that represent classes and
interfaces and their relationships to one another.
jc ã h Rose allows users to use statechart diagrams (which are
state-driven) to model the dynamic behavior of individual classes or objects. Statechart
diagrams are very similar to activity diagrams (which are activity-driven). Basically, these
diagrams show you (1) the sequence of states that an object will go through, (2) the events
that cause a transition from one activity to another, and (3) any actions that result from the
state or activity change.
jc ! Rose uses interaction diagrams as a collective name for collaboration
and sequence diagrams, which, in essence, graphically represent interactions. Collaboration
diagrams show how objects are associated with each other, whereas sequence diagrams
show time-based interactions between objects.
=
Ä
!
"
#
$
% %%
%
D
D
&
&
'
/
/
% %
!
% %
#
$
% %
%
%
# $
D
In Rational Rose:
jc Right click for the appropriate language, e.g. ANSI C++, select r =
jc The Code Generation form comes up. All classes will be specified ADD or UPDATE. Hit OK to
complete.
In Rational Rose:
jc Click File new for and new model, cancel out of the project selection
jc On the Files tab, hit Add Files, and click the ellipse (...) button
jc Select all *.h and *.cpp files and hit Open then OK
jc Select Logical View, there is a new folder called C++ Reversed Engineered
In Rational Rose:
jc Build software architecture that supports change with a common platform that facilitates
easy roundtrip engineering and synchronization of models and code.
jc Gain insight into distributed projects and tighter control of shared information.
¢
c
c
c
cc cc
cc
c
cccc
c
ccc c
cc
c
c
c
c
cc c
cc c
c ccc c
c
cc cc
c
c
ccc cccc c c
cc
c cc
c!c" cccc
c
c c
c c
c
cc
cc
ccc
cc
c
cc#
cc
c c
ccc
c
cccccc c
c
c
cc c$c% &c¢¢'(c)¢ ¢
c
'c(
*c
c+
&c¢"c)¢ c"
c ,*c¢ c
c
c
c- c' "c
c.
/
c(ccc
ccc
c
ccc
0
cc
c
c
c
1 c2 cccc$ c
cccc
cc
c
c cccc¢¢'( c
c cccc
ccccc
c, cc c
c
c
c
c¢"
3ccccc c
c
c ccc c
cc c
c
c
cc$ c
c
c¢"c
cc
ccc
c c4
c5c6ccc
c
ccc
c c cccc c
c
c
c c
c
ccc
cc c
c
ccc
cc
c
c7cccc
c
ccc cc
cc
c8
c$c)+ c' c. *c2c% c)¢ *c
c
%c+
c)8 c(*c
cc
c
ccc&c
c
ccc
c
0
ccc
c
c
c
c7cccccc$c¢¢'(c
c¢" c
ccc
cccc
c
c
ccc c-c c
c
c
c
c
ccc
c2c
c cc c c
c
cc cc
cc cc c c
c
c
cc
cc cc'
c c
cc
cc
c
cc ccc
c1c
c
ccc c c c
c
c
c
cc
cc c
ccc c
cc
ccc c
c
c
ccccc
c
c ccc c
c
cc
c
c4
c(, c. c561
c2#
c2 c
2$"c2.¢@c.
c".2c'c"c¢c+ c c
2 c
c= cc c
c cc="#ccc
c
ccc
ccc
c ccc
cc
c c
c="#ccc
cc
0 ccc¢ c"
c
8c)¢"8*c c% cc c ccc,ccccc
c
c
c$ c% cc
c%ccc
c
cc c
c
cc
cccccc c
c ccc
c¢"8c c
c7
c.
c( c¢ c#
c
6 c
c6c+ c
c'c'
c'c
c
1 c7c c1ccc
c
c c.cA cc".2c'c
c
c c(
c(1cc+ cc0c c="#c c
cc
cc="#ccc
0 cc7c
c ccc="#c
) c*cc
ccc¢"8cc
0 c c%cc2 c' c
cc cc
c cc¢"8c7 c
c4
c1c-c)74-*c
cc¢"8c7c$
c
c ccccc cc c¢"8c
c="#cc c
c cc¢"8c c@ c!c c
" ccc="#cc c1 cc cc¢"8c+ c1c-c)+-*c
c c.cA cc+-c
c c
c c="#c3c c% cc2 cc
cc+-c
c="#c:cccc
c
c
cc
c c