Software development

The term software development refers to the task of producing functional computer software through a specialized process that typically involves a sequence of successive phases. These phases often include need identification, design, programming, testing, and maintenance. The overall process of creating a particular piece of software is generally carried out according to one of several possible systems development life cycle (SDLC) models. Depending on which model is chosen, the order of developmental stages and the basic methodology of the software development process will vary.

rsspencyclopedia-158981-189569.jpg

Historical Context

The concept of software development dates back to the 1970s, when the first formal methods of creating computer software were initially devised. These methods were actualized in the form of multiphase design process models referred to as systems development life cycle (SDLC) models. During the industry's early stages, software development was generally project oriented in approach, meaning that it was almost exclusively devoted to the basic task of software design. Early SDLC models focused primarily on the production of code and rarely involved extensive pre-planning or post-completion testing.

In the 1980s, Japanese and European programmers developed the first successful process models of software development. These more advanced SDLC models had a broader scope and often placed a greater emphasis on quality control and other elements of the software development process outside of basic code production. Such models remained popular into the 1990s, at which point they were gradually replaced with newer models that were more time efficient and increasingly automated. These modern SDLC models emerged largely due to the advent of the Internet as well as the introduction of object-oriented programming that used languages such as C++, Java, and Visual Basic. SDLC models remained popular and continued to evolve to meet the unique needs and interests of developers and consumers alike.

The Waterfall Model

The first, and most widely known, SDLC model was the waterfall model. Originally conceived by US military programmers in the 1970s, the waterfall model is a simple, streamlined approach to software development that represents the basic framework underlying virtually all other SDLC models. This model consists of about six to seven successive stages of development through which a piece of software in development will transition. At the completion of each stage, decision makers sign off on the project's progress grant approval for it to continue to the next phase. By design, this prevents potential backsliding and ensures that the project keeps moving forward.

When using the waterfall model, software developers begin by identifying the functional needs to be met by the software they are developing and documenting the basic purpose their software should serve. From there, developers analyze and record the technical requirements their software will need to effectively serve its intended purpose. Next, developers create a basic design for their software. Once they decide on the design, developers begin the work of actually building the software using some form of programming code. When the programming is complete, the software is tested and, if successful, released. Finally, developers must also perform any necessary maintenance to the software after it is released to ensure that it remains functional and useful.

Other SDLC Models

The waterfall model was the first in a long line of varying SDLC models that have emerged over the years. While all still lead the developer to essentially the same end result, the exact methods employed in each model differ. Generally, the unique elements of each model are based on differing ideological approaches to challenges such as time, cost, and quality control.

Prototyping Model

Instead of following a rigid framework of developmental stages as in the waterfall model, developers using the prototyping model simply use a prototype version of their software to ultimately create their final product. Developers build, test, and revise the prototype until it works well enough to be finalized.

Rapid Application Development (RAD) Model

The rapid application development (RAD) model is an alternative to the waterfall model that places greater emphasis on speed and quality. To produce high-quality software as quickly as possible, developers using the RAD model rely on the use of prototypes, continuous testing, data gathering through workshops or focus groups, strict scheduling, and informal team communication.

Joint Application Development (JAD) Model

The joint application development (JAD) model mainly differs from other SDLC models in that developers work directly with their clients or end users. During the development process, developers solicit input from clients or end users at various stages of the creative process in special collaborative workshops called JAD sessions. Using this approach, developers can gain valuable insight into the specific needs of the people who will ultimately use the software being created, making it possible to more closely tailor the software to meet those needs.

Synchronize and Stabilize Model

The synchronize and stabilize model, like the JAD model, incorporates group collaboration but does so in a different way. Instead of including clients or end users in the process, developers work together in separate groups that each focus on different applications within the larger software system. As the project unfolds, the different applications are gradually moved and synchronized into the overall code. This method helps to stabilize the overall code as the project moves forward.

Spiral Model

The spiral model utilizes elements of both the waterfall model and the prototyping model. Because it includes distinct developmental phases and utilizes prototypes, the spiral model is considered to be particularly effective and especially useful for the biggest and most expensive software development projects.

Bibliography

Baker, Deborah J., ed. "Software Development Models." Gale E-Commerce Sourcebook. Vol. 1. Detroit: Gale, 2003. 114–116. Print.

Bisson, Simon. "We're Living in the Golden Age of Software Development." InfoWorld, 28 Jan. 2016, www.infoworld.com/article/3027160/application-development/were-living-in-the-golden-age-of-software-development.html.

Pilone, Dan, and Russ Miles. Head First Software Development. Sebastopol, CA: O'Reilly Media, Inc., 2008. Print.

Roumeliotis, Rachel. "5 Things to Know about Software Development in 2016." O'Reilly, 4 Jan. 2016, www.oreilly.com/ideas/5-things-to-know-about-software-development-in-2016. Accessed 1 Nov. 2016.

Rouse, Margaret. "Learn IT: Software Development." WhatIs.com. TechTarget. Apr. 2010. Web. 27 Mar. 2015. http://whatis.techtarget.com/reference/Learn-IT-Software-development

Schmidt, Richard F. "Generic Software Development Framework." Software Engineering: Architecture-Driven Software Development. Waltham: Morgan Kaufmann, 2013. 29–41. Print.

"Software Engineering." Britannica, www.britannica.com/technology/software-engineering. Accessed 8 Jan. 2025.

Stiner, Scott. "Using the Five Stages of the Software Development Process to Spur Innovation." Forbes, 14 Sept. 2016, www.forbes.com/sites/forbestechcouncil/2016/09/14/using-the-five-stages-of-the-software-development-process-to-spur-innovation. Accessed 1 Nov. 2016.