Melpomene - Fotolia
How ALM differs from SDLC
ALM and SDLC both cover much of the same ground, such as development, testing and deployment. Where these lifecycle concepts differ is the scope of what they include.
Software drives every aspect of the modern enterprise. Accordingly, software creation and management are vital to businesses. But software doesn't simply materialize out of thin air -- it's the result of careful planning, development and management, and a pragmatic assessment of an application's lifecycle.
Organizations can achieve quality software and oversee its operation in numerous fashions. Two popular options are application lifecycle management (ALM) and the software development lifecycle (SDLC).
ALM and SDLC share common ideas, and the terms are sometimes used interchangeably, but they differ in scope. Let's examine both concepts, review the elements of each and explore their similarities and differences.
ALM vs. SDLC
SDLC focuses on the application. It covers the technical aspects of software development. ALM takes a broader, comprehensive view of the application, incorporating a business perspective. ALM covers why a business needs an application, what the software must do and how it benefits the company. SDLC primarily sticks to the design and creation of the application. Thus, SDLC can fall under the umbrella of ALM.
Application lifecycle management. The steps of ALM cover the general process of managing an application from inception through obsolescence.
ALM begins with requirements gathering and software design. The next major phase is application development and release. ALM continues with regular application maintenance cycles, such as patches, upgrades and ongoing performance management.
ALM concludes when the IT organization decommissions an application it deems obsolete. In most cases, another application supersedes the old one, and that new piece of software then follows its own lifecycle.
Software development lifecycle. Comparatively, SDLC is the process used to create, test, deploy and maintain an application. It doesn't include tasks related to requirements gathering or sunsetting -- also called retiring -- an obsolete application.
SDLC encompasses the software development process, but it does not denote a specific approach to it. Within the SDLC, for example, can fall software development methodologies such as Agile and DevOps, and processes such as CI/CD. There are many approaches and practices a development team may use to build and maintain the application throughout its useful life.
ALM and SDLC tools can automate and orchestrate processes. For example, SDLC tools facilitate software design, coding, testing, version tracking, ticket management and release control. ALM tools can integrate SDLC functions with business management processes and controls.
ALM tools and concepts
When an IT organization deploys ALM properly, the practice can accelerate application deployment, improve visibility into workflows and yield higher-quality products.
ALM tools cover the entire lifecycle of an application. Popular choices include:
- Microsoft Azure DevOps
- Broadcom Rally Software (formerly CA Agile Central)
- Jama Software
- Visure
- Orcanos ALM
- Tuleap
Consider these five major elements of ALM tools: planning, development, test, deployment and support.
Planning. An ALM tool assists with application requirements management, including how teams gather and prioritize them. Requirements include criteria such as user stories and business expectations. Development teams can apply various approaches, including Waterfall, Scrum, Agile and DevOps, depending on a project's needs. An ALM tool may include features to track and change requirements throughout the application's lifecycle.
Development. ALM tools support source code management, sometimes integrating with repositories and version control tools as part of the software development toolchain. Code and build management ensure that only validated and authorized components are available and distributed to the development team of coders, testers and support (help) staff.
Test. ALM tools usually include testing and QA features. They can also integrate with testing tools in the software development toolchain. An ALM tool can help create and support test cases and data sets as well as the test procedures for code and built components.
Deployment. ALM continues through the application's operating life, so tools should support code deployment. The tool can typically integrate with systems management tools to provision a suitable operating environment. An ALM tool should be able to deploy the desired build of the application and then help monitor the application performance for live users.
Support. ALM tools cover post-deployment application maintenance and support. Teams can integrate an ALM tool with help desk and ticketing platforms to track ticket requests and resolutions. Such functionality should inform requirements changes and ongoing application improvements as well as new development.
SDLC concepts and components
A development team relies on many tools to support the SDLC, including IDEs, compilers, repository managers, testing and automation tools.
For example, one software project might rely on Atlassian SDLC tools: Jira to plan work, track issues and organize releases; Confluence can support team collaboration and documentation; Bitbucket to manage the code repository and access to the codebase; and Bamboo for continuous integration and release management.
While SDLC uses multiple tools, the development cycle is usually divided into five major steps: requirements, design, coding, test and deployment.
Requirements. A development team either chooses requirements at the onset of a software project or adjusts them from cycle to cycle as the product evolves. Requirements gathering covers what the application must do on an ongoing basis to satisfy stakeholders and users. Development teams must prioritize and evaluate legal, economic, technical and scheduling feasibility within a software project's requirements.
Design. The design process converts requirements into a plan that developers can implement through code. Design is a conceptual exercise to visualize the elements, flow and interactions that must take place to implement requirements. A design phase might involve approval or signoff from stakeholders, but continuous delivery development paradigms often forgo design signoff.
Coding. Developers write application functions in coding languages, such as Python or Java. Program code gets compiled into a functional application or software system. A development team manages the code through repositories and version control tools to document changes.
Test. Builds undergo testing before the software goes to production. QA testers can use tools to create test scenarios and criteria to drive and evaluate the build's behavior. During that evaluation, testers can document and address bugs, and then retest a new build. When testing validates that a build is functional and meets requirements, the build becomes a release candidate.
Deployment. A release candidate is software ready for users. SDLC tools can provision a suitable deployment environment and install the build. In most cases, the SDLC includes both a new and older deployment that coexist in production for extended QA observation before the older build is retired.
Development cycles can repeat frequently. Early in an application's lifecycle, development work can occur daily. Once it deploys a build, the development team begins work on new or changed requirements, bug fixes and other items. As the software matures, SDLC frequency drops, as focus shifts from new features and functionality to ongoing bug fixes, performance optimizations and updates such as improved integrations via API enhancements. ALM tools oversee the trajectory of the application's evolution, and help to organize and allocate the human and technical resources needed to maintain the project.