Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Software engineering
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Workload == {{Main|Outline of software engineering}} === Requirements analysis === {{Main|Software requirements}} [[Requirements engineering]] is about elicitation, analysis, specification, and validation of [[requirements]] for [[software]]. Software requirements can be [[functional requirement|functional]], [[non-functional requirement|non-functional]] or domain. Functional requirements describe expected behaviors (i.e. outputs). Non-functional requirements specify issues like portability, security, maintainability, reliability, scalability, performance, reusability, and flexibility. They are classified into the following types: interface constraints, performance constraints (such as response time, security, storage space, etc.), operating constraints, life cycle constraints (maintainability, portability, etc.), and economic constraints. Knowledge of how the system or software works is needed when it comes to specifying non-functional requirements. Domain requirements have to do with the characteristic of a certain category or domain of projects.<ref>{{Cite web|date=2018-06-19|title=Software Engineering {{!}} Classification of Software Requirements|url=https://www.geeksforgeeks.org/software-engineering-classification-of-software-requirements/|access-date=2021-05-06|website=GeeksforGeeks|language=en-us}}</ref> === Design === {{Main|Software design}} [[Software design]] is the process of making high-level plans for the software. Design is sometimes divided into levels: * [[Interface design]] plans the interaction between a system and its environment as well as the inner workings of the system. * [[Software architecture|Architectural design]] plans the major components of a system, including their responsibilities, properties, and interfaces between them. * [[Detailed design document|Detailed design]] plans internal elements, including their properties, relationships, [[algorithm]]s and [[data structure]]s.<ref>{{Cite web|date=2019-05-24|title=Software Engineering {{!}} Software Design Process|url=https://www.geeksforgeeks.org/software-engineering-software-design-process/|access-date=2021-05-06|website=GeeksforGeeks|language=en-us}}</ref> === Construction === {{Main|Software construction}} Software construction typically involves [[Computer programming|programming]] (a.k.a. coding), [[unit testing]], [[integration testing]], and [[debugging]] so as to implement the design.<ref name="BoDu04"/><ref name=swebokVol3/>"Software testing is related to, but different from, ... debugging".<ref name=swebokVol3/> Testing during this phase is generally performed by the programmer and with the purpose to verify that the code behaves as designed and to know when the code is ready for the next level of testing.{{Citation needed|date=May 2023}} === Testing === {{Main|Software testing}} [[Software testing]] is an empirical, technical investigation conducted to provide stakeholders with information about the quality of the software under test.<ref name="BoDu04"/><ref name=swebokVol3/> When described separately from construction, testing typically is performed by [[test engineers]] or [[quality assurance]] instead of the programmers who wrote it. It is performed at the [[system testing|system level]] and is considered an aspect of [[software quality]]. === Program analysis === {{Main|Program analysis}} Program analysis is the process of analyzing computer programs with respect to an aspect such as [[Computer performance|performance]], [[Robustness (computer science)|robustness]], and [[Security testing|security]]. === Maintenance === {{Main|Software maintenance}} [[Software maintenance]] refers to supporting the software after release. It may include but is not limited to: [[Patch (computing)|error correction]], optimization, deletion of [[Software bloat|unused]] and discarded features, and enhancement of existing features.<ref name="BoDu04"/><ref name=swebokVol3/> Usually, maintenance takes up 40% to 80% of project cost.<ref>{{Cite web|title=What is Software Maintenance? Definition of Software Maintenance, Software Maintenance Meaning|url=https://economictimes.indiatimes.com/definition/software-maintenance|access-date=2021-05-06|website=The Economic Times}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)