Tech Talk – 2 : KST Software life cycle

Guys,

Everyone talks about software and software industry. We have been using a huge number of softwares, have we ever thought that a software also passes through several stages before hitting the end-user. Yes, Softwares also has several stages to pass through and these stages collectively are known as the “Software Development Life Cycle” (aka SDLC).

There are several models of SDLC namely
1) Waterfall model
2) Iterative model
3) Agile model
4) RAD
5) XP (Extreme Programming)

Lets consider the simplest software development life cycle named the Waterfall model. The waterfall model gets its name as the following steps are carried out in a sequential manner. Once the first step is complete, the second step is started. Only when the second step is complete the third step is started etc.

For any software to exist, there should be a definitive statement as to what this software would cater to. For e.g. Microsoft Word software can be used as a word processing software, Microsoft Excel can be used as a spreadsheet. These are the very basic high level statement that defines the use of the softwares. Given this statement, definitely a software cannot be developed. There should a definitive set of requirements. This stage is called the requirements gathering. This is the place where Business analysts (like Kottai) come into picture. They collect the definitive requirements for the software.

Once the requirements are gathered, then we get to the Analysis & design stage. Analysis & Design stage is started with the analysis of the collected requirements and then the design stage is usually split into two main things namely High Level Design (HLD) and Low level Design (LLD). High level design is the stage where the requirements are converted at a high level to the modules, submodules and tasks. Given the HLD, the developer will not be able to code the software as it will not have in depth design informations. Hence the LLD needs to be prepared. The LLD will usually contain the database tables, classes, methods etc. It will be the pseudocode for the software.

Ok, now I have the design for the software. What should I do now? The next stage is coding. Here comes the role of we the developers. We develop the software in accordance with the design. Similar to other industries, here also we have something called guidelines, standards, checklists, best practices and frameworks. Any code completed without testing is fit for nothing and hence we move on to the next step called testing. The Coding phase is where the technology comes into limelight. J2EE, .Net, VC++ are few of the major technologies. There are a lot of frameworks built in for each of these technologies. So what is a framework. A framework is a collection of reusable components. These are very much necessary as we need not re-invent the whole wheel again, rather reuse them.

In the testing phase, there are lots of testing types namely Unit Testing, System Testing, Integration Testing, Regression Testing and User Interface Testing. Unit testing is done by the developer where each and every program are tested individually. System testing is done by the testing team and here all programs are put together and tested together. Regression testing is the type of testing done to ensure that the new functionality has not broken the already existing functionality. The final testing is the User Acceptance Testing and done by a designated set of users.

Under each of the above stages, there is a quality process put in place. Quality is ensured by an internal review/ external review/ audit and inspection. The defects captured under the review/ testing under any of the phases are logged on a Ticket Logging system. Famous ticket tracking systems are JIRA, BugZilla etc. These tools are used to log defects/ track tickets to closure.

Once all these stages are complete, then the software is released for the endusers.

These are only very basic set of stages I have brought out here. Lets explore each and every stage in detail in the forthcoming sessions.

References:

http://en.wikipedia.org/wiki/Software_development_process
http://en.wikipedia.org/wiki/Waterfall_model
http://en.wikipedia.org/wiki/Software_framework

Thanks,

Veerappan Manivasagam

 

 

2 Comments »

  1. Unfortunately, in mobile software business, things are not so well defined. As you know the time to market on mobile phones is very very important. Delay means potential customers buying some other phone and less sales. So the schedule is always tight.

    On top of it, code reuse cannot be done 100%, as each phone model has to be different from other. There goes lot of customization, especially in multimedia components. Multimedia capabilities are the main differentiators these days. When you take two phones, what you will check first is the multimedia capabilities.

    So, from a single company, there comes no phone that are same in everything. This makes our life difficult and we DO NOT follow these processes. Coding is very adhoc. No reviews. No solid testing. Our mantra is “release first, fix next”.

    One way this is very flexible. You will have awsome power at your hands. You can determine how things goes into the phone. You can be creative, innovative. But this comes with responsibility. Have to be very very careful.

    I really enjoy this kind of environment. This makes me learn a lot and gives me “near-market-experience” every product developer longs for. When I see the phones I worked on market it gives me satisfaction. :)

    I could code more, experiment more and I feel like life is in my control. It is addictive.

    I guess over the period of time, software matures as other engineering practices. At that time we will get a easy “ready-to-use” solutions for all these problems, as other engineering practices.

    Evolving software maturity means evolving human minds. Way to go!!

  2. nana said

RSS feed for comments on this post · TrackBack URI

Leave a Comment