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
Computer programming
(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!
===Quality requirements=== {{main|Software quality}} Whatever the approach to development may be, the final program must satisfy some fundamental properties. The following properties are among the most important:<ref>{{cite magazine |magazine=[[InformationWeek]] |url=https://www.informationweek.com/cloud/nist-to-develop-cloud-roadmap/d/d-id/1093958? |title=NIST To Develop Cloud Roadmap |date=November 5, 2010 |quote=Computing initiative seeks to remove barriers to cloud adoption in security, interoperability, portability and reliability.}}</ref> <ref>{{cite news |newspaper=[[Computerworld]]|date=April 9, 1984 |page=13 |title=What is it based on |quote=Is it based on ... Reliability Portability. Compatibility}}</ref> *[[Reliability engineering#Software reliability|Reliability]]: how often the results of a program are correct. This depends on conceptual correctness of algorithms and minimization of programming mistakes, such as mistakes in resource management (e.g., [[buffer overflow]]s and [[race condition]]s) and logic errors (such as division by zero or [[off-by-one error]]s). *[[Robustness (computer science)|Robustness]]: how well a program anticipates problems due to errors (not bugs). This includes situations such as incorrect, inappropriate or corrupt data, unavailability of needed resources such as memory, operating system services, and network connections, user error, and unexpected power outages. *[[Usability]]: the [[ergonomics]] of a program: the ease with which a person can use the program for its intended purpose or in some cases even unanticipated purposes. Such issues can make or break its success even regardless of other issues. This involves a wide range of textual, graphical, and sometimes hardware elements that improve the clarity, intuitiveness, cohesiveness, and completeness of a program's user interface. *[[Software portability|Portability]]: the range of [[computer hardware]] and [[operating system]] platforms on which the source code of a program can be [[compiled]]/[[interpreter (computing)|interpreted]] and run. This depends on differences in the programming facilities provided by the different platforms, including hardware and operating system resources, expected behavior of the hardware and operating system, and availability of platform-specific compilers (and sometimes libraries) for the language of the source code. *[[Maintainability]]: the ease with which a program can be modified by its present or future developers in order to make improvements or to customize, fix [[Software bug|bugs]] and [[Vulnerability (computing)|security holes]], or adapt it to new environments. Good practices<ref>{{Cite web |url=http://wisdomgeek.com/programming/tips-become-good-programmer |title=Programming 101: Tips to become a good programmer - Wisdom Geek |date=May 19, 2016 |website=Wisdom Geek |language=en-US |access-date=2016-05-23 |archive-date=May 23, 2016 |archive-url=https://web.archive.org/web/20160523063915/http://wisdomgeek.com/programming/tips-become-good-programmer |url-status=live }}</ref> during initial development make the difference in this regard. This quality may not be directly apparent to the end user but it can significantly affect the fate of a program over the long term. *[[Algorithmic efficiency|Efficiency]]/[[performance engineering|performance]]: Measure of system resources a program consumes (processor time, memory space, slow devices such as disks, network bandwidth and to some extent even user interaction): the less, the better. This also includes careful management of resources, for example cleaning up [[temporary file]]s and eliminating [[memory leak]]s. This is often discussed under the shadow of a chosen programming language. Although the language certainly affects performance, even slower languages, such as [[Python (programming language)|Python]], can execute programs instantly from a human perspective. Speed, resource usage, and performance are important for programs that [[Bottleneck (software)|bottleneck]] the system, but efficient use of programmer time is also important and is related to cost: more hardware may be cheaper. Using [[Test automation|automated tests]] and [[Fitness function|fitness functions]] can help to maintain some of the aforementioned attributes.<ref>{{Cite book |title=Fundamentals of Software Architecture: An Engineering Approach |publisher=O'Reilly Media |year=2020 |isbn=978-1492043454}}</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)