Software development process: Difference between revisions

Content deleted Content added
See also: Software development is already linked in the body
Comparison: Reduce table width
 
(5 intermediate revisions by the same user not shown)
Line 5:
{{software development process|Core activities}}
 
A '''software development process''' prescribes a process for [[software development|developing]] [[software]]. It typically divides an overall effort into smaller steps or sub-processes that are intended to ensure high-quality results. The process may describe specific [[deliverable]]s {{endash}} artifacts to be created and completed.<ref name="CMS08">{{cite web |website=Centers for Medicare & Medicaid Services (CMS) Office of Information Service |url=http://www.cms.gov/Research-Statistics-Data-and-Systems/CMS-Information-Technology/XLC/Downloads/SelectingDevelopmentApproach.pdf |title=Selecting a development approach |publisher=United States Department of Health and Human Services (HHS) |orig-date=Original Issuance: February 17, 2005 |date=March 27, 2008 |access-date=October 27, 2008 |archive-url=https://web.archive.org/web/20120620212919/http://www.cms.gov/Research-Statistics-Data-and-Systems/CMS-Information-Technology/XLC/Downloads/SelectingDevelopmentApproach.pdf |archive-date=June 20, 2012 |url-status=dead}}</ref>
 
Although not strictly limited to it, software development process often refers to the high-level process that governs the development of a software system from its beginning to its end of life {{endash}} known as a methodology, model or framework. The [[system development life cycle]] (SDLC) describes the typical phases that a development effort goes through from the beginning to the end of life for a system {{endash}} including a software system. A development processmethodology prescribes how [[engineer]]s go about their work in order to move the system through its life cycle. An SDLCA methodology (a.k.a. model, framework) is a classification of processes or a blueprint for a process that is devised for the SDLC. For example, many software development processes can be classified as thea spiral model. Process methodologies include: [[Agile software development|agile]], [[waterfall model|waterfall]], [[software prototyping|prototyping]], [[iterative and incremental development]], [[spiral development]], [[rapid application development]], and [[extreme programming]].
 
Software process and [[software quality]] are closely interrelated; some unexpected facets and effects have been observed in practice.<ref name="ieeesw">{{Cite journal | doi = 10.1109/MS.2015.87 | title = Software Process versus Design Quality: Tug of War? | journal = IEEE Software | volume = 32 | issue = 4 | pages = 7–11 | year = 2015 | last1 = Suryanarayana | first1 = Girish | doi-access = free }}</ref>
== History ==
 
The SDLC was first described in the 1960s, and was often conflated with the waterfall model for many years. According to Elliott (2004), the SDLC [waterfall model] can be considered the oldest formalized methodology for building [[information system]]s. The main idea of the SDLC has been "to pursue the development of information systems in a very deliberate, structured and methodical way, requiring each stage of the life cycle––from the inception of the idea to delivery of the final system––to be carried out rigidly and sequentially"<ref name="Ell04">{{cite book |author=Geoffrey Elliott |date=2004 |title=Global Business Information Technology: an integrated systems approach |publisher=Pearson Education |page=87}}</ref> within the context of the framework being applied. The main goal of this methodology was "to develop large scale functional [[business system]]s in an age of large scale business conglomerates. Information systems activities revolved around heavy [[data processing]] and [[number crunching]] routines."<ref name=Ell04/> Other methodologies were devised later:
==Methodology==
The SDLC drives the definition of a methodology in that a methodology must address the phases of the SDLC. Generally, a methodology is designed to result in a high-quality system that meets or exceeds expectations (requirements) and is delivered on time and within budget even though computer systems can be complex and integrate disparate components.<ref>{{cite web|url=http://foldoc.org/Systems+Development+Life+Cycle |title=Systems Development Life Cycle from |publisher=FOLDOC |access-date=2013-06-14}}</ref> Various methodologies have been devised, including [[Waterfall model|waterfall]], [[Spiral model|spiral]], [[Agile software development|agile]], [[Software prototyping#Throwaway prototyping|rapid prototyping]], [[Incremental development|incremental]], and synchronize and stabilize.<ref>{{cite web |date=May 2012 |title=Software Development Life Cycle (SDLC) |url=http://softwarelifecyclepros.com/wp-content/uploads/2012/05/Tutorial-Software-Development-LifeCycle-SDLC.pdf |access-date=2025-06-26 |website=softwarelifecyclepros.com }}</ref>
 
A major difference between methodologies is the degree to which the phases are sequential vs. iterative. Agile methodologies, such as [[Extreme Programming|XP]] and [[Scrum (development)|scrum]], focus on lightweight processes that allow for rapid changes.<ref>{{Cite web | url=https://aristeksystems.com/blog/sdlc-overview/| title=SDLC Overview: Models & Methodologies| access-date=2021-12-12}}</ref> [[Iterative and incremental development|Iterative]] methodologies, such as [[Rational Unified Process]] and [[dynamic systems development method]], focus on stabilizing project scope and iteratively expanding or improving products. Sequential or big-design-up-front (BDUF) models, such as waterfall, focus on complete and correct planning to guide larger projects and limit risks to successful and predictable results.<ref>{{Cite book |last=Arden |first=Trevor |title=Information technology applications |date=1991 |publisher=Pitman |isbn=978-0-273-03470-4 |___location=London}}</ref> [[Anamorphic development]] is guided by project scope and adaptive iterations. In scrum,<ref>{{cite web |url=https://www.scrum.org/resources/what-is-scrum |title=What is Scrum? |date=December 24, 2019 }}</ref> for example, one could say a single user story goes through all the phases of the SDLC within a two-week sprint. By contrast the waterfall methodology, where every business requirement{{Citation needed|date=August 2021}} is translated into feature/functional descriptions which are then all implemented typically over a period of months or longer.{{Citation needed|date=August 2021}}
 
A project can include both a [[project life cycle]] (PLC) and an SDLC, which describe different activities. According to Taylor (2004), "the project life cycle encompasses all the activities of the [[project]], while the systems development life cycle focuses on realizing the product [[requirement]]s".<ref>{{cite book |first=James |last=Taylor |year=2004 |title=Managing Information Technology Projects |page=39}}</ref>
 
===History===
The term ''SDLC'' is often used as an abbreviated version of ''SDLC methodology''. Further, some use ''SDLC'' and ''traditional SDLC'' to mean the waterfall methodology.
 
According to Elliott (2004), SDLC "originated in the 1960s, to develop large scale functional [[business systems]] in an age of large scale [[business conglomerate]]s. Information systems activities revolved around heavy [[data processing]] and [[number crunching]] routines".<ref name="Ell04"/> The [[structured systems analysis and design method]] (SSADM) was produced for the UK government [[Office of Government Commerce]] in the 1980s. Ever since, according to Elliott (2004), "the traditional life cycle approaches to systems development have been increasingly replaced with alternative approaches and frameworks, which attempted to overcome some of the inherent deficiencies of the traditional SDLC".<ref name="Ell04"/> The main idea of the SDLC has been "to pursue the development of information systems in a very deliberate, structured and methodical way, requiring each stage of the life cycle––from the inception of the idea to delivery of the final system––to be carried out rigidly and sequentially"<ref name="Ell04">{{cite book |author=Geoffrey Elliott |date=2004 |title=Global Business Information Technology: an integrated systems approach |publisher=Pearson Education |page=87}}</ref> within the context of the framework being applied.
 
Other methodologies were devised later:
 
; 1970s
Line 34 ⟶ 47:
* [[DevOps]]
 
Since DSDM in 1994, all of the methodologies on the above list except RUP have been agile methodologies - yet many organizations, especially governments, still use pre-agile processes (often waterfall or similar). Software process and [[software quality]] are closely interrelated; some unexpected facets and effects have been observed in practice.<ref name="ieeesw">{{Cite journal | doi = 10.1109/MS.2015.87 | title = Software Process versus Design Quality: Tug of War? | journal = IEEE Software | volume = 32 | issue = 4 | pages = 7–11 | year = 2015 | last1 = Suryanarayana | first1 = Girish | doi-access = free }}</ref>
 
===Examples===
Among these, another software development process has been established in [[Open-source software|open source]]. The adoption of these best practices known and established processes within the confines of a company is called [[inner source]].
 
== Methodologies ==
 
The following are notable methodologies somewhat ordered by popularity.
Line 83 ⟶ 94:
; Unified Process
[[Unified Process]] (UP) is an iterative software development methodology framework, based on [[Unified Modeling Language]] (UML). UP organizes the development of software into four phases, each consisting of one or more executable iterations of the software at that stage of development: inception, elaboration, construction, and guidelines.
 
===Comparison===
{{More citations needed section|date=January 2024}}
 
The waterfall model describes the SDLC phases such that each builds on the result of the previous one.<ref name="US DJ03">US Department of Justice (2003). [https://www.justice.gov/archive/jmd/irm/lifecycle/table.htm INFORMATION RESOURCES MANAGEMENT] Chapter 1. Introduction.</ref><ref name="EverettSoftware07">{{cite book |chapter-url=https://books.google.com/books?id=z8UdPmvkBHEC&pg=PA29 |chapter=Chapter 2: The Software Development Life Cycle |title=Software Testing: Testing Across the Entire Software Development Life Cycle |author=Everatt, G.D. |author2=McLeod, R Jr |publisher=John Wiley & Sons |pages=29–58 |year=2007 |isbn=9780470146347}}</ref><ref name="UnhelkarTheArt16">{{cite book |url=https://books.google.com/books?id=ZqnMBQAAQBAJ&pg=PA56 |title=The Art of Agile Practice: A Composite Approach for Projects and Organizations |author=Unhelkar, B. |publisher=CRC Press |pages=56–59 |year=2016 |isbn=9781439851197}}</ref><ref name="LandPract12">{{cite book |url=https://books.google.com/books?id=SsBF_lVbK_gC&pg=PA341 |title=Practical Support for Lean Six Sigma Software Process Definition: Using IEEE Software Engineering Standards |author=Land, S.K.|author-link= Susan K. Land |author2=Smith, D.B. |author3=Walz, J.W. |publisher=John Wiley & Sons |pages=341–3 |year=2012 |isbn=9780470289952}}</ref> Not every project requires that the phases be sequential. For relatively simple projects, phases may be combined or overlapping.<ref name="US DJ03" /> Alternative methodologies to waterfall are described and compared below.<ref name="Post, G. 2006">Post, G., & Anderson, D., (2006). ''Management information systems: Solving business problems with information technology''. (4th ed.). New York: McGraw-Hill Irwin.</ref>
 
{| class="wikitable" style="margin:auto;"
|+ Comparison of methodologies
|-
! style="width:5%;"|
!| Waterfall
!| [[Rapid application development| RAD]]
!| [[Open-source software development| Open source]]
!| [[Object-oriented programming|OOP]]
!| [[Joint applications development| JAD]]
!| [[Software prototyping| proto-typing]]
!| [[End-user development| End User]]
|-
| Control
| Formal
| MIS
| Weak
| Standards
| Joint
| User
| User
|-
| Time frame
| Long
| Short
| Medium
| Any
| Medium
| Short
| Short
|-
| Users
| Many
| Few
| Few
| Varies
| Few
| One or two
| One
|-
| MIS staff
| Many
| Few
| Hundreds
| Split
| Few
| One or two
| None
|-
| Transaction/[[Decision support system|DSS]]
| Transaction
| Both
| Both
| Both
| DSS
| DSS
| DSS
|-
| Interface
| Minimal
| Minimal
| Weak
| Windows
| Crucial
| Crucial
| Crucial
|-
| Documentation and training
| Vital
| Limited
| Internal
| In Objects
| Limited
| Weak
| None
|-
| Integrity and security
| Vital
| Vital
| Unknown
| In Objects
| Limited
| Weak
| Weak
|-
| Reusability
| Limited
| Some
| Maybe
| Vital
| Limited
| Weak
| None
|}
 
== Process meta-models ==