Software development is technical activity conducted by human beings
This chapter introduces you to the bird eye view of IBM's Jazz platform and Rational Team Concert (RTC).
First, we will look at some different challenges in modern software development such as technology advances, distributed teams, collaboration, and software processes. These challenges will help us understand the nature of the complexity and set the context for the need of the Jazz platform and Rational Team Concert.
Later part of the chapter gives an introduction to the Jazz platform and Rational Team Concert. Jazz is the software development platform that brings the phases of software development together. The Jazz platform focuses on the collaboration, productivity, and transparency in the team.
Finally, you will be introduced to Rational Team Concert and an overview of various features such as process awareness, team awareness, work items, source control, agile planning, continuous builds, project health, and project administration. We will briefly look at other Jazz-based products and their functionality.
In this chapter, we will look at the following:
A discussion on software development challenges
Why is Rational Team Concert built on Eclipse?
Introduction to Jazz platform and Architecture
Bird's eye view of Rational Team Concert
An overview of other Jazz-based products
With decades of software engineering and software development advances, we have learned techniques and methods to improve the software productivity and customer satisfaction. However, every day we push the bar to a new limit and software development organizations are faced with the challenge of catching up with the ever increasing expectations from customers.
The hardware costs are steadily declining and the software is growing in complexity day-by-day. Yet, customers are baffled by the fact that the software is slow even on faster machines. With the increasing restrictions on costs, resources, and time, software vendors identify the improvement areas. Thereby, software vendors want to increase the productivity by filling the gaps and adopting efficient processes, methods, and tools. Therefore, the next important question is "What are the crucial software development challenges"?
Today, several software development projects are faced with similar challenges, primarily focused on the distributed teams and collaboration. Major categories of the challenges include but are not limited to the following:
Teams are globally spread out
Cultural differences make it difficult to communicate effectively
Difficulty in coordination with Global Teams
Fast paced technology paradigms
Customized development practices in teams
In the following sections, we will see the distributed teams, collaboration, and team management aspects of software development in detail.
Increasing globalization has brought a few changes in the software development industry. One of them is "off shoring" either part of the system or whole modules. Off shoring is chosen for obvious reasons such as business cost effectiveness, availability of talent pool, and other strategic reasons. Off shoring has led to global software development teams with members from at least two geographical regions collaborating on the same project.
Software Professionals must adapt to the new reality of offshore outsourcing.
|--Bertrand Meyer, ETH Zurich|
A team based on the same culture often has many common things to share and communicate informally compared to the teams spanning multiple cultures. Time zone difference, geographical distance, language, and cultural barriers create more information and psychological gaps in the project.
The co-located teams have the advantage that they have a line of sight, which helps them have informal discussions and thereby understand each other well. In the case of the geographically distributed teams, there is a possibility of misunderstanding created by communication. The tone of the language, and the choice of the words used in written or verbal communication, largely depend on the culture that one belongs to.
In practice, team members get information necessary to perform their tasks largely from peers, as opposed to formal, documented sources. To be able to tap this social resource, team members need to build social capital, meaning that they need to establish trust relationships with their peers.
This process of building trust does not occur so readily in a globally distributed team, sometimes leading to problems in the collaboration process. Informal collaboration tools, coupled with appropriate management practices, are an important part of the solution.
The act of working jointly in a co-operative manner to achieve a piece of a task is collaboration and it can happen in a formal or informal way. In the formal way of collaboration, typically the project manager or team leader assigns a "contact person" for any kind of questions or issues to answer. In the informal way of collaboration, team members work together at lunch or over a cup of coffee.
No matter what the problem is, it's always a people problem.
|--Gerald M. Weinberg|
The proliferation of several technological advancements such as Web 2.0, Service Oriented Architecture, Mashups, Software as a Service, Cloud Computing, and many others made teams depend on each other for expertise and carry out the knowledge management in a collaborative manner.
Due to the nature of the cultures and backgrounds, formal or/and the informal way of communication is preferred one over the other. Convergence of the collaboration tools into the software development tool was needed to solve the collaboration problems. Collaboration tools offer much more than the basic communication channels provided by e-mail and telephones. These tools can make team members aware of each other. After team members are aware of each other, they are then able to communicate and work together to achieve common goals.
Collaboration is supported through tools that allow communication, knowledge sharing, and analysis. Tools such as blogs, Wikis, bulletin boards, and instant messaging clients are a few collaborative tools used now. An interesting side effect of informal knowledge sharing tools, such as blogs and Wikis, is that they increase awareness. When people read blogs, they can learn more about the authors and their interests. In this way, even if two people are in a totally different geographical area, they may know a lot of each other from the social collaboration and communication tools.
With the global teams in place, pressure to achieve higher team productivity makes team management even more challenging.
When a member joins the team, he should be introduced to the project technology, development environments, given proper access rights to the tools, and so on. The team member is forced to learn several tools, processes, and techniques in a fast paced environment unless he comes from a similar environment.
Once the project is broken in to smaller chunks, they should be scheduled to meet the release schedule. The team manager should be sensitive about the geographically distributed teams with different vacation times, holiday times, or anything that affects schedule. In such situation, the communication between the team manager and team member becomes the bottleneck for the success of the project.
The team manager should have efficient tools for task assignment and task scheduling. The challenge is multidimensional where a single module's team is spread across the geography. In such case, the team within should co-ordinate to achieve their tasks and must find an efficient way to communicate.
Task assignment and scheduling includes the following:
Defining the requirements, designing smaller chunks of tasks, and scheduling the tasks does not yield the project success without tracking the project. Project tracking should make it visible about who is doing what, tasks in progress, whether there's any slack, whether there are any problems, whether anyone needs help, and team-member efficiency. A burn-down chart will also help to get an idea of the work left to do versus time. In Agile development, a burn-down chart is a graphical representation of work left to do versus time.
Once requirements are coded for the functionality, they must be integrated to verify and validate. Any issues in the build should be immediately notified to the team and corrective action should be taken. In the modern software development, it is not uncommon to track the software stability with nightly builds.
Many projects follow the practice of writing unit tests and sometimes automated tests are embedded during the build process. Considering that developers covered all the functionality with the unit test cases, a build gives a considerable confidence about the product. Then, the Quality Assurance (QA) team can do the functional testing.
Depending on the project and team, one may have different release time frames. Some projects have relatively shorter release cycles (for example, 2-4 weeks) and some have longer release cycles (every six months or even longer than one year). In either case, it is important to communicate the importance of the releases and schedule to the entire team.
In the global or distributed team setting, it is very easy to misunderstand and misrepresent the communication. Project updates not happening on an open platform leads to team members feeling insecure and mistrusted. Or even worse when you come to know about something after the fact.
Choosing the tools in a way to make the requirements, task estimates, task schedule, work progress, project tracking, project health, build results, release schedule, and project announcements transparent is crucial to gain the trust and confidence of the team. Each one contributes to the complexity of the software being developed.
The following table summarizes the challenges in the software development with respect to each stakeholder:
Software development challenges
Depending on the organization, geographical location, and technology area, the challenges could be multidimensional. Two projects may not have the same situations and constraints. However, they may have very similar challenges of collaboration and distributed teams in project management. All the mentioned problems in the table can be summarized as follows:
A team member inception must be easy
Team members do not want to deal with the process overheads
Team members need process transparency
Version control systems must know and understand issues
Task switching must be easy
Management needs a crisp overview of project available 24/7
Tracking of requirements and tasks must be easy
Replanning must be lightweight and easy
Team communication must be easy—without overheads
Development, QA, and management teams must have access to project status
QA must have access to release schedules and any impediments
Stakeholders must have a controlled access to the project status reports
Why should we discuss the "Eclipse way" in the chapter serving as an introduction to Jazz and Rational Team Concert.
Eclipse is a software development environment comprising an Integrated Development Environment (IDE) and an extensible plug-in system. Initially it was perceived as a Java IDE, a Rich Client Platform (RCP), and a Tool Integration Platform. However, in time Eclipse transformed as an eco-system of platform, application frameworks, tools, and runtimes.
Eclipse is a universal tool platform— an open, extensible IDE for anything and everything, but nothing in particular.
The Eclipse team always worked on small, stable, and extensible features, and delivered the quality software on time. The team developed, used, and improved the Eclipse by constantly reviewing and listening to the feedback from the community. They incorporated the best practices from eXtreme Programming (XP), Scrum, and (Rational Unified Process) RUP .
The Eclipse team took the best practices and modified or adapted them when necessary. The team followed the incremental, iterative, collaborative, transparent, and customizable practices, which enabled them to scale-up in time.
The Eclipse way is very often described by the set of practices (in the previous figure) that made Eclipse an extensible, robust, intuitive, and high quality platform. Very importantly, having the community involvement, consuming our own output, always having a customer, and adaptive planning are the key success factors. This ultimately reduces stress on the team and thereby leads to higher productivity.
Along with the focus on coding, the team also puts in place the release plans, iteration plans, and test plans. Planning gives the team certainty, predictability, and a sense of general direction. With Eclipse, it was possible to improve the individual coding productivity. It gave the developers all the tools necessary to deal with the common and boring tasks such as stub generation, renaming, importing and extracting code, file search, and others. As a developer you want to concentrate on the challenging stuff rather than boring tasks.
The team took the Eclipse's experiences and best practices to build the Jazz platform and Rational Team Concert. These best practices—often called the Eclipse way— helped the Jazz team to concentrate on to the team productivity, collaboration, and process awareness.
Software is best developed by a team of people, reacting and responding to each other in order to achieve the best outcome. – Jazz
Jazz is an open, extensible, and scalable platform by IBM that is built to keep team, collaboration and productivity at the forefront of software development. The Jazz platform integrates the various phases in the software development life cycle and helps the team to increase productivity and reduce human errors. Tool vendors can build powerful tools on the Jazz platform by using the frameworks and APIs.
With conventional software development, you spend a lot of effort setting up the development environment, setting up source code repository, getting the role-based access rights, and other infrastructure-related tasks. You typically connect to a requirements and/or issue management tool so that you can view assigned tasks and requirements to fulfill. In the worst case scenario, teams maintain a shared spreadsheet where they could see the assigned tasks on a weekly or monthly basis. Collaboration is typically done through casual discussions or e-mails. Source code management and requirements are often disconnected and it's difficult to connect or trace the requirements, source code, versions, and builds. Continuous integration builds are achieved with disparate systems, which might prove difficult to integrate into the development environment.
With Eclipse's success using the best practices tailored and adapted from various agile methodologies, the focus moved from individual productivity to team productivity. The central idea, "Build process into the tools and make tools aware of the team", gave the team the power to collectively collaborate and focus on the real job.
The Jazz platform got its name from the inspiration of a team of artists playing Jazz on a brightly lit platform. The Jazz orchestra team is visible to everyone and the audience knows who is doing what. Each member of the team has a complete understanding of one's own responsibility and that of the other team members. They work in a co-ordinated way to generate great music.
The Jazz platform has team collaboration, process awareness, transparency, and customization as its fundamental building blocks. Traditionally, software development tools were designed in a way that the focus is on development process or on coding productivity. In either case, focusing more on one aspect and ignoring another is not desirable. Instead, Jazz takes the approach to integrate the process into the tools and make the tools aware of the team. By embedding the collaboration tools of the choice, you have the integrated experience where each feature knows the context of the other tool.
Instead of considering the process as monolithic documentation and a set of training slides, the team process is truly integrated into the tools. This helps us concentrate on true innovation and focus on the tasks rather than worrying about the process implementation. It is not uncommon to imagine that the process implementation takes a considerable amount of time to learn and implement in traditional methods.
The amount of time spent by managers to pull the data from numerous sources to put together the status reports and project health charts can be huge. Each time, a report is needed for the higher management, and the manual data collection and report generation can become tricky and erroneous. The Jazz platform tries to solve these problems by unifying and automating the data collection and report process. This enables every one on the team to look at the same data and report at any time. Managers can also leverage the role-based access system so that they can hide the confidential data from certain team members.
Jazz is not a product. It is an application life cycle integration platform that provides APIs and open services to be used by the other participating tools.
To summarize, the Jazz platform takes the integrated approach to focus on collaboration, transparency, and automation. The Jazz initiative is composed of the following key components:
Jazz Integration Architecture: Customers can develop their own delivery environment from their preferred tools and practices. Jazz follows an evolutionary process so that companies can adapt the tools as the need arises using the open APIs. It also incorporates the specification provided by the open services for life cycle collaboration project.
Product Portfolio: Jazz stands as an open, extensible platform whereas several tools are developed on it. Tools such as Rational Team Concert, Rational Quality Manager, and Rational Requirements Composer are some examples for the tools built on the Jazz platform.
Community: This is one of the crucial aspects of Eclipse's success. A community is an eco system in which the members help each other and improve with the help of a constant feedback. Members have an interest to improve and care for the eco-system so that they collectively grow with it. The Jazz community and stakeholders can drive the product features and provide a constant feedback to improve the product.
The Jazz platform follows some key aspects of architecture to differentiate itself from the others. The noticeable aspects of the architecture are as follows:
Separates the tool implementation with the data representation and definition. That means, tools does not have to care about the closed data representation, which helps the other tools to participate easily.
Jazz consolidates the data from different databases over the internet protocol and does not assume data at a single location. This makes it possible for a large organization to scale up as it grows in an evolutionary manner.
Any language that understands the Internet can be used to program a tool for Jazz. No language restriction was made on the tool implementation. This helps when organizations have a varied skill set and tools need to be developed on the available skill set without forcing them to use a specific technology.
Finally, Jazz has the single point of access to all data. This reduces the unnecessary time consuming data manipulation and data cleansing processes among various tools.
Jazz Team Server (JTS) provides the foundation services or APIs that provide the access to the team, dashboards, security, event notification, search, and collaboration aspects. The JTS is built on the Open Life cycle Service Collaboration (OLSC) platform so that any tool that conform to the OSLC can be easily plugged in. For this, one needs to develop the server integrations on the OLSC layer and all the client integrations are done on the JTS, as shown in the following figure.
Jazz allows the community to develop different tools on the JTS by providing the language-specific libraries for accessing the Jazz APIs with Eclipse, Visual Studio, and Web 2.0 client integrations. This has the advantage that an organization can build the tools of their choice in their choice of technology.
JTS provides open APIs, helping groups of tools to work together. The foundation APIs enable the tools to access the work items, issues, build plans, release plans, and other project artifacts. The beauty of the JTS is to have the multiple physical JTS servers, but still consider it as one logical server, as shown in the next figure:
The Jazz technology platform is developed at jazz.net, where you can register to participate. You can open enhancement requests, projects reports, track schedules, participate in discussion forums, download and play with the Rational Team Concert, and other Jazz-based products.
Openness and transparency is the vision of Jazz team and is put into practice at jazz.net.
In today's software development, we spend a considerable time in configuring, managing, and updating several tools. These tools aid us to manage the software lifecycle and yet they are disparate and complex. We spend more time in learning about tools and less time in focusing on the core job. Traditionally time is spent in educating the tools about the way we want to work, which made the software development less intuitive and a painful process.
What if we have a tool that understands the source/version control system, source code editing, issues, work items, team members, team process, schedules, builds, releases, and does reporting for us? It is not too difficult to imagine how easy it would be to focus on the actual business value and core functionality than to worry about the tools.
Rational Team Concert is the first commercial product offering based on the Jazz technology platform. The Rational Team Concert 2.0 is the recent publicly available stable release that offered both Web and Client versions. The Client interface is based on the Eclipse platform and another flavor on Microsoft's Visual Studio. The Web client has a Web 2.0 style interface for the fast access of dashboards and reports.
Team collaboration and productivity is the focus of the Rational Team Concert. This means that the product offers an integration of all the aspects of our daily work, such as coding, plans, tasks, revision control, build management, and reports.
Rational Team Concert integrates with several other products, including IBM and third-party tools. Some of the current offerings are as follows:
IBM Rational ClearCase
IBM Rational ClearQuest
IBM Rational Quality Manager
IBM Rational Build Forge
Any organization using a variety of tools can adapt the Rational Team Concert and have the infrastructure and functionality provided by the Jazz technology platform and Rational Team Concert. As the third-party offerings increase, we will have more flexibility to use different tools along with Rational Team Concert.
Rational Team Concert gives you the power to collaborate in real-time, direct control of the project plans, build plans, and finally real-time project status reports. Development is a lot more about communication than writing code. It's critical that everyone understand the goals, timelines, and what is expected of them. Developers can update plans, start builds, and configure the team's process. Project managers can see the code, work items, and what is being delivered. Testers can see what is planned in the milestone.
Rational Team Concert supports accessibility features to aid users who have physical disability, such as restricted by mobility or limited vision, to use the software successfully.
In the following sections, you will see an introduction to the Rational Team Concert features and how they ease your daily tasks.
Rational Team Concert provides an easy-to-use, web-based admin utility to set up, configure, and tune the JTS. The server utility allows you to configure the database, e-mail, user management, and LDAP.
The web-based admin UI provides a way to see the server status, accessed users, and license settings. If you need to configure users in a large organization, you can use "import LDAP users" to ease the admin task.
Rational Team Concert has integrated the products such as Rational Quality Manager, Rational Requirements Composer, Rational ClearQuest, and Rational ClearCase. These built-ins are achieved with the help of importer and connector components.
With the built-ins, you can take full advantage of already existing infrastructure—ClearQuest, ClearCase, Requirements Composer, and others—in your organization. You can link the work items from Rational Team Concert to Requirements Composer and then trace them to the test cases and test plans in the Quality Manager. In this way, you get a seamless integration of existing tools with Rational Team Concert.
Several third-party integrations are available to give a total flexibility to you so that you decide what to use and integrate. Some of the current offerings include but do not limit to Hudson, Cruise Control, Subversion, CVS, JIRA, HP Quality Center, Google Talk, and Skype.
Agile project management can get tricky with large and distributed teams. Without the use of proper tools and integrated methods, project management can get complex. Rational Team Concert provides you a set of tools that would allow you to create plans for individual development tasks, sprints, releases, and builds. All the planning activities are connected back to the version control and issue management software. You can see the work load of an individual developer, current tasks that a developer is working on, track the release progress, and see the project health from the nightly builds.
A very interesting feature is that the Rational Team Concert provides a graphical planning feature that shows the tasks that are in progress, done, and to be done. This can be used to run daily scrum meetings without any extra effort. As a manager, you could get the overview of the sprint's risk from the project dashboard and take corrective action early in the phase.
Continuous integration and nightly builds are becoming rather necessary tasks in any software development projects. Rational Team Concert not only integrates the continuous builds but also does more than the basic features of a "build".
Rational Team Concert supports the Ant, Maven, and command line build systems out of the box. That means you can re-use existing Ant and Maven scripts from your projects and get the additional benefits of integrated build tracking, traceability, build reproducibility, build compare, and build health.
Traditionally, you spend a lot of time and effort to write process documents, train the project team to use the process, and finally to enforce the process rules into the system. While implementing the process, there is always an extra overhead introduced due to the manual errors and also you are left with team members who are unhappy as they need to follow the boring process and spend considerable time on process implementation.
Rational Team Concert takes the approach of "teaching your tools about the process". All your best practices can be directly configured into the Rational Team Concert, which will help you know the process violations on the fly. This makes it possible for you to concentrate on the real business problem and let the Rational Team Concert take care of the process implementation.
The great value of the process awareness in Rational Team Concert is the ability for you to choose from out of the box processes such as Scrum, Eclipse Way, and OpenUp. If your organization defines its own process, then you can define it as a new process and save it as a template for future uses. The Organizational process template used with your team's customization is a powerful way to leverage the process awareness.
Rational Team Concert understands the human aspects of who is in your team, who is who, and the technical aspects of team artifacts. You can get an overview of the team builds, team members, different release plans, and work items. Configure the team members that you want to see and track their work item's progress.
Setting up a new team and adding the team members to the team are very intuitive and at the end of team set up, the individual team members would be notified through e-mails. As a team member you would receive an e-mail with all the necessary details of how to join the team and immediately you can start working on then work items of the project.
Collaboration is enabled through context-sensitive communication—chat and team feeds. As soon as a user becomes online, you can chat and exchange files directly in the context of Rational Team Concert. This means, you can directly start chatting with your colleague to talk about a defect number and the chat client would turn it into links that your colleague can open and work with. Team feed is a great way to get informed about the work items, builds, and team events.
Work items are the building blocks in Rational Team Concert that enables you to track and co-ordinate the tasks and workflows. Work items are used to connect the Rational Team Concert's sprint planning, change sets, and builds.
Eclipse IDE, Visual Studio, and the web-based interface allow you to create, modify, and query the work items. You could also share the frequent queries with the team. You can add specific approval process to critical work items and have it marked with different status Ids such as pending, approved, or verified.
You can create the work items or import the items from the built-in adapters. Currently you can import the work items from Bugzilla, Rational ClearQuest, and CSV. All the importers allow you to define an XML file that contains the mappings from source formats to work item's attributes.
Rational Team Concert has a component-based source control system that supports geographically distributed teams. The source control system supports a highly integrated collaborative development environment, integration with defect tracking, and integration with builds. The storage model is entirely based on change set, which provide atomic changes to sets of files. Change sets are the base currency and can be shared (through work items), suspended, discarded, and reverted.
The source control provides a full tracking of file moves and renames. You can quickly suspend the task at hand and start a high priority task. Once that task is finished, you can resume the suspended task.
Rational Team Concert provides project dashboards and reports that give an overview of the project's health. You can get several reports based on the task priority, team member, burn-down charts, and many more. The project dashboards are a great way for the management and external stake holders to get the overview of the project's progress. Rational Team Concert provides more than 50 reporting templates and all of them are configurable depending on then process.
You can export the reports from a project in the forms of PDF, PostScript, Excel, Word, and PowerPoint, and present them to the higher management as status reports. You could get a variety of the project activity reports such as the work item report, source control reports, and build reports.
While Rational Team Concert is the first matured product built on the Jazz platform, there are other products from jazz.net in the beta and development stages. In this book, we will not go into the details of these other products. However, the following is an overview of the various products on Jazz. You can participate and download these products from the IBM website to get an in-depth understanding.
The increasing complexity of the software requires ensuring the quality product by extensive test plans and test coverage. Rational Quality Manager provides a collaborative environment to create test plans and execute them. The product offers the tracking and traceability of requirements to test cases and metric analysis. As a manager, you can get the impact analysis of how the project is affected by project decisions.
In modern day software development, you can imagine that the requirements are coming from multiple stakeholders and in different formats. It is always challenging for you to integrate these silos of information in a meaningful manner.
Rational Requirements Composer gives you the power to capture the requirements from different stakeholders and transforms the spreadsheets, Word documents, presentations, whiteboard discussions, and online conferences to manageable requirements.
You can leverage the rich editors to create use cases, user stories, user interface mock-ups, process diagrams, and many more. The real value comes when you combine different requirement sources from stakeholders through hyperlinks, tags, and attributes.
Very often you have the project management and program management software disconnected from the team, tasks, and development environments. Rational Project Conductor enables you to plan, schedule, and have a work break down structure. You can attach various artifact types when a work item is being created and the project calendar can be fully customized to reflect the team and location.
Rational Project Conductor allows you to schedule work, assign work items, and view timesheets of the team members. It allows you to import the project plan from the Microsoft project.
For the management, measuring of the progress, identifying the potential problems, and development risks could be daunting. Rational Insight gives you the ability to find the blind spots in the development and mitigate the risks. You can enforce the governance in a globally changing environment.
Rational Build Forge is an integrated approach for the automated builds and release management. You can utilize the existing project infrastructures such as scripts, tools, and development languages to achieve the automation and scheduling.
Maintaining your teams' software, hardware, and business assets in simple spreadsheets or disconnected systems could be very daunting and error prone. Rational Asset Manager lets you manage, define a reuse strategy, and track the asset usage for business and software assets across the enterprise.
In this chapter, you have seen how the advancements in modern software development lead to new challenges of integrated systems and collaboration among team members. As the software complexity and customer expectations increases, the project management is looking "to do more in less time with high quality". You have seen how the best practices made the Eclipse platform robust, extensible, high in quality, and ensure on-time deliveries.
Next, you have seen that Jazz has collaboration, team productivity, and transparency at the forefront in its Vision. The Jazz platform architecture allows several tool vendors to plug in their functionality by writing server and client adapter components. In this way an organization can still use the tools of its choice yet take the advantage of the Jazz platform.
You have seen that Rational Team Concert is built on the Jazz platform and takes the complete advantage of the Jazz capabilities such as team awareness and process awareness. Finally, you saw an overview of the other Jazz-based product offerings.