Software development: Difference between revisions

Content deleted Content added
Restored revision 1275073256 by MrOllie (talk): Spam
m I just edit some links of the sites
Tags: Reverted Visual edit
Line 6:
'''Software development''' is the process of [[designing]] and [[Implementation|implementing]] a [[software]] solution to [[Computer user satisfaction|satisfy]] a [[User (computing)|user]]. The process is more encompassing than [[Computer programming|programming]], writing [[source code|code]], in that it includes conceiving the goal, evaluating feasibility, analyzing [[software requirements|requirements]], [[software design|design]], [[software testing|testing]] and [[software release life cycle|release]]. The process is part of [[software engineering]] which also includes [[management|organizational management]], [[Software project management|project management]], [[configuration management]] and other aspects.{{sfn|Dooley|2017|p=1}}
 
[https://www.bytecortex.com/2024/12/best-language-to-make-applications.html Software development] involves many skills and job specializations including [[software programmer|programming]], [[software test|testing]], [[Technical writing|documentation]], [[graphic design]], [[user support]], [[marketing]], and [[fundraising]].
 
Software development involves many [[software tools|tools]] including: [[compiler]], [[integrated development environment]] (IDE), [[version control]], [[computer-aided software engineering]], and [[word processor]].
Line 20:
*In the top-down [[waterfall model]], feasibility, analysis, [[software design|design]], development, [[Software quality assurance|quality assurance]], and implementation occur sequentially in that order. This model requires one step to be complete before the next begins, causing delays, and makes it impossible to revise previous steps if necessary.{{sfn|Dooley|2017|p=9}}{{sfn|Langer|2016|pp=2-3, 5–6}}{{sfn|Tucker |Morelli |de Silva |2011|p=8}}
*With [[iterative]] processes these steps are interleaved with each other for improved flexibility, efficiency, and more realistic scheduling. Instead of completing the project all at once, one might go through most of the steps with one component at a time. Iterative development also lets developers prioritize the most important features, enabling lower priority ones to be dropped later on if necessary.{{sfn|Langer|2016|pp=2-3, 5–6}}{{sfn|Dooley|2017|p=11}} [[agile software development|Agile]] is one popular method, originally intended for small or medium sized projects, that focuses on giving developers more control over the features that they work on to reduce the risk of time or cost overruns.{{sfn|Dooley|2017|p=13}} Derivatives of agile include [[extreme programming]] and [[Scrum (software development)|Scrum]].{{sfn|Dooley|2017|p=13}} [[Open-source software development]] typically uses agile methodology with concurrent design, coding, and testing, due to reliance on a distributed network of volunteer contributors.{{sfn|Tucker |Morelli |de Silva |2011|pp=41-42}}
*Beyond agile, some companies integrate [[https://www.bytecortex.com/2024/11/ai-basics-understanding-artificial.html information technology]] (IT) operations with software development, which is called [[DevOps]] or [[DevSecOps]] including [[computer security]].{{sfn|Vishnu|2019|pp=1-2}} DevOps includes continuous development, [[continuous testing|testing]], [[continuous integration|integration]] of new code in the version control system, [[continuous deployment|deployment]] of the new code, and sometimes [[continuous delivery|delivery]] of the code to clients.<ref>{{Cite journal |last=Laukkanen |first=Eero |last2=Itkonen |first2=Juha |last3=Lassenius |first3=Casper |date=2017 |title=Problems, causes and solutions when adopting continuous delivery—A systematic literature review |journal=Information and Software Technology |volume=82 |pages=55–79 |doi=10.1016/j.infsof.2016.10.001|doi-access=free }}</ref> The purpose of this integration is to deliver IT services more quickly and efficiently.{{sfn|Vishnu|2019|pp=1-2}}
Another focus in many programming methodologies is the idea of trying to catch issues such as [[security vulnerabilities]] and [[Bug (computer programming)|bugs]] as early as possible ([[shift-left testing]]) to reduce the cost of tracking and fixing them.{{sfn|Winters|Manshreck|Wright |2020|p=17}}