Look around your organization: software is pervasive, in everything, doing everything, controlling everything, managing everything. Ideas are captured and managed, turned into product designs, developed and manufactured, orders are taken and employees are hired and fired all through software. Everywhere software is in and behind your products, systems and services; embedded in devices; and woven throughout your business processes.
In short, modern organizations today revolve around software, some of which they build, some of which is built transparently into the products they use and some they acquire, integrate, configure and deploy. Regardless of the particular business, software enables it to function.
Succeeding in a Software-Driven Economy
If software wasn't already important enough, today's pressures to cut costs, move faster and speed processes puts even greater attention on software. Many organizations are faced with abbreviated delivery schedules due to competitive pressures. Others drive innovation to gain competitive advantage. Software is part of the response.
Yet software development remains difficult, and the software itself often is bafflingly complex. Meanwhile, teams challenged to reduce time to delivery must do so without either increasing their budgets or sacrificing quality. That leaves them one choice: improve software development efficiency.
The business once painstakingly hammered out software requirements, tossed them over the wall to programmers and hoped to see functionality in 12 months. Today their users and customers are demanding new features in 30 days and smartphone apps in two weeks. To succeed in such a software-driven economy, organizations need collaborative application lifecycle management (ALM).
Collaborative ALM Defined
ALM solutions coordinate people, processes and tools in an iterative cycle of integrated software development activities, including planning and change management, requirements definition, architecture review, software configuration management, build and deployment automation and quality management. Actions are tracked and reported every step of the way to ensure full visibility into the project's progress.
When organizations adopt a holistic approach that aligns business needs, software development and delivery they enable a collaborative management process. The collaborative component helps to reduce communication inefficiencies, speed delivery time and boost overall quality and results by aligning the team vision across all disciplines. It enables the real-time flow of information spanning teams, tools and locations to deliver the necessary insight to improve the software delivery process and the business results that flow from it.
In addition to collaborative capabilities, the fundamental features of an ALM solution include traceability across lifecycle components, process definition and enforcement and reporting. The most important benefit of an ALM solution, however, is coordinating the people, processes, information and tools involved in a project. With no one-size-fits-all solution organizations instead must focus on five critical ALM success factors:
- Real-time planning
- Lifecycle traceability
- In-context collaboration
- Development intelligence
- Continuous improvement
Typically software teams start small with tools for software configuration management and defect tracking. From there they expand into other areas, such as planning and modeling or requirements management. At this point, as they begin to grow and expand on the initial ALM efforts, they look to add tools. Now they must check to make sure the tools can be integrated with each other for the purposes of sharing data and ensuring project transparency. It is this integration and transparency across the end-to-end software project lifecycle that enables the kind of insights that give ALM its power to improve development efficiencies.
Let's look more closely at the five critical ALM success factors.
Real-time planning is an essential starting point. Software is too important and too complex to attempt without a real-time plan that aligns the entire team. The real-time aspect is critical to ensure team members can instantly see changes in the plan and their impact on the work they are responsible for. Recommended is the use of planning tools that are fully integrated with execution and manage tasks for the entire team, not just the developers. Strive for plans that provide the team with information in context, meaning through a user interface that streamlines updates to plan information in the context of the work. Also recommended is the use of a planning tool that provides multiple views of the same data since different people work on different aspects of the project in different ways. Finally, practice continuous planning by using lifecycle queries and project dashboards to respond to changing events.
Lifecycle traceability helps the team understand what everyone else on the team is doing. Traceability provides that end-to-end linking of artifacts from initial business goals and requirements to the delivered software builds. A key aspect of traceability links artifacts to tasks in your development plan. Providing each team member visibility into what the rest of the team is doing and how it impacts a member's role as well as the overall workload. An ALM solution that allows for lifecycle artifact traceability, for example, enables teams to answer questions about the status of the project, identify gaps and address risk early in the project's lifecycle. By linking the related artifacts they can better respond when asked, for instance, about the impact of a newly identified defect on a particular requirement or which changes went into a given build. Integrated tools make it easy to establish such links, especially those with open interfaces from vendors who understand the ALM integration challenges.
In-context collaboration contributes to higher software quality and improved value by linking collaboration with innovation. It provides a single source of the truth, so that any conversation can move forward without having to revisit the past. The collaboration features within an ALM tool can improve a team's ability to connect with each other, conduct effective reviews, respond to changing events and increase project predictability. Collaboration tools creates a record of reviews, decisions and discussions visible to the entire team and available to assist new team members getting up to speed. Information is not lost in emails with out-of-sync documents containing comments and revisions from multiple contributors. In-context collaboration ensures the entire cross-discipline team stays "in the loop." By collaborating on and reviewing the requirements, designs, work items, source code and test artifacts to incorporate stakeholder and team member feedback early and often, teams form a collective intelligence and shared vision for the software, thus improving the product value a team delivers to their stakeholders. With in-context collaborations teams can collaborate around the globe in any geography, from a single source of truth hosted in a shared repository. Similarly, collaboration helps teams know what is going on by making team activities and changes easily visible to team members. Finally, an effective user interface automates access to the information needed for collaboration by bringing it to the user instead of forcing users to switch context to access another application.
Development intelligence through intuitive dashboards or information radiators provides the critical information about how your project is progressing, where you need to put more or different resources, and how it stacks up against your key metrics that is visible to the entire team. Leading experts, such as author Caper Jones, report that projects with strong measurement practices have higher success rates. To get the most out of your development intelligence, define performance metrics that are appropriate for your organization. Start with simple metrics that cover the four key aspects of a project: schedule, product value, quality and cost. By collecting and trending these aspects your ability to improve predictability of the project improves.
Continuous improvement is the ongoing effort to improve software delivery through the adoption of best practices and automation to reduce manual, non-creative and error-prone tasks. Through constant evaluation of team performance, seek incremental improvement by customizing plans, dashboards and work items in-context of a project at that point in time. Continuous improvement encourages break through improvement through the use of automation and the use of process, project, plan and work item templates to capture best practices and reuse across teams. Continuous improvement allows you to incrementally adapt, define, deploy and refine process changes.
Any organization can meet these critical success factors. The use of automated tools, especially integrated tools that share information across the application lifecycle, make the task easier and speed the overall process. Many vendors offer tools that handle one or a few of the ALM tasks. Few have integrated tools that can handle the full lifecycle. One such tool, however, is the IBM Rational Solution for Collaborative Lifecycle Management, consisting of IBM Rational Team Concert, IBM Rational Quality Manager and IBM Rational Requirements Composer. It addresses all five critical success factors described above.