Blogs about Jazz

Blogs > Jazz Team Blog >

Building products from applications

In 2008, the Jazz team released the first version of Rational Team Concert, the first product resulting from the Jazz project. Many of the developers on the Jazz team were also part of the original Eclipse effort, so it’s natural that we’d build on some of the same ideas. While our goal with Eclipse was to improve the productivity of individual team members, our goal with Jazz has been to improve the productivity of the entire team. This is a scalable concept intended to empower not only small teams but teams of teams for enterprise-wide efforts. Most recently with Collaborative Application Lifecycle Management (CLM), we’ve broadened that focus to include not only tools for writing and building software, but also for testing software and defining the requirements that initiate software development efforts. To this end we’ve built tools such as Rational Team Concert (RTC), Rational Quality Manager (RQM) and Rational Requirements Composer (RRC), on a common Jazz Foundation platform, allowing us to achieve high levels of integration in end-to-end scenarios.

In 2009, Jazz products on the server side were self-contained applications in the form of singular web archives or WAR files. This approach was very monolithic. Products such as RTC and RQM embedded the same components with both including Jazz Foundation. RQM also embedded components from RTC such as Work Items. As a result, if you downloaded and installed RTC, RQM and RRC, you experienced longer download times and greater memory consumption at run-time. Additionally, when even just one common component had changed, each product team would have to package the updated component and customers would have to install these multiple updates.

In 2010, one of the most important changes we made is in how we build and deliver these and other Jazz products. This new architecture was first seen in RTC 3.0, delivered in late 2010 and in 2011 we will realize greater benefits with new releases of RQM and RRC as well as an update of RTC. We’re delivering each of these products by leveraging a single, common install but we haven’t simply lumped together our existing products. Instead, we’ve decomposed the product functionality into a set of shared applications together with a Jazz Team Server (JTS) with each application delivering capabilities for one or more products. A Jazz Team Server provides the basic services that enable a group of applications to work together as a single logical server. An application is the smallest unit of install, deployment, and update while a capability is the smallest unit of function that can be enabled through licensing. These are the domain-specific applications that we have defined:

  • The Change and Configuration Management (CCM) application delivers capabilities for Change Management (work items), Configuration Management (SCM), Planning, and Automation/Build.
  • The Requirements Management (RM) application delivers capabilities for capturing, managing, and tracing requirements throughout the development lifecycle.
  • The Quality Management (QM) application delivers capabilities for test management including test planning, creation, and execution.

When you install any of the CLM 2011 products, you can deploy the CCM, RM and QM applications in addition to a JTS. You then install product license keys into the JTS to permit access to the capabilities provided by the applications.

By default the applications and a JTS can be installed within the same web container such as a single instance of Tomcat or WebSphere Application Server. They may also be installed into multiple web containers allowing distribution of the deployment across physical servers. Regardless, what we define as an application group is one or more of these applications subscribed to a single JTS which serves as an integration hub for the applications. As a result of the move to smaller units of deployment and execution, it is now much easier to download and run a server that provides a full range of capabilities across several products. However there’s more to it than that.

In Rational, we see our development teams that have previously built separate products such as RTC, RQM and RRC as now doing two things. They are both building applications that deliver shared capabilities, and also working with product delivery teams to define integrated products that utilize these and other applications. The teams building applications aren’t working in isolation. Within the CLM effort, the teams building the CCM, QM, and RM applications are all working together along with the team that’s producing JTS. Additionally, for specific initiatives such as delivering new features or improving in specific areas, we have feature teams that cut across relevant applications. You can see this in the CLM 2011 plan items which document the efforts of each of these feature teams including their cross-application membership.

It’s important to understand that applications don’t simply map to products. This is not just a renaming effort in which RTC is now CCM and RQM is QM. In most cases, products actually make use of multiple applications. As an example, the Quality Professional license will permit access to certain capabilities across all three of the CCM, QM, and RM applications. For some capabilities the access is full read-write access and in other cases it is read-only. The Quality Professional license has read-only access to Configuration management and Automation/Build whereas the RTC Developer license will permit read-write access to these capabilities.

One of the neat aspects of this approach is that it’s possible for future products to be defined and delivered simply as a set of product license keys that enable capabilities in shared applications. Of course some products may require the deployment of new applications with additional capabilities, but those new applications could then be utilized by other products too.

This organizational and architectural change in how we build and deliver products is exciting. While products, defined by sets of license keys, allow us to flexibly meet the needs of specific customer requirements, applications allow us to improve the delivery and serviceability of those products. We’re realizing the benefits already and we expect that our customers will see them too.

Adrian Cho is the development manager for Collaborative Lifecycle Management. He is also the author of The Jazz Process: Collaboration, Innovation and Agility, a recently published book about high-performance teamwork that includes examples of how the Jazz teams work and how Rational Team Concert enables teams to work more productively.