In Canaxia there are organizations in the company that are utilizing Rational Unified Process (RUP) for software development projects with varying degrees of success. Myles Standish sees that because of the steep learning curve required to understand the UML syntax, some of the groups are struggling with creating consistent artifacts at each stage of a project's development. What Myles finds is that the groups that are more mature in the use of RUP are effectively creating reusable components and have solid specifications and documentation to support those components. The RUP-oriented development teams are directed more toward software framework than the other organizations and have defined components that can be used easily for new project developments. The business groups that work with these RUP-oriented development teams are having a hard time picking up all the syntaxes required to create the deliverables associated with this process. It seems that though the quality of the documentation associated with the design and implementation of the projects is exceptionally high, the quality of the requirements specification artifacts are inconsistent. RUP is an evolution of the practices and process definitions created by Rational Software over the past 15 years. Identified as the Unified Process back in 1998, this process definition was the next generation of Rational's Objectory Process, which encompassed software development for object-oriented and component-based systems. Despite the changing of names, RUP continues to be a software engineering process framework for defining, implementing, and deploying software applications. At its core, RUP utilizes the Unified Modeling Language (UML) to clearly communicate requirements, architectures, and designs. The great benefit of basing the process framework around UML is that it is an industry-accepted language for modeling software systems. Though UML has a focus in describing object-oriented systems, the modeling syntax is a well defined and ubiquitously accepted standard across today's technology industry. One of the characteristics of RUP is the well-defined grammar and terminology used throughout the process definition. At the highest level, RUP defines the following phases of a software project's delivery:
The Unified Modeling Language (UML)It is important to understand the role and history of UML in the RUP. UML is a software modeling language used to describe the structure and processes encompassed by software systems. UML is the product of an evolution of various second-generation, object-oriented methods that were developed during the 1990s. Starting with Rational Software Corporation and three of the most prominent methodologists in object-oriented information systems, Grady Booch, James Rumbaugh, and Ivar Jacobson combined their respective approaches into a unified syntax for modeling software systems. Over the years, UML has pervaded the industry and was adopted as a standard for software modeling by the software consortium, the Object Management Group (OMG), in 1997. Core Process DisciplinesAlong with the four RUP phases of a software development release, nine core process disciplines are associated with a project in a RUP software delivery process. The nine core process disciplines are as follow:
Figure 5-4 describes the relationship of the core process work flows in relation to where effort is applied during the various phases described by the RUP methodology. Figure 5-4. RUP life cycle by phase, task, and effort.The Rational Suite of ToolsAlong with providing the thought leadership, process information, and training for deploying RUP in an organization, Rational also provides a suite of software tools designed to work effectively in facilitating a RUP process implementation. Rational Software, acquired by IBM in the spring of 2003, provides commercial tools to support the full development life cycle of software. The following list is a subset of tools that are recommended by Rational for the various parts of the core process work flows. These tools are not required to implement RUP in an organization, but they greatly facilitate the maintenance and adherence of RUP standards at all stages during a software delivery.
The Benefits and Shortcomings of RUPRUP is a software development process that has been developed and championed across the IT industry for almost a decade. The process definition is based upon a language (UML) that is in accord with industry standards and is widely accepted as the de facto modeling language for object-oriented and component-based systems. Throughout its evolution, RUP has matured into a variety of applications, and today one of the key characteristics that Rational is touting for this methodology is that the process can be tailored for the needs of an organization. Varieties of RUP have been defined that incorporate using RUP in a CMM organization or to attain CMM certification. Process-light versions of RUP have been developed to manage smaller, more agile projects. At the same time, this software development methodology is scalable to the full software delivery life cycle and includes details for managing software across organizations and the enterprise. Lastly, Rational provides the suites of tools, training, and process information that can be used to roll out RUP effectively across a company. The first and most apparent shortcoming of RUP is, because it is based on UML, that it is biased to supporting OO and component-based software projects. For companies that support hybrid application environments where some systems may not fit directly into an object-oriented metaphor, UML is not as effective at incorporating these systems into its modeling language. The next shortcoming is that RUP can be very complex. The modeling syntax requires far more notation than what the average developer wants or needs. The third shortcoming is that purchasing the tools and training for RUP tends to be very expensive for an organization. Probably because RUP is proprietary to Rational and is its flagship product offering, implementing RUP in the enterprise can be costly in terms of software licensing and training support. RUP is a software development methodology that has some limitations, specifically when dealing with the entire software life cycle. The Enterprise Unified Process (EUP), described in detail in Chapter 6, extends the RUP to make it a complete life cycle. As you can see in Figure 5-4, it adds two new phases, Production and Retirement, as well as two new disciplines, Enterprise Management and Operations & Support. Mid-to-large sized organizations find that they require these additions to have a life cycle that meets actual real-world needs, see Figure 5-5. Figure 5-5. The Enterprise-Unified Process diagram. |