Build Good Build Better.

SDLC — Part and parcel of Software Development.

Hey pals, you all might have heard a famous saying — Anything planned is half done. The era we live in is very unorganized. We are comfortable with all the happenings and believe in “Go with the flow” ideology. It happens in the IT industry too despite we have SDLC, the backbone of the Software Development Process. Why is it called a cycle? Why do we need that? Do we really need that? What if we don`t follow? Aah! Too many questions in the conscious mind right? Here we go!

SDLC (Software Development Life Cycle) is basically a series of well defined processes which we follow in order to carry out the process of Software Development properly so that we can deliver the best to users or client and to ‘us’ too. Yes! ‘us’ here refers to the team we are working with. It doesn’t mean that you cannot build a software without following SDLC, definitely, you can. But then it will become a complicatedly simple process. If you don`t follow the SDLC or even if you jump a step, it will affect badly during the delivery and also when you grow your team. Breaking rules are cool but not in case of SDLC or be ready to pay the price. SDLC is a cycle because evolution helps to reach a new benchmark, and constant improvements does the same, in cycle ofcourse.

The need for SDLC: SDLC helps us to plan the complete picture of the software that we are going to build. Planning is an inseparable and unavoidable part of SDLC. Before execution, you need a solid plan around which everything will rotate. The plan can be of a short-term and long-term as well. Planning is pursued by analysis of the system what we are going to work on. Here is when the Requirement Elicitation comes into the picture. There are various requirement elicitation techniques that will assist us to understand and analyze the requirements and then we can prioritize them accordingly. After which will establish the fact whether the project is feasible or not. It will take time in order to understand the whole thing. Few projects take more time in analysis than development.

Credits: Capers Jones, (Software Assessments, Benchmarks, and Best Practices, Addison-Wesley, 2000)

System Design: After Requirement elicitation and management, a very important phase comes System Design. Yes, one of the most important phase. We create software and then train the users on them. Sometimes we don't even need that until and unless there are some extraordinarily crucial functionalities. But for the developers we hardly have anything. I mean the flow of the system. We miss the data flow diagram (DFD), mind maps, ER diagrams, and other logical diagrams. We also tend to miss the documentation of Architectural design that contains the structure, behavior, and views of the system, and Physical design of the system that has the process modeling. If we miss this process, we will undoubtedly answerable to the team about in and out of the system. Team members won`t be acquainted with the crucial know-how of the complete system that they are going to build. It actually becomes a headache when we grow our team. A well-documented software design creates a clear picture in the mind of each and every team member about the software. Documentation should not be mistaken as “User Manuals”. A well-prepared document eradicates the chances of “impediments” caused during the execution of the plan.

Selection of the Process Models

Model designing helps you to visualize your system.

So once we are ready with the designs and requirements, the next big thing is the selection of the process models. We have multiple ways of doing a particular thing, but we often choose a one based on certain parameters. So, to carry out the development i.e the coding part (cool yeah!), We need some process model that will actually help us to pave the ways to build a better system. We could go for Agile, Incremental, Prototype, Evolution and Spiral to name a few. Most of the companies use the Waterfall model. In which you are very much sure about the requirements and requirements won`t change throughout the cycle of the development. Whereas Agile is flexible. It is divided into sprints, in which we document whatever we have done in a time interval. It is considered one the best (or the best) process model.

Contribution and Role management: A process model is a stadium where players of a team target the same goal. Each and every player should be clear about their role and contribution they are going to make, at every level. Role management actually helps to get the optimum outcome with the available resource. Resource sharing often slows down the pace of work. Dedicated resources are most preferred.

Ideate. Design. Execute

Keys to building a better system: 
1. Requirement Elicitation — Garner and prioritize the requirements, transparency should be taken care of.
2. Analysis — Analyze whether the project is feasible or not, sometimes it proves to be very costly to the firms at the eleventh hour.
3. Planning — Once done with the above two, planning actually helps to make sure if everyone is ready to contribute as per their roles.
4. System Design — Ignore it at your own perils. Most crucial phase.
5. System Development — Select process model. Kickstart the work.
6. Testing and Maintainance — Makes a good system better.


Image Sources and Credits: Google Images
Read more at: https://ieeexplore.ieee.org/document/6968610