Implementing best practices for key areas
Editor's note: This is the first in a series of articles that will explore how organizations can best prepare to adopt application lifecycle management (ALM) for software and systems development. To begin, we will look at an overview of ALM and five important areas of process maturity that support it.
As software continues to be the "make or break" differentiator between many competitive products, the stakes have never been higher. Recalls ruin reputations, and product failures impact stock prices. Even the smallest hiccup can create a big delay that can ripple throughout an organization.
To remain competitive, organizations need to improve the efficiency of their software development processes and learn from their experiences. This will allow developers to become more efficient, predictable, and agile -- while fostering innovation and helping the organization comply with standards and regulations. This the fundamental reason for adopting an application lifecycle management (ALM) approach to development.
However, successful ALM initiatives don't just happen. Adopting an integrated approach to managing the lifecycle of software applications requires a careful, step-by-step process. Focusing on individual areas of challenge is a logical first step for improving the software development process before embarking on an ALM program. But as you implement these more effective processes, keep in mind that this is just one step of many toward the goal of maturity, for instance, following the Capability Maturity Model Integration (CMMI). The goal is not to have perfected, isolated silos, but rather to bring these established practices together in an integrated environment.
There are advanced disciplines in five areas that have proven to be a successful foundation for a mature ALM solution.
1. Requirements management
There is no blanket approach to managing requirements. The level of requirements management depends on the unique needs of each industry and its customers. In an aerospace industry project, for example, the higher-level requirements tend to be stable, but the supporting complex hierarchy of sub-requirements may shift. In contrast, consider high-innovation projects such as a website for online banking or online shopping. Here, requirements may be simple and straightforward, but they typically change as customers experience beta versions of the website and provide feedback or development teams discover new technology to enhance the site. Management must recognize this and pursue process improvements that complement the approach that fits their business or the way their developers really work.
Whatever the nature of the project, a supporting requirements management tool would certainly help multiple teams capture, analyze, and decompose requirements in a central repository, which should also include a process for managing changes to requirements and assessing the impact of change. The goal is to help users identify and avoid inconsistencies to ensure that all stakeholders, regardless of where they are located, have access to the latest requirements.
2. Test management
Because there are many reasons to test throughout the development lifecycle, the best approach is to test at multiple levels. Integration testing is critical whenever software, electronics, and mechanicals come together in a product because it ensures that developers at every level are on the same page. This eliminates costly rework that can delay project delivery.
Verification and validation are two higher levels of testing that answer different kinds of important questions about the performance of requirements. Verification is an internal check and analysis of requirements that confirms that the software works the way you expected it to. Validation puts the testing in the hands of the customer or other end users, who validate that the product fulfills its intended use.
One of the biggest roadblocks to testing maturity is to confine testing at the end of development when bugs are more costly to fix, resources are low, and time is short. Recognizing the value of testing as a discipline brought in naturally throughout the lifecycle is the best preparation for ALM. In all cases, traceability of requirements can enhance the reliability of the testing process. A best-practice approach includes mapping requirements to test cases to ensure that they match project specs, meet with customer demands, and comply with regulations and standards.
3. Configuration management
Configuration management helps globally dispersed developers and teams meet modern customer-focused demands. People who use software and manufacturers of products whose advanced functions are based upon embedded applications have come to expect multiple versions, regular patches, service packs, variants for different platforms and geographic areas, as well as variants for different models of products.
Configuration management should provide the process backbone for software development as it coordinates teams, changes, versions, and configurations. When integrated with change management systems, teams have a central repository in which to implement a repeatable process across the organization for change control -- not only for software, but all configuration items. Most importantly for global ALM initiatives, configuration management helps distributed teams operate seamlessly regardless of location.
4. Change management
As organizations look to become more agile, they must get better at managing change. Enterprise change management allows organizations to implement a repeatable, documented, and reliable process for capturing both defect data and change requests of all types, on software and hardware -- and from all possible internal and external sources. In addition, the change data that is collected can be analyzed to identify trends and learn from past mistakes. As such, it is possible to gain quality benefits not only on the current project, but also build upon them for the future.
Disciplines for modeling, or model-driven development (MDD), are unique to each industry. For development of embedded systems and other high-tech instruments, for example, a mature approach in modeling is extremely important because it delivers a high-level view of the system without having to deal with individual lines of code. As today's applications and systems become increasingly complex and must evolve quickly, organizations need the high level of abstraction that modeling provides.
Implementing a change in an MDD environment enables developers to simulate a model and refine issues upfront and then generate code. Implementing changes at the model level, with automatic code generation, is time- and cost-effective, especially in highly technical areas.
Setting the stage for Phase 2
The benefits of ALM are critical to success in today's competitive world. Bear in mind that strong executive leadership and clear direction are key to success in all process improvement initiatives. The timeline and areas of focus must be based on each organization's challenges and past experiences. Most important of all, keep in mind that the goal is to eventually integrate these best practice areas in a cohesive ALM solution.
Once you've built this foundation, how can you leverage these newly improved processes for greater consistency, better cross-team collaboration, and more powerful analysis capabilities? What are the tangible business benefits of bringing these areas together as part of a broader ALM initiative? Find out in the next article in this series ("Integrating ALM processes brings additional benefits") where you'll discover how ALM integration provides traceability, automated processes, and consistent reporting across the lifecycle -- and ultimately a better, more efficient software development process.
About the author: Dominic Tavassoli is vice president of Telelogic, an IBM company.