Computer programming is the process of creating a set of logical instructions for a digital device to follow using a programming language. While programming is critical to software development, it represents only one phase of the overall process. In this tutorial, we will discuss the software development life cycle and the tools used to support the software development process.
Specifically, this lesson will cover:
-
Imagine that someone has a creative idea for a new function to be performed by a computer. How does that idea become a reality? Said another way, if a company wants to implement a new business process and needs new hardware or software to support it, how might the company go about making it happen? Keep these questions in mind as you complete this tutorial.
1. Software Development Life Cycle
The process of developing good software is usually not as simple as sitting down and writing some code. True, sometimes a programmer can quickly write a short program to solve a need. But most of the time, the creation of software is a resource-intensive process that often times involves several different groups of people in an organization. For this reason, various software development methodologies exist. The term software development life cycle (SDLC) is used to describe the process steps employed by each methodology to develop and deploy software. The sections below list several of the most utilized methodologies. The methodologies will be covered in detail in a later tutorial.
-
- Software Development Life Cycle (SDLC)
- The general process steps used to develop and deploy software.
1a. Rapid Application Development (RAD)
RAD is a process that focuses on quickly building a working model of the software. It solicits ongoing feedback from users, and designers are able to iterate rapidly on changes. Most projects are completed on time, and businesses and project managers can more easily control risks in the RAD model. While a larger number of applications can be made, there is a potential for poor design to occur. Likewise RAD projects cannot be scaled and use a great deal of resources.
1b. Agile
Agile processes are those that utilize incremental changes with a focus on quality and attention to detail. The Agile approach depends on iterative progress and customer collaboration. The entire team, including customers and clients, are involved in the development process. Managing costs of development in an Agile process tends to be easier than in other methods, however the costs are less predictable. Unfortunately, Agile methods don't work well for small design projects. Because the client is closely involved, heavy coordination with the client is required at all times.
1c. Lean
A Lean process is one that focuses on taking an initial idea and developing a multiple minimum viable product (MVP). Lean development prioritizes efficiency and reducing or eliminating waste. In this model, developers optimize their time and resources and they're continuously encouraged to make key design decisions. On the other hand, Lean development often relies too strongly on having an organized team and it counts on the team having advanced technical skills which they may or may not possess.
1d. Cascade
Cascading is a linear method in which development occurs sequentially through several phases. Development teams use a Cascade approach when projects have well-defined requirements. This method tends to save time in the iteration phases and makes it fairly easy to stay on budget and to test the final software. Project managers have an easier time understanding the Cascade model compared to others. But there are distinct disadvantages. This method has longer overall delivery times and the process is not scalable. Finally, product owners must find a way to constructively contribute during the phases.
1e. Prototyping
Prototyping is a process that develops several mock-ups, or prototypes, of the software program. It allows for frequent user feedback and iterative improvements. In this model, it's easy to refine data and each stage receives valuable user feedback. During development, prototyping can save significant time and money by channeling the design team into the best designs. The drawbacks of prototyping relate to heavy client interaction. Because the product may change at every phase of its development, overall costs tend to climb. If client interaction is excessive, the deliverable can even be altered leading to unexpected outcomes.
1f. DevOps
In recent times, DevOps has become a popular software development methodology, integrating development and operations to enhance collaboration and productivity. By automating infrastructure, workflows, and continuously measuring application performance, DevOps improves deployment frequency and accelerates the release of software to the market. This methodology also fosters better communication between teams. However, implementing DevOps requires a cultural shift and a new mindset, and it can be complex to manage.
-
Learn more about the SDLC methodologies in the video below.
2. Phases of the Software Development Life Cycle
Regardless of the specific development methodology to be used, the software development life cycle (SLDC) provides the general process steps, or phases, for software developers to follow in the development of software. Each phase is characterized by a specific deliverable that should be developed by the end of the phase.
-
The general phases of the software development life cycle are listed below.
1. Requirement Analysis
- In this phase, a review is done of the request. Is creating a solution possible? What alternatives exist? What is currently being done about it? Is this project a good fit for our organization?
- A key part of this step is a feasibility analysis, which includes an analysis of the technical feasibility (is it possible to create this?), the economic feasibility (can we afford to do this?), and the legal feasibility (are we allowed to do this?).
- This step is important in determining if the project should even get started.
- In this phase, one or more system analysts work with different stakeholder groups to determine the specific requirements for the new system.
- No programming is done in this step. Instead, procedures are documented, key players are interviewed, and data requirements are developed in order to get an overall picture of exactly what the system is supposed to do.
- The result of this phase is a system-requirements document.
2. System Design
- In this phase, a designer takes the system-requirements document created in the previous phase, and develops the specific technical details required for the system.
- It is in this phase that the business requirements are translated into specific technical requirements.
- This document will have everything a programmer will need to actually create the system.
3. Programming
- The code finally gets written in the programming phase. Using the system-design document as a guide, a programmer (or team of programmers) develops the program.
- The result of this phase is an initial working program that meets the requirements laid out in the system-analysis phase and the design developed in the system-design phase.
4. Testing
- In the testing phase, the software program developed in the previous phase is put through a series of structured tests.
- The first is a unit test, which tests individual parts of the code for errors or bugs.
- Next is a system test, where the different components of the system are tested to ensure that they work together properly.
- Finally, the user-acceptance test allows those that will be using the software to test the system to ensure that it meets their standards.
- Any bugs, errors, or problems found during testing are addressed and then tested again.
5. Deployment
- Once the new system is developed and tested, it has to be implemented in the organization.
- This phase includes training the users, providing documentation, and conversion from any previous system to the new system.
- This is typically the final stage of initial development, in which the system is put into production for the organization/user to use.
6. Maintenance
- This phase takes place after deployment.
- In this phase, the system has a structured support process in place: reported bugs are fixed and requests for new features are evaluated and implemented; system updates and backups are performed on a regular basis.
- This typically involves a continuous evaluation of the software's performance.
-
A cycle is a series of events that repeat in the same order. When developers continuously evaluate their software's performance, it helps them to refine the overall requirements and the system design. In this way, the final step of the development life cycle folds back into the first step(s) of the cycle.
3. Software Development Management Tools
Regardless of which methodology is utilized, the software development life cycle is an incredibly complex process. Various management tools exist to aid in the overall management of the software development process. Listed below are several software development management tools.
-
MS Project: Project management tool that aids in overall planning of software project, disseminating project resources, and managing budgets and employee workloads. Can also be used to create project budget.
-
Visio: Software tool that allows for the creation of charts, diagrams, flowcharts, and network diagrams. Can be used to map out a process.
-
Visual Studio: Integrated development environment used for writing computer programs, developing websites, and web applications. Supports a wide array of programming languages such as C, C++, C#, Visual basic.net, etc.
-
Zoho Project: Free online project management tool that allows users to plan, collaborate, and track the progress of large projects by breaking them down into smaller tasks.
-
Primavera: Software development project management tool that provides users with the ability to collaborate on a development project while also offering control over each defined phase of the project. For example, a project manager can control who has access to certain aspects of a project. Furthermore, Primavera can be easily integrated into a business’s enterprise software/information system, such as Oracle's and SAP's enterprise resource planning system.
-
JIRA: Popular tool for Agile development, used for bug tracking, issue tracking, and project management. JIRA allows teams to plan, track, and manage Agile software development projects.
-
Asana: Project management tool designed to help teams organize, track, and manage their work. Asana supports task assignments, project timelines, and workflow automation.
-
Trello: Visual collaboration tool that uses boards, lists, and cards to organize tasks and projects. Trello is known for its simplicity and flexibility, making it suitable for a wide range of project types.
-
Slack: Collaboration hub that connects software tools, people, and workflows. Slack facilitates communication through channels and direct messaging, and integrates with many other software development tools.
Software development is a large and often complex process through which multiple people collaboratively work. Due to the complexity, businesses and organizations wishing to develop applications often have a difficult time settling on a particular software development life cycle methodology, as it can be very challenging to implement a particular SDLC based on the scope of the project. The more popular SDLCs include RAD, Agile, Lean, Cascade, Prototyping, and DevOps. To accomplish the task of developing software, various types of tools are available to manage the process. In this tutorial, we discussed what the software development life cycle is, and the tools used to aid in managing the process.