The software development life cycle (SDLC) consists of six phases: planning and requirements, system design, development, testing, deployment, and maintenance. While modern Agile processes, like DevOps and DevSecOps, are more iterative and blur the lines between phases, there is still value in understanding the software development life cycle phases and what happens in each phase.

In this article we’ll take a deeper look at the SDLC phases and some best practices to bring your project successfully from planning to release.

We’ll also take a look at which features in Assembla can help you manage the SDLC process. As a cloud-based source code hosting solution that supports multiple version control systems—Perforce, SVN, and Git—with integrated project management tools, Assembla offers a wide range of solutions for managing your project in every phase.

Planning and Requirements

Every project begins with a plan, even Agile projects with lightweight processes. A documented, high level plan ensures everyone has the same understanding of what the product is and that they are working towards the same goals. This is more easily accomplished if you decide early on which Agile framework is best for your team.

As a project progresses it’s important to include customers in the planning discussions so that you can understand their requirements and document them for subsequent SDLC phases. Your customers may have expectations or workflows you haven’t anticipated and it will save you time and money if you identify and resolve any gaps in understanding early in the SDLC.

During the planning and requirements phase you can use wikis to document high level project plans and work item tracking tools to record requirements. Assembla’s wiki tool is a centralized place to document project scope, vision, and goals. It’s also a great place to document team processes and best practices where it’s easy for stakeholders to make changes and keep everything up to date.

Assembla Wiki
Assembla Wiki

You can use Assembla’s Agile IT project management tool to organize requirements into tickets. Feature sets are recorded as epics which are broken down into user stories that explain the feature experience from the user’s point of view. Stories can further be broken down into subtasks and checklists in the next SDLC phase: System Design.

Agile task break down
Breaking down tickets by type in Assembla

System Design

During system design the user stories and requirements are examined by developers, designers, and UI/UX and accessibility experts. Quick prototypes are created to test out different design approaches and teams discuss the pros and cons of those designs. A rough estimation of effort, cost, and user satisfaction can be done to help determine which design will best achieve the desired outcome.

Once a design approach is agreed upon, development teams will work on a detailed technical plan that includes high level decisions such as system architecture, database design, workflows, and user interface design. Assembla’s wiki tool is useful for coordinating design discussions and documenting the technical plan and you can use your project’s Assembla space to store and update design documents.

Developers take the work done in the planning phase and further break down the user stories into sub-tasks that will fit within a sprint. For each sub-task, developers can create a checklist of what work is required to complete the task and use that information to create detailed Agile estimates using story points, t-shirt sizing, or time.

Source code management and ticketing

Development

Once you have the project requirements and system design you’re ready to dive into development. The engineering team will take user stories from the backlog and assign them to a specific sprint, during which the feature is developed and integrated with the larger code base.

During development the role of the project manager is to track progress, manage risk, and remove any obstacles their developers encounter. A common risk during development is scope creep from unexpected bugs or changing customer requirements that cause developers to redo or take on additional work.

Having a merged project management and version control environment makes it easy to visualize incoming tickets and understand your team’s velocity. With a combined environment, project managers can monitor development progress, communicate status, and document risks in a tool that also supports areas vital to the dev team like version control and CI/CD pipelines.

A solid version control strategy is the backbone of software development, so the first step is to Choose the Right Version Control System for your team – one that will support the Type of Source Code Repository Needed for Your Project. Once you’ve decided on a version control system and type of repo, you’ll also want to consider Proven Branching Strategies for Your Development Team.

With all of your infrastructure in place your team can begin coding and checking in changes as they work through the backlog. A robust source code management tool will support code reviews, catch merge conflicts, facilitate easy documentation of changes, and allow for automated integration, testing, and deployment. 

Assembla is the only cloud-hosted version control that supports Git, SVN, and Perforce—giving your teams the flexibility to use the tool that works best for each project. Assembla emphasizes collaboration, accountability, and traceability with the ability to link code commits to tickets. Merge requests make it easy to coordinate code reviews and keep track of feedback and changes. You can also leverage these features to troubleshoot and resolve merge conflicts.

Finally, Assembla is SOC 2 Type II Compliant, with source code security features like branch protection, permission controls, and data encryption. Assembla partners with AWS, Perforce, and SVN to employ the latest security best practices to keep your data centers, source code, and asset management systems monitored and protected.

Testing

Testing often begins in parallel with development and testing early can help teams catch and fix bugs at a lower cost. Using a practice like DevSecOps adds an additional focus on security and operations earlier in the SDLC. By bringing security testing into the development stage teams can quickly react to bugs, make fixes, and retest as part of their Agile software development cycle, rather than just before deployment.

