As a project manager, I’ve worked on many software development projects, some good and some downright horrible. I’ve realized that there are some things that make software development relatively painless—a great team, and great tools for modeling and developing software. I believe Rational Rose ranks as the top visual modeling tool among its closest competitors: CoolJex, Objecteering, ISOA, Select Enterprise, Paradigm+, and GDPro.

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.

Rose includes features that simplify the software development process:

  • UML modeling
  • Multilanguage development
  • Component-based development
  • Internet Web publisher
  • Basic report generator
  • Database schema generator

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.

Demystifying Rational Rose
First, let’s explore why you’d want to use Rational Rose. The most immediate advantages are that it:

  • Facilitates team development:  Rose provides complete team support, allowing users (developers and analysts) to work with their own version of the model in their own workspace.
  • Is used throughout the software development process: From defining the user requirements to implementation, everyone working on the project understands a universal language. You can use Rose at any stage in the life-cycle process. It helps you uncover and prevent potentially serious mistakes downstream.
  • Makes it easier to manage model changes: Any change you make to a Rational Rose model you make available to others by using a configuration management and version control (CMVC) system. This lets you integrate changes into the model, no matter where you are in the development stage. Rose typically uses add-in tools, such as Rational’s ClearCase and Microsoft’s Visual SourceCafe, for this purpose.
  • Saves on creating additional project documentation:  An advantage here is that you simply use the models created in Rose as a basis for design and development. I’ve seen many projects fail because of poor documentation practices.
  • Addresses bad legacy software: 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. Table 1 shows the various platforms that Rational Rose supports.
Table 1

Supported Rose Platforms
Windows UNIX/Linux Databases
Windows XP Pro Linux x86 (RedHat 6.2, 7.0) Oracle 7.x, 8.x, 9.x
Windows NT 4.0 SP 6.0 Sun Solaris 2.51., 2.6, 7, 8 Microsoft SQL Server 6.x, 7.x, 2000
Windows Me HP UX 10.20, 11.0, 11i IBM DB2 MVS 5 & 6
Windows 95, 98 SGI IRIX 6.5.5 Sybase system 12
Windows 2000 SP 1 AIX 4.3.2, 4.3.3 SQL – 92

Exploring Rose diagrams
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:

  • Use case diagrams: Analysts and developers use these to capture user requirements by graphically depicting how the system works. During the design phase of the project, Rose allows you to actually specify the system behavior (what Rose calls use cases). The use case diagram therefore graphically represents the system boundary. Typically, a use case diagram consists of (1) actors or things outside the system, (2) use cases, and (3) relationships between actors.
  • Class diagrams: 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.
  • Statechart and Activity diagrams: 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.
  • Interaction diagrams: 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.
  • Component diagrams: Rose uses component diagrams to clearly reflect the physical dependency relationships between components (i.e., main program, subprogram, packages, and tasks) and their arrangement in a graphical manner.
  • Deployment diagrams: Using the deployment diagram, Rose allows users to graphically show the connections between processors, devices, and connections.

By any other name, Rose would still be sweet
In this primer on Rose, I’ve introduced you to the basics and the key out-of-the-box features. According to the Standish Group International, only 16.2% of projects are developed and deployed successfully. To improve this figure, IT companies need to dramatically improve software analysis and design. I’m confident that Rational Rose can help enterprises achieve seamless integration of both their legacy and new IT applications. In future releases of Rose, I think we’ll see more emphasis on version control and addressing project coordination.