Application Lifecycle Management (ALM) is the specification, design, development, and testing of a software application. ALM covers the entire lifecycle from the idea conception, through to the development, testing, deployment, support, and ultimately retirement of systems.
Step 1: Plan Release
Start your customization or development project with a plan. Gather requirements and analyze them. Have your product manager (or equivalent) create design specifications and share them with the development team for implementation. Determine the various development and testing environments the team needs as the project progresses through the ALM cycle.
Step 2: Develop
Complete the work, following the design specifications. Perform the work in an environment containing a copy of the production org’s metadata, but with no production data. Develop on Lightning Platform using an appropriate combination of declarative tools (Process Builder, the Custom Object wizard, and others in the UI) and programmatic tools (Developer Console, Source Code Editor, or Visual Studio Code).
Step 3: Test
Exercise the changes you’re making to check that they work as intended before you integrate them with other people’s work. Do your testing in the same type of environment as you used in the develop step, but keep your development and integrated testing environments separate. At this point, focus on testing your changes themselves, not on understanding how your changes affect other parts of the release or the app as a whole.
Step 4: Build Release
Aggregate all the assets you created or modified during the develop stage into a single release artifact: a logical bundle of customizations that you deploy to production. From this point on, focus on what you’re going to release, not on the contributions of individuals.
Step 5: Test Release
Test what you’re actually going to deploy, but test safely in a staging environment that mimics production as much as possible. Use a realistic amount of representative production data. Connect your test environments with all the external systems they need to mimic your production system’s integration points. Run full regression and final performance tests in this step. Test the release with a small set of experienced people who provide feedback (a technique called user-acceptance testing).
Step 6: Release
When you’ve completed your testing and met your quality benchmarks, you can deploy the customization to production. Train your employees and partners so they understand the changes. If a release has significant user impact, create a separate environment with realistic data for training users.
Release Management Process
Releases typically fall into one of three categories.
Patch
Bug fixes and simple changes. Simple changes include reports, dashboards, list views, and email templates. This is also a kind of hotfix.
Minor
Changes with limited impact, such as a new workflow rule or trigger impacting a single business process. These releases typically require testing, but only limited training and change management. Typically, a team delivers the changes for a minor release within a few weeks.
Major
Changes with significant impact, including changes with one or more dependencies. Because these releases can greatly affect the user experience and data quality, they require thorough testing, training, and careful change management. Major releases are typically delivered once a quarter (Salesforce does it three times a year).
Deployment Models
There are three development models.
Change set development
Org development
Package development
Change set development
It's a declarative tool to deploy the changes from one org to other org using Inbound and outbound change set
The outbound changeset is created on Source org and the Inbound change set created in target org.
Both the org should be connected org
The change set is good when you have less complex deployment. Refer to my previous blog to know more about change sets.
Org development
Change set is good when your org is pretty much small and development is not going frequently.
Let's consider that you have an org where you have multiple teams working together. Change set will not be a good approach for this. You can use an org development model.
Org development model that uses some different tools that provide
greater flexibility and scalability
new ways to track and manage change
a different method of deployment.
Org Development Model Manage change with Salesforce DX tools and source control.
Salesforce DX
Salesforce Developer Experience (DX) is a new way to manage and develop apps on the Lightning Platform across their entire life cycle. It brings together the best of the Lightning Platform to enable source-driven development, team collaboration with governance, and new levels of agility for custom app development on Salesforce.
Salesforce DX Project
The Salesforce DX project contains the source and files that comprise your changes. A DX project has a specific project structure and source format.
In addition to source files, the project contains a configuration file, sfdx-project.json. This file contains project information and enables you to leverage Salesforce DX tools for many of your development tasks.
You can think of the DX project as your outbound change set, where you’re managing and collecting the changes that you want to send to your production org.
A DX project has this structure:
Deployment Artifact (.zip File)
After testing the changes, Juan creates the deployment artifact, a .zip file that contains changes to deploy. He deploys the release artifact to the Full (staging) sandbox first, and then finally to production. You can think of the deployment artifact as the inbound change set. The changes don’t take effect until they are deployed.
Source Control System
All changes are merged and stored in a source control system, which contains the Salesforce DX project. A source control system provides several benefits.
Real-time collaboration increases efficiency and drives consensus.
The team can work on the same files at the same time without fear of overwriting changes or losing work.
Revision history shows who made which changes.
You can revert to earlier versions of any file. It’s like having your very own time machine where you can go back and save the universe from destruction.
When you save work you provide a commit description, which provides historical context for the work.
Salesforce CLI
Salesforce CLI is a powerful command-line interface that you can use for every phase of the org development lifecycle. It improves productivity by providing a single interface for all your development, test, and automation use cases. You can:
Authorize sandboxes (headless or web flow)
Create and manage DX projects
Import and export test data
Retrieve and deploy metadata
Run and automate tests
Salesforce Extensions for Visual Studio (VS) Code
Salesforce Extensions for VS Code is built on top of Salesforce CLI and VS Code. Together, they are an integrated development environment that’s created for custom development on Lightning Platform. Best of all, you can run Salesforce CLI commands directly from the command palette or terminal. The development team installs the Salesforce Extension Pack so they can use these VS Code extensions:
Salesforce CLI Integration—interacts with Salesforce CLI to provide core functionality.
Apex—uses the Apex Language Server to provide features such as syntax highlighting and code completion.
Apex Replay Debugger—enables VS Code to replay Apex execution from Apex debug logs.
Aura Components—supports Aura component bundles.
Visualforce—supports Visualforce pages and components.
Package development (Unlocked Package)
Packing is the other way to deploy the component to another org.Packaging allows you to group various Salesforce Components for distribution or deployment.
A package can also be defined as a container and allows for deployment of the components across various Salesforce organizations. Salesforce Set up UI and Salesforce CLI allows for creation of these. Package Creation yields a URL that allows it to install in various orgs
Salesforce offers different types of packages
Unmanaged
Managed
Unlocked
Unlocked packages are especially suited for internal business apps and allowed you to do modular application development. Unlocked package is the right package type for most use cases, Unless you plan to distribute an app on AppExchange. You can use unlocked packages to organize your existing metadata, package an app, extend an app that you’ve purchased from AppExchange, or package new metadata.
Unlocked packages help you add, edit, and remove metadata in your org in a trackable way. You can install unlocked packages to multiple orgs, and upgrade your Salesforce apps easier and faster. Metadata in unlocked packages can be modified in a production org ( You can do in case of emergency but not recommended).
Unlocked packages follow a source-driven development model. The source of truth of the metadata contained within the package is your version control system, not what’s in an org. This model brings with it all the advantages of modern source-driven development models.
UNMANAGED PACKAGE, MANAGE & UNLOCKED PACKAGE