Software development
Software development is the process of creating functional computer software through a structured sequence of phases. These phases typically encompass need identification, design, programming, testing, and maintenance. Development is guided by various systems development life cycle (SDLC) models, which dictate the order of these stages and the methodologies employed. The field has evolved since the 1970s, when initial formal methods were introduced, primarily focusing on code production. Over the years, more sophisticated SDLC models emerged, emphasizing quality control and efficiency, influenced by technological advancements like the Internet and object-oriented programming.
One of the earliest and most recognized models is the Waterfall Model, which follows a linear progression of stages, requiring approvals at each step. Other models have been developed to address different needs, such as the Prototyping Model, which allows for iterative testing and revision, and the Rapid Application Development (RAD) Model, which prioritizes speed and quality through early prototyping and user feedback. The Joint Application Development (JAD) Model encourages direct collaboration with end users to better align the software with their needs, while the Synchronize and Stabilize Model focuses on group collaboration for different application components. Lastly, the Spiral Model combines elements of earlier models and is particularly suited for large-scale projects. Overall, software development continues to adapt to the dynamic demands of developers and users alike.
On this Page
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.

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.