With software going big and complex and customers becoming more demanding than ever before, there is a need to ensure speed, consistency, accuracy, security, quality, and reliability. How long will the software companies keep developing software for only manufacturing, finance, sales, HR, and other functions of organizations? Is it not high time we started looking at automating the software development assembly line? I know that we don’t use the term ‘assembly line’ to describe the software development process ? SDLC (Software Development Life Cycle) is a generally accepted term in the industry. Perhaps this is the reason why not much importance is given to automating the SDLC processes by the IT process owners or the Software Engineering Process Groups (popularly known as SEPG) in IT services companies. Perhaps we now have to start referring to SDLC as Software Assembly Line and treat it as such.
Over the years, many models of SDLC have been evolved, starting with the linear or waterfall model to more recent agile models. Agile development also has many flavors like SCRUM, Extreme Programming, TDD (Test Driven Development), and so on. Iterative, Spiral, Incremental, Prototype, Joint Application Development (JAD), and Fountain Model are some of the other commonly used SDLC models. Not to mention the other ‘technology specific’ models introduced by Technology vendors like RUP, MSF, and ASAP, which I will not get into. If we consider the Waterfall and Agile models as the extremes – the former being extremely rigid and the latter being extremely flexible – all other models fall somewhere in between.
While each model has its own strengths and weaknesses and benefits and pitfalls, a closer examination indicates a few essentials in the SDLC and its many variations. The essentials are Planning, Analysis, Design, Development, Testing, and Deployment. The variations depend on the weightage or importance given to the essentials, whether they are done in a sequence or in parallel or iterations, the processes ? the ways the essentials are carried out and the role of various participants and stakeholders.
So, what does it take to create a software assembly line from the existing SDLC? No, I am not suggesting another new model. Follow the model(s) you are most comfortable with and apply these 3 key mantras – reuse, automate, and integrate.
Reuse
What can we reuse in software development? Many of you will immediately think of ‘code libraries that we developed in earlier projects’. You are absolutely right; but not completely right. Reuse does not pertain only to coding. Remember, regardless of the SDLC model you choose, coding is only one of the essentials in the SDLC. Okay, so what else can we reuse? Everything; let me go ahead and list some of them: