According to the Unemployed professors Software Development Life Cycle (SDLC) is a process that entails sequential steps to be followed in the software production industry. It is a detailed plan describing stages involved in the whole duration of production right from conception, definition and initiation to disposition. The stages explain how the software is developed, maintained, redesigned and forth. To smoothly guide the process, often models are developed or adopted for use by individual companies. Examples are a waterfall, iterative, spiral, RAD (Rapid Application development), agile model, V-model, Big Bang model and more. Independent organizations designed these models to suit particular needs “Therefore, even though there are number of models each software Development Company adopts the best suited model, which facilitates the software development process and boosts the productivity of its team members” (Maheshwari and Prof. Dinesh 2012). For instance, the spiral model is used in instances where the designer attempts to avoid risks in the final product. This has the disadvantage of time consuming but is observed to reduce cost significantly compared to other models. While the waterfall model is simple, it is observed that early errors can compound to serious problems in the later stages. The existence of these different models can be explained in some ways as follows.
Although software development has been in existence for quite a few decades now, there hadn’t been developed procedures to guide the entire process (Unemployed professors). It is only until recently that software producers realized that a good percentage can mitigate some of the challenges encountered in the development process with the help of some form of guidance, rules or a sequence of painstakingly thought definitive steps are followed. Before then, the majority of developers believed that quality software could only be developed the hard way. The notion is dramatically changing, and new ways are being devised that are perceived to optimize operations but cutting down development time, redundancies, costs and much more. Due to the inception of SDLC in the just recent times, it is comprehensible why several versions and derivatives of SDLC that are intended to serve the same purpose exist.
Rapid change in technology is yet another factor that can be used to explain this behavior. Technology evolves alongside software. “Software development does not stop when a system is delivered but continues throughout the lifetime of the system. After a system has been deployed, it inevitably has to change if it is to remain useful.” (Sommerville, 2011). Technologies are diverse in fields ranging from medicine, communication, education, and security, just but a few. New ways of doing things are constantly being developed or discovered across these spheres. With no existing methods of tracking these changes, it is increasingly becoming difficult to find base ground for the advancements and hence developing a model for development that applies across the spheres is a challenge. Each discovery and development thus evolve in its direction. Development tools and resources made are specific and are tailored to suit their particular design requirements.
Unemployed professors states that companies produce software different altogether. This extends to the requirements and sets goals of individual companies as well. These needs are a constraint to the degree and depth of development they adopt. A company building a prototype or simply an experimental software is much less likely to require long and complex processes in its development process. A company producing software for commercial purposes, on the other hand, will obviously have detailed steps and carefully organized procedures to be followed during the same process. As such, there will be different models all aimed at serving the same purpose in software production.
There are many types of systems that are designed to perform unique functions in the world. The systems also vary in size as well and with size comes complexity in design. For instance, it is obvious that software designed for military equipment is treated quite differently from that designed for use by members of the general public. This means that developers for both systems have a different set of objectives and will likely use different approaches in their designs. For instance, the military software will be designed with more emphasis on security, durability, and robustness. These factors may not be delved into much by the other systems software designers. They tend to pay more attention to the presentation layer and look and feel (or UI) of the software to appeal to a wider clientele.
The vastness of experience by software engineers is another contributory factor. Software designer emerges from various academic backgrounds such as mathematics, physics and even business apart from computer science. This leads to varied inclinations and diversified views on software design. In turn, this affects a great deal the process that is deemed fit for software development. For instance, a software engineer with a business information background will most likely develop stages based on value assessment or amount of resources spent while one with a mathematical background will prefer modularizing their project based on a particular set of logics or mathematical knowledge to be applied. Therefore, depending on the background from which the designer comes, different perspectives to software design arise each with its’ reasons selection.
“Since the development of lifecycle models and development methodologies are complicated, and there are no absolute standards, successful software development still relies on individual developers’ experience” (Wallin & Land, 2001). Maybe if there had existed a standardizing body that developed a common approach to the design of software, there would have been lesser or few differing models subsequently.
The software is easily compatible especially with cross-platform support currently readily available as opposed to hardware and therefore less emphasis is paid on the model used. Software engineers and designers are less eager to follow or rather constitute common design guides instead they concentrate on exploring ways that increase efficiency and give them an added advantage in the market (Unemployed professors). Errors made in software design are easily correctable, and the process is reversible as well, and this is much less expensive to redesign compared to other forms of designs. Besides software releases occur in several beta versions before the main release into the market. Engineers are therefore willing to take the risk of designing software in their suitable ways disregarding standard procedures. And the same reason could explain why there have been fewer attempts to standardize software development.
Despite the several SDLC models developed, it is common knowledge that proper organization and design procedures can help save not only time but resources as well. Also, problems incurred in this process are nearly the same. This proves the need for creating a framework that applies to every software design process. One big problem with having different models is that; it deters sharing, and collaboration and reusability; modules created using different models are hard to integrate. This sometimes would require a complete overview of the whole project which may be time-consuming. A common blueprint for software development is necessary to alleviate the challenges mentioned. Individual organizations can then tweak this model and extend it adding other details pertaining their line of production. New software engineers hired or recruited are easily integrated into already launched project. This framework will also serve as a basis for ‘software translation’ from one platform to another which is a major problem when different designs exist. All this are just some of the benefits that each organization stands to gain.
References by the Unemployed professors
Prof. Dinesh Ch. Jain & Ms. Shikha Maheshwari. (2012). A Comparative Analysis of Different Types of Models in Software Development Life Cycle. International Journal of Advanced Research in Computer Science and Software Engineering. (1)
Top of Form
Kour, M. J. (2015). A Comparative Analysis of Different Types of Models in Software Development Life Cycle. Global Journal of Multidisciplinary Studies, 4(3).
Sommerville, I. (2011). Software engineering. Harlow, England: Addison-Wesley. Software Evolution (235-242), Software Reuse 425-431.
Wallin, C., & Land, R. (2001). Software Development Lifecycle Models The Basic Types. Research Methodology for Computer Science and Engineering.
Wynekoop, J. L., & Russo, N. L. (2007). Studying system development methodologies: an examination of research methods. Information Systems Journal, 7(1), 47-65.
Bottom of Form