With static analysis tools you can scan your codebase and be alerted to any security issues or violations of code best practices. As code is merged into working branches, you can leverage dynamic testing, such as unit testing, to see if the changes have a negative impact on product behavior.

Assembla integrates with Kiuwan Code Security Scanner to proactively run weekly SAST (static application security testing) scans to detect vulnerabilities and security threats. In addition, AlphaScan can be used to automatically scan commits to ensure there are no hardcoded passwords or access keys in your source code.

When bugs are found you can use Assembla to link bug tickets to the source code where they were found and include details in the bug report about what the failure was and when it was encountered. Project managers can use the reporting features in Assembla to monitor bug status and burn down rates to track progress towards deployment.

Deployment

Once bugs are addressed and code is passing all quality checks, your project is ready for deployment. Linking related features together and organizing them into release milestones makes it easier to create plans so everyone on the team is clear about what is being deployed. Having well defined branching and integration processes also helps ensure code is organized in a logical way with all the required pieces ready for deployment.

Another way to streamline your processes and ensure quality, scalability, and repeatability is to implement continuous integration and continuous delivery, or CI/CD. CI/CD is an approach where you merge development work into mainline branches and deliver the code to a testing environment on a regular basis, often daily. Some teams take this a step further and also deploy to production on a continuous basis.

Using CI/CD tools, such as Jenkins and Travis CI, you can automate builds and testing to make continuous deployment quick and easy as long as certain conditions are met. If the branch builds without errors and all of your automated tests pass, you can configure the CI/CD tool  to automatically deploy changes to production. Assembla is integrated with Travis CI, allowing you to automate your CI/CD pipeline for SVN, P4, and Git-based builds. You can configure your CI/CD pipeline to run nightly or weekly builds and if any issues are encountered, Assembla tickets are automatically created so your team is alerted and pertinent information is documented.

Maintenance

The software development life cycle continues after deployment in a final maintenance phase. Post-release, teams continue to receive feedback from customers, leading to new bug reports and feature requests. Monitoring telemetry and usage can also give teams insights into where their product can be improved and what features are most important to their customers. 

As new requests come in they need to be tracked, similar to how the original requirements and development bugs were tracked. You can set up feedback mechanisms to automate ticket creation for customer feedback. A best practice is to monitor this feedback channel on a daily or weekly basis and triage the requests to determine their priority and whether or not they should move into the backlog. For urgent bugs, such as ones that cause production downtime or data loss, you should have a hotfix process that can quickly gather the team needed to troubleshoot, fix, and deploy the solution.

Assembla’s support tool allows you to configure two customer feedback mechanisms using email to create tickets. You can have customers email the support alias directly or you can set up a customer support form on your website that emails the alias. In either case, a ticket is created, enabling your project managers to easily monitor the incoming volume of requests and organize them according to priority and milestone. Whenever comments are added to the ticket an email is sent to the customer updating them on the status of their request.

For customers that are also project stakeholders, such as those directly involved in requirements discussions, you also have the option of inviting them into your Assembla space. Inviting them to your space allows customers to file tickets directly in your project using an Assembla account. You can adjust which fields are visible and editable and you can restrict access to the rest of your Assembla space.

The benefit of this direct access is that priority customers can continue to see and more closely monitor the progress of their ticket after it’s created. Customers can create public tickets that everyone can see—appropriate for large outages or commonly encountered bugs—or private tickets if their request contains sensitive information. There is also an internal only ticket permission, which is the default if no permission is chosen, in which case the ticket will only show in the tickets tool for the development team and will not be visible to customers in the support tool.

Your team can continue leveraging ticket features in Assembla to keep track of fixes and use the wiki feature to communicate and collaborate during the maintenance phase. Having all of your software development life cycle phases in one tool gives teams end-to-end visibility across their projects. For teams that use DevOps or DevSecOps, this visibility allows for greater insights across phases and enables project managers to create plans that span phases by organizing new feature development, bug fixes, and maintenance work into logical milestones.

Agile Software Release Management with Assembla

Assembla has a wide variety of flexible and customizable Agile tools to help your team manage their project in each phase of the software development life cycle. Through planning and requirements, system design, development, testing, deployment, and maintenance, Assembla offers features to enhance collaboration, ensure quality, and ease planning. If you’re ready to try our cloud-based version control and project management platform, start a free 14 day trial of Assembla. Our team would love to talk with you about how Assembla can meet your Agile software development needs.