Software Development Approaches
Developing software systems is an intricate task which traditionally comprises four fundamental processes: requirements analysis, design, implementation, and testing, and involves many people, analysts, developers, etc. each performing different tasks (Brookshear and Brylow, 2015). To manage this process we need a means to help integrate and harmonize their works. There are different strategies that have been used to plan and control the development of software systems.
The Waterfall Model
This model suggests that the process moves forward only. It means that once a project phase is done, the developers can’t go back to it. All phases should be implemented in an orderly sequential manner. That means the system specification requirements should be completed before starting the design phase, similarly, the design before the implementation. It forces planning and scheduling of all development stages before starting working on them.
(Sommerville, 2011)
Therefore, there is no overlapping between the development stages, and each stage should end with proper testing and documentation.
Pros and Cons
Despite the clear separation and organization of the Waterfall software development model, it is not always the best choice. Here are some of the drawbacks of this methodology based on (Dr. M. Murugaiyan, S. Balaji, 2012) and (Pravinkumar Pawar, 2015):
? Because it is a sequential process, programmers, for example, can’t start their work until the system is completely analyzed and designed, which makes this approach rather costly.
? Some phase problems can’t be seen and solved during working on that phase. In reality, most issues appear after signing off the project stage.
? Changes in requirements are not allowed, especially after the requirements analysis phase finished.
However, there are some benefits that can be gained from this approach:
? The development doesn’t start before having clear system requirements.
? Project phases are defined in the time range and expected deliverables.
? “The amount of resources required to implement this model are minimal” (Dr. M. Murugaiyan, S. Balaji, 2012).
? Each stage starts on a stable ground because the previous stage is explained and documented properly.
Extreme Programming Methodology (XP)
It is the evolved version of the agile software development model. It “breaks the conventional software development process into smaller more manageable chunks.” (DESPA, 2014). It suggests minifying the design phase and focusing on solving a few critical tasks to prepare releases, which can be used by the stakeholders to provide feedbacks and by the developers to identify detailed requirements (Wells, D., 2003). These requirements grow through the project life cycle till the final tested release is ready. This model depends on user stories to specify how each user will interact with the other parts of the project.
(DESPA, 2014)
Here are some advantages of using this methodology according to (Munassar, N.M.A. and Govardhan, A., 2010):
? It helps in realizing projects detailed requirements, thus, saving time and costs.
? Also, it reduces the amount documentation required.
? Simplicity.
It has also some disadvantages like:
? It over-focuses on the code rather than the design.
? It doesn’t provide proper documentation.
There are many projects which were developed using this approach, one of them is:
? Channel One Hamburg: It is a shrink-wrapped intranet application suite. Their developers said that the project witnessed dramatic productivity improvements when they adopted XP. They suffered from the time wasting on extra analyzing and documenting each stage, and they found this approach to be efficient and simple.
References
Brookshear, J. and Brylow, D. ed., (2015). Software Engineering. In: Computer Science: An Overview, 12th ed. Pearson Education Limited, pp.330-350.
Balaji, S. and Murugaiyan, M.S., 2012. Waterfall vs. V-Model vs. Agile: A comparative study on SDLC. International Journal of Information Technology and Business Management, 2(1), pp.26-30.
Pravinkumar Pawar, R. (2015). A Comparative study of Agile Software Development Methodology and traditional waterfall model. IOSR Journal of Computer Engineering, pp.01 - 08.
DESPA, M.L., 2014. Comparative study on software development methodologies. Database Systems Journal, 5(3).
Wells, D., 2003. Extreme Programming: A gentle introduction (2006) [Accessed: 4th September, 2017].
Munassar, N.M.A. and Govardhan, A., 2010. A comparison between five models of software engineering. IJCSI International Journal of Computer Science Issues, 7(5), pp.94-101.
Sommerville, I. ed., (2011). Software processes. In: SOFTWARE ENGINEERING, 9th ed. Addison-Wesley, pp.30.