Sunday, April 25, 2010

How to select software development methodology

Software development process, “a framework for applying software engineering practices” [1], can be classified into plan-driven or traditional software development and agile software development. The former [2] [3] [4] emphasizes stability, repeatability and predictability, a defined incremental process, extensive documentation, up-front system architecture, detailed plans, risk management, verification and validation. In contrast, the latter process [2] [3] [4] [5] embraces and responds to changing environment and changes in user requirements. The initial success of software project is determined by selecting the appropriate software development process.

There is no single software development [6] that can solve all software projects. Selecting software development methodology can use [7] selection framework based on four underlying principles and two other factors affecting what methodology is appropriate to be used in software project. The four principles [7] are “A larger group needs a larger methodology”, “A more critical system; one whose undetected defects will produce more damage; needs more publicly visible correctness (greater density) in its construction”, “ A relatively small increase in methodology size or density adds a relatively large amount to the project cost”, The most effective form of communication (for transmitting ideas) is interactive and face-to-face, as at a whiteboard”. The combination of four principles in selecting software development methodology will determine the size of formed software development organization. Mapping environment and organisation of the project to agile and plan-driven home ground [8] [9] makes selection of software development methodology adaptive to its internal and external factors in order to address software project risk.

Reference
[1] R. Ramsin and R.F. Paige, “Process-centered review of object oriented software development methodologies,” ACM Comput. Surv., vol. 40, 2008, pp. 1-89.
[2] S. Nerur, R. Mahapatra, and G. Mangalaraj, “Challenges of migrating to agile methodologies,” Commun. ACM, vol. 48, 2005, pp. 72-78.
[3] M. Lindvall, V. Basili, B. Boehm, P. Costa, K. Dangle, F. Shull, R. Tesoriero, L. Williams, and M. Zelkowitz, “Empirical Findings in Agile Methods,” Extreme Programming and Agile Methods — XP/Agile Universe 2002, 2002, pp. 81-92.
[4] O. Salo and P. Abrahamsson, “An iterative improvement process for agile software development,” SOFTWARE PROCESS IMPROVEMENT AND PRACTICE in Wiley InterScience, 2006.
[5] T. Dybå and T. Dingsøyr, “Empirical studies of agile software development: A systematic review,” Information and Software Technology, vol. 50, Aug. 2008, pp. 833-859.
[6] F. Brooks, “No Silver Bullet Essence and Accidents of Software Engineering,” Computer, vol. 20, 1987, pp. 10-19.
[7] A. Cockburn, “Selecting a project's methodology,” Software, IEEE, vol. 17, 2000, pp. 64-71.
[8] B. Boehm and R. Turner, “Observations on balancing discipline and agility,” Proceedings of the Agile Development Conference, 2003. ADC 2003., 2003, pp. 32-39.
[9] B. Boehm and R. Turner, “Balancing Agility and Discipline: Evaluating and Integrating Agile and Plan-Driven Methods,” IEEE Computer Society, 2004, pp. 718-719.

1 comment:

Raj said...

Nice to see your effort in evaluating the software development methodologies to choose the right one for the project at hand. Do you have any further work on this?