The software development life cycle (SDLC) is the work involved in taking software from an initial business need through design, construction, release, operation, and eventual replacement. It gives a project a way to answer three practical questions: what should we build, how will we know it works, and who will keep it useful after launch?
For a small business, that might mean replacing a spreadsheet with a customer portal, connecting an order system to accounting software, or automating a repetitive approval process. The lifecycle helps expose the awkward details before customers depend on the result. It also makes maintenance, training, and ownership part of the project from the beginning.
What the lifecycle covers
Teams use different names and numbers of phases. The following is a practical planning framework, not a rule that every project must follow in a single pass. Design, testing, and feedback often repeat as the team learns more.
| Activity | Main question | Useful outcome |
|---|---|---|
| Discovery | Which problem is worth solving? | A defined workflow, users, constraints, and desired result |
| Requirements | What must the software do? | Prioritized features and testable acceptance criteria |
| Design | How will the parts work together? | Screen flows, data structures, permissions, and integration decisions |
| Implementation | Can we build a useful, maintainable version? | Reviewed code and repeatable builds |
| Verification | Does it behave correctly for its intended users? | Test results, user feedback, and resolved release blockers |
| Release | Can we introduce it and recover if necessary? | A tested deployment, migration plan, and support handoff |
| Operation and retirement | How will it stay useful, and eventually be replaced? | Monitoring, maintenance, ownership, and a data exit plan |
Start with the workflow, then write requirements
Suppose a service business wants customers to upload documents and check the progress of a job. Start by observing how that happens today. Who receives the documents? How are they matched to a customer? What happens when a file is missing, a customer changes their email address, or an employee leaves?
Those questions reveal requirements that a simple request for a portal misses. List the people using the system, the information they handle, the actions each person may take, and the exceptions that need human attention. Identify which existing system remains the source of truth for customers and job status.
Make acceptance criteria observable
A requirement such as "customers can upload files securely" leaves too much open to interpretation. For this example, a more useful set of acceptance criteria would be:
- A signed-in customer can upload an allowed file type to one of their own jobs.
- The system rejects files above the agreed size limit and explains how to recover.
- Another customer cannot view or download the file, including by changing an identifier in a request.
- An authorized employee can find the file and see which job it belongs to.
- A failed upload does not appear as a completed submission.
Also agree on quality requirements: expected traffic, supported devices, accessibility, backup recovery expectations, and acceptable response times for important actions. Measure the current workflow where possible so the team can later compare outcomes. Keep the first release focused on a complete useful task, with optional features explicitly deferred.
Choose a delivery approach that fits the uncertainty
A lifecycle describes the work that needs attention. A delivery approach organizes that work. A staged approach can make sense when requirements are stable and formal approvals or external dependencies govern the schedule. Its risk is discovering misunderstood requirements after substantial implementation.
An iterative approach delivers smaller increments and uses feedback to shape the next one. The Agile Manifesto principles emphasize frequent working software, collaboration, and responding to change. This is useful when a business cannot specify every detail until people try the software. It still requires clear priorities, quality checks, and someone empowered to make decisions.
A practical combination is to agree on the problem, budget constraints, major risks, and first-release scope, then review working increments. For the portal, the first increment could cover signing in and viewing a job. Document upload comes next, followed by staff handling and customer notifications. Each increment should be reviewed as a working flow, not merely a collection of screens.
Design the data and permissions as carefully as the screens
Architecture is the arrangement of the system's components and the decisions about how they communicate, store data, and fail. For a business application, the important questions are often straightforward: where does customer information live, how are identities linked across systems, and what happens if an external service is unavailable?
Draw a simple map of the application, database, file storage, and external services. Define the permissions for customers, employees, and administrators. Decide how duplicate submissions, delayed responses, and retries should behave. For example, retrying a notification should not create a second job or mark an incomplete upload as successful.
Build accessibility into the design. Plan meaningful labels, keyboard navigation, clear error messages, and interfaces that remain usable when text is enlarged. W3C's accessibility planning resources describe how to integrate accessibility throughout a project and involve users with disabilities. A last-minute automated scan cannot substitute for those design decisions and user checks.
Build security and verification into everyday development
Use version control, keep development and production configuration separate, and make the build and release steps repeatable. Review changes before release, especially code that controls access, changes records, or communicates with another service. Keep secrets out of source code and ordinary logs.
NIST's Secure Software Development Framework describes security practices that can be integrated into different SDLC models. The practical lesson is to address security throughout the work, including design, implementation, release, and vulnerability response. Choosing a development method does not by itself make an application secure.
For a web application, OWASP's Application Security Verification Standard provides a basis for specifying and testing technical security controls. Select requirements appropriate to the application and its risks. An internal scheduling tool and a portal holding sensitive customer documents need different levels of scrutiny.
Test the business process as well as individual functions
- Focused code tests: Check calculations, validation rules, and other behavior that can be isolated.
- Integration tests: Check that the application, database, storage, and external services interact correctly.
- Workflow tests: Complete an important task from beginning to end with realistic permissions and data.
- Failure tests: Try expired sessions, interrupted uploads, repeated requests, and unavailable services.
- User acceptance: Have the people who will use the system confirm that it supports their actual work.
Match the effort to the consequences of failure. In the portal example, cross-customer file access is a release blocker even if every screen looks correct. A minor spacing defect may be deferred if it does not prevent use. Record those decisions so a known limitation does not become an unowned problem.
Plan the release before launch day
Release planning includes more than copying application files. Identify configuration changes, data imports, database changes, scheduled jobs, and third-party settings. Practice the steps in a representative environment and verify backups by testing restoration. Google's release engineering guidance explains the value of repeatable, controlled release processes; a small project can apply those principles without copying a large organization's tooling.
Be specific about recovery. Reverting application code may not reverse a database change or undo actions already sent to an external service. Decide whether a failed release needs a rollback, a forward repair, or a temporary manual workflow, and identify who can make that call.
Before opening the portal to customers, confirm that an employee can support a failed upload, that monitoring reveals important errors, and that users receive clear instructions. Start with a limited rollout where practical. Check the real production workflow after deployment, including permissions and background processing, rather than treating a successful upload of code as proof of success.
Budget for operation, change, and an eventual exit
After launch, somebody must own support requests, dependency updates, security fixes, monitoring, and backups. Agree on how urgent problems are reported, who maintains the hosting and service accounts, and where the essential operating instructions live. Documentation should make the next change or recovery possible without relying on one person's memory.
Review whether the software is solving the original problem. For the portal, useful observations might include how often customers finish an upload, where they need help, and whether staff still have to reconcile submissions manually. Treat these as measurements to collect, not benefits to assume.
Eventually, a system may be replaced or retired. Plan how to export necessary data, migrate users, handle retention obligations, revoke integrations, and close accounts. Keeping that exit practical is part of responsible ownership throughout the lifecycle.
Questions to settle before your next software project
- Which user task should the first release make easier, and how will we judge the result?
- Who decides priorities and accepts completed work?
- Which systems, data sources, and third-party services must it work with?
- What must never happen, such as exposing another customer's records or processing the same action twice?
- How will we test, release, recover, and support the application?
- Who owns the source code, accounts, documentation, and ongoing maintenance under the project agreement?
If you are still deciding what to build, explore the considerations around custom software and workflow automation. A useful starting brief describes the current process, the people involved, the systems already in use, and the outcome you want. Those details provide a stronger foundation for development than a long list of features alone.