Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Computer programming
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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>
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Computer programming
(section)
Add topic