By: Jason E Bacani
Follow @JEBacaniSQLDude
Welcome to the latest addition of our “Tales from Consulting” blog series. You can read part 1 of this series here, where I talked about software development environments. In this post, we’re going to talk about the software development life cycle.
What is SDLC?
Software Development Life Cycle (SDLC) is a process used by the information technology and software industry to design, develop, and test high quality software and code. SDLC is essentially a framework that defines tasks to be performed at each step of the software development process. Following SDLC principles is seen as best practice for developing and implementing quality software and code-based solutions.
If you were to search the web for SDLC images, you would find images of multiple steps that define the ‘cycle’ portion of software development life cycle. People typically explain SDLC as having five to eight steps. Sometimes more steps are added if more details are required. For now, let’s look at the following six steps for SDLC:
Requirements Gathering and Analysis, Followed by Design
When implementing a software solution to solve a problem or address an issue, your first two steps are gathering the requirements for the identified problem and then designing the solution. In many cases, as consultants and developers, we are brought on a project to help solve a problem. The problem ought to be defined and identified up front, and help and assistance is needed to define what the problem is. The consultant can only offer insight on a solution if the problem or issue is clearly defined. Leadership may define the problem, but it’s the role of project managers and business analysts to take the lead here. But of course, when not so clearly defined, effort and work can be wasted trying to solve an issue that misses the point. Thus, gathering the proper requirements and conducting the proper analysis for the problem at hand is critical for starting the SDLC.
Once the problem is known and defined, we can start working on how we want to solve the problem. The design stage is often characterized by preparation for development that is typically lead by architects or senior technical leads. Preparation may include white boarding, flow charts, or even pseudo code – all prior to the actual development work. Having a proper design going into the the next step – development – will help steer the work to stay on course and avoid issues like scope creep and completely missing the goal of the intended software.
Development, Followed by Testing
Now we’re getting our hands dirty, creating code through development and then testing that code to ensure it works as intended. This is where the consultant/developer has a chance to shine. While creating and testing code can be seen as distinct steps, in truth, both steps should go hand in hand. An iterative process is utilized where code can be developed and tested through the development process. There are many levels of testing (which may be a subject for a future ‘Tales from Consulting’ entry) and the point of testing is to find any bugs or deficiencies in the code, and then go back to the development process to fix those errors encountered. Testing, without a doubt, is important! In addition to the consultant’s efforts, other roles like the business analyst or perhaps a dedicated quality assurance group (QA) can help perform more formal testing processes.
Implementation and then Maintenance
Also called “deployment”, implementation is where the code and software can now be applied, knowing fully that it has been developed, tested, and vetted. Typically the consultant who may be the technical lead will lead the deployment. Implementation may include having the code deployed in a controlled user acceptance testing environment (UAT), but ultimately, the code solves a problem or issue and will be deployed to production. Businesses and companies may also have strategies or schedules on how they apply new code to their production environments, which may involve communication to end users and stakeholders or may involve deploying during a regularly-scheduled release cycle (deploying once a month, for example). With such strategies in place, it is important for the consultant and developer to support the deployment process. Additionally, it is equally important to implement the code within the target environments.
And then once deployed, implementation is followed closely by code maintenance. To maintain the deployed code, there may be reporting features built in to the code released. There also may be necessary training and documentation provided by the consultant and developer to help desk support teams to assist in any troubleshooting of issues or bugs not found during development and testing. But in essence, all code/software that is implemented and deployed must be supported and maintained.
SDLC and Consulting Tales
The SDLC sounds pretty straightforward, right? Unfortunately there are many times and instances where steps are missed or shortened to try to quickly solve an issue or problem. Is doing so wise? As with anything in IT, “it depends”. Risks and impact of code deployed must be weighed and assessed (perhaps content around “Risk Management” will be a future “Tales of Consulting” entry).
If the risks are minimal and the impact is nominal, then shortcuts through SDLC can be afforded. For example, design may be skipped or absorbed in the development process. Testing can be brief if the work needed is to hot fix a pressing production issue. While all of the examples mentioned can be good reasons for short cutting the SDLC process, the best course is to always follow the process.
Do You Follow SDLC Principles? Please Share!
At Key2 Consulting, SDLC is a core competency adhered to, given the needs of our clients and the work to be delivered. Below is the strategy we share with clients.
Yes, clients can dictate which steps, if any, are focused or not focused on. But we at Key2 do our best to apply our vision of SDLC to deliver high quality solutions for our clients. The process is only as strong as the whole, and incorporating and adhering to most if not all of the steps will lead to a successful, quality delivery of a software solution for the client.
Do you have any experiences working with SDLC, either good or bad? We’d love to hear about them!
As mentioned, in future Tales from Consulting, we’ll take a look at Testing Principles as well as Risk Management.
Questions?
Thanks for reading! We hope you found this blog post to be useful. Do let us know if you have any questions or topic ideas related to BI, analytics, the cloud, machine learning, SQL Server, (Star Wars), or anything else of the like that you’d like us to write about. Simply leave us a comment below, and we’ll see what we can do!
Keep your data analytics sharp by subscribing to our mailing list
Get fresh Key2 content around Business Intelligence, Data Warehousing, Analytics, and more delivered right to your inbox!
Key2 Consulting is a data warehousing and business intelligence company located in Atlanta, Georgia. We create and deliver custom data warehouse solutions, business intelligence solutions, and custom applications.