As software engineers, we’re always concerned about technical stuff and always tend to implement code with great architecture and with a very high performance. Some of these engineers are aware of how to do so by working on the different phases of software development lifecycle, but many more -always due to their enthusiasm of accomplishing the goal- dive directly into coding, trying to deliver the best quality in less time. Actually this is most common in software development industry; they think that by diving into code directly this would save a lot of time and make them deliver earlier.
As you’ve probably guessed, this idea is not true. This idea actually increases the task’s time and leads to delivering the task with a lot of missing cases and bad quality.
Before we begin Let’s first read about SDLC(Software development lifecycle).
Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high quality softwares. The SDLC aims to produce a high-quality software that meets or exceeds customer expectations, reaches completion within time and cost estimates.
A typical Software Development Life Cycle consists of the following stages −
1-Planning and Requirement Analysis
3-Designing the Product Architecture
4-Building or Developing the Product
5-Testing the Product
6-Deployment in the Market and Maintenance
Let’s describe them in details:
Stage 1: Planning and Requirement Analysis
Requirement analysis is the most important and fundamental stage in SDLC. It is performed by the senior members of the team with inputs from the customer, the sales department, market surveys and domain experts in the industry. The information is then used to plan the basic project approach and to conduct product feasibility study in the economical, operational and technical areas.
Planning for the quality assurance requirements and identification of the risks associated with the project is also done in the planning stage. The outcome of the technical feasibility study is to define the various technical approaches that can be followed to implement the project successfully with minimum risks.
Stage 2: Defining Requirements
Once the requirement analysis is done the next step is to clearly define and document the product requirements and get them approved from the customer or the market analysts. This is done through an SRS (Software Requirement Specification) document which consists of all the product requirements to be designed and developed during the project life cycle.
Stage 3: Designing the Product Architecture
SRS is the reference for product architects to come out with the best architecture for the product to be developed. Based on the requirements specified in SRS, usually more than one design approach for the product architecture is proposed and documented in a DDS — Design Document Specification.
This DDS is reviewed by all the important stakeholders and based on various parameters as risk assessment, product robustness, design modularity, budget and time constraints, the best design approach is selected for the product.
A design approach clearly defines all the architectural modules of the product along with its communication and data flow representation with the external and third party modules (if any). The internal design of all the modules of the proposed architecture should be clearly defined with the minutest of the details in DDS.
Stage 4: Building or Developing the Product
In this stage of SDLC the actual development starts and the product is built. The programming code is generated as per DDS during this stage. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle.
Developers must follow the coding guidelines defined by their organization and programming tools like compilers, interpreters, debuggers, etc. used to generate the code. Different high level programming languages such as C, C++, Pascal, Java and PHP are used for coding. The programming language is chosen with respect to the type of software being developed.
Stage 5: Testing the Product
This stage is usually a subset of all the stages as in the modern SDLC models, the testing activities are mostly involved in all the stages of SDLC. However, this stage refers to the testing only stage of the product, where product defects are reported, tracked, fixed and retested, until the product reaches the quality standards defined in the SRS.
Stage 6: Deployment in the Market and Maintenance
Once the product is tested and ready to be deployed it is released formally in the appropriate market. Sometimes, product deployment happens in stages as per the business strategy of that organization. The product may first be released in a limited segment and tested in the real business environment (UAT- User acceptance testing).Then based on the feedback, the product may be released as it is or with suggested enhancements in the targeting market segment. After the product is released in the market, its maintenance is done for the existing customer base.
All of the above describes the SDLC definition which is implemented on the project scope in general. But what about from the developer’s perspective?Does he need to follow all of these steps in each task ? Does he need to understand all of the above ?
As a developer, someone would say “I am responsible for the coding part of the task only and that’s it” . But actually that’s not correct, a developer should follow all the phases of SDLC in every task.
Weird, no ? But that’s the truth.
So let’s dive deeper into the steps a developer should follow to deliver his task:
As a software engineer, you should take time before writing any line of code to analyze the feature, and you should ask yourself some questions:
1-What is needed?
2-Why is it needed?
3-How the proposed solution will fulfill the need?
Getting answers for these 3 questions is the most important part, so you can implement the task the way the user wants. You want to identify his problem so you can solve it.
This is what’s called task’s Requirement Analysis.
The second phase is Design. “How will we get what we want?” .
This phase of SDLC starts by turning the software specifications into a design plan called the Design Specification.
In this phase, as a developer, you need to plan how you’ll implement what satisfies the customer’s needs .Before diving into code, you shall plan the architecture, logic and definition of done to deliver what the customer expects.
In this part, I would recommend using a paper and a pen and start writing down what’s needed and the steps to accomplish it and place a checkmark beside each one on completion.This approach helps you in many aspects:
- Tracking all the steps needed to accomplish the desired goal.
- Tracking the steps done and what’s remaining.
The checkmark itself gives a sense of accomplishment, it gives you a self satisfaction you wouldn’t imagine till you place it. Accomplishing tasks and completing goals is more than a cause for celebration.
The third Phase is Implementation/Coding. “Let’s create what we want.” This SDLC stage develops the software by generating all the actual code. If the previous steps have been followed with attention to detail, this is actually the least complicated step. What makes this phase complicated is when we skip all of the above and dive directly into this phase.
It’s a common issue in developers community that a developer, due to his enthusiast to deliver the task quickly, skips all of the previously mentioned steps and starts with the implementation. The problem is that skipping the above steps would, in the opposite, slow down your delivery as you’ll face a lot of problems and missing concepts while implementation which will lead sometimes to revamping what you’ve already implemented.
Diving into implementation without analysis and design will always results in a bad delivery in terms of quality and time.
I have here a note as a software geek :-)
Always think about the potential bugs and the support of the ticket before you write the code.
As the software is evolving and customer’s needs may change, you’ll always need to write a code easy to understand by any developer that would tackle a bug or a CR within your task.
Think about it like writing an article easy to understand by anyone without further explanation.
The Fourth phase is Testing. “Did we get what we want?”
In this stage, we test for defects and deficiencies. We fix those issues until the task meets the original specifications.
As a software engineer, you shall always think as an engineer not as a coder. An engineer is a an analytical and logical thinker, always looking to identify the problem and solve it using the best approach. A coder is someone writing code, implementing the analysis and design done by the engineer.
These phases of SDLC must be always done by any Software developer in all his tasks to deliver high quality features and to meet the Software Development Goal.