In [[software engineering]], aA '''software development process''' or '''software development life cycle''' ('''SDLC''') isprescribes a process of planning and managingfor [[software development|developing]] [[software]]. It typically involvesdivides dividingan softwareoverall development workeffort into smaller, parallel, or sequential steps or sub-processes tothat improveare [[Softwareintended design|design]]to and/orensure [[Softwarehigh-quality product management|product management]]results. The methodologyprocess may include the pre-definition ofdescribe specific [[deliverable]]s and artifacts thatto arebe created and completed by a project team to develop or maintain an application.<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>
Most modern development processes can be vaguely described as [[Agile software development|agile]]. Other methodologies include [[waterfall model|waterfall]], [[software prototyping|prototyping]], [[iterative and incremental development]], [[spiral development]], [[rapid application development]], and [[extreme programming]].