Software Development Process Part II

Abstract

A software development process (also called lifecycle or methodology) is the model that can be used to develop computer software. Such process usually standardized and documented methodology to ensure that such model can be followed as designed. Also the standard for such process is aimed to setting out a clear model to be followed; and as such; is used for process comparison, and clear steps to be followed. With such model, measuring the organization development can be achieved during the software development, and also guide, monitor, and control the software development. The result information produced by the measuring process can be later analyzed to drive improvement and identify weaknesses, and also identifies the different strength that can be integrated to the common practice of the organization and its software development practices (WordIQ.com, 2010).

Parida (2011) explained that waterfall model is one of the software development processes that can be followed to achieve the software development lifecycle.  Such model is applicable to all size of projects where documentation is required in every stage that can help individuals involved. The model involved various phases that are maintained within the process including the following:

  • Feasibility analysis and preliminary investigation – the purpose of this phase is to investigate the problem where different considerations have to be taken such as budget, time and technology. This phase is the starting phase of the project, and once the agreement is made to continue the project, the second phase can be started.
  • Requirement analysis – This phase involves the collection of the system requirements where requirements document is generated and as a result a formal document is produced (i.e. software requirement specifications).
  • System design – In such phase the system specifications that were constructed during the requirement analysis phase are translated into a software representation where data structure, algorithm, software architecture and interface design are emphasized. Such phase has different outcomes such as input, processing, output, and files which leads to the next phase (i.e. coding).
  • Coding – Within this phase, the programmers produce a full sketch product where specifications are converted into machine readable computer code. Any deviations from the original requirements; approval is required by the client in such phase.
  • Integration and testing – In this phase all modules of the system is integrated together and tested to ensure that the complete system meet the system requirements initiated in the requirement analysis phase. The main goal of the system testing in this phase is to validate and verify the system against its initial requirements (i.e. Integration testing, and Unit testing).
  • Implementation and maintenance – The output of this phase is user manuals, software library, executables and additional software documentation. Also, the maintenance phase is the longest phase once the software is implemented and is ready to be used, and includes the following activities:
  1. Accommodate the changes required for external environment.
  2. Implementing the changes required by customers.
  3. Correct bugs and errors that oversight in the testing phase.
  4. Improve and enhance the efficiency and the performance of the software.

With the above phases involved in the waterfall model, each phase represent a milestone that required a decision to continue the project phases or to stop at any point (Parida, 2011).

Waterfall Process

Sinha (2010) explained that the waterfall model has been pointed out as a way of creating poorly software development, because of it’s limitations of the approach in some situations, and as such; understanding these situations will help the use of an agile development methodology with avoiding such critical mistakes. It’s important for the development team to understand that different development methodologies are usually suitable for different development projects, and favourite approaches might lead in some situations to unpredicted results, and as such; it’s important for the development team to determine whether the current choices of development methodologies can add benefits to the project and the team or switching to different methodology can be the perfect solution for such situation. It’s obvious that waterfall model cannot deal with the changing of the requirements since each phase is followed by the end of the previous phase.

Having a well-defined process for gathering the software requirements is an important part of complex projects and in case of an Agile approach it is important for the project team that the first requirements used to start the development process are the most important ones. Knowing all the requirements in a complex projects can represent huge benefits in the waterfall model since it reduces the overhead of high communications, while missing the full picture of the software requirements can flourish in the Agile development projects. It’s important to point out, that in the Agile case, knowing a small part of the problem at a time come at a cost that not having a clear vision of the software modules can increase the communication overhead among the development team and also can create a code duplications and as such; improving the code within such approach (Agile) can be achieved by regularly updating the software architecture. Also, knowing the software requirements a head of time in a waterfall model can improve development efficiency, and also add significant integration challenges when the entire working system is deployed (Sinha, 2010).

Strength and Weakness

Klein (2008) explained that the waterfall software development model has been in action for a decades and still valid approach for many small and complex projects. While such model has been replaced with different iterative models it is still has a big role in many organizations. While the pre-planning takes a long time during the requirements gathering and design phase, it ensures that the development project is risk free and it weeds out any potential problems and as such; projects that implement such approach can be economically realistic and affordable to many organizations. However, if any problem arose later in the development lifecycle can be very costly, and required a lot of effort for correction. It’s also important to emphasize that the model is the best approach for knowledge transfer since the documentations plays a big role within such approach.

The waterfall approach is not suitable for every situation since the model represents a rigid structure and inability to backtrack changes in the requirement. Such approach is not a client-focused since the request of changes to the software during the development process in most of the time is hard to agree to, and when the development phases are not perfect it becomes complicated to continue through the project lifecycle (Klein, 2008).

 Velayutham (2010) explained that some of the risks surrounding the waterfall model are:

  • Discovering the lack of understanding of the problem during the development phase of the model which can create a high risk within the development project.
  • Mistakes discovered in the late stages of this model can produce a project risk.
  • A risk of late delivery due to the underestimation of the time required to complete the full cycle of the development.
  • The team involved in applying the model will remain ideal until the rest of the team complete a particular phase.
  • The final product will be available for the customer’s demo at the late phase of the model (i.e. testing phase).
  • The involvement of the customer is not required during the different phases of the model which can lead to misunderstanding of the requirements gathered in the early stages of the model.

Conclusion

Waterfall model is a well organized process and documents driven model that can lead to a concrete results and reliable and secure software in different size projects (Parida, 2011). Waterfall model works best when the entire requirements of the complex development project are known; where development efficiency can be improved and also communication overheads are reduced (Sinha, 2010).

In general software development methodologies can be classified as an Iterative method or Waterfall methods. Waterfall is considered to be a predictive methodology since each phase will be fully predicted before starting the next phase. On the other hand, the iterative model will generally repeat the development steps to produce the working model with the assumption that the requirements are either will change over time or that the requirements will be inaccurate (Velayutham, 2010).

Finally, it’s important for the development team to choose the right approach for current situation to achieve the best results. Understanding the problem and implementing the right approach can lead to a successful results, and efficient software products.

References

Klein, F. (2008) The Waterfall Model of Software Development [Online]. Available from: http://www.relativitycorp.com/projectmanagement/article10.html (Accessed: 03 February 2011).

Parida, P. (2011) Essence of Waterfall Model [Online]. Available from: http://ezinearticles.com/?Essence-Of-Waterfall-Model&id=352291 (Accessed: 03 February 2011).

Sinha, V. (2010) The Waterfall Model is not all bad (and some lessons for agile teams) [Online]. Available from: http://blog.architexa.com/2010/05/waterfall-model-not-all-bad-and-lessons-for-agile-teams/ (Accessed: 03 February 2011).

Velayutham, M. (2010) Why Waterfall Model and Iterative Techniques are so risky [Online]. Available from: http://www.c-sharpcorner.com/UploadFile/babu_2082/4779/ (Accessed: 03 February 2011).

WordIQ.com (2010) Software Development Process – Definition [Online]. Available from: http://www.wordiq.com/definition/Software_development_process (Accessed: 03 February 2011).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: