software_engineering_topics
A PCRE recursion error occured. Try to increase the pcre.recursion_limit in php.ini

Table of Contents

Software Engineering Topics

Pull content from Master file located at Software engineering glossary

Return to Glossary, Glossaries, Software Engineering

A

M

S

T



ALL BELOW HERE IS TEMPORARILY A BACKUP FILE:



Short description: List of definitions of terms and concepts commonly used in computer science

This glossary of computer science is a list of definitions of terms and concepts used in computer science, its sub-disciplines, and related fields, including terms relevant to software, data science, and computer programming

A

  • abstraction
    - no=1|In [[software engineering]] and [[computer science, the process of removing physical, spatial, or temporal details((Last name: Colburn, First name: Timothy, Last name: Shute, First name: Gary, Date: 2007-06-05, Title: Abstraction in Computer Science, [[Journal]]: Minds and Machines, [[Language]]: [[English]], Volume: 17, Issue: 2, pages 169–184, [[DOI]]: 10.1007/s11023-007-9061-7, [[ISSN]]: 0924-6495)) or [[attribute|attributes in the study of objects or systems in order to more closely attend to other details of interest;((Journal: Last name: Kramer, First name: Jeff, Date: 2007-04-01, Title: Is abstraction the key to computing?, [[Journal]]: Communications of the ACM, Volume: 50, Issue: 4, pages 36–42, [[DOI]]: 10.1145/1232743.1232745, [[ISSN]]: 0001-0782, cite seerx: 10.1.1.120.6776)) it is also very similar in nature to the process of [[generalization]].
    - no=2|The result of this process: an [[Abstract and concrete|abstract]] [[concept]]-[[Object (philosophy)|object]] created by keeping common features or attributes to various concrete objects or systems of study.
  • agent architecture
    - A [[blueprint]] for [[software agent|software agents and [[intelligent control]] systems depicting the arrangement of components. The architectures implemented by [[intelligent agent]]s are referred to as [[cognitive architecture]]s.(([http://hri.cogs.indiana.edu/publications/aaai04ws.pdf Comparison of Agent Architectures] ((https://web.archive.org/web/20080827222057/http://hri.cogs.indiana.edu/publications/aaai04ws.pdf, Date: August 27, 2008 ))
  • agent-based model (ABM)
    - A class of [[computational model|computational models for [[computer simulation|simulating]] the actions and interactions of autonomous agents (both individual or collective entities such as organizations or groups) with a view to assessing their effects on the system as a whole. It combines elements of [[game theory]], [[complex systems]], [[emergence]], [[computational sociology]], [[multi-agent system]]s, and [[evolutionary programming]]. [[Monte Carlo method]]s are used to introduce randomness.
  • aggregate function
    - In [[database management]], a [[subroutine|function in which the values of multiple rows are grouped together to form a single value of more significant meaning or measurement, such as a [[set, a [[bag, or a [[list.
  • agile software development
    - An approach to [[software development]] under which requirements and solutions evolve through the collaborative effort of [[Self-organizing communities|self-organizing]] and [[cross-functional team|cross-functional]] teams and their [[Customer|customer(s)]]/[[End user|end user(s)]].(("Collier 2011">Book: Title:  Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing , Last name: Collier, First name: Ken W. , Year: 2011 , [[Publisher]]:  [[Pearson]] Education , [[ISBN]]: 9780321669544, pages  121 ff|quote=What is a self-organizing team?)) It advocates adaptive planning, evolutionary development, early delivery, and [[Continual improvement process|continual improvement]], and it encourages rapid and flexible response to change.(("WhatIsAgile">((http://www.agilealliance.org/the-alliance/what-is-agile/, Title: What is Agile Software Development?, Date: 8 June 2013, Access Date: 4 April 2015, [[Publisher]]: Agile Alliance))
  • algorithm
    - An unambiguous specification of how to solve a class of problems. Algorithms can perform [[calculation]], [[data processing]], and [[automated reasoning]] tasks. They are ubiquitous in computing technologies.
  • algorithm design
    - A method or mathematical process for problem-solving and for engineering [[algorithm|algorithms. The design of algorithms is part of many solution theories of [[operation research]], such as [[dynamic programming]] and [[Divide and conquer algorithm|divide-and-conquer]]. Techniques for designing and implementing algorithm designs are also called algorithm design patterns,((http://ww3.algorithmdesign.net/ch00-front.html, Title: Algorithm Design: Foundations, Analysis, and Internet Examples, Last name: Goodrich, First name: Michael T., [[Author]]: Michael T. Goodrich, Last name: Tamassia, First name: Roberto, [[Author]]: Roberto Tamassia, [[Publisher]]: John [[Wiley]] & Sons, Inc., Year: 2002, [[ISBN]]: 978-0-471-38365-9)) such as the template method pattern and decorator pattern.
  • algorithmic efficiency
    - A property of an [[algorithm which relates to the number of [[computational resource]]s used by the algorithm. An algorithm must be [[analysis of algorithms|analyzed]] to determine its resource usage, and the efficiency of an algorithm can be measured based on usage of different resources. Algorithmic efficiency can be thought of as analogous to engineering [[productivity]] for a repeating or continuous process.
  • American Standard Code for Information Interchange (ASCII)
    - A [[character encoding]] standard for electronic communications. ASCII codes represent text in computers, [[telecommunications equipment]], and other devices. Most modern character-encoding schemes are based on ASCII, although they support many additional characters.
  • application programming interface (API)
    - A set of [[subroutine definitions, [[communication protocols]], and tools for building [[software. In general terms, it is a set of clearly defined methods of communication among various components. A good API makes it easier to develop a [[computer program by providing all the building blocks, which are then put together by the [[programmer]].
  • application software
    - Also simply '''application''' or '''app'''.
    - [[software|Computer software designed to perform a group of coordinated functions, tasks, or activities for the benefit of the [[user. Common examples of applications include [[word processor]]s, [[spreadsheet]]s, [[accounting software|accounting application]]s, [[web browser]]s, [[media player (software)|media player]]s, aeronautical [[flight simulator]]s, [[console game]]s, and [[Raster graphics editor|photo editor]]s. This contrasts with [[system software, which is mainly involved with managing the computer's most basic running operations, often without direct input from the user. The collective noun ''application software'' refers to all applications collectively.(([[Web Citation]]: Title: Application software, https://www.pcmag.com/encyclopedia/term/37919/application-program, Work: [[PC Magazine]] , [[Publisher]]: [[Ziff Davis]]))
  • array data structure
    - Also simply '''array'''.
    - A [[data structure consisting of a collection of ''elements'' ([[value|values or [[variable|variables), each identified by at least one ''array index'' or ''key''. An array is stored such that the position of each element can be computed from its index [[tuple]] by a mathematical formula.((https://xlinux.nist.gov/dads/HTML/array.html, Title: array, Last name: Black, First name: Paul E., Date: 13 November 2008|work=[[Dictionary of Algorithms and Data Structures]], [[Publisher]]: [[National Institute of Standards and Technology]], Access date: 22 August 2010))(("andres">{{cite arXiv, eprint=1008.2909, [[Author]]: Bjoern Andres , [[Author]]: Ullrich Koethe, [[Author]]: Thorben Kroeger, [[Author]]:Hamprecht , Title: Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x, class=cs.DS , Year: 2010))(("garcia", Journal: Last name: Garcia, First name: Ronald , First name: Andrew, Last name: Lumsdaine, Year: 2005, Title: MultiArray: a C++ library for generic programming with arrays, [[Journal]]: Software: Practice and Experience, Volume: 35, Issue: 2, pages 159–188, [[ISSN]]: 0038-0644, [[DOI]]: 10.1002/spe.630)) The simplest type of data structure is a linear array, also called a one-dimensional array.
  • artifact
    - One of many kinds of tangible by-products produced during the development of [[software. Some artifacts (e.g. [[use case]]s, [[class diagram]]s, and other [[Unified Modeling Language]] (UML) models, requirements, and design documents) help describe the function, architecture, and design of software. Other artifacts are concerned with the process of development itself—such as project plans, business cases, and risk assessments.
  • artificial intelligence (AI)
    - Also '''machine intelligence'''.
    - [[Intelligence]] demonstrated by [[machine]]s, in contrast to the natural intelligence displayed by humans and other animals. In [[computer science, AI research is defined as the study of "[[intelligent agent]]s": devices capable of perceiving their environment and taking actions that maximize the chance of successfully achieving their goals.(("Definition of AI">

Definition of AI as the study of intelligent agents:

  • {{Harvnb|Poole|Mackworth|Goebel|1998|loc=[http://people.cs.ubc.ca/~poole/ci/ch1.pdf p. 1], which provides the version that is used in this article. Note that they use the term "computational intelligence" as a synonym for artificial intelligence. * {{Harvtxt|Russell|Norvig|2003 (who prefer the term "rational agent") and write "The whole-agent view is now widely accepted in the field" {{Harv|Russell|Norvig|2003|p=55. * {{Harvnb|Nilsson|1998 <!--These textbooks are the most widely used in academic AI.--> * {{Harvnb|Legg|Hutter|2007. )) Colloquially, the term "artificial intelligence" is applied when a machine mimics "cognitive" functions that humans associate with other [[human mind]]s, such as "learning" and "problem solving".{{sfn|Russell|Norvig|2009|p=2 * [[ASCII]] - See ''[[American Standard Code for Information Interchange''. * [[Assertion (software development)|assertion]] - In [[computer programming, a [[statement that a [[Predicate (mathematical logic)|predicate]] ([[Boolean-valued function]], i.e. a true–false [[expression) is always true at that point in code execution. It can help a programmer read the code, help a [[compiler compile it, or help the program detect its own defects. For the latter, some programs check assertions by actually evaluating the predicate as they run and if it is not in fact true – an assertion failure – the program considers itself to be broken and typically deliberately [[crash|crashes or throws an assertion failure [[exception handling|exception]]. * [[associative array]] - * [[automata theory]] - The study of [[abstract machine]]s and [[automaton|automata]], as well as the [[computational problem]]s that can be solved using them. It is a theory in [[theoretical computer science and [[discrete mathematics]] (a subject of study in both [[mathematics]] and [[computer science). * [[automated reasoning]] - An area of [[computer science and [[mathematical logic]] dedicated to understanding different aspects of [[reasoning]]. The study of automated reasoning helps produce [[computer programs]] that allow computers to reason completely, or nearly completely, automatically. Although automated reasoning is considered a sub-field of [[artificial intelligence, it also has connections with [[theoretical computer science, and even [[philosophy]]. end ==B== * [[bandwidth (computing)|bandwidth]] - The maximum rate of data transfer across a given path. Bandwidth may be characterized as ''network bandwidth'',(([[Douglas Comer]], [https://books.google.co.uk/books?id=tm-evHmOs3oC&pg=PA99&dq=%22network+bandwidth%22+%22computer+networks%22&hl=en&ei=mvqcTOHIMIb2tgPbnpXWAQ&sa=X&oi=book_result&ct=result&redir_esc=y#v=onepage&q&f=false Computer Networks and Internets], page 99 ff, Prentice Hall 2008.)) ''data bandwidth'',((Fred Halsall, [https://books.google.com/books?ei=dvycTJ2BDoqosAOhu_DVAQ&ct=result&hl=en&id=HrXbAAAAMAAJ&dq=%100data+bandwidth%100++%100computer+networks%22&q=%100data+bandwidth%100+Introduction to data+communications and computer networks], page 108, Addison-Wesley, 1985.)) or ''digital bandwidth''.(([https://books.google.co.uk/books?ei=rfmcTPKEN5L6swOekeXVAQ&ct=result&hl=en&id=7gqsZmr5HJcC&dq=+0digital+bandwidth+0+%22&redir_esc=y Cisco Networking Academy Program: CCNA 1 and 2 companion guide, Volym 1–2], Cisco Academy 2003))((Behrouz A. Forouzan, ''Data communications and networking'', McGraw-Hill, 2007)) * [[Bayesian programming]] - A formalism and a methodology for having a technique to specify [[Probability distribution|probabilistic models]] and solve problems when less than the necessary information is available. * [[benchmark (computing)|benchmark]] - The act of running a [[computer program, a set of programs, or other operations, in order to assess the relative performance of an object, normally by running a number of standard tests and trials against it.(( doi = 10.1145/5666.5673| issn = 0001-0782| volume = 29| issue = 3| pages = 218–221| last1 = Fleming| first1 = Philip J.| last2 = Wallace| first2 = John J.| title = How not to lie with statistics: the correct way to summarize benchmark results| journal = Communications of the ACM| date = 1986-03-01)) The term ''benchmark'' is also commonly utilized for the purposes of elaborately designed benchmarking programs themselves. * [[best, worst and average case]] - Expressions of what the [[resource usage is ''at least'', ''at most'', and ''on average'', respectively, for a given [[algorithm. Usually the resource being considered is running time, i.e. [[time complexity]], but it could also be memory or some other resource. ''Best case'' is the function which performs the minimum number of steps on input data of ''n'' elements; ''worst case'' is the function which performs the maximum number of steps on input data of size ''n''; ''average case'' is the function which performs an average number of steps on input data of ''n'' elements. * [[big data]] - A term used to refer to [[data set]]s that are too large or complex for traditional [[data processing|data-processing]] [[application software to adequately deal with. Data with many cases (rows) offer greater [[statistical power]], while data with higher complexity (more attributes or columns) may lead to a higher [[false discovery rate]].((Last name: Breur, First name: Tom, Date: July 2016, Title: Statistical Power Analysis and the contemporary "crisis" in social sciences, [[Journal]]: Journal of Marketing Analytics, [[Language]]: [[English]], Volume: 4, Issue: 2–3, pages 61–65, [[DOI]]: 10.1057/s41270-016-0001-3, [[ISSN]]: 2050-3318|doi-access=free)) * [[big O notation]] - A mathematical notation that describes the [[asymptotic analysis|limiting behavior]] of a [[function (mathematics)|function]] when the argument tends towards a particular value or infinity. It is a member of a family of notations invented by [[Paul Gustav Heinrich Bachmann|Paul Bachmann]],((Bachmann>, Book: , First name: Paul , Last name: Bachmann, authorlink=Paul Bachmann , Title: Analytische Zahlentheorie, trans-Title: Analytic Number Theory, language=de , Volume: 2 , Location: Leipzig , [[Publisher]]: Teubner, Date: 1894, https://archive.org/stream/dieanalytischeza00bachuoft#page/402/mode/2up)) [[Edmund Landau]],((Landau>, Book: , First name: Edmund , Last name: Landau, authorlink=Edmund Landau , Title: Handbuch der Lehre von der Verteilung der Primzahlen , [[Publisher]]: B. G. Teubner, Date: 1909 , Location: Leipzig, trans-Title: Handbook on the theory of the distribution of the primes, language=de, Page: 883, https://archive.org/details/handbuchderlehre01landuoft)) and others, collectively called ''Bachmann–Landau notation'' or ''asymptotic notation''. * [[binary number]] - In mathematics and [[digital electronics]], a number expressed in the base-2 numeral system or binary numeral system, which uses only two symbols: typically [[0 (number)|0 (zero)]] and [[1 (number)|1 (one)]]. * [[binary search algorithm]] - Also simply '''binary search''', '''half-interval search''',(("Williams1976">{{cite conference, Last name: Williams, Jr., First name: Louis F., Title: A modification to the half-interval search (binary search) method|conference=Proceedings of the 14th ACM Southeast Conference, Date: 22 April 1976, pages 95–101, [[DOI]]: 10.1145/503561.503582, https://dl.acm.org/citation.cfm?doid=503561.503582, [[Publisher]]: ACM, Access date: 29 June 2018|archive-https://web.archive.org/web/20170312215255/http://dl.acm.org/citation.cfm?doid=503561.503582, Archive Date: 12 March 2017,, df=dmy-all)) '''logarithmic search''',{{Sfn|Knuth|1998|loc=§6.2.1 ("Searching an ordered table"), subsection "Binary search" or '''binary chop'''.{{Sfn|Butterfield|Ngondi|2016|p=46 - A [[search algorithm that finds the position of a target value within a [[sorted array]].{{Sfn|Cormen|Leiserson|Rivest|Stein|2009|p=39(({{MathWorld , Title: Binary search, id=BinarySearch)) * [[binary tree]] - A [[tree structure|tree]] [[data structure in which each node has at most two [[child node|children]], which are referred to as the ''{{visible anchor|left child'' and the ''{{visible anchor|right child''. A [[recursive definition]] using just [[set theory]] notions is that a (non-empty) binary tree is a [[tuple]] (''L'', ''S'', ''R''), where ''L'' and ''R'' are binary trees or the [[empty set]] and ''S'' is a [[singleton set]].(("GarnierTaylor2009">(([[Author]]: Rowan Garnier, [[Author]]: John Taylor, Title: Discrete Mathematics: Proofs, Structures and Applications, Third Edition, https://books.google.com/books?id=WnkZSSc4IkoC&pg=PA620, Year: 2009, [[Publisher]]: CRC Press, [[ISBN]]: 978-1-4398-1280-8, page: 620)) Some authors allow the binary tree to be the empty set as well.(("Skiena2009">((author=Steven S Skiena, Title: The Algorithm Design Manual, https://books.google.com/books?id=7XUSn0IKQEgC&pg=PA77, Year: 2009, [[Publisher]]: [[Springer]] Science & Business Media, [[ISBN]]: 978-1-84800-070-4, page: 77)) * [[bioinformatics]] - An interdisciplinary field that combines [[biology]], [[computer science, [[Information engineering (field)|information engineering]], [[mathematics]], and [[statistics]] to develop methods and [[software tool]]s for analyzing and interpreting biological data. Bioinformatics is widely used for ''[[in silico]]'' analyses of biological queries using mathematical and statistical techniques. * [[bit]] - A [[Units of information|basic unit of information]] used in [[computing and digital communications; a portmanteau of ''binary digit''. A [[binary number|binary digit can have one of two possible [[value|values, and may be physically represented with a two-state device. These state values are most commonly represented as either a {{gaps|0|or|1.(("Mackenzie_1980">Book: Title: Coded Character Sets, History and Development, work=The Systems Programming Series , Last name: Mackenzie, First name: Charles E. , Year: 1980, Edition: 1 , [[Publisher]]: [[Addison-Wesley Publishing Company, Inc.]] , [[ISBN]]: 978-0-201-14460-4, lccn=77-90165, Page: x, https://books.google.com/books?id=6-tQAAAAMAAJ , Access date: 2016-05-22 , , https://web.archive.org/web/20161118230039/https://books.google.com/books?id=6-tQAAAAMAAJ, Archive Date: 18 November 2016, [https://web.archive.org/web/20160526172151/https://textfiles.meulie.net/bitsaved/Books/Mackenzie_CodedCharSets.pdf])) * [[bit rate]] (''R'') - Also '''bitrate'''. - In [[telecommunications]] and [[computing, the number of [[bit|bits that are conveyed or processed per unit of time.((Book: https://books.google.com/books?id=-kNn_p6WA38C&pg=PA21&dq=bit+%22rate+R%22#v=onepage&q=bit%20%22rate%20R%22&f=false , Title: Data Communications and Computer Networks, First name: Prakash C, Last name: Gupta , [[Publisher]]: PHI Learning , Year: 2006 , Access date: 10 July 2011, [[ISBN]]: 9788120328464 )) * [[blacklist (computing)|blacklist]] - Also '''block list'''. - In [[computing, a basic [[access control]] mechanism that allows through all elements (email addresses, users, passwords, [[URLs]], [[IP address]]es, [[domain name]]s, file [[MD5 Hash|hashes]], etc.), except those explicitly mentioned in a list of prohibited elements. Those items on the list are denied access. The opposite is a [[whitelist, which means only items on the list are allowed through whatever gate is being used while all other elements are blocked. A [[Greylisting (email)|greylist]] contains items that are temporarily blocked (or temporarily allowed) until an additional step is performed. * [[BMP file format]] - Also '''bitmap image file''', '''device independent bitmap (DIB) file format''', or simply '''bitmap'''. - A [[raster graphics]] [[image file format]] used to store [[bitmap]] digital images independently of the [[display device]] (such as a [[graphics adapter]]), used especially on [[Microsoft Windows]](("bmp">((Title: Encyclopedia of Graphics File Formats, Edition: Second, Date: April 1996, [[Author]]: James D. Murray, [[Author]]: William vanRyper, [[ISBN]]: 978-1-56592-161-0, [[Publisher]]: [[O'Reilly Media|O'Reilly]]|at=bmp, https://archive.org/details/mac_Graphics_File_Formats_Second_Edition_1996, Access date: 2014-03-07)) and [[OS/2]](("os2bmp">((Title: Encyclopedia of Graphics File Formats, Edition: Second, Date: April 1996, [[Author]]: James D. Murray, [[Author]]: William vanRyper, [[ISBN]]: 978-1-56592-161-0, [[Publisher]]: [[O'Reilly Media|O'Reilly]]|at=os2bmp, https://archive.org/details/mac_Graphics_File_Formats_Second_Edition_1996, Access date: 2014-03-07)) operating systems. * [[Boolean data type]] - A [[data type]] that has one of two possible values (usually denoted ''true'' and ''false''), intended to represent the two [[truth value]]s of [[logic]] and [[Boolean algebra]]. It is named after [[George Boole]], who first defined an algebraic system of logic in the mid-19th century. The Boolean data type is primarily associated with [[Conditional (computer programming)|conditional]] statements, which allow different actions by changing [[control flow]] depending on whether a programmer-specified Boolean ''condition'' evaluates to true or false. It is a special case of a more general ''logical data type'' (see [[probabilistic logic]])—i.e. logic need not always be Boolean. * [[Boolean expression]] - An [[expression used in a [[programming language that returns a [[Boolean value]] when evaluated, that is one of ''true'' or ''false''. A Boolean expression may be composed of a combination of the Boolean constants ''true'' or ''false'', [[Boolean data type|Boolean-typed]] variables, Boolean-valued operators, and [[Boolean-valued function]]s.(({{citation , last1 = Gries, first1 = David, author1-link = David Gries , last2 = Schneider, first2 = Fred B., author2-link = Fred B. Schneider , contribution = Chapter 2. Boolean Expressions , isbn = 9780387941158 , page = 25ff , publisher = [[Springer]] , series = Monographs in Computer Science , title = A Logical Approach to Discrete Math , url = https://books.google.com/books?id=ZWTDQ6H6gsUC&pg=PA25 , [[Year]]: 1993)) * [[Boolean algebra]] - In mathematics and [[mathematical logic]], the branch of [[algebra]] in which the values of the variables are the [[truth value]]s ''true'' and ''false'', usually denoted 1 and 0, respectively. Contrary to [[elementary algebra]], where the values of the variables are numbers and the prime operations are addition and multiplication, the main operations of Boolean algebra are the [[Logical conjunction|conjunction]] ''and'' (denoted as ∧), the [[Logical disjunction|disjunction]] ''or'' (denoted as ∨), and the [[negation]] ''not'' (denoted as ¬). It is thus a formalism for describing logical relations in the same way that elementary algebra describes numeric relations. * [[byte]] - A [[units of information|unit of digital information]] that most commonly consists of eight [[bit|bits, representing a [[binary number. Historically, the byte was the number of bits used to encode a single [[character (computing)|character]] of text in a computer(("Buchholz_1962"> -- Buchholz-1962{{citation , Title: Planning a Computer System – Project Stretch, [[Author]]: Gerrit Anne , Blaauw, author-link1=Gerrit Anne Blaauw, [[Author]]: Frederick Phillips , Brooks, Jr., author-link2=Frederick Phillips Brooks, Jr., [[Author]]: Werner , Buchholz, author-link3=Werner Buchholz, [[Editor]]: First name: Werner, [[Editor]]: , Last name: Buchholz, [[Editor]]: link=Werner Buchholz , [[Publisher]]: [[McGraw-Hill Book Company, Inc.]] / The Maple Press Company, York, PA., lccn=61-10466 , Year: 1962, Chapter: 4: Natural Data Units , pages 39–40, http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/Buchholz_102636426.pdf, access-date=2017-04-03 , , archive-https://web.archive.org/web/20170403014651/http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/Buchholz_102636426.pdf, Archive Date: 2017-04-03, quote=[…] Terms used here to describe the structure imposed by the machine design, in addition to ''[[bit]]'', are listed below.<br />''Byte'' denotes a group of bits used to encode a character, or the number of bits transmitted in parallel to and from input-output units. A term other than ''[[character (computing)|character]]'' is used here because a given character may be represented in different applications by more than one code, and different codes may use different numbers of bits (i.e., different byte sizes). In input-output transmission the grouping of bits may be completely arbitrary and have no relation to actual characters. (The term is coined from ''[[bite]]'', but respelled to avoid accidental mutation to ''bit''.)<br />A ''[[Word (unit)|word]]'' consists of the number of data bits transmitted in parallel from or to memory in one memory cycle. [[Word size]] is thus defined as a structural property of the memory. (The term ''[[catena (unit)|catena]]'' was coined for this purpose by the designers of the [[Groupe Bull|Bull]] {{ill|Bull Gamma 60{{!GAMMA 60|fr|Gamma 60 computer.)<br />''[[Block (data storage)|Block]]'' refers to the number of words transmitted to or from an input-output unit in response to a single input-output instruction. Block size is a structural property of an input-output unit; it may have been fixed by the design or left to be varied by the program. […]))(("Bemer_1959">{{citation, First name: Robert William , Last name: Bemer, author-link=Robert William Bemer , Title: A proposal for a generalized card code of 256 characters , [[Journal]]: [[Communications of the ACM]] , Volume: 2, number=9 , pages 19–23 , Year: 1959 , [[DOI]]: 10.1145/368424.368435)) and for this reason it is the smallest [[address space|addressable]] unit of [[memory in many [[computer architecture|computer architectures. * [[booting]] - The procedures implemented in starting up a [[computer]] or [[computer appliance]] until it can be used. It can be initiated by hardware such as a button press or by a software command. After the power is switched on, the computer is relatively dumb and can read only part of its storage called [[read-only memory. There, a small program is stored called [[firmware]]. It does [[power-on self-test]]s and, most importantly, allows access to other types of memory like a [[hard disk]] and [[main memory]]. The firmware loads bigger [[computer program|program]]s into the computer's [[random-access memory|main memory]] and runs it. end ==C== * [[callback (computer programming)|callback]] - Also a '''call-after function'''.((https://stackoverflow.com/a/7549753/653708, Title: What is a callback function?|website=Stack Overflow|access-date=2018-05-16)) - Any [[executable code]] that is passed as an [[argument to other code that is expected to "call back" (execute) the argument at a given time. This execution may be immediate, as in a ''synchronous callback'', or it might happen at a later time, as in an ''asynchronous callback''. * [[central processing unit]] (CPU) - The electronic circuitry within a [[computer that carries out the [[instruction|instructions of a [[computer program by performing the basic arithmetic, logic, controlling, and [[input/output (I/O) operations specified by the instructions. The computer industry has used the term "central processing unit" at least since the early 1960s.(("weik1961">, [[Journal]]: , , [[Author]]: Weik, Martin H., title = A Third Survey of Domestic Electronic Digital Computing Systems, publisher = [[Ballistic Research Laboratory]], url = http://ed-thelen.org/comp-hist/BRL61.html, [[Year]]: 1961 )) Traditionally, the term "CPU" refers to a ''processor'', more specifically to its processing unit and [[control unit (CU), distinguishing these core elements of a computer from external components such as [[main memory]] and I/O circuitry.(("kuck">((Last name: Kuck, First name: David, Title: Computers and Computations, Vol 1, Date: 1978, [[Publisher]]: John [[Wiley]] & Sons, Inc., [[ISBN]]: 978-0471027164, page: 12)) * [[character (computing)|character]] - A [[unit of information]] that roughly corresponds to a [[grapheme]], grapheme-like unit, or symbol, such as in an [[alphabet]] or [[syllabary]] in the written form of a [[natural language]].((http://www.merriam-webster.com/dictionary/character, Title: Definition of CHARACTER, [[Author]]: , Date:, website=www.merriam-webster.com, Access date: 1 April 2018)) * [[cipher]] - Also '''cypher'''. - In [[cryptography, an [[algorithm for performing [[encryption]] or [[decryption]]&mdash;a series of well-defined steps that can be followed as a [[procedure. * [[class (computer science)|class]] - In [[object-oriented programming, an extensible program-code-template for creating [[Object (object-oriented programming)|object]]s, providing initial values for state ([[member variable]]s) and implementations of behavior (member functions or [[Method (computer programming)|methods]]).{{sfn|Gamma|Helm|Johnson|Vlissides|1995| p=14{{sfn|Bruce|2002|loc=2.1 Objects, classes, and object types, {{Google books|9NGWq3K1RwUC|Objects, classes, and object types, page: 18|plainyes In many languages, the class name is used as the name for the class (the template itself), the name for the default [[Constructor (object-oriented programming)|constructor]] of the class (a [[subroutine that creates objects), and as the [[data type|type]] of objects generated by [[Instance (computer science)|instantiating]] the class; these distinct concepts are easily conflated.{{sfn|Bruce|2002|loc=2.1 Objects, classes, and object types, {{Google books|9NGWq3K1RwUC|Objects, classes, and object types, page: 18|plainyes * [[class-based programming]] - Also '''class-orientation'''. - A style of [[object-oriented programming (OOP) in which inheritance occurs via defining "[[class|classes" of [[object|objects, instead of via the objects alone. Compare ''[[prototype-based programming''. * [[class-based programming|class-orientation]] - A style of [[Object-oriented programming]] (OOP) in which inheritance occurs via defining ''[[Class (computer programming)|classes]]'' of [[Object (computer science)|objects]], instead of inheritance occurring via the objects alone (compare [[prototype-based programming]]). * [[client (computing)|client]] - A piece of [[computer hardware]] or [[software that accesses a service made available by a [[Server (computing)|server]]. The server is often (but not always) on another [[computer system]], in which case the client accesses the service by way of a [[Computer network|network]].((Sadoski, Darleen. ''Client/Server Software Architectures – An Overview'', Software Technology Roadmap, 1997-08-02. Retrieved on 2008-09-16.)) The term applies to the role that programs or devices play in the [[client–server model]]. * [[cleanroom software engineering]] - A [[software development process]] intended to produce software with a certifiable level of [[Reliability engineering|reliability]]. The cleanroom process was originally developed by [[Harlan Mills]] and several of his colleagues including Alan Hevner at [[IBM]].((Last name: Mills, First name: H.|authorlink=Harlan Mills , [[Author]]: M. Dyer, [[Author]]: R. Linger, Title: Cleanroom Software Engineering, [[Journal]]: IEEE Software, Volume: 4, Issue: 5, Date: September 1987, pages 19&ndash;25, [[DOI]]: 10.1109/MS.1987.231413, cite seerx: 10.1.1.467.2435)) The focus of the cleanroom process is on defect prevention, rather than defect removal. * [[closure (computer programming)|closure]] - Also '''lexical closure''' or '''function closure'''. - A technique for implementing [[lexically scoped]] [[name binding]] in a language with [[first-class function]]s. [[Operational semantics|Operationally]], a closure is a [[record (computer science)|record]] storing a [[function (computer science)|function]]{{efn|The function may be stored as a [[reference (computer science)|reference]] to a function, such as a [[function pointer]]. together with an environment.((Sussman and Steele. "Scheme: An interpreter for extended lambda calculus". "... a data structure containing a lambda expression, and an environment to be used when that lambda expression is applied to arguments." ([[s:Page:Scheme - An interpreter for extended lambda calculus.djvu/22|Wikisource]]))) * [[cloud computing]] - Shared pools of configurable computer [[system resource]]s and higher-level services that can be rapidly [[Provisioning|provisioned]] with minimal management effort, often over the [[Internet]]. Cloud computing relies on sharing of resources to achieve coherence and [[economies of scale]], similar to a [[public utility]]. * [[library (computing)|code library]] - A collection of [[non-volatile memory|non-volatile resources]] used by [[computer program|computer programs, often for [[software development]]. These may include configuration data, documentation, help data, message templates, [[Code reuse|pre-written code]] and [[subroutine|subroutines, [[class|classes, [[value|values or [[data type|type specifications. In [[OS/360 and successors|IBM's OS/360 and its successors]] they are referred to as [[Partitioned dataset|partitioned data sets]]. * [[collection (abstract data type)|collection]] - * [[computer programming|coding]] - Computer programming is the process of designing and building an [[executable [[computer program for accomplishing a specific [[computing task. Programming involves tasks such as analysis, generating [[algorithm|algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen [[programming language (commonly referred to as '''coding'''(("tumblr2014">((http://yearofcodes.tumblr.com/what-is-coding, Title: What is coding, [[Author]]: Shaun Bebbington, Year: 2014, Access date: 2014-03-03))(("tumblr1">((http://yearofcodes.tumblr.com/what-is-programming, Title: What is programming, [[Author]]: Shaun Bebbington, Year: 2014, Access date: 2014-03-03))). The [[source code of a program is written in one or more programming languages. The purpose of programming is to find a sequence of instructions that will automate the performance of a task for solving a given problem. The process of programming thus often requires expertise in several different subjects, including knowledge of the [[domain|application domain, specialized algorithms, and formal [[logic]]. * [[coding theory]] - The study of the properties of [[code]]s and their respective fitness for specific applications. Codes are used for [[data compression, [[cryptography, [[error detection and correction]], [[data transmission]] and [[data storage]]. Codes are studied by various scientific disciplines—such as [[information theory]], [[electrical engineering]], [[mathematics]], [[linguistics]], and [[computer science—for the purpose of designing efficient and reliable data transmission methods. This typically involves the removal of redundancy and the correction or detection of errors in the transmitted data. * [[cognitive science]] - The interdisciplinary, [[science|scientific]] study of the [[mind]] and its processes.((Cognitive science is an interdisciplinary field of researchers from Linguistics, psychology, neuroscience, philosophy, computer science, and anthropology that seek to understand the mind. [http://www.aft.org/newspubs/periodicals/ae/summer2002/willingham.cfm How We Learn: Ask the Cognitive Scientist])) It examines the nature, the tasks, and the functions of [[cognition]] (in a broad sense). Cognitive scientists study intelligence and behavior, with a focus on how nervous systems represent, process, and transform [[information]]. Mental faculties of concern to cognitive scientists include language, perception, memory, attention, reasoning, and emotion; to understand these faculties, cognitive scientists borrow from fields such as linguistics, psychology, [[artificial intelligence]], [[philosophy of mind|philosophy]], [[neuroscience]], and anthropology.(("stanford1">[[Thagard, Paul]], [http://plato.stanford.edu/archives/fall2008/entries/cognitive-science/ Cognitive Science], ''[[The Stanford Encyclopedia of Philosophy]]'' (Fall 2008 Edition), [[Edward N. Zalta]] (ed.).)) * [[comma-separated values]] (CSV) - A delimited [[text file]] that uses a comma to separate values. A CSV file stores [[Table (information)|tabular]] data (numbers and text) in [[plain text]]. Each line of the file is a data [[record. Each record consists of one or more [[field|fields, separated by [[comma]]s. The use of the comma as a field separator is the source of the name for this [[file format]]. * [[compiler]] - A [[computer program that transforms computer code written in one [[programming language (the source language) into another programming language (the target language). Compilers are a type of [[Translator (computing)|translator]] that support digital devices, primarily computers. The name ''compiler'' is primarily used for programs that translate [[source code from a [[high-level programming language]] to a [[lower-level language]] (e.g. [[assembly language]], [[object code]], or [[machine code]]) to create an [[executable program.(([[Web citation]]: , [[Author]]: PC Mag Staff, date = 28 February 2017, title = Encyclopedia: Definition of Compiler, work = PCMag.com, https://www.pcmag.com/encyclopedia/term/40105, accessdate=28 February 2017)) * [[compiler theory]] - * [[computability theory]] - also known as '''recursion theory''', is a branch of [[mathematical logic]], of [[computer science, and of the [[theory of computation]] that originated in the 1930s with the study of [[computable function]]s and [[Turing degree]]s. The field has since expanded to include the study of generalized computability and definability. In these areas, recursion theory overlaps with [[proof theory]] and [[effective descriptive set theory]]. * [[computation]] - Any type of calculation(([http://www.merriam-webster.com/dictionary/computation Computation] from the Free Merriam-Webster Dictionary))((Title: Computation: Definition and Synonyms from Answers.com, http://www.answers.com:80/topic/computation|website=Answers.com, Access date: 26 April 2017, https://web.archive.org/web/20090222005439/http://www.answers.com/topic/computation|archivedate=22 February 2009|url-status=dead)) that includes both arithmetical and non-arithmetical steps and follows a well-defined [[Model (abstract)|model]], e.g. an [[algorithm. The study of computation is paramount to the discipline of [[computer science. * [[computational biology]] - * [[computational chemistry]] - A branch of [[chemistry]] that uses [[computer simulation]] to assist in solving chemical problems. It uses methods of [[theoretical chemistry]], incorporated into efficient [[computer program|computer programs, to calculate the structures and properties of molecules and solids. * [[computational complexity theory]] - A subfield of [[computational science which focuses on classifying computational problems according to their inherent difficulty, and relating these classes to each other. A computational problem is a task solved by a computer. A computation problem is solvable by mechanical application of mathematical steps, such as an [[algorithm. * [[computational model]] - A [[mathematical model]] in [[computational science that requires extensive [[computational resource]]s to study the behavior of a complex system by [[computer simulation]].((Book: , [[Editor]]: , Last name: Melnik, [[Editor]]: First name: Roderick , Title: Mathematical and Computational Modeling: With Applications in Natural and Social Sciences, Engineering, and the Arts , [[Publisher]]: [[Wiley]] , Year: 2015 , [[ISBN]]: 978-1-118-85398-6 )) * [[computational neuroscience]] - Also '''theoretical neuroscience''' or '''mathematical neuroscience'''. - A branch of [[neuroscience]] which employs mathematical models, theoretical analysis, and abstractions of the brain to understand the principles that govern the [[Developmental neuroscience|development]], [[Neuroanatomy|structure]], [[Neurophysiology|physiology]], and [[Cognitive neuroscience|cognitive abilities]] of the [[nervous system]].(("Trappenberg 2002">((Title: Fundamentals of Computational Neuroscience, https://archive.org/details/fundamentalscomp00ttra|url-access=limited, Last name: Trappenberg, First name: Thomas P., [[Publisher]]: Oxford University Press Inc., Year: 2002, [[ISBN]]: 978-0-19-851582-1, Location: United States, page: [https://archive.org/details/fundamentalscomp00ttra/page/n16 1]))((What is computational neuroscience? Patricia S. Churchland, Christof Koch, Terrence J. Sejnowski. in Computational Neuroscience pp.46-55. Edited by Eric L. Schwartz. 1993. [[MIT Press]] {{cite web, http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=7195 , Title: Archived copy , Access date: 2009-06-11, url-status=dead , https://web.archive.org/web/20110604124206/http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=7195, Archive Date: 2011-06-04 ))((https://mitpress.mit.edu/books/theoretical-neuroscience, Title: Theoretical Neuroscience, Last name: Press, First name: The MIT|website=The [[MIT Press]], [[Language]]: [[English]]|access-date=2018-05-24|archive-https://web.archive.org/web/20180531150713/http://mitpress.mit.edu/books/theoretical-neuroscience, Archive Date: 2018-05-31|url-status=dead))((Book: [[Author]]: Gerstner, W., author2 = Kistler, W., author3 = Naud, R., author4 = Paninski, L.| title = Neuronal Dynamics, publisher = Cambridge University Press, location = Cambridge, UK, [[Year]]: 2014, isbn = 9781107447615)) * [[computational physics]] - * [[computational science]] - Also '''scientific computing''' and '''scientific computation''' ('''SC'''). - An interdisciplinary field that uses advanced computing capabilities to understand and solve complex problems. It is an area of science which spans many disciplines, but at its core it involves the development of computer models and simulations to understand complex natural systems. * [[computational steering]] - * [[computer]] - A device that can be instructed to carry out sequences of arithmetic or [[Boolean algebra|logical]] operations automatically via [[computer programming. Modern computers have the ability to follow generalized sets of operations, called [[computer program|programs. These programs enable computers to perform an extremely wide range of tasks. * [[computer architecture]] - A set of rules and methods that describe the functionality, organization, and implementation of [[computer systems. Some definitions of architecture define it as describing the capabilities and programming model of a computer but not a particular implementation.((Last name: Clements, First name: Alan, Title: Principles of Computer Hardware, page: 1, Edition: Fourth|quote=Architecture describes the internal organization of a computer in an abstract way; that is, it defines the capabilities of the computer and its programming model. You can have two computers that have been constructed in different ways with different technologies but with the same architecture.)) In other definitions computer architecture involves [[instruction set architecture]] design, [[microarchitecture]] design, [[logic design]], and [[implementation]].((Last name: Hennessy, First name: John, Last name: Patterson, First name: David, Title: Computer Architecture: A Quantitative Approach, page: 11, Edition: Fifth|quote=This task has many aspects, including instruction set design, functional organization, logic design,and implementation.)) * [[computer data storage]] - Also simply '''storage''' or '''memory'''. - A technology consisting of [[computer components and [[Data storage device|recording media]] that are used to retain digital [[data (computing)|data]]. Data storage is a core function and fundamental component of all modern computer systems.((Name: "Patterson">Book: Title: Computer Organization and Design: The Hardware/Software Interface , Last name: Patterson , First name: David A., Last name: Hennessy , First name: John L., Date: 2005 , [[Publisher]]: [[Morgan Kaufmann Publishers]] , [[ISBN]]: 978-1-55860-604-3, Edition: 3rd , Location: [[Amsterdam]], oclc=56213091, registration, https://archive.org/details/isbn_9781558606043 )){{rp|15–16 * [[computer ethics]] - A part of [[practical philosophy]] concerned with how computing professionals should make decisions regarding professional and social conduct.((BynumVeryShort>{{cite web, http://www.southernct.edu/organizations/rccs/resources/research/introduction/bynum_shrt_hist.html#maner, Title: A Very Short History of Computer Ethics , Last name: Bynum , First name: Terrell Ward , [[Publisher]]: Southern Connecticut Wein University, Access date: 2011-01-05, https://web.archive.org/web/20080418122849/http://www.southernct.edu/organizations/rccs/resources/research/introduction/bynum_shrt_hist.html|archivedate=2008-04-18)) * [[computer graphics]] - Pictures and films created using computers. Usually, the term refers to computer-generated image data created with the help of specialized graphical hardware and software. It is a vast and recently developed area of computer science. * [[computer network]] - Also '''data network'''. - A [[digital signal|digital]] [[telecommunications network]] which allows [[Node (networking)|nodes]] to share resources. In computer networks, [[computing device]]s [[data transmission|exchange data]] with each other using connections ([[data link]]s) between nodes. These data links are established over [[Networking cables|cable media]] such as wires or optic cables, or [[Wireless network|wireless media]] such as [[Wi-Fi. * [[computer program]] - * [[computer programming]] - The process of designing and building an [[executable [[computer program for accomplishing a specific [[computing task. Programming involves tasks such as analysis, generating [[algorithm|algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen [[programming language (commonly referred to as '''coding'''(("tumblr2014"/>(("tumblr1"/>). The [[source code of a program is written in one or more programming languages. The purpose of programming is to find a sequence of instructions that will automate the performance of a task for solving a given problem. The process of programming thus often requires expertise in several different subjects, including knowledge of the [[domain|application domain, specialized algorithms, and formal [[logic]]. * [[computer science]] - The theory, experimentation, and engineering that form the basis for the design and use of [[computer|computers. It involves the study of [[algorithm|algorithms that process, store, and communicate [[digital data|digital information]]. A [[computer scientist specializes in the theory of [[computation and the design of computational systems.(([[Web citation]]: http://wordnetweb.princeton.edu/perl/webwn?s=computer%20scientist , Title: WordNet Search—3.1 , [[Publisher]]: Wordnetweb.princeton.edu , Access date: 14 May 2012)) * [[computer scientist]] - A person who has acquired the knowledge of [[computer science, the study of the theoretical foundations of information and computation and their application.((Book: , Last name: Orsucci , First name: Franco F., Last name: Sala , First name: Nicoletta, Date: 2008 , Title: Reflexing Interfaces: The Complex Coevolution of Information Technology Ecosystems, Information Science Reference, https://archive.org/details/reflexinginterfa00orsu_453|url-access=limited , Location: , Page: [https://archive.org/details/reflexinginterfa00orsu_453/page/n359 335] , [[ISBN]]: )) * [[computer security]] - Also '''cybersecurity'''((Last name: Schatz, First name: Daniel, Last name: Bashroush, First name: Rabih, Last name: Wall|first3=Julie, Date: 2017, Title: Towards a More Representative Definition of Cyber Security, https://commons.erau.edu/jdfsl/vol12/iss2/8/, [[Journal]]: Journal of Digital Forensics, Security and Law, [[Language]]: [[English]], Volume: 12, Issue: 2, pages , [[ISSN]]: 1558-7215|via=)) or '''information technology security''' ('''IT security'''). - The protection of [[computer system]]s from theft or damage to their [[computer hardware|hardware]], [[software, or [[Data (computing)|electronic data]], as well as from [[denial-of-service attack|disruption]] or [[botnet|misdirection]] of the services they provide. * [[computer vision]] - An interdisciplinary scientific field that deals with how computers can be made to gain high-level understanding from [[digital image]]s or [[video]]s. From the perspective of engineering, it seeks to automate tasks that the [[human visual system]] can do.((Dana H. Ballard; Christopher M. Brown (1982). Computer Vision. Prentice Hall., [[ISBN]]: 0-13-165316-4.))((Huang, T. (1996-11-19). Vandoni, Carlo, E, ed. Computer Vision : Evolution And Promise (PDF). 19th CERN School of Computing. Geneva: CERN. pp. 21–25. doi:10.5170/CERN-1996-008.21., [[ISBN]]: 978-9290830955.))((Milan Sonka; Vaclav Hlavac; Roger Boyle (2008). Image Processing, Analysis, and Machine Vision. Thomson., [[ISBN]]: 0-495-08252-X.)) * [[computing]] - * [[concatenation]] - * [[concurrency (computer science)|Concurrency]] - The ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the final outcome. This allows for parallel execution of the concurrent units, which can significantly improve overall speed of the execution in multi-processor and multi-core systems. In more technical terms, concurrency refers to the decomposability property of a program, algorithm, or problem into order-independent or partially-ordered components or units.((Last name: Lamport, First name: Leslie, Title: Time, Clocks, and the Ordering of Events in a Distributed System, [[Journal]]: Communications of the ACM, Volume: 21, Issue: 7, pages 558–565, Date: July 1978, http://research.microsoft.com/en-us/um/people/lamport/pubs/time-clocks.pdf, Access date: 4 February 2016, [[DOI]]: 10.1145/359545.359563, cite seerx: 10.1.1.142.3682)) * [[conditional (computer programming)|conditional]] - Also '''conditional statement''', '''conditional expression''', and '''conditional construct'''. - A feature of a [[programming language which performs different computations or actions depending on whether a programmer-specified [[Boolean data type|Boolean]] condition evaluates to true or false. Apart from the case of [[branch predication]], this is always achieved by selectively altering the [[control flow based on some condition. * [[container (abstract data type)|container]] - * [[continuation-passing style]] (CPS) -- continuation-passing style - A style of [[functional programming in which [[control flow|control is passed explicitly in the form of a [[continuation]]. This is contrasted with [[direct style]], which is the usual style of programming. [[Gerald Jay Sussman]] and [[Guy L. Steele, Jr.]] coined the phrase in [[AI Memo]] 349 (1975), which sets out the first version of the [[Scheme (programming language)|Scheme]] programming language.((Last name: Sussman, First name: Gerald Jay, Last name: Steele, First name: Guy L., Jr., [[Author]]: Guy L. Steele, Jr., Date: December 1975, Title: Scheme: An interpreter for extended lambda calculus, [[Journal]]: [[AI Memo]], Volume: 349, page: 19|quote=That is, in this '''continuation-passing programming style''', ''a function always "returns" its result by "sending" it to another function''. This is the key idea., [[Author]]: Gerald Jay Sussman, Title: wikisource:Scheme: An interpreter for extended lambda calculus))((Last name: Sussman, First name: Gerald Jay, Last name: Steele, First name: Guy L., Jr., [[Author]]: Guy L. Steele, Jr., Date: December 1998, Title: Scheme: A Interpreter for Extended Lambda Calculus, http://www.brics.dk/~hosc/local/HOSC-11-4-pp405-439.pdf|format=reprint, [[Journal]]: Higher-Order and Symbolic Computation, Volume: 11, Issue: 4, pages 405–439, [[DOI]]: 10.1023/A:1010035624696|quote=We believe that this was the first occurrence of the term "'''continuation-passing style'''" in the literature. It has turned out to be an important concept in source code analysis and transformation for compilers and other metaprogramming tools. It has also inspired a set of other "styles" of program expression., [[Author]]: Gerald Jay Sussman)) * [[control flow]] - Also '''flow of control'''. - The order in which individual [[Statement (computer science)|statements]], [[Instruction (computer science)|instructions]] or [[function call]]s of an [[imperative programming|imperative]] [[computer program|program]] are [[Execution (computing)|executed]] or evaluated. The emphasis on explicit control flow distinguishes an ''[[imperative programming]]'' language from a ''[[declarative programming]]'' language. * [[Creative Commons]] (CC) -- Creative Commons - An American [[non-profit organization]] devoted to expanding the range of creative works available for others to build upon legally and to share.(([[Web citation]]: https://creativecommons.org/faq/, Title: Frequently Asked Questions , [[Publisher]]: Creative Commons, Date: 4 August 2016, Access date: 20 December 2011)) The organization has released several [[copyright]]-[[license]]s, known as [[Creative Commons license]]s, free of charge to the public. * [[cryptography]] - * [[comma-separated values|CSV]] - See ''[[comma-separated values''. * [[cyberbullying]] - Also '''cyberharassment''' or '''online bullying'''. - A form of [[bullying]] or [[harassment]] using electronic means. * [[cyberspace]] - Widespread, interconnected digital [[technology]]. end ==D== * [[daemon (computing)|daemon]] - * [[data center]] - Also '''data centre'''. - A dedicated space used to house [[computer|computer systems and associated components, such as telecommunications and [[computer data storage|data storage systems]]. It generally includes [[Redundancy (engineering)|redundant]] or backup components and infrastructure for [[power supply]], data communications connections, environmental controls (e.g. air conditioning and fire suppression) and various security devices.((NYT92212>{{cite news, Title: Power, Pollution and the Internet, https://www.nytimes.com/2012/09/23/technology/data-centers-waste-vast-amounts-of-energy-belying-industry-image.html, Access date: 2012-09-25|newspaper=The New York Times, Date: September 22, 2012, [[Author]]: James Glanz))(("ReferenceDC2", Journal: https://www.academia.edu/6982393, Title: Power Management Techniques for Data Centers: A Survey, First name: Mittal, Last name: Sparsh)) * [[database]] - An organized collection of [[Data (computing)|data]], generally stored and accessed electronically from a computer system. Where databases are more complex, they are often developed using formal design and modeling techniques. * [[data mining]] - * [[data science]] - An interdisciplinary field that uses scientific methods, processes, algorithms, and systems to extract knowledge and insights from [[data]] in various forms, both structured and unstructured,((, [[Journal]]: , last1 = Dhar, first1 = V., title = Data science and prediction, doi = 10.1145/2500499, [[Journal]]: Communications of the ACM, Volume: 56, Issue: 12, pages 64–73, [[Year]]: 2013, pmid = , pmc =, url = http://cacm.acm.org/magazines/2013/12/169933-data-science-and-prediction/fulltext)) (([[Web citation]]: , http://simplystatistics.org/2013/12/12/the-key-word-in-data-science-is-not-data-it-is-science/, , Title: The key word in "Data Science" is not Data, it is Science, [[Publisher]]: Simply Statistics, date=2013-12-12, author=Jeff Leek, author-link=Jeffrey T. Leek )) similar to [[data mining. Data science is a "concept to unify statistics, data analysis, machine learning and their related methods" in order to "understand and analyze actual phenomena" with data.(("Hayashi">((chapter-https://www.[[Springer]].com/book/9784431702085, Title: Data Science, Classification, and Related Methods, Last name: Hayashi, First name: Chikio, Date: 1998-01-01, [[Publisher]]: [[Springer]] Japan, [[ISBN]]: 9784431702085|editor-, Last name: Hayashi|editor-first=Chikio|series=Studies in Classification, Data Analysis, and Knowledge Organization, Location: , pages 40–51, [[Language]]: [[English]]|chapter=What is Data Science? Fundamental Concepts and a Heuristic Example, [[DOI]]: 10.1007/978-4-431-65950-1_3|editor-Last name: Yajima|editor-first2=Keiji|editor-Last name: Bock|editor-first3=Hans-Hermann|editor-Last name: Ohsumi|editor-first4=Noboru|editor-last5=Tanaka|editor-first5=Yutaka|editor-last6=Baba|editor-first6=Yasumasa)) It employs techniques and theories drawn from many fields within the context of mathematics, statistics, [[information science]], and [[computer science. * [[data structure]] - A data organization, management, and storage format that enables [[Algorithmic efficiency|efficient]] access and modification.<ref>((https://dl.acm.org/citation.cfm?id=1614191, Title: Introduction to Algorithms, Third Edition, Last name: Cormen, First name: Thomas H., Last name: Leiserson, First name: Charles E., Last name: Rivest|first3=Ronald L., Last name: Stein|first4=Clifford, Date: 2009, [[Publisher]]: The [[MIT Press]], [[ISBN]]: 978-0262033848, Edition: 3rd))((Book: , Last name: Black , First name: Paul E., [[Editor]]: Last name: Pieterse, [[Editor]]:First name: Vreda, [[Editor]]: Last name: Black, [[Editor]]:First name: Paul E. , Title: Dictionary of Algorithms and Data Structures [online], Date: 15 December 2004 , [[Publisher]]: [[National Institute of Standards and Technology]], https://xlinux.nist.gov/dads/HTML/datastructur.html , Access date: 2018-11-06, Chapter: data structure))<ref>{{cite encyclopedia, encyclopedia=Encyclopaedia Britannica , Title: Data structure, https://www.britannica.com/technology/data-structure, access-date=2018-11-06, Edition: , Date: 17 April 2017)) More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.<ref>((http://dl.acm.org/citation.cfm?id=1074100.1074312, Title: Encyclopedia of Computer Science, Last name: Wegner, First name: Peter, Last name: Reilly, First name: Edwin D., [[Publisher]]: John [[Wiley]] and Sons , [[ISBN]]: 978-0470864128, Location: Chichester, UK, pages 507–512, Date: 2003-08-29)) * [[data type]] - Also simply '''type'''. - An attribute of [[data]] which tells the [[compiler or [[interpreter how the programmer intends to use the data. Most [[programming language|programming languages support common data types of [[Real number|real]], [[integer (computer science)|integer]], and [[Boolean data type|Boolean]]. A data type constrains the values that an [[expression, such as a [[variable or a [[function, might take. This data type defines the operations that can be done on the data, the meaning of the data, and the way values of that type can be stored. A type of value from which an expression may take its value.<ref>{{FOLDOC|type|new=yes))((Book: Last name: Shaffer , First name: C. A. , Title: Data Structures & Algorithm Analysis in C++ , Location: Mineola, NY , [[Publisher]]: Dover, Edition: 3rd , Year: 2011, at=1.2 , [[ISBN]]: 978-0-486-48582-9 )) * [[debugging]] - The process of finding and resolving defects or problems within a [[computer program that prevent correct operation of [[computer software or the system as a whole. Debugging tactics can involve interactive debugging, [[control flow analysis, [[unit testing]], [[integration testing]], [[Logfile|log file analysis]], monitoring at the [[Application monitoring|application]] or [[system monitoring|system]] level, [[memory dump]]s, and [[Profiling (computer programming)|profiling]]. * [[declaration (computer programming)|declaration]] - In [[computer programming, a [[language construct]] that specifies properties of an [[identifier: it declares what a word (identifier) "means".(("c11">"A declaration specifies the interpretation and attributes of a set of identifiers. A ''definition'' of an identifier is a declaration for that identifier that: * for an object [variable or constant], causes storage to be reserved for that object; * for a function, includes the function body; * for an enumeration constant, is the (only) declaration of the identifier; * for a typedef name, is the first (or only) declaration of the identifier." C11 specification, 6.7: Declarations, paragraph 5.)) Declarations are most commonly used for [[subroutine|functions]], [[Variable (computer science)|variables]], [[Constant (computer programming)|constants]], and [[Class (computer programming)|classes]], but can also be used for other entities such as enumerations and type definitions.(("c11"/> Beyond the name (the identifier itself) and the kind of entity (function, variable, etc.), declarations typically specify the [[data type (for variables and constants), or the [[type signature]] (for functions); types may also include dimensions, such as for arrays. A declaration is used to announce the existence of the entity to the [[compiler; this is important in those [[strongly typed]] languages that require functions, variables, and constants, and their types, to be specified with a declaration before use, and is used in [[forward declaration]].(([[Web citation]]: | accessdate = 2011-06-08 |, [[Author]]: Mike Banahan | location = http://publications.gbdirect.co.uk/c_book/ | publisher = GBdirect | title = 2.5. Declaration of variables | quote = [A] declaration [...] introduces just the name and type of something but allocates no storage[...]. | url = http://publications.gbdirect.co.uk/c_book/chapter2/variable_declaration.html)) The term "declaration" is frequently contrasted with the term "definition",(("c11"/> but meaning and usage varies significantly between languages. * [[digital data]] - In [[information theory]] and [[information systems]], the discrete, discontinuous [[Representation (mathematics)|representation]] of information or works. Numbers and letters are commonly used representations. * [[digital signal processing]] ('''DSP''') -- digital signal processing - The use of [[digital processing]], such as by computers or more specialized [[digital signal processor]]s, to perform a wide variety of [[signal processing]] operations. The signals processed in this manner are a sequence of numbers that represent [[Sampling (signal processing)|samples]] of a [[continuous variable]] in a domain such as time, space, or frequency. * [[discrete event simulation]] ('''DES''') -- discrete event simulation - A model of the operation of a system as a [[discrete time|discrete]] sequence of events in time. Each event occurs at a particular instant in time and marks a change of [[state in the system.<ref>((Title: Simulation – The practice of model development and use, [[Author]]: Stewart Robinson, [[Publisher]]: [[Wiley]], Year: 2004)) Between consecutive events, no change in the system is assumed to occur; thus the [[simulation]] can directly jump in time from one event to the next. * [[disk storage]] - * [[distributed computing]] - A field of [[computer science that studies distributed systems. A ''distributed system'' is a system whose components are located on different [[computer network|networked computers]], which communicate and coordinate their actions by [[message passing|passing messages]] to one another.(("Coulouris">((Last name: Coulouris, First name: George, [[Author]]: Jean Dollimore|authorlink2=Jean Dollimore|author3=Tim Kindberg|author4=Gordon Blair, Title: Distributed Systems: Concepts and Design (5th Edition), [[Publisher]]: Addison-Wesley, Year: 2011, Location: Boston, [[ISBN]]: 978-0-132-14301-1)) The components interact with one another in order to achieve a common goal. Three significant characteristics of distributed systems are: concurrency of components, [[clock synchronization|lack of a global clock]], and independent failure of components.(("Coulouris" /> Examples of distributed systems vary from [[service-oriented architecture|SOA-based systems]] to [[massively multiplayer online game]]s to [[peer-to-peer|peer-to-peer applications]]. * [[divide and conquer algorithm]] - An [[algorithm design paradigm]] based on multi-branched [[recursion. A divide-and-conquer [[algorithm works by recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem. * [[Domain Name System|DNS]] - See ''[[Domain Name System''. * [[software documentation|documentation]] - Written text or illustration that accompanies [[computer software or is embedded in the [[source code. It either explains how it operates or how to use it, and may mean different things to people in different roles. * [[domain (software engineering)|domain]] - * [[Domain Name System]] (DNS) -- Domain Name System - A hierarchical and decentralized naming system for computers, services, or other resources connected to the [[Internet or to a private network. It associates various information with [[domain name]]s assigned to each of the participating entities. Most prominently, it translates more readily memorized domain names to the numerical [[IP address]]es needed for locating and identifying computer services and devices with the underlying [[communication protocol|network protocol]]s. By providing a worldwide, [[Distributed computing|distributed]] [[directory service]], the Domain Name System has been an essential component of the functionality of the Internet since 1985. * [[double-precision floating-point format]] - A [[computer number format]]. It represents a wide dynamic range of numerical values by using a floating [[radix point. * [[download]] - In [[computer network]]s, to receive data from a remote system, typically a [[Server (computing)|server]](("main">((http://searchnetworking.techtarget.com/definition/downloading, Title: What is downloading? - Definition from WhatIs.com|work=SearchNetworkNexting|access-date=2019-03-04|archive-https://web.archive.org/web/20190905142601/https://searchnetworking.techtarget.com/definition/downloading, Archive Date: 2019-09-05|url-status=dead)) such as a [[web server]], an [[File Transfer Protocol|FTP]] server, an [[email]] server, or other similar systems. This contrasts with [[upload|uploading, where data is sent ''to'' a remote server. A ''download'' is a [[computer file|file]] offered for downloading or that has been downloaded, or the process of receiving such a file. end ==E== * [[edge device]] - A device which provides an entry point into enterprise or service provider core networks. Examples include [[router (computing)|router]]s, routing [[network switch|switch]]es, [[integrated access device]]s (IADs), multiplexers, and a variety of [[metropolitan area network]] (MAN) and [[wide area network]] (WAN) access devices. Edge devices also provide connections into carrier and service provider networks. An edge device that connects a [[local area network]] to a high speed switch or backbone (such as an ATM switch) may be called an edge concentrator. * [[encryption]] - * [[event (computing)|event]] - An action or occurrence recognized by software, often originating [[asynchronous I/O|asynchronously]] from the external environment, that may be [[Event handler|handled]] by the software. Because an event is an entity which encapsulates the action and the contextual variables triggering the action, the acrostic mnemonic "'''E'''xecution '''V'''ariable '''E'''ncapsulating '''N'''amed '''T'''rigger" is often used to clarify the concept. * [[event-driven programming]] - A [[programming paradigm in which the [[control flow|flow of the program is determined by [[event|events such as user actions ([[computer mouse|mouse]] clicks, key presses), [[sensor]] outputs, or [[message passing|messages]] from other programs or [[thread|threads. Event-driven programming is the dominant paradigm used in [[graphical user interface]]s and other applications (e.g. JavaScript [[web application]]s) that are centered on performing certain actions in response to [[input/output|user input. This is also true of programming for [[device driver]]s (e.g. [[P (programming language)|P]] in USB device driver stacks(([[Web citation]]: https://www.microsoft.com/en-us/research/publication/p-safe-asynchronous-event-driven-programming/ , Title: P: Safe Asynchronous Event-Driven Programming , [[Author]]: Vivek Gupta , [[Author]]: Ethan Jackson, [[Author]]: Shaz Qadeer, [[Author]]:Sriram Rajamani , Access date: 20 February 2017))). * [[evolutionary computing]] - A family of [[algorithm|algorithms for [[global optimization]] inspired by [[biological evolution]], and the subfield of [[artificial intelligence and [[soft computing studying these algorithms. In technical terms, they are a family of population-based trial-and-error problem-solvers with a [[metaheuristic]] or [[stochastic optimization]] character. * [[executable]] - Also '''executable code''', '''executable file''', '''executable program''', or simply '''executable'''. - Causes a computer "to perform indicated tasks according to encoded [[instruction (computer science)|instructions]],"(([[Web citation]]: http://www.merriam-webster.com/dictionary/executable , Title: executable , Access date: 2008-07-19, work=Merriam-Webster's Online Dictionary , [[Publisher]]: [[Merriam-Webster]])) as opposed to a [[Data (computing)|data file]] that must be [[parser|parsed]] by a program to be meaningful. The exact interpretation depends upon the use - while "instructions" is traditionally taken to mean [[machine code]] instructions for a physical [[Central processing unit|CPU]], in some contexts a file containing [[bytecode]] or [[scripting language]] instructions may also be considered executable. {{term|executable module - * [[execution (computing)|execution]] - * [[exception handling]] - The process of responding to the occurrence, during [[computation, of ''exceptions'' – anomalous or exceptional conditions requiring special processing – often disrupting the normal flow of [[computer program|program [[execution. It is provided by specialized [[programming language constructs, [[computer hardware]] mechanisms like [[interrupt]]s, or [[operating system]] [[inter-process communication|IPC]] facilities like [[Signal (IPC)|signals]]. * [[expression (computer science)|expression]] - In a [[programming language, a combination of one or more [[constant|constants, [[variable|variables, [[operator|operators, and [[function|functions that the programming language interprets (according to its particular [[Order of operations|rules of precedence]] and of association) and computes to produce ("to return", in a [[state|stateful environment) another value. This process, as for [[mathematical expression]]s, is called evaluation. {{term|external library - end ==F== * [[fault-tolerant computer system]] - A system designed around the concept of [[fault tolerance]]. In essence, they must be able to continue working to a level of satisfaction in the presence of errors or breakdowns. * [[feasibility study]] - An investigation which aims to objectively and rationally uncover the strengths and weaknesses of an existing business or proposed venture, opportunities and threats present in the [[natural environment]], the resources required to carry through, and ultimately the prospects for success.(("Justis">Justis, R. T. & Kreigsmann, B. (1979). The feasibility study as a tool for venture analysis. ''Business Journal of Small Business Management'' 17 (1) 35-42.))<ref>Georgakellos, D. A. & Marcis, A. M. (2009). Application of the semantic learning approach in the feasibility studies preparation training process. ''Information Systems Management'' 26 (3) 231–240.)) In its simplest terms, the two criteria to judge feasibility are cost required and value to be attained.<ref>Young, G. I. M. (1970). Feasibility studies. ''Appraisal Journal'' 38 (3) 376-383.)) * [[field (computer science)|field]] - * [[filename extension]] - An identifier specified as a [[substring|suffix]] to the [[filename|name]] of a [[computer file]]. The extension indicates a characteristic of the file contents or its intended use. * [[filter (software)]] - A [[computer program or [[subroutine to process a [[Stream (computing)|stream]], producing another stream. While a single filter can be used individually, they are frequently strung together to form a [[Pipeline (software)|pipeline]]. * [[floating point arithmetic]] - * [[for loop]] - Also '''for-loop'''. - A [[control flow [[statement for specifying [[iteration]], which allows code to be [[execution (computers)|executed]] repeatedly. Various keywords are used to specify this statement: descendants of [[ALGOL]] use "for", while descendants of [[Fortran]] use "do". There are also other possibilities, e.g. [[COBOL]] uses "PERFORM VARYING". * [[formal methods]] - A set of mathematically based techniques for the [[formal specification|specification]], development, and [[formal verification|verification]] of [[software and [[computer hardware|hardware]] systems.(("butler">{{cite web, [[Author]]: R. W. Butler, Title: What is Formal Methods?, http://shemesh.larc.nasa.gov/fm/fm-what.html, Date: 2001-08-06, Access date: 2006-11-16)) The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design.((author=C. Michael Holloway, Title: Why Engineers Should Consider Formal Methods, http://klabs.org/richcontent/verification/holloway/nasa-97-16dasc-cmh.pdf, [[Publisher]]: 16th Digital Avionics Systems Conference (27–30 October 1997), Access date: 2006-11-16|url-status=dead, https://web.archive.org/web/20061116210448/http://klabs.org/richcontent/verification/holloway/nasa-97-16dasc-cmh.pdf|archivedate=16 November 2006)) * [[formal verification]] - The act of [[Mathematical proof|proving]] or disproving the [[correctness of intended [[algorithm|algorithms underlying a system with respect to a certain [[formal specification]] or property, using [[formal methods of mathematics.((Last name: Sanghavi, First name: Alok, Title: What is formal verification?, [[Journal]]: EE Times Asia, Date: May 21, 2010)) * [[functional programming]] - A [[programming paradigm—a style of building the structure and elements of [[computer program|computer programs–that treats [[computation as the evaluation of [[function (mathematics)|mathematical functions]] and avoids changing-[[program state|state]] and [[Immutable object|mutable]] data. It is a [[declarative programming]] paradigm in that programming is done with [[expression|expressions or [[declaration|declarations(("expression style">((https://wiki.haskell.org/Declaration_vs._expression_style#Expression_style, Title: Declaration vs. expression style - HaskellWiki, [[Publisher]]: )) instead of [[statement|statements. end ==G== * [[game theory]] - The study of [[mathematical model]]s of strategic interaction between rational decision-makers.((Myerson>[[Roger B. Myerson|Myerson, Roger B.]] (1991). ''Game Theory: Analysis of Conflict,'' Harvard University Press, p.&nbsp;[https://books.google.com/books?id=E8WQFRCsNr0C&printsec=find&pg=PA1 1]. Chapter-preview links, pp. [https://books.google.com/books?id=E8WQFRCsNr0C&printsec=find&pg=PR7 vii–xi].)) It has applications in all fields of [[social science]], as well as in [[logic]] and [[computer science. Originally, it addressed [[zero-sum game]]s, in which each participant's gains or losses are exactly balanced by those of the other participants. Today, game theory applies to a wide range of behavioral relations, and is now an [[umbrella term]] for the [[science]] of logical decision making in humans, animals, and computers. * [[garbage in, garbage out]] (GIGO) - A term used to describe the concept that flawed or nonsense [[input (computer science)|input]] data produces nonsense [[input/output|output]] or "garbage". * [[Graphics Interchange Format]] - * [[gigabyte]] - A multiple of the unit [[byte for digital information. The [[SI prefix|prefix]] ''[[giga-|giga]]'' means 10<sup>9</sup> in the [[International System of Units]] (SI). Therefore, one gigabyte is {{gaps|1|000|000|000|bytes. The unit symbol for the gigabyte is GB. * [[global variable]] - In [[computer programming, a variable with global [[scope, meaning that it is visible (hence accessible) throughout the program, unless [[Variable shadowing|shadowed]]. The set of all global variables is known as the ''global environment'' or ''global state''. In compiled languages, global variables are generally [[static variable]]s, whose [[Variable (programming)#Scope and extent|extent]] (lifetime) is the entire runtime of the program, though in interpreted languages (including [[command-line interpreter]]s), global variables are generally dynamically allocated when declared, since they are not known ahead of time. * [[graph theory]] - In mathematics, the study of ''[[graph (discrete mathematics)|graph]]s'', which are mathematical structures used to model pairwise relations between objects. A graph in this context is made up of ''[[Vertex (graph theory)|vertices]]'' (also called ''nodes'' or ''points'') which are connected by ''[[Glossary of graph theory terms#edge|edges]]'' (also called ''links'' or ''lines''). A distinction is made between undirected graphs, where edges link two vertices symmetrically, and directed graphs, where edges link two vertices asymmetrically. end ==H== * [[handle (computing)|handle]] - * [[computational complexity theory|hard problem]] - Computational complexity theory focuses on classifying computational problems according to their inherent difficulty, and relating these classes to each other. A computational problem is a task solved by a computer. A computation problem is solvable by mechanical application of mathematical steps, such as an algorithm. * [[hash function]] - Any [[Function (mathematics)|function]] that can be used to map [[data (computing)|data]] of arbitrary size to data of a fixed size. The values returned by a hash function are called '''hash values''', '''hash codes''', '''digests''', or simply '''hashes'''. Hash functions are often used in combination with a [[hash table]], a common [[data structure]] used in computer software for rapid data lookup. Hash functions accelerate table or database lookup by detecting duplicated records in a large file. * [[hash table]] - In [[computing, a '''hash table''' ('''hash map''') is a [[data structure]] that implements an [[associative array]] [[abstract data type]], a structure that can map [[Unique key|keys]] to [[value|values. A hash table uses a [[hash function]] to compute an ''index'' into an array of ''buckets'' or ''slots'', from which the desired value can be found. * [[heap (data structure)|heap]] - A specialized [[Tree (data structure)|tree]]-based [[data structure]] which is essentially an almost complete<ref>((Title: INTRODUCTION TO ALGORITHMS, https://archive.org/details/introductiontoal00corm_805|url-access=limited, Last name: CORMEN, First name: THOMAS H., [[Publisher]]: The [[MIT Press]] Cambridge, Massachusetts London, England, Year: 2009, [[ISBN]]: 978-0-262-03384-8, Location: United States of America, pages [https://archive.org/details/introductiontoal00corm_805/page/n171 151]–152)) tree that satisfies the ''heap property:'' if P is a parent [[Node (computer science)|node]] of C, then the ''key'' (the ''value'') of P is either greater than or equal to (in a ''max heap'') or less than or equal to (in a ''min heap'') the key of C.<ref>Black (ed.), Paul E. (2004-12-14). Entry for ''heap'' in ''[[Dictionary of Algorithms and Data Structures]]''. Online version. U.S. [[National Institute of Standards and Technology]], 14 December 2004. Retrieved on 2017-10-08 from https://xlinux.nist.gov/dads/HTML/heap.html.)) The node at the "top" of the heap (with no parents) is called the ''root'' node. * [[heapsort]] - A [[comparison sort|comparison-based]] [[sorting algorithm]]. Heapsort can be thought of as an improved [[selection sort]]: like that algorithm, it divides its input into a sorted and an unsorted region, and it iteratively shrinks the unsorted region by extracting the largest element and moving that to the sorted region. The improvement consists of the use of a [[heap (data structure)|heap]] data structure rather than a linear-time search to find the maximum.((Book: , First name: Steven , Last name: Skiena, authorlink=Steven Skiena , Title: The Algorithm Design Manual, https://archive.org/details/algorithmdesignm00skie_772, limited , [[Publisher]]: [[Springer]] , Year: 2008, Page: [https://archive.org/details/algorithmdesignm00skie_772/page/n120 109], Chapter: Searching and Sorting , [[ISBN]]: 978-1-84800-069-8, quote=[H]eapsort is nothing but an implementation of selection sort using the right data structure., [[DOI]]: 10.1007/978-1-84800-070-4_4<!--DOI for chapter-->)) * [[human-computer interaction]] (HCI) - Researches the design and use of computer technology, focused on the interfaces between people ([[user (computing)|users]]) and computers. Researchers in the field of HCI both observe the ways in which humans interact with computers and design technologies that let humans interact with computers in novel ways. As a field of research, human–computer interaction is situated at the intersection of [[computer science, [[behavioral sciences]], [[design]], [[media studies]], and [[Outline of human–computer interaction#Related fields|several other fields of study]]. end ==I== * [[identifier (computer science)|identifier]] - * [[integrated development environment|IDE]] - Integrated development environment. * [[image processing]] - * [[imperative programming]] - A [[programming paradigm that uses [[statement|statements that change a program's [[state. In much the same way that the [[imperative mood]] in [[natural language]]s expresses commands, an imperative program consists of [[command|commands for the computer to perform. Imperative programming focuses on describing ''how'' a program operates. * [[incremental build model]] - A method of [[software development]] where the product is [[software design|designed]], implemented and [[software testing|tested]] incrementally (a little more is added each time) until the product is finished. It involves both development and maintenance. The product is defined as finished when it satisfies all of its requirements. This model combines the elements of the [[waterfall model with the iterative philosophy of [[software prototyping|prototyping]]. * [[information space analysis]] - A deterministic method, enhanced by [[artificial intelligence|machine intelligence, for locating and assessing [[resource|resources for team-centric efforts. * [[information visualization]] - * [[inheritance (computer science)|inheritance]] - In [[object-oriented programming, the mechanism of basing an [[object or [[class upon another object ([[Prototype-based programming|prototype-based inheritance]]) or class ([[Class-based programming|class-based inheritance]]), retaining similar implementation. Also defined as deriving new classes ([[#Subclasses and superclasses|sub classes]]) from existing ones (super class or [[Fragile base class|base class]]) and forming them into a hierarchy of classes. * [[input/output]] (I/O) - Also informally '''io''' or '''IO'''. - The communication between an [[information processing system]], such as a [[computer, and the outside world, possibly a human or another [[Information processor|information processing system]]. [[Information|Inputs]] are the signals or data received by the system and outputs are the signals or [[Data (computing)|data]] sent from it. The term can also be used as part of an action; to "perform I/O" is to perform an [[I/O scheduling|input or output operation]]. * [[insertion sort]] - A simple [[sorting algorithm]] that builds the final [[sorted array]] (or list) one item at a time. * [[instruction cycle]] - Also '''fetch–decode–execute cycle''' or simply '''fetch-execute cycle'''. - The cycle which the [[central processing unit (CPU) follows from [[booting|boot-up until the computer has shut down in order to process instructions. It is composed of three main stages: the fetch stage, the decode stage, and the execute stage. * [[integer (computer science)|integer]] - A datum of integral data type, a [[data type]] that represents some [[interval (mathematics)|range]] of mathematical [[integer]]s. Integral data types may be of different sizes and may or may not be allowed to contain negative values. Integers are commonly represented in a computer as a group of binary digits (bits). The size of the grouping varies so the set of integer sizes available varies between different types of computers. Computer hardware, including [[virtual machine]]s, nearly always provide a way to represent a processor [[word size|register]] or memory address as an integer. * [[integrated development environment]] (IDE) -- integrated development environment - A [[Application software|software application]] that provides comprehensive facilities to computer programmers for [[software development]]. An IDE normally consists of at least a [[source code editor]], [[build automation]] tools, and a [[debugger]]. * [[integration testing]] - (sometimes called integration and testing, abbreviated I&T) is the phase in [[software testing]] in which individual software modules are combined and tested as a group. Integration testing is conducted to evaluate the [[regulatory compliance|compliance]] of a system or component with specified [[functional requirement]]s.<ref>((Title: ISO/IEC/IEEE International Standard - Systems and software engineering, Last name: , First name: , [[Publisher]]: ISO/IEC/IEEE 24765:2010(E), Year: 2010, [[ISBN]]: , Location: , pages vol., no., pp.1–418, 15 Dec. 2010)) It occurs after [[unit testing]] and before [[Software verification and validation|validation testing]]. Integration testing takes as its input [[module (programming)|modules]] that have been unit tested, groups them in larger aggregates, applies tests defined in an integration [[test plan]] to those aggregates, and delivers as its output the integrated system ready for [[system testing]].<ref>[https://books.google.com/books?id=utFCImZOTEIC&pg=PA73&dq=integration+test&hl=en&sa=X&ei=4EpTVOvJMayu7Aak5YCIDA&ved=0CDwQ6AEwAg#v=onepage&q=integration%20test&f=false Martyn A Ould & Charles Unwin (ed), ''Testing in Software Development'', BCS (1986), p71]. Accessed 31 Oct 2014)) * [[intellectual property]] (IP) -- intellectual property - A category of legal property that includes intangible creations of the human intellect.((https://www.wipo.int/publications/en/details.jsp?id=4080, Title: Understanding Industrial Property, [[Publisher]]: World Intellectual Property Organization|access-date=2018-12-06))((http://www.europarl.europa.eu/factsheets/en/sheet/36/intellectual-industrial-and-commercial-property, Title: Intellectual, industrial and commercial property {{! Fact Sheets on the European Union, [[Publisher]]: European Parliament|access-date=2018-12-06)) There are many types of intellectual property, and some countries recognize more than others.(([[Web citation]]: https://www.wto.org/english/tratop_e/trips_e/intel1_e.htm , Title: What are intellectual property rights?, website=World Trade Organization , [[Publisher]]: World Trade Organization, access-date=2016-05-23))<ref>"Intellectual property", ''Black's Law Dictionary'', 10th ed. (2014).))((https://www.wipo.int/edocs/pubdocs/en/wipo_pub_909_2016.pdf, Title: Understanding Copyright and Related Rights, [[Publisher]]: World Intellectual Property Organization, page: 4|access-date=2018-12-06))((https://www.wipo.int/edocs/pubdocs/en/intproperty/450/wipo_pub_450.pdf, Title: What is Intellectual Property?, [[Publisher]]: World Intellectual Property Organization (WIPO)|access-date=2018-12-07))((https://www.wipo.int/edocs/pubdocs/en/wipo_pub_895_2016.pdf, Title: Understanding Industrial Property, [[Publisher]]: World Intellectual Property Organization (WIPO)|access-date=2018-12-07)) The most well-known types are [[copyright]]s, [[patent]]s, [[trademark]]s, and [[trade secret]]s. * [[intelligent agent]] - * [[interface (computing)|interface]] - A shared boundary across which two or more separate components of a [[computer system]] exchange information. The exchange can be between [[software, [[computer hardware]], [[peripheral]] devices, [[User interface|humans]], and combinations of these.(("HookwayInterface14">{{cite book, https://books.google.com/books?id=BQM_AwAAQBAJ, Chapter: Chapter 1: The Subject of the Interface , Title: Interface , [[Author]]: Hookway, B. , [[Publisher]]: [[MIT Press]] , pages 1–58 , Year: 2014 , [[ISBN]]: 9780262525503)) Some computer hardware devices, such as a [[touchscreen]], can both send and receive data through the interface, while others such as a mouse or microphone may only provide an interface to send data to a given system.<ref>{{cite encyclopedia , year =2000 , title =IEEE 100 - The Authoritative Dictionary Of IEEE Standards Terms , publisher =IEEE Press , location =NYC, NY, USA , isbn =9780738126012 , pages =574–575 )) * [[internal documentation]] - Computer [[software is said to have Internal Documentation if the notes on how and why various parts of code operate is included within the [[source code as comments. It is often combined with meaningful [[variable (programming)|variable]] names with the intention of providing potential future programmers a means of understanding the workings of the code. This contrasts with external [[documentation]], where programmers keep their notes and explanations in a separate document. * [[internet]] - The global system of interconnected [[computer network]]s that use the [[Internet protocol suite]] (TCP/IP) to link devices worldwide. It is a ''network of networks'' that consists of private, public, academic, business, and government networks of local to global scope, linked by a broad array of electronic, wireless, and optical networking technologies. * [[internet bot]] - Also '''web robot''', '''robot''', or simply '''bot'''. - A [[software application that runs automated tasks (scripts) over the [[Internet]].((Book: , https://archive.org/details/malicio_dun_2009_00_4004, registration , Title: Malicious Bots: An Inside Look into the Cyber-Criminal Underground of the Internet , Last name: Dunham , First name: Ken, Last name: Melnick , First name: Jim , [[Publisher]]: CRC Press , Year: 2008 , [[ISBN]]: 9781420069068 , Location: , pages )) Typically, bots perform tasks that are both simple and structurally repetitive, at a much higher rate than would be possible for a human alone. The largest use of bots is in [[web crawler|web spidering]] (''web crawler''), in which an automated script fetches, analyzes and files information from web servers at many times the speed of a [[human]]. * [[interpreter (computing)|interpreter]] - A [[computer program that directly [[execution|executes instructions written in a [[programming language|programming or [[scripting language]], without requiring them to have been previously [[compiler|compiled into a [[machine language]] program. * [[invariant (computer science)|invariant]] - * [[iteration]] - end ==J== * [[java (programming language)|Java]] - A [[General-purpose language|general-purpose]] [[programming language that is [[class-based programming|class-based]], [[object-oriented programming|object-oriented{{sfn|DECODER|p=1(although not a ''pure'' OO language((https://stackoverflow.com/questions/12836522/java-is-pure-object-oriented-or-not, Title: Java is pure object oriented or not?|website=Stack Overflow|access-date=2019-05-24))), and designed to have as few implementation [[dependency|dependencies as possible. It is intended to let [[application developer]]s "[[write once, run anywhere]]" (WORA),((http://www.computerweekly.com/Articles/2002/05/02/186793/write-once-run-anywhere.htm, Title: Write once, run anywhere?, Date: May 2, 2002, [[Publisher]]: [[Computer Weekly]], Access date: 2009-07-27)) meaning that [[compiler|compiled Java code can run on all platforms that support Java without the need for recompilation.(("design_goals">((https://www.oracle.com/technetwork/java/intro-141325.html, Title: 1.2 Design Goals of the Java™ Programming Language, [[Publisher]]: Oracle, Date: January 1, 1999, Access date: 2013-01-14|archive-https://web.archive.org/web/20130123204103/http://www.oracle.com/technetwork/java/intro-141325.html, Archive Date: January 23, 2013,, df=mdy-all)) end ==K== * [[kernel (operating system)|kernel]] - The first section of an [[operating system to load into [[data storage|memory. As the center of the operating system, the kernel needs to be small, efficient, and loaded into a protected area in the memory so that it cannot be overwritten. It may be responsible for such essential tasks as disk drive management, file management, memory management, process management, etc. end ==L== * [[library (computing)]] - A collection of [[non-volatile memory|non-volatile]] resources used by [[computer program|computer programs, often for [[software development]]. These may include configuration data, documentation, help data, message templates, [[Code reuse|pre-written code]] and [[subroutine|subroutines, [[class|classes, [[value|values, or [[data type|type specifications. * [[linear search]] - Also '''sequential search'''. - A method for finding an element within a [[list. It sequentially checks each element of the list until a match is found or the whole list has been searched.{{Sfn|Knuth|1998|loc=§6.1 ("Sequential search") * [[linked list]] - A linear collection of data elements, whose order is not given by their physical placement in memory. Instead, each element [[pointer (computer programming)|points]] to the next. It is a [[data structure]] consisting of a collection of [[node (computer science)|node]]s which together represent a [[sequence]]. * [[linker (computing)|linker]] - or link editor, is a computer [[System utility|utility]] program that takes one or more [[object file]]s generated by a [[compiler or an [[assembler (computing)|assembler]] and combines them into a single [[executable]] file, [[Library (computing)|library]] file, or another 'object' file. A simpler version that writes its output directly to memory is called the ''loader'', though [[loader (computing)|loading]] is typically considered a separate process.((Book: Last name: IBM Corporation , Title: IBM OS Linkage Editor and Loader , Year: 1972, http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/os/R21.0_Mar72/GC28-6538-9_OS_Linkage_Editor_and_Loader_Release_21_Jan72.pdf)) * [[list (abstract data type)|list]] - An [[abstract data type]] that represents a countable number of ordered [[value|values, where the same value may occur more than once. An instance of a list is a computer representation of the mathematical concept of a finite [[sequence (mathematics)|sequence]]; the (potentially) infinite analog of a list is a [[stream.((Book: Title: Structure and Interpretation of Computer Programs , First name: Harold, Last name: Abelson , First name: Gerald Jay, Last name: Sussman , Year: 1996 , [[Publisher]]: [[[[MIT Press]]]], Title: Structure and Interpretation of Computer Programs )){{rp|§3.5 Lists are a basic example of [[container|containers, as they contain other values. If the same value occurs multiple times, each occurrence is considered a distinct item. * [[loader (computing)|loader]] - The part of an [[operating system]] that is responsible for loading [[computer program|programs]] and [[Library (computing)|libraries]]. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution. Loading a program involves reading the contents of the [[executable|executable file]] containing the program instructions into memory, and then carrying out other required preparatory tasks to prepare the executable for running. Once loading is complete, the operating system starts the program by passing control to the loaded program code. * [[logic error]] - In [[computer programming, a [[Software bug|bug]] in a program that causes it to operate incorrectly, but not to terminate abnormally (or [[crash (computing)|crash]]). A logic error produces unintended or undesired output or other behaviour, although it may not immediately be recognized as such. * [[logic programming]] - A type of [[programming paradigm which is largely based on [[formal logic]]. Any program written in a logic [[programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include [[Prolog]], [[answer set programming]] (ASP), and [[Datalog]]. end ==M== * [[machine learning]] (ML) -- machine learning - The scientific study of [[algorithm|algorithms and [[statistical model]]s that [[computer systems]] use to perform a specific task without using explicit instructions, relying on patterns and [[inference]] instead. It is seen as a subset of [[artificial intelligence]]. Machine learning algorithms build a [[mathematical model]] based on sample data, known as "[[training data]]", in order to make predictions or decisions without being explicitly programmed to perform the task.{{refn|The definition "without being explicitly programmed" is often attributed to [[Arthur Samuel]], who coined the term "machine learning" in 1959, but the phrase is not found verbatim in this publication, and may be a [[paraphrase]] that appeared later. Confer "Paraphrasing Arthur Samuel (1959), the question is: How can computers learn to solve problems without being explicitly programmed?" in ((Title: Automated Design of Both the Topology and Sizing of Analog Electrical Circuits Using Genetic Programming|conference=Artificial Intelligence in Design '96, Last name: Koza, First name: John R., Last name: Bennett, First name: Forrest H., Last name: Andre|first3=David, Last name: Keane|first4=Martin A., Date: 1996, [[Publisher]]: [[Springer]], Dordrecht, pages 151–170, [[Language]]: [[English]], [[DOI]]: 10.1007/978-94-009-0279-4_9<ref>< Bishop, C. M. (2006), Pattern Recognition and Machine Learning, [[Springer]],, [[ISBN]]: 978-0-387-31073-2)) * [[machine vision]] (MV) -- machine vision - The technology and methods used to provide imaging-based automatic inspection and analysis for such applications as automatic inspection, [[process control]], and robot guidance, usually in industry. Machine vision refers to many technologies, software and hardware products, integrated systems, actions, methods and expertise. Machine vision as a [[systems engineering]] discipline can be considered distinct from [[computer vision]], a form of [[computer science. It attempts to integrate existing technologies in new ways and apply them to solve real world problems. The term is the prevalent one for these functions in industrial automation environments but is also used for these functions in other environments such as security and vehicle guidance. * [[mathematical logic]] - A subfield of [[mathematics]] exploring the applications of formal [[logic]] to mathematics. It bears close connections to [[metamathematics]], the [[foundations of mathematics]], and [[theoretical computer science]].<ref>Undergraduate texts include Boolos, Burgess, and Jeffrey [[#CITEREFBoolosBurgessJeffrey2002|(2002)]], [[Herbert Enderton|Enderton]] [[#CITEREFEnderton2001|(2001)]], and Mendelson [[#CITEREFMendelson1997|(1997)]]. A classic graduate text by Shoenfield [[#CITEREFShoenfield2001|(2001)]] first appeared in 1967.)) The unifying themes in mathematical logic include the study of the expressive power of [[formal system]]s and the [[Deductive reasoning|deductive]] power of formal [[Mathematical proof|proof]] systems. * [[matrix (mathematics)|matrix]] - In [[mathematics]], a matrix, (plural matrices), is a [[rectangle|rectangular]] ''[[wikt:array|array]]''<ref>Equivalently, ''[[wikt:table|table]]''.)) (see [[irregular matrix]]) of [[number]]s, [[symbol (formal)|symbol]]s, or [[expression (mathematics)|expression]]s, arranged in ''[[wikt:row|row]]s'' and ''[[wikt:column|column]]s''.<ref>{{harvtxt|Anton|1987|p=23))<ref>{{harvtxt|Beauregard|Fraleigh|1973|p=56)) * [[computer data storage|memory]] - Computer data storage, often called storage, is a technology consisting of [[computer]] components and [[Data storage device|recording media]] that are used to retain digital [[data (computing)|data]]. It is a core function and fundamental component of computers.(("Patterson">Book: Title: Computer Organization and Design: The Hardware/Software Interface , Last name: Patterson , First name: David A., Last name: Hennessy , First name: John L., Date: 2005 , [[Publisher]]: [[Morgan Kaufmann Publishers]] , [[ISBN]]: 1-55860-604-1, Edition: 3rd , Location: [[Amsterdam]], oclc=56213091, registration, https://archive.org/details/isbn_9781558606043 )){{rp|15–16 * [[merge sort]] - Also '''mergesort'''. - An efficient, general-purpose, [[comparison sort|comparison-based]] [[sorting algorithm]]. Most implementations produce a [[Sorting algorithm#Stability|stable sort]], which means that the order of equal elements is the same in the input and output. Merge sort is a [[divide and conquer algorithm]] that was invented by [[John von Neumann]] in 1945.<ref>{{Harvtxt|Knuth|1998|p=158)) A detailed description and analysis of bottom-up mergesort appeared in a report by [[Herman Goldstine|Goldstine]] and [[John von Neumann|von Neumann]] as early as 1948.<ref>{{cite conference , Title: A meticulous analysis of mergesort programs, Date: March 1997 , First name: Jyrki, Last name: Katajainen , First name: Jesper Larsson, Last name: Träff, conference=Italian Conference on Algorithms and Complexity , Location: Rome, book-Title: Proceedings of the 3rd Italian Conference on Algorithms and Complexity , pages 217–228 , [[DOI]]: 10.1007/3-540-62592-5_74 , cite seerx: 10.1.1.86.3154 , http://hjemmesider.diku.dk/~jyrki/Paper/CIAC97.pdf, ref=harv)) * [[method (computer programming)|method]] - In [[object-oriented programming (OOP), a [[procedure associated with a [[Message passing|message]] and an [[object. An object consists of data and behavior. The data and behavior comprise an interface, which specifies how the object may be utilized by any of various consumers(("consumerdef001a">Consumers of an object may consist of various kinds of elements, such as other programs, remote computer systems, or computer programmers who wish to utilize the object as part of their own programs.)) of the object. * [[software development process|methodology]] - In [[software engineering]], a software development process is the process of dividing [[software development]] work into distinct phases to improve [[Software design|design]], [[Software product management|product management]], and [[Software project management|project management]]. It is also known as a software development life cycle (SDLC). The methodology may include the pre-definition of specific [[deliverable]]s and artifacts that are created and completed by a project team to develop or maintain an application.<ref>Centers for Medicare & Medicaid Services (CMS) Office of Information Service (2008). Selecting a development approach. Webarticle. United States Department of Health and Human Services (HHS). Re-validated: March 27, 2008. Retrieved 27 Oct 2008.)) * [[modem]] - Portmanteau of '''modulator-demodulator'''. - A [[Computer hardware|hardware]] device that converts data into a format suitable for a [[transmission medium]] so that it can be transmitted from one computer to another (historically along telephone wires). A modem [[Modulation#Digital modulation methods|modulates]] one or more [[carrier wave]] signals to encode [[digital information]] for transmission and [[Demodulation|demodulates]] signals to decode the transmitted information. The goal is to produce a [[Signal (electronics)|signal]] that can be transmitted easily and decoded reliably to reproduce the original digital data. Modems can be used with almost any means of transmitting analog signals from [[light-emitting diode]]s to [[radio]]. A common type of modem is one that turns the [[digital data]] of a [[computer]] into modulated [[electrical signal]] for transmission over [[telephone line]]s and demodulated by another modem at the receiver side to recover the digital data. end ==N== * [[natural language processing]] (NLP) - A subfield of [[linguistics]], [[computer science, [[Information engineering (field)|information engineering]], and [[artificial intelligence]] concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of [[natural language]] data. Challenges in natural language processing frequently involve [[speech recognition]], [[natural language understanding]], and [[natural language generation]]. * [[node (computer science)|node]] - * [[number theory]] - A branch of [[pure mathematics]] devoted primarily to the study of the [[integer]]s and [[arithmetic function|integer-valued functions]]. * [[numerical analysis]] - The study of [[algorithm|algorithms that use numerical [[approximation]] (as opposed to [[symbolic computation|symbolic manipulations]]) for the problems of [[mathematical analysis]] (as distinguished from [[discrete mathematics]]). * [[numerical method]] - In [[numerical analysis]], a numerical method is a mathematical tool designed to solve numerical problems. The implementation of a numerical method with an appropriate convergence check in a programming language is called a numerical algorithm. end ==O== * [[object (computer science)|object]] - An object can be a [[variable (computer science)|variable]], a [[data structure]], a [[subroutine|function]], or a [[Method (computer programming)|method]], and as such, is a [[Value (computer science)|value]] in [[Memory address|memory]] referenced by an [[identifier (computer programming)|identifier]]. In the [[class-based programming|class-based]] [[object-oriented programming]] paradigm, ''object'' refers to a particular [[Instance (computer science)|instance]] of a [[class (computer science)|class]], where the object can be a combination of variables, functions, and data structures. In [[Relational model|relational]] [[database]] management, an object can be a table or column, or an association between data and a database entity (such as relating a person's age to a specific person).((Oppel>, Book: , First name: Andy , Last name: Oppel , Title: SQL Demystified , [[Publisher]]: McGraw Hill , Year: 2005| page=7 , [[ISBN]]: 0-07-226224-9)) * [[object code]] - Also '''object module'''. - The product of a [[compiler.((http://whatis.techtarget.com/definition/0,,sid9_gci211824,00.html, Title: Compiler, [[Publisher]]: TechTarget|quote=Traditionally, the output of the compilation has been called object code or sometimes an object module., Access date: 1 September 2011)) In a general sense object code is a sequence of [[statement (computer science)|statements]] or instructions in a computer language,<ref>((Last name: Aho, First name: Alfred V.|authorlink1=Alfred Aho, Last name: Sethi, First name: Ravi|authorlink2=Ravi Sethi, Last name: Ullman|first3=Jeffrey D.|authorlink3=Jeffrey Ullman, Title: Compilers: principles, techniques, and tools|series=Computer Science, Year: 1986, [[Publisher]]: Mark S. Dalton, [[ISBN]]: 0-201-10194-7, page: 704|chapter=10 Code Optimization)) usually a [[machine code]] language (i.e., [[binary file|binary]]) or an intermediate language such as [[register transfer language]] (RTL). The term indicates that the code is the [[goal]] or result of the compiling process, with some early sources referring to source code as a "subject program." * [[object-oriented analysis and design]] (OOAD) -- object-oriented analysis and design - A technical approach for analyzing and designing an application, system, or business by applying [[object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality. * [[object-oriented programming]] (OOP) -- object-oriented programming - A [[programming paradigm based on the concept of "[[Object (computer science)|objects]]", which can contain [[data]], in the form of [[field|fields (often known as ''attributes'' or ''properties''), and code, in the form of [[procedure|procedures (often known as ''methods''). A feature of objects is an object's procedures that can access and often modify the data fields of the object with which they are associated (objects have a notion of "[[this (computer programming)|this]]" or "self"). In OOP, computer programs are designed by making them out of objects that interact with one another.<ref>, [[Journal]]: , Last name: Kindler, First name: E. , last2 = Krivy, first2 = I. , title = Object-Oriented Simulation of systems with sophisticated control , publisher = International Journal of General Systems , [[Year]]: 2011, pages 313–343))<ref>((Last name: Lewis, First name: John, Last name: Loftus, First name: William, Title: Java Software Solutions Foundations of Programming Design 6th ed, [[Publisher]]: [[[[Pearson]]]] Education Inc., Year: 2008, [[ISBN]]: 978-0-321-53205-3, section 1.6 "Object-Oriented Programming")) OOP languages are diverse, but the most popular ones are [[Class-based programming|class-based]], meaning that objects are [[instance (computer science)|instances]] of [[class|classes, which also determine their [[data type|types]]. * [[open-source software]] (OSS) -- open-source software - A type of [[computer software in which [[source code is released under a [[Open-source license|license]] in which the [[copyright]] holder grants users the rights to study, change, and [[Software distribution|distribute the software]] to anyone and for any purpose.<ref>((author=St. Laurent, Andrew M., Title: Understanding Open Source and Free Software Licensing, [[Publisher]]: O'Reilly Media, Year: 2008, [[ISBN]]: 9780596553951, page: 4, https://books.google.com/books?id=04jG7TTLujoC&pg=PA4)) Open-source software may be developed in a [[Open-source model|collaborative public manner]]. Open-source software is a prominent example of [[open collaboration]].(("Open Collaboration", Journal: Last name: Levine, First name: Sheen S., Last name: Prietula, First name: Michael J., Date: 2013-12-30, Title: Open Collaboration for Innovation: Principles and Performance, [[Journal]]: Organization Science, Volume: 25, Issue: 5, pages 1414–1433, [[DOI]]: 10.1287/orsc.2013.0872, [[ISSN]]: 1047-7039|arxiv=1406.7541)) * [[operating system]] (OS) -- operating system - [[System software]] that manages [[computer hardware]], [[software resources, and provides common [[daemon|services for [[computer program|computer programs. * [[optical fiber]] - A flexible, [[transparency and translucency|transparent]] [[fiber]] made by [[Drawing (manufacturing)|drawing]] [[glass]] ([[silica]]) or plastic to a diameter slightly thicker than that of a [[Hair's breadth|human hair]].((Title: Optical Fiber, http://www.thefoa.org/tech/ref/basic/fiber.html|website=www.thefoa.org , [[Publisher]]: [[The Fiber Optic Association]] , Access date: 17 April 2015)) Optical fibers are used most often as a means to transmit light between the two ends of the fiber and find wide usage in [[fiber-optic communication]]s, where they permit transmission over longer distances and at higher [[Bandwidth (computing)|bandwidths]] (data rates) than electrical cables. Fibers are used instead of [[metal]] wires because signals travel along them with less [[Attenuation|loss]]; in addition, fibers are immune to [[electromagnetic interference]], a problem from which metal wires suffer.<ref>((ref=Senior, Last name: Senior, First name: John M., Last name: Jamro, First name: M. Yousif, Title: Optical fiber communications: principles and practice, Date: 2009, [[Publisher]]: [[Pearson]] Education, [[ISBN]]: 978-0130326812, pages 7–9)) end ==P== * [[pair programming]] - An [[agile software development]] technique in which two [[computer programmer|programmers]] work together at one workstation. One, the ''driver'', writes [[Source code|code]] while the other, the ''observer'' or ''navigator'',<ref>{{cite conference, Last name: Williams , First name: Laurie, [[Author]]: Laurie Williams (software engineer) , Title: Integrating pair programming into a software development process , pages 27–36 , [[DOI]]: 10.1109/CSEE.2001.913816, conference=14th Conference on Software Engineering Education and Training, Date: February 19–20, 2001 , Location: Charlotte , [[ISBN]]: 0-7695-1059-0, quote=One of the programmers, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects, and also thinks strategically about the direction of the work.)) [[code review|reviews]] each line of code as it is typed in. The two programmers switch roles frequently. * [[parallel computing]] - A type of [[computation in which many calculations or the execution of [[Process (computing)|process]]es are carried out simultaneously.<ref>((Last name: Gottlieb, First name: Allan, Title: Highly parallel computing, Year: 1989, [[Publisher]]: Benjamin/Cummings, Location: Redwood City, Calif., [[ISBN]]: 978-0-8053-0177-9, http://dl.acm.org/citation.cfm?id=160438, [[Author]]: Almasi, George S.)) Large problems can often be divided into smaller ones, which can then be solved at the same time. There are several different forms of parallel computing: [[Bit-level parallelism|bit-level]], [[Instruction-level parallelism|instruction-level]], [[Data parallelism|data]], and [[task parallelism]]. * [[parameter (computer programming)|parameter]] - Also '''formal argument'''. - In [[computer programming, a special kind of [[Variable (programming)|variable]], used in a [[subroutine to refer to one of the pieces of data provided as input to the subroutine.{{efn|1=In this article, the term "subroutine" refers to any subroutine-like construct, which have different names and slightly different meanings depending on the [[programming language being discussed. These pieces of data are the values<ref>((Last name: Prata, First name: Stephen, Title: C primer plus, Date: 2004, [[Publisher]]: Sams, [[ISBN]]: 978-0-672-32696-7, pages 276–277, Edition: 5th))((Title: Working Draft, Standard for Programming Language C++, http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf|website=www.open-std.org, Access date: 1 January 2018))(([[Web citation]]: Last name: Gordon, First name: Aaron, Title: Subprograms and Parameter Passing, http://rowdysites.msudenver.edu/~gordona/cs3210/lects/lect10.html|website=rowdysites.msudenver.edu/~gordona, Access date: 1 January 2018)) of the arguments (often called ''actual arguments'' or ''actual parameters'') with which the subroutine is going to be called/invoked. An ordered list of parameters is usually included in the [[function signature|definition of a subroutine]], so that, each time the subroutine is called, its arguments for that call are evaluated, and the resulting values can be assigned to the corresponding parameters. * [[peripheral]] - Any auxiliary or ancillary device connected to or integrated within a computer system and used to send information to or retrieve information from the computer. An ''input device'' sends data or instructions to the computer; an ''output device'' provides output from the computer to the user; and an ''input/output device'' performs both functions. * [[pointer (computer programming)|pointer]] - * [[postcondition]] - In [[computer programming, a condition or [[Predicate (mathematics)|predicate]] that must always be true just after the execution of some section of code or after an operation in a [[formal specification]]. Postconditions are sometimes tested using [[assertion (computing)|assertions]] within the code itself. Often, postconditions are simply included in the documentation of the affected section of code. * [[precondition]] - In [[computer programming, a condition or [[Predicate (mathematics)|predicate]] that must always be true just prior to the execution of some section of [[code]] or before an operation in a [[formal specification]]. If a precondition is violated, the effect of the section of [[code]] becomes undefined and thus may or may not carry out its intended work. [[Computer security|Security]] problems can arise due to incorrect preconditions. * [[primary storage]] - * [[primitive data type]] - * [[priority queue]] - An [[abstract data type]] which is like a regular [[queue or [[stack data structure, but where additionally each element has a "priority" associated with it. In a priority queue, an element with high priority is served before an element with low priority. In some implementations, if two elements have the same priority, they are served according to the order in which they were enqueued, while in other implementations, ordering of elements with the same priority is undefined. * [[procedural programming]] - * [[procedure (computer science)|procedure]] - * [[program lifecycle phase]] - Program lifecycle phases are the stages a [[computer program undergoes, from initial creation to deployment and [[Execution (computing)|execution]]. The phases are edit time, compile time, link time, distribution time, installation time, load time, and run time. * [[programming language]] - A [[formal language]], which comprises a [[Instruction set|set of instructions]] that produce various kinds of [[Input/output|output]]. Programming languages are used in [[computer programming to implement [[algorithm|algorithms. * [[programming language implementation]] - * [[programming language theory]] - * [[prolog]] - * [[Python (programming language)|Python]] - end ==Q== * [[quantum computing]] - The use of [[quantum mechanics|quantum-mechanical]] phenomena such as [[quantum superposition|superposition]] and [[quantum entanglement|entanglement]] to perform [[computation. A quantum computer is used to perform such computation, which can be implemented theoretically or physically.((2018Report>, Book:, , Title: Quantum Computing : Progress and Prospects (2018), page= I-5, [[Publisher]]: National Academies Press, [[Editor]]: Grumbling, editor-first1 = Emily, [[Editor]]: Horowitz, editor-first2 = Mark, [[Author]]: The National Academies of Sciences, Engineering, and Medicine, Location: Washington, DC, year=2019, doi=10.17226/25196, [[ISBN]]: 978-0-309-47969-1, oclc=1081001288 )){{rp|I-5 * [[queue (abstract data type)|queue]] - A [[collection in which the entities in the collection are kept in order and the principal (or only) operations on the collection are the addition of entities to the rear terminal position, known as ''enqueue'', and removal of entities from the front terminal position, known as ''dequeue''. * [[quicksort]] - Also '''partition-exchange sort'''. - An [[Algorithm efficiency|efficient]] [[sorting algorithm]] which serves as a systematic method for placing the elements of a [[random access]] [[Computer file|file]] or an [[Array data structure|array]] in order. end ==R== * [[r (programming language)|R programming language]] - * [[radix]] - Also '''base'''. - In [[numeral system|digital numeral systems]], the number of unique [[numerical digit|digits]], including the digit zero, used to represent numbers in a [[positional notation|positional]] numeral system. For example, in the decimal/denary system (the most common system in use today) the radix (base number) is ten, because it uses the ten digits from 0 through 9, and all other numbers are uniquely specified by positional combinations of these ten base digits; in the [[binary number|binary system that is the standard in [[computing, the radix is two, because it uses only two digits, 0 and 1, to uniquely specify each number. * [[record (computer science)|record]] - * [[recursion]] - Occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from [[linguistics]] to [[logic]]. The most common application of recursion is in [[mathematics]] and [[computer science, where a [[function (mathematics)|function]] being defined is applied within its own definition. While this apparently defines an infinite number of instances (function values), it is often done in such a way that no infinite loop or infinite chain of references can occur. * [[reference (computer science)|reference]] - * [[reference counting]] - A programming technique of storing the number of [[reference|references, [[pointer|pointers, or [[handle|handles to a resource, such as an object, a block of memory, disk space, and others. In [[garbage collection (computer science)|garbage collection]] algorithms, reference counts may be used to deallocate objects which are no longer needed. * [[relational database]] - * [[reliability engineering]] - A sub-discipline of [[systems engineering]] that emphasizes dependability in the [[product lifecycle management|lifecycle management]] of a product. Reliability describes the ability of a system or component to function under stated conditions for a specified period of time.<ref>Institute of Electrical and Electronics Engineers (1990) IEEE Standard Computer Dictionary: A Compilation of IEEE Standard Computer Glossaries. New York, NY, [[ISBN]]: 1-55937-079-3)) Reliability is closely related to [[availability]], which is typically described as the ability of a component or system to function at a specified moment or interval of time. * [[regression testing]] - (rarely ''non-regression testing''((Book: , Last name: Pezzè , First name: Mauro, Last name: Young , First name: Michal , Title: Software testing and analysis: process, principles, and techniques, Date: 2008 , [[Publisher]]: [[Wiley]], https://www.google.com/search?q=Mauro+%22non-regression%22+%22regression+testing%22, quote=Testing activities that focus on regression problems are called (non) regression testing. Usually "non" is omitted))) is re-running [[functional testing|functional]] and [[non-functional testing|non-functional tests]] to ensure that previously developed and tested software still performs after a change.<ref>((Last name: Basu, First name: Anirban|, Title: Software Quality Assurance, Testing and Metrics| year=2015, [[Publisher]]: PHI Learning| isbn=978-81-203-5068-7| https://books.google.de/books?id=aNTiCQAAQBAJ&pg=PA150)) If not, that would be called a ''[[software regression|regression]]''. Changes that may require regression testing include [[software bug|bug]] fixes, software enhancements, [[configuration file|configuration]] changes, and even substitution of [[electronic component]]s.<ref>[[National Academies of Sciences, Engineering, and Medicine|National Research Council]] Committee on Aging Avionics in Military Aircraft: [https://www.nap.edu/catalog/10108/aging-avionics-in-military-aircraft ''Aging Avionics in Military Aircraft'']. The National Academies Press, 2001, page 2: ″Each technology-refresh cycle requires regression testing.″)) As regression test suites tend to grow with each found defect, test automation is frequently involved. Sometimes a [[change impact analysis]] is performed to determine an appropriate subset of tests (''non-regression analysis''((Book: , Last name: Boulanger , First name: Jean-Louis , Title: CENELEC 50128 and IEC 62279 Standards, Date: 2015 , [[Publisher]]: [[[[Wiley]]]] , [[ISBN]]: 978-1119122487, https://books.google.de/books?id=IbZNCAAAQBAJ&pg=PA149))). * [[requirements analysis]] - In [[systems engineering]] and [[software engineering]], requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting [[requirement]]s of the various [[Stakeholder (corporate)|stakeholders]], ''analyzing, documenting, validating and managing'' software or system requirements.<ref>((isbn=9780471972082, Title: Requirements Engineering: Processes and Techniques, https://archive.org/details/requirementsengi1998koto|url-access=registration, Last name: Kotonya, First name: Gerald, Last name: Sommerville, First name: Ian, Year: 1998, Location: Chichester, UK, [[Publisher]]: John [[Wiley]] and Sons)) * [[robotics]] - An interdisciplinary branch of [[List of engineering branches|engineering]] and [[Branch of science|science]] that includes [[mechanical engineering]], [[electronic engineering]], [[Information engineering (field)|information engineering]], [[computer science, and others. Robotics involves design, construction, operation, and use of [[robot]]s, as well as [[computer system]]s for their perception, control, [[sensory feedback]], and [[information processing]]. The goal of robotics is to design intelligent machines that can help and assist humans in their day-to-day lives and keep everyone safe. * [[round-off error]] - Also '''rounding error'''.((Title: Numerical Computation 1: Methods, Software, and Analysis, First name: Christoph W. , Last name: Ueberhuber , [[Publisher]]: [[[[Springer]]]], Date: 1997 , [[ISBN]]: 978-3-54062058-7, https://books.google.com/books?id=JH9I7EJh3JUC&pg=PA139 , pages 139–146)) - The difference between the result produced by a given [[algorithm using exact arithmetic and the result produced by the same algorithm using finite-precision, rounded arithmetic.(("Forrester_2018">Book: Title: Math/Comp241 Numerical Methods (lecture notes), First name: Dick , Last name: Forrester , [[Publisher]]: [[Dickinson College]], Date: 2018)) Rounding errors are due to inexactness in the representation of real numbers and the arithmetic operations done with them. This is a form of [[quantization error]].((Title: Information Technology in Theory, [[Author]]: Pelin , Aksoy, [[Author]]: Laura , DeNardis , [[Publisher]]: Cengage Learning, Date: 2007 , [[ISBN]]: 978-1-42390140-2, Page: 134, https://books.google.com/books?id=KGS5IcixljwC&pg=PA134)) When using approximation [[equation]]s or algorithms, especially when using finitely many digits to represent real numbers (which in theory have infinitely many digits), one of the goals of [[numerical analysis]] is to [[error analysis (mathematics)|estimate]] computation errors.((Title: A First Course in Numerical Analysis, Edition: 2nd, series=Dover Books on Mathematics, [[Author]]: Anthony , Ralston, [[Author]]: Philip , Rabinowitz , [[Publisher]]: Courier Dover Publications, Date: 2012 , [[ISBN]]: 978-0-48614029-2, https://books.google.com/books?id=TVq8AQAAQBAJ&pg=PA2 , pages 2–4)) Computation errors, also called [[numerical error]]s, include both [[truncation error]]s and roundoff errors.((Title: Introduction to Numerical Analysis Using MATLAB, First name: Rizwan , Last name: Butt , [[Publisher]]: Jones & Bartlett Learning, Date: 2009 , [[ISBN]]: 978-0-76377376-2 , pages 11–18, https://books.google.com/books?id=QWub-UVGxqkC&pg=PA11)) * [[router (computing)|router]] - A [[networking device]] that forwards [[data packet]]s between [[computer network]]s. Routers perform the traffic directing functions on the [[Internet]]. Data sent through the internet, such as a [[web page]] or [[email]], is in the form of data packets. A packet is typically [[Packet forwarding|forwarded]] from one router to another router through the networks that constitute an [[internetwork]] (e.g. the Internet) until it reaches its destination [[Node (networking)|node]].((http://www.tcpipguide.com/free/t_OverviewOfKeyRoutingProtocolConceptsArchitecturesP.htm, Title: Overview Of Key Routing Protocol Concepts: Architectures, Protocol Types, Algorithms and Metrics, [[Publisher]]: Tcpipguide.com, Access date: 15 January 2011, , https://web.archive.org/web/20101220111345/http://tcpipguide.com/free/t_OverviewOfKeyRoutingProtocolConceptsArchitecturesP.htm|archivedate=20 December 2010)) * [[routing table]] - * [[run time (program lifecycle phase)|run time]] - * [[run time (program lifecycle phase)|run time error]] - end ==S== * [[search algorithm]] - Any [[algorithm which solves the [[search problem]], namely, to retrieve information stored within some data structure, or calculated in the [[Feasible region|search space]] of a [[problem domain]], either with [[Continuous or discrete variable|discrete or continuous values]]. * [[auxiliary memory|secondary storage]] - Also known as ''external memory'' or ''auxiliary storage'', differs from primary storage in that it is not directly accessible by the CPU. The computer usually uses its [[input/output]] channels to access secondary storage and transfer the desired data to primary storage. Secondary storage is non-volatile (retaining data when power is shut off). Modern computer systems typically have two orders of magnitude more secondary storage than primary storage because secondary storage is less expensive. * [[selection sort]] - Is an [[in-place algorithm|in-place]] [[comparison sort|comparison]] [[sorting algorithm]]. It has an [[Big O notation|O]](''n''<sup>2</sup>) [[time complexity]], which makes it inefficient on large lists, and generally performs worse than the similar [[insertion sort]]. Selection sort is noted for its simplicity and has performance advantages over more complicated algorithms in certain situations, particularly where [[auxiliary memory]] is limited. * [[semantics (computer science)|semantics]] - In [[programming language theory]], semantics is the field concerned with the rigorous mathematical study of the meaning of [[programming language]]s. It does so by evaluating the meaning of [[programming language syntax|syntactically]] valid [[String (computer science)|strings]] defined by a specific programming language, showing the computation involved. In such a case that the evaluation would be of syntactically invalid strings, the result would be non-computation. Semantics describes the processes a computer follows when executing a program in that specific language. This can be shown by describing the relationship between the input and output of a program, or an explanation of how the program will be executed on a certain [[computer platform|platform]], hence creating a [[model of computation]]. * [[sequence]] - In [[mathematics]], a '''sequence''' is an enumerated collection of objects in which repetitions are allowed and [[order theory|order]] does matter. Like a [[Set (mathematics)|set]], it contains [[Element (mathematics)|members]] (also called ''elements'', or ''terms''). The number of elements (possibly infinite) is called the ''length'' of the sequence. Unlike a set, the same elements can appear multiple times at different positions in a sequence, and order does matter. Formally, a sequence can be defined as a [[function (mathematics)|function]] whose domain is either the set of the [[natural number]]s (for infinite sequences) or the set of the first ''n'' natural numbers (for a sequence of finite length ''n''). The position of an element in a sequence is its ''rank'' or ''index''; it is the natural number for which the element is the image. The first element has index 0 or 1, depending on the context or a specific convention. When a symbol is used to denote a sequence, the ''n''th element of the sequence is denoted by this symbol with ''n'' as subscript; for example, the ''n''th element of the [[Fibonacci sequence]] ''F'' is generally denoted ''F''<sub>''n''</sub>. For example, (M, A, R, Y) is a sequence of letters with the letter 'M' first and 'Y' last. This sequence differs from (A, R, M, Y). Also, the sequence (1, 1, 2, 3, 5, 8), which contains the number 1 at two different positions, is a valid sequence. Sequences can be ''[[finite set|finite]]'', as in these examples, or ''[[Infinite set|infinite]]'', such as the sequence of all [[even and odd numbers|even]] [[positive integer]]s (2, 4, 6, ...). In [[computing]] and [[computer science]], finite sequences are sometimes called [[string (computer science)|strings]], [[word (mathematics)|words]] or [[list (computer science)|lists]], the different names commonly corresponding to different ways to represent them in [[computer memory]]; infinite sequences are called [[stream (computing)|streams]]. The empty sequence&nbsp;(&nbsp;) is included in most notions of sequence, but may be excluded depending on the context. * [[serializability]] - In [[concurrency control]] of [[database]]s,((Bernstein87>[[Phil Bernstein|Philip A. Bernstein]], Vassos Hadzilacos, Nathan Goodman (1987): [http://research.microsoft.com/en-us/people/philbe/ccontrol.aspx ''Concurrency Control and Recovery in Database Systems''] (free PDF download), Addison Wesley Publishing Company,, [[ISBN]]: 0-201-10715-5))((Weikum01>[[Gerhard Weikum]], Gottfried Vossen (2001): [http://www.[[Elsevier]].com/wps/find/bookdescription.cws_home/677937/description#description ''Transactional Information Systems''], [[Elsevier]], [[ISBN]]: 1-55860-508-8)) [[transaction processing]] (transaction management), and various [[Database transaction|transactional]] applications (e.g., [[transactional memory]]((Herlihy1993>[[Maurice Herlihy]] and J. Eliot B. Moss. ''Transactional memory: architectural support for lock-free data structures.'' Proceedings of the 20th annual international symposium on Computer architecture (ISCA '93). Volume 21, Issue 2, May 1993.)) and [[software transactional memory]]), both centralized and [[Distributed computing|distributed]], a transaction [[Schedule (computer science)|schedule]] is '''serializable''' if its outcome (e.g., the resulting database state) is equal to the outcome of its transactions executed serially, i.e. without overlapping in time. Transactions are normally executed concurrently (they overlap), since this is the most efficient way. Serializability is the major correctness criterion for concurrent transactions' executions{{Citation needed, Date: February 2018. It is considered the highest level of [[isolation (computer science)|isolation]] between [[Database transaction|transactions]], and plays an essential role in [[concurrency control]]. As such it is supported in all general purpose database systems. ''[[Two-phase locking|Strong strict two-phase locking]]'' (SS2PL) is a popular serializability mechanism utilized in most of the database systems (in various variants) since their early days in the 1970s. * [[serialization]] - Is the process of translating [[data structure]]s or [[object (computer science)|object]] state into a format that can be stored (for example, in a [[computer file|file]] or memory [[Data buffer|buffer]]) or transmitted (for example, across a [[computer network|network]] connection link) and reconstructed later (possibly in a different computer environment).<ref>{{ cite web , author = Marshall Cline , url = http://www.parashift.com/c++-faq-lite/serialize-overview.html , title = C++ FAQ: "What's this "serialization" thing all about?" , archive-url = https://web.archive.org/web/20150405013606/http://isocpp.org/wiki/faq/serialization , archive-date = 2015-04-05 , quote = It lets you take an object or group of objects, put them on a disk or send them through a wire or wireless transport mechanism, then later, perhaps on another computer, reverse the process, resurrecting the original object(s). The basic mechanisms are to flatten object(s) into a one-dimensional stream of bits, and to turn that stream of bits back into the original object(s).)) When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object. For many complex objects, such as those that make extensive use of [[reference (computer science)|references]], this process is not straightforward. Serialization of object-oriented [[object (computer science)|object]]s does not include any of their associated [[Method (computer science)|methods]] with which they were previously linked. This process of serializing an object is also called [[Marshalling (computer science)|marshalling]] an object in some situations.[http://www.ruby-doc.org/core/classes/Marshal.html][http://caml.inria.fr/pub/docs/manual-ocaml/libref/Marshal.html] The opposite operation, extracting a data structure from a series of bytes, is '''deserialization''', (also called '''unserialization''' or '''[[unmarshalling]]'''). * [[service level agreement]] - (SLA), is a commitment between a service provider and a client. Particular aspects of the service&nbsp;– quality, availability, responsibilities&nbsp;– are agreed between the service provider and the service user.(("KearneyServ11">{{cite book, https://books.google.com/books?id=z306GUfFL5gC, Chapter: The SLA Model , Title: Service Level Agreements for Cloud Computing, [[Author]]: Kearney, K.T. , [[Author]]: Torelli, F., [[Editor]]: Wieder, P., [[Editor]]: Butler, J.M., [[Editor]]: Theilmann, W., [[Editor]]: Yahyapour, R. , [[Publisher]]: [[Springer]] Science+Business Media, LLC , pages 43–68 , Year: 2011 , [[ISBN]]: 9781461416142)) The most common component of an SLA is that the services should be provided to the customer as agreed upon in the contract. As an example, [[Internet service provider]]s and [[Telephone company|telcos]] will commonly include service level agreements within the terms of their contracts with customers to define the level(s) of service being sold in plain language terms. In this case the SLA will typically have a technical definition in ''[[mean time between failures]]'' (MTBF), ''[[mean time to repair]]'' or ''[[mean time to recovery]]'' (MTTR); identifying which party is responsible for reporting faults or paying fees; responsibility for various data rates; [[throughput]]; [[jitter]]; or similar measurable details. * [[set (abstract data type)|set]] - Is an [[abstract data type]] that can store unique values, without any particular [[sequence|order]]. It is a computer implementation of the [[mathematics|mathematical]] concept of a [[finite set]]. Unlike most other [[collection (abstract data type)|collection]] types, rather than retrieving a specific element from a set, one typically tests a value for membership in a set. {{term|'''soft computing''' - * [[software]] - Computer software, or simply software, is a collection of [[data (computing)|data]] or [[computer]] instructions that tell the computer how to work. This is in contrast to [[Computer hardware|physical hardware]], from which the system is built and actually performs the work. In [[computer science]] and [[software engineering]], computer software is all [[information]] processed by [[computer system]]s, [[Computer program|program]]s and [[data]]. Computer software includes [[computer program]]s, [[Library (computing)|libraries]] and related non-executable [[Data (computing)|data]], such as [[Software documentation|online documentation]] or [[digital media]]. Computer hardware and software require each other and neither can be realistically used on its own. * [[software agent]] - Is a computer program that acts for a user or other program in a relationship of agency, which derives from the Latin ''agere'' (to do): an agreement to act on one's behalf. Such "action on behalf of" implies the [[authority]] to decide which, if any, action is appropriate.<ref>, [[Journal]]: , last1 = Nwana , first1 = H.&nbsp;S. , year = 1996 , title = Software Agents: An Overview , volume = 21 , number = 3 , pages = 205–244 , journal = Knowledge Engineering Review , doi=10.1017/s026988890000789x , citeseerx = 10.1.1.50.660 ))((Book: , last1 = Schermer , first1 = B.&nbsp;W. , year = 2007 , title = Software agents, surveillance, and the right to privacy: A legislative framework for agent-enabled surveillance , volume = 21 , number = 3 , pages = 140, 205–244 , publisher = Leiden University Press , format = paperback , isbn = 978-0-596-00712-6 , accessdate = 2012-10-30 , url = https://openaccess.leidenuniv.nl/handle/1887/11951 , hdl = 1887/11951)) Agents are colloquially known as ''[[Bot (disambiguation)|bots]]'', from ''[[robot]]''. They may be embodied, as when execution is paired with a robot body, or as software such as a chatbot executing on a phone (e.g. [[Siri]]) or other computing device. Software agents may be autonomous or work together with other agents or people. Software agents interacting with people (e.g. [[chatbots]], [[human-robot interaction]] environments) may possess human-like qualities such as [[natural language understanding]] and speech, personality or embody humanoid form (see [[Asimo]]). * [[software construction]] - Is a [[software engineering]] discipline. It is the detailed creation of working meaningful [[software]] through a combination of [[#Coding|coding]], [[Software verification|verification]], [[unit testing]], [[integration testing]], and [[debugging]]. It is linked to all the other [[software engineering]] disciplines, most strongly to [[software design]] and [[software testing]].(("SWEBOK">[[Software Engineering Body of Knowledge|SWEBOK]] , Book:, editor=Pierre Bourque, [[Editor]]: Robert Dupuis, [[Editor]]: Alain Abran, [[Editor]]: James W. Moore, title = Guide to the Software Engineering Body of Knowledge, publisher = [[IEEE Computer Society]], [[Year]]: 2004, chapter = Chapter 4: Software Construction, pages 4–1 – 4–5, isbn = 0-7695-2330-7, url = http://www.computer.org/portal/web/swebok/html/ch4#Ref2)) * [[software deployment]] - defn=Is all of the activities that make a [[software system]] available for use.<ref>[[Roger S. Pressman]] Software engineering: a practitioner's approach (eighth edition))) * [[software design]] - defn=Is the process by which an [[Agency (philosophy)|agent]] creates a specification of a [[Artifact (software development)|software artifact]], intended to accomplish [[goal]]s, using a set of primitive components and subject to [[Constraint (mathematics)|constraint]]s.<ref>Ralph, P. and Wand, Y. (2009). A proposal for a formal definition of the design concept. In Lyytinen, K., Loucopoulos, P., [[John Mylopoulos|Mylopoulos, J.]], and Robinson, W., editors, Design Requirements Workshop (LNBIP 14), pp. 103–136. [[Springer]]-Verlag, p. 109 {{DOI|10.1007/978-3-540-92966-6_6.)) Software design may refer to either "all the activity involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems" or "the activity following [[Software requirements|requirements]] specification and before [[Computer programming|programming]], as ... [in] a stylized software engineering process."((Last name: Freeman, First name: Peter, [[Author]]: David Hart, s2cid=14331332, Title: A Science of design for software-intensive systems, [[Journal]]: Communications of the ACM, Year: 2004, Volume: 47, Issue: 8, pages 19–21 [20], [[DOI]]: 10.1145/1012037.1012054)) * [[software development]] - defn=Is the process of conceiving, specifying, designing, [[Computer programming|programming]], [[software documentation|documenting]], [[software testing|testing]], and [[Software bugs|bug fixing]] involved in creating and maintaining [[application software|applications]], [[software framework|frameworks]], or other software components. Software development is a process of writing and [[Software maintenance|maintaining]] the [[source code]], but in a broader sense, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and [[Software development process|structured]] process.((http://www.bestpricecomputers.co.uk/glossary/application-development.htm , Title: Application Development (AppDev) Defined and Explained , [[Publisher]]: Bestpricecomputers.co.uk, Date: 2007-08-13 , Access date: 2012-08-05)) Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.(([[Web citation]]: [[Author]]: DRM Associates, Title: New Product Development Glossary, http://www.npd-solutions.com/glossary.html , Year: 2002, Access date: 2006-10-29)) * [[software development process]] - * [[software engineering]] - * [[software maintenance]] - * [[software prototyping]] - * [[software requirements specification]] - * [[software testing]] - * [[sorting algorithm]] - * [[source code]] - * [[spiral model]] - * [[stack (abstract data type)|stack]] - * [[state (computer science)|state]] - * [[statement (computer science)|statement]] - * [[computer data storage|storage]] - * [[stream (computing)|stream]] - * [[string (computer science)|string]] - * [[structured storage]] - * [[subroutine]] - * [[symbolic computation]] - * [[syntax (programming languages)|syntax]] - * [[syntax error]] - * [[system console]] - end ==T== * [[technical documentation]] - In engineering, any type of [[documentation]] that describes handling, functionality, and architecture of a technical product or a product under [[product development|development]] or use.<ref>[http://www.transcom.de/transcom/en/technische-dokumentation.htm What is "technical documentation"?] at Transcom.de. Accessed February 25, 2013.))<ref>[http://www.tetras.sk/en/stranka/what-is-technical-documentation What is Technical Documentation?] {{Webarchive, https://archive.is/20130418132550/http://www.tetras.sk/en/stranka/what-is-technical-documentation, Date: 2013-04-18 at Tetras Translations. Accessed February 25, 2013.))<ref>[http://www.igcseict.info/theory/8/docs/index.html Documenting the New System] at IGCSE ICT. Accessed February 25, 2013.)) The intended recipient for product technical documentation is both the (proficient) [[end user as well as the administrator/service or maintenance technician. In contrast to a mere "cookbook" [[User guide|manual]], technical documentation aims at providing enough information for a user to understand inner and outer dependencies of the product at hand. * [[third-generation programming language]] - * [[top-down and bottom-up design]] - * [[tree (data structure)|tree]] - A widely used [[abstract data type (ADT) that simulates a hierarchical [[tree structure]], with a root value and subtrees of children with a [[parent node, represented as a set of linked [[node|nodes. * [[type theory]] - In mathematics, logic, and computer science, a type theory is any of a class of [[formal system]]s, some of which can serve as alternatives to [[set theory]] as a [[Foundations of mathematics|foundation for all mathematics]]. In type theory, every "term" has a "type" and operations are restricted to terms of a certain type. end ==U== * [[upload]] - In [[computer network]]s, to send [[Data (computing)|data]] to a remote system such as a [[server (computing)|server]] or another client so that the remote system can store a copy.((https://techterms.com/definition/upload, Title: Upload Definition|website=techterms.com, [[Language]]: [[English]]|access-date=2017-03-30)) Contrast ''[[download''. * [[URL|Uniform Resource Locator]] (URL) - Colloquially '''web address'''.{{sfnp|W3C|2009 - A reference to a [[web resource]] that specifies its location on a [[computer network]] and a mechanism for retrieving it. A URL is a specific type of [[Uniform Resource Identifier]] (URI),((https://zzz.buzz/2017/09/19/forward-and-backslashes-in-urls/, Title: Forward and Backslashes in URLs|website=zzz.buzz, [[Language]]: [[English]]|access-date=2018-09-19)){{sfnp|RFC 3986|2005 although many people use the two terms interchangeably.{{sfnp|Joint W3C/IETF URI Planning Interest Group|2002{{efn|A URL implies the means to access an indicated resource and is denoted by a protocol or an access mechanism, which is not true of every URI.{{sfnp|RFC 2396|1998{{sfnp|Joint W3C/IETF URI Planning Interest Group|2002 Thus <code><nowiki>http:</nowiki>//www.example.com</code> is a URL, while <code>www.example.com</code> is not.((https://danielmiessler.com/study/url-uri/#gs.Hs64zOs, Title: The Difference Between URLs and URIs, Last name: Miessler, First name: Daniel)) URLs occur most commonly to reference web pages ([[http]]), but are also used for file transfer ([[File Transfer Protocol|ftp]]), email ([[mailto]]), database access ([[Java Database Connectivity|JDBC]]), and many other applications. * [[user (computing)|user]] - * [[user agent]] - Software (a [[software agent) that acts on behalf of a [[user, such as a [[web browser]] that "retrieves, renders and facilitates end user interaction with Web content".((https://www.w3.org/WAI/UA/work/wiki/Definition_of_User_Agent , Title: W3C Definition of User Agent , [[Publisher]]: www.w3.org, Date: 16 June 2011 , Access date: 2018-10-20)) An email reader is a [[mail user agent]]. * [[user interface]] (UI) -- user interface - The space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine from the human end, whilst the machine simultaneously feeds back information that aids the operators' [[decision-making]] process. Examples of this broad concept of user interfaces include the interactive aspects of computer [[operating system]]s, hand [[tools]], [[heavy machinery]] operator controls, and [[Unit operation|process]] controls. The design considerations applicable when creating user interfaces are related to or involve such disciplines as [[ergonomics]] and [[psychology]]. * [[user interface design]] - Also '''user interface engineering'''. - The design of [[user interface|user interfaces for machines and [[software, such as computers, home appliances, mobile devices, and other electronic devices, with the focus on maximizing [[usability]] and the [[user experience]]. The goal of user interface design is to make the user's interaction as simple and efficient as possible, in terms of accomplishing user goals ([[user-centered design]]). end ==V== * [[variable (computer science)|variable]] - In [[computer programming, a variable, or scalar, is a storage location (identified by a [[memory address]]) paired with an associated symbolic name (an ''[[identifier''), which contains some known or unknown quantity of information referred to as a ''[[value''. The variable name is the usual way to [[reference the stored value, in addition to referring to the variable itself, depending on the context. This separation of name and content allows the name to be used independently of the exact information it represents. The identifier in computer [[source code can be [[Name binding|bound]] to a value during [[Run time (program lifecycle phase)|run time]], and the value of the variable may therefore change during the course of [[execution|program execution.<ref>{{citation, , Title: Compilers: Principles, Techniques, and Tools, pages 26–28| title-link=Compilers: Principles, Techniques, and Tools))((Book: Last name: Knuth , First name: Donald, Date: 1997 , Title: The Art of Computer Programming , Volume: 1, Edition: 3rd , Location: Reading, Massachusetts , [[Publisher]]: Addison-Wesley , pages 3–4 , [[ISBN]]: 0-201-89683-4 )) * [[virtual machine]] (VM) -- virtual machine - An [[emulator|emulation of a computer system. Virtual machines are based on [[computer architecture|computer architectures and attempt to provide the same functionality as a physical computer. Their implementations may involve specialized hardware, software, or a combination of both. * [[V-Model (software development)|V-Model]] - A [[software development process]] that may be considered an extension of the [[waterfall model, and is an example of the more [[V-model|general V-model]]. Instead of moving down in a linear way, the process steps are bent upwards after the [[source code|coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of [[Software testing|testing]]. The horizontal and vertical axes represent time or project completeness (left-to-right) and level of abstraction (coarsest-grain abstraction uppermost), respectively.<ref>[[Kevin Forsberg]] and [[Harold Mooz]], "The Relationship of System Engineering to the Project Cycle", in Proceedings of the First Annual Symposium of National Council on System Engineering, October 1991: 57–65.)) end ==W== * [[waterfall model]] - A breakdown of project activities into linear [[sequence|sequential]] phases, where each phase depends on the deliverables of the previous one and corresponds to a specialisation of tasks. The approach is typical for certain areas of [[engineering design]]. In [[software development process|software development]], it tends to be among the less iterative and flexible approaches, as progress flows in largely one direction ("downwards" like a [[waterfall]]) through the phases of conception, initiation, [[analysis]], [[Software design|design]], [[Software construction|construction]], [[Software testing|testing]], [[Implementation|deployment]] and [[software maintenance|maintenance]]. * [[WAV|Waveform Audio File Format]] - Also '''WAVE''' or '''WAV''' due to its [[filename extension]]. - An [[audio file format]] standard, developed by [[Microsoft]] and [[International Business Machines|IBM]], for storing an audio bitstream on [[personal computer|PCs]]. It is an application of the [[Resource Interchange File Format]] (RIFF) [[bitstream format]] method for storing data in "chunks", and thus is also close to the [[8SVX]] and the [[Audio Interchange File Format|AIFF]] format used on [[Amiga]] and [[Apple Macintosh|Macintosh]] computers, respectively. It is the main format used on [[Microsoft Windows]] systems for raw and typically uncompressed audio. The usual bitstream encoding is the [[linear pulse-code modulation]] (LPCM) format. * [[web crawler]] - Also '''spider''', '''spiderbot''', or simply '''crawler'''. - An [[Internet bot that systematically browses the [[World Wide Web]], typically for the purpose of [[Web indexing]] (''web spidering''). * [[Wi-Fi]] - A family of wireless networking technologies, based on the [[IEEE 802.11]] family of standards, which are commonly used for [[Wireless LAN|local area network]]ing of devices and [[Internet]] access. ''Wi-Fi'' is a trademark of the non-profit [[Wi-Fi Alliance]], which restricts the use of the term ''Wi-Fi Certified'' to products that successfully complete [[Interoperability Solutions for European Public Administrations|interoperability]] certification testing.((http://www.webopedia.com/TERM/W/Wi_Fi.html, Title: What is Wi-Fi (IEEE 802.11x)? A Webopedia Definition, Last name: Beal, First name: Vangie, Date:, website=Webopedia, https://web.archive.org/web/20120308123721/http://www.webopedia.com/term/w/wi_fi.html|archivedate=2012-03-08,, access-date=))((https://www.theguardian.com/technology/blog/2007/may/21/thedangersof, Title: The dangers of Wi-Fi radiation (updated), First name: Jack, Last name: Schofield, Date: 21 May 2007|via=www.theguardian.com))((https://www.wi-fi.org/certification, Title: Certification &#124; Wi-Fi Alliance|website=www.wi-fi.org)) end ==X== * [[XHTML]] - Abbreviaton of '''eXtensible HyperText Markup Language'''. - Part of the family of [[XML]] [[markup language]]s. It mirrors or extends versions of the widely used [[HyperText Markup Language]] (HTML), the language in which [[web page]]s are formulated. end ==See also== *[[Outline of computer science]] {{Computer science navbar {{Software engineering navbar [[Category:Computer science|*Glossary]] [[Category:Glossaries of computers|science]] [[Category:Glossaries of science|Computer science]] [[Category:Computers]] ==#== * 1NF See fi rst normal form. 2NF See second normal form. 3NF See third normal form. 80/20-rule In the Dynamic Systems Development Method, the assumption that 80-percent of an application’s features will take 20-percent of the project’s total time to implement. (The 80/20-rule often applies to other situations, too. For example, 80-percent of the bugs are usually contained in 20-percent of the code.) ==A== * [[acceptance test]]: A test to determine whether the fi nished application meets the requirements. Normally, a user or other customer representative sits down the with application and runs through all the use cases you identifi ed during the requirements gathering phase to make sure everything works as advertised. activation See execution specifi cation. activity diagram In UML, a diagram that represents work fl ows for activities. They include several kinds of symbols connected with arrows to show the direction of the work fl ow. adaptive development model A development model that enables you to change the project’s goals if necessary during development. administrator Someone who manages the development team’s computers, network, and other tools. Also called a system administrator. advisor user Any user who brings an important viewpoint to the project. agile development A development model where you initially provide the fewest possible features at the lowest fi delity to still have a useful application. Over time, you add more features and improve existing features until all features have been implemented at full fi delity. Agile Manifesto A set of four guiding principles for agile development. In brief the principles are: ➤ Individuals and interactions over processes and tools ➤ Working software over comprehensive documentation ➤ Customer collaboration over contract negotiation ➤ Responding to change over following a plan 418 ❘ GLOSSARY Agile Unifi ed Process (AUP) A simplifi ed version of Rational Unifi ed Process that includes agile methods such as test‐driven development and agile modeling. In 2012 AUP was superseded by Disciplined Agile Delivery. algorithm A software recipe that explains how to solve a particular programming problem. ambassador user Someone who acts as a liaison between the users and the developers. anchoring A phenomenon where an early decision made by one person infl uences later decisions by others. anomaly In a relational database, an error caused by a design fl aw such as records holding inconsistent values or being unable to delete a piece of data because it is necessary to record some unrelated piece of information. architect Someone who focuses on the application’s overall high‐level design. artifact In a UML deployment diagram, a fi le, a script, an executable program or another item that is deployed. In development models, something generated by the model such as a requirements document, user story, or piece of code. assertion A statement about the program and its data that is supposed to be true. If the statement isn’t true, the assertion throws an exception to tell you that something is wrong. attribute Some feature of a project that you can measure such as the number of lines of code, the number of defects, or the number of times the word “mess” appears in code comments. See also metric and indicator . audit trail A record of actions taken by an application’s users for security auditing purposes. AUP See Agile Unifi ed Process. ==B== BDUF See big design up front. behavior diagram In UML, a diagram that shows the behavior of some entity. There are three kinds of behavior diagrams: activity diagrams, use case diagrams, and state machine diagrams. Big Board A large board used by many agile models that is posted in a visible location so that everyone can see the project’s status at a glance. Also called an information radiator. big design up front (BDUF) See predictive development model l. big O notation A system for studying the limiting behavior of algorithms as the size of the problem grows large. black‐box test A test designed by someone who doesn’t know how the code works internally. brainstorming A group technique for discovering creative solutions to a problem. bug A fl aw in a program that causes it to produce an incorrect result or to behave unexpectedly. Bugs are generally evil. build engineer In Feature‐Driven Development, someone who sets up and controls the build process. GLOSSARY ❘ 419 burndown chart In Scrum, a graph showing the amount of work remaining over time. business advisor See business analyst. business ambassador Someone who provides business information from the viewpoint of the users. business analyst A domain expert who helps defi ne the application’s purpose and who provides feedback during development. Also called a business advisor. business requirements The project’s high‐level business goals. They explain what the customer hopes to achieve with the project. business visionary Someone who has a clear vision of the application’s business role, particularly early in the process when that role isn’t clearly written down. ==C== cause-and-effect diagram See Ishikawa diagram . CAV V See complexity adjustment value. CBSE See component‐based software engineering. change A change to an application that is requested by customers. This may happen when customers understand the application better, when customers think of a new feature or a modifi cation they want, or when the users’ environment changes so the application needs to be changed to be useful. change control board A group of project members, possibly including one or two customers, that reviews and approves or rejects change requests. change management See version management. t change tracking See version managementt. chief architect In Feature‐driven Development, the person responsible for the project’s overall programmatic design. chief programmer In Feature‐driven Development, an experienced developer who is familiar with all the functions of development (design, analysis, coding, and so on). Chief programmers lead project teams. child class A class derived from a parent class. The child class inherits properties, methods, and events from the parent class. child table See foreign key . class In object‐oriented programming, a construct that defi nes a type (or class) of items. For example, if you defi ne a Customer class, you can then create many Customer objects representing different real‐world customers. class diagram In UML, a diagram that describes the classes that make up the system, their properties and methods, and their relationships. class owner In Feature‐driven Development, the person who is responsible for a particular class’s code. 420 ❘ GLOSSARY Cleanroom A development model that emphasizes defect prevention rather than defect removal. It uses formal methods, statistical quality control, and statistical testing to prevent and detect bugs. client tier The tier in a multitier architecture that consumes a service. This is often an application’s user interface. client‐server architecture A design that separates pieces of the system that need to use a particular function (clients) from parts of the system that provide those functions (servers). That decouples the client and server pieces of the system so that developers can work on them separately. coach Someone who helps a development team follow its chosen path (XP, Scrum, Lean, and so forth). code coverage The lines of code that are executed during a demonstration or a suite of tests. code inspection See code review . code review When two or more programmers walk through a piece of code to look for problems. Also called a code inspection . coding standards Standards used by a development team to ensure consistency. Standards may defi ne conventions for variable names, comments, documentation, specifi c code style, and more. Coding standards make the code easier to read and debug. column See fi eld d. communication diagram In UML, a diagram that shows communication among objects during some sort of collaboration. This is similar to a sequence diagram except a sequence diagram focuses on the sequence of messages, and a communication diagram focuses more on the objects involved in the collaboration. complexity adjustment factors In function point calculations, values that take into account the importance of general features of the application (such as transaction rate). complexity adjustment value (CAV) In function point calculations, the sum of the complexity adjustment factors. complexity factor In function point calculations, you multiply each function point metric by a complexity factor to indicate how complex each activity is. component diagram In UML, a diagram that shows how components are combined to form larger parts of the system. component interface test A test that studies the interactions between components. This is a bit like regression testing in the sense that both examine the application as a whole to look for trouble, but component interface testing focuses on component interactions. component‐based software engineering (CBSE) A design that regards the system as a collection of loosely coupled components that provide services for each other. composite structure diagram In UML, a diagram that shows a class’s internal structure and the collaborations that the class allows. GLOSSARY ❘ 421 confi guration management Managing the items produced by the project such as requirements documents, designs, and, of course, source code. This may include controlling changes to those items so that changes don’t happen willy‐nilly. coprime See relatively prime. COTS Commercial off‐the‐shelf as in a COTS application. cowboy coding A development methodology where the programmers have complete control over the process and generally do what they want. This is often a derogatory term, although for very small projects and very experienced developers it can sometimes produce good results. critical path A longest path through a PERT chart network. If any task along a critical path is delayed, the project’s fi nal completion is also delayed. Note that a network may have multiple critical paths. cross‐functional team A team where every member can play every role. Every member can participate in requirements analysis, design, programming, testing, and the rest. Crystal A family of development methodologies that take into account a project’s team size and criticality. Team size determines the project’s “color” and can be Clear (1–6), Yellow (7–20), Orange (21–40), Orange Web (21–40 with ongoing releases), Red (41–80), Maroon (81–200), Diamond (201–500), and Sapphire (501–1,000). Criticality is measured by the type of thing that could be at risk. Criticality values include comfort, discretionary money, essential money, and life. Crystal Clear A relatively relaxed and easy‐going approach to development using a small team and low criticality. Crystal Clear defi nes only three required roles: sponsor, senior designer, and programmer. See also Crystall. Crystal Orange A development approach that is slightly more formal than Crystal Yellow. Projects may add the new roles business analyst, project manager, architect, and team leader. They also add requirements, tracking, a release schedule, object models, code reviews, acceptance testing, and more formal delivery. Crystal Yellow A development approach that is slightly more formal than Crystal Clear. These projects adopt new practices above the roles defi ned by Crystal Clear including easy communication, code ownership, feedback, automated testing, a mission statement, and more formal increments. customer A person for whom a project is being built. Typically, the customer defi nes requirements and verifi es that the fi nished application meets those requirements. In some models, the customer also provides feedback during development. cutover The process of moving users to a new application. ==D== * [[DAD]]: See [[Disciplined Agile Delivery]]. * [[daily scrum]]: [[Scrum]]’s version of a [[daily standup]] meeting. Also simply called a scrum. See also standup meeting g. data tier The server tier in a three‐tier architecture. 422 ❘ GLOSSARY data warehouse A secondary database that holds older data for analysis. In some applications, you may want to analyze the data and store modifi ed or aggregated forms in the warehouse instead of keeping every outdated record. database‐centric architecture See data‐centric architecture . data‐centric architecture A design where the application is centered around some kind of database. decomposition In a V‐model project, the steps on the left side of the V that break the application down into pieces that you can implement. deep dive See spike . defect Incorrect feature in an application. Defects can be broadly grouped into two categories: bugs and changes. defensive programming The idea that the code should work no matter what kind of garbage is passed into it for data. The code should work and produce some kind of result no matter what. See also offensive programming. g deployer In Feature‐driven Development, someone who handles deployment. deployment The process of delivering a fi nished application to the users. Also called implementation or installation. deployment diagram In UML, a diagram that describes the deployment of artifacts (fi les, scripts, executables, and the like) on nodes (hardware devices or execution environments that can execute artifacts). derive To subclass a child class from a parent class. The child class inherits properties, methods, and events from the parent class. design inspection A review of a design to look for problems before writing code to implement the design. In Feature‐Driven Development, a chief programmer holds a design inspection before the team implements the design. design package In Feature‐Driven Development, the result of a design‐by‐feature phase. The design package includes a description of the package, sequence diagrams showing how the features will work, alternatives, an updated object model, and method prologues. design pattern In object‐oriented programming, an arrangement of classes that interact to perform some common and useful task. Similar to an object‐oriented algorithm. developer Someone who participates in the project development. Sometimes this term is used interchangeably with programmer. development manager In Feature‐Driven Development, someone who manages day‐to‐day development activities. Disciplined Agile Delivery (DAD) A development framework that incorporates features of UP, Scrum, XP, Kanban, Lean, and others. It uses the three UP phases: inception, construction, and construction. GLOSSARY ❘ 423 distributed architecture A design where different parts of the application run on different processors and may run at the same time. The processors could be on different computers scattered across the network, or they could be different cores on a single computer. domain expert A customer, user, executive champion, or other person who knows about the project domain and how the fi nished application should work. Also called subject matter expert (SME). domain manager In Feature‐Driven Development, someone who leads the domain experts and provides a single point of contact to resolve domain issues. domain walk-through In Feature‐Driven Development, a walk-through of a scenario by a domain expert to verify that the scenario is correct and to answer questions for the developers about the scenario. don’t repeat yourself principle (DRY) In programming, a rule of thumb that says if you need to write the same piece of code twice, you should extract it into a separate method that you can call from multiple places so you don’t have to write it a third time. (Or a fourth time, or a fi fth time, and so on.) driver In pair programming, the programmer who types. DRY See Y don’t repeat yourself principle . DSDM See Dynamic Systems Development Method. d Dynamic Systems Development Method (DSDM) An agile framework designed with a more business‐oriented focus. It can be used to add extra business control to other development models. It uses the phase’s pro‐project, project life cycle (which includes study, functional modeling, design and build, and implementation) and post‐project. EDA See event‐driven architecture . environment The environment in which the application will run. This includes the users’ computers, networks, printers, other applications, and physical environment (chairs, lamps, coffee machines, and so forth). event In object‐oriented programming, an event occurs to notify the application that something interesting occurred. For example, the user might have clicked a button or a timer might have expired. event‐driven architecture (EDA) A design where various parts of the system respond to events as they occur. evolutionary prototype A prototype that evolves over time with new features added and the existing features improved until the prototype eventually becomes the fi nished application. exception An unexpected condition in a program such as a divide by zero or trying to access a missing fi le. If the code doesn’t catch and handle the exception, the program crashes. execution See execution specifi cation . execution specifi cation In a UML sequence diagram, a gray or white rectangle that represents a participant doing something. Also called an execution or activation . 424 ❘ GLOSSARY executive champion The highest‐ranking executive who supports the project. executive sponsor See executive champion . expert system See rule‐based architecture . Extreme Programming (XP) A development model that takes typical programming practices (such as code reviews) to extremes (pair programming). FDD See Feature‐Driven Developmentt. feature list In Feature‐Driven Development, a prioritized list of features that the application should have. feature team In Feature‐Driven Development, when a new feature requires changes to several classes, the class owners are assembled into a feature team to study and implement the changes. Feature‐Driven Development (FDD ) An iterative and incremental development model that was designed to work with large teams. The large teams mean this model requires more roles. It starts with two phases: develop model and build feature list. It then iterates three more phases: plan-by feature, design-by feature, and build-by feature. fi eld In a relational database, a single piece of data in a record. For example, each record in a Students table would contain a FirstName fi eld. Also called a column. fi rst normal form (1NF) The least normalized level of a table in a relational database. To be in 1NF: 1. Each column must have a unique name. 2. The order of the rows and columns doesn’t matter. 3. Each column must have a single data type. 4. No two rows can contain identical values. 5. Each column must contain a single value. 6. Columns cannot contain repeating groups. fi shbone diagram See Ishikawa diagram . Fishikawa diagram See Ishikawa diagram . foreign key In a relational database, a set of one or more fi elds in one table with values that uniquely defi ne a record in another table. The table containing the foreign key is the child table, and the table that contains the uniquely identifi ed record is the parent table. See also foreign key constraintt. foreign key constraint When two tables are related by a foreign key, a foreign key constraint requires that a child record cannot exist unless the corresponding record exists in the parent table. For example, a StudentAddress record might not be allowed to contain a State value that isn’t defi ned in the States lookup table. function point metric In function point calculations, a metric used to calculate a project’s function points such as the number of inputs and the number of outputs. GLOSSARY ❘ 425 function point normalization Dividing a metric by the project’s function points to allow you to compare projects of different sizes and complexities. function point value Calculated as a weighted average of the raw FP and the CAV. functional prototype A prototype that looks like a fi nished application (or part of one) but that doesn’t necessarily work the way the real application will. For example, it could use faked data or predetermined responses to user actions. functional requirements Detailed statements of the project’s wanted capabilities. They’re similar to the user requirements but may also include things that the users won’t see directly such as interfaces to other applications. Gantt chart A kind of bar chart that shows a schedule for a collection of related tasks. Bar lengths indicate task durations. Arrows show the relationships between tasks and their predecessors. gradual cutover Deployment technique where you install the new application for some users while others continue working with the existing system. You test the system for the fi rst users and when everything’s working correctly, you start moving other users to the new system until everyone has been moved. gray‐box test A combination white‐box test and black‐box test. The tester knows some but not all of the internals of the method being tested. The partial knowledge lets the tester design some specifi c tests to attack the code. heuristic An algorithm that gives a good solution for a problem but that doesn’t guarantee to give you the best solution possible. horizontal prototype A prototype that demonstrates a lot of the application’s features but with little depth. IDE See integrated development environmentt. implementation When used by programmers, this term usually means writing the code. When used by managers, this often means deployment. implementation requirements Temporary features that are needed to transition to using the new system but that will be later discarded. increment The result of a single iteration of an incremental development model. The increment is a fully tested piece of software suitable for release to the users. incremental deployment Deployment where you release the new system’s features to the users gradually. First, you install one tool (possibly using staged deployment or gradual cutover to ease the pain). After the users are used to the new tool, you give them the next tool. You continue until all the tools have been deployed. incremental development A development model where you initially provide only some features at full fi delity. Over time, you add more features (always at full fi delity) until all features have been implemented at full fi delity. incremental prototyping A development model where you build a collection of prototypes that separately demonstrate the fi nished application’s features. You then combine the prototypes (or at least their code) to build the fi nished application. 426 ❘ GLOSSARY incremental waterfall model A development model that uses a series of waterfall cascades. Each cascade ends with the delivery of a usable application called an increment. Also called the multiwaterfall model. indicator A metric that you can use to predict the project’s future. For example, if the metric “comments per KLOC” is 3, that may be an indicator that the project will be hard to maintain. information radiator See big board d. inheritance hierarchy In object‐oriented programming, a “family tree” showing inheritance relationships among classes. In a language that doesn’t support multiple inheritance, the relationships form a hierarchy. installation See deploymentt. instrumentation Code added to a program by a profi ler to allow it to track the program’s performance. integrated development environment (IDE) An environment for building, compiling, and debugging software. An IDE may include other tools such as source code control, profi ling, code editors with syntax highlighting and auto‐completion, and more. integration In a V‐model project, the steps on the right side of the V that work back up to the conceptual top of the application. integration test A test that verifi es that a new piece of code works with the rest of the system. It checks that the new code can call existing code and that the existing code can call the new code. interaction diagram In UML, a category of activity diagram that includes sequence diagrams, communication diagrams, timing diagrams, and interaction overview diagrams. interaction overview diagram In UML, basically an activity diagram where the nodes can be frames that contain other kinds of diagrams. Those nodes can contain sequence, communication, timing, and other interaction overview diagrams. That lets you show more detail for nodes that represent complicated tasks. invariant A state of the program and its data that should remain unchanged over some period of time. Often used in assertions. Ishikawa diagram Named after Kaoru Ishikawa, a diagram that shows possible causes of effects that you want to study such as excessive bugs, delays, and other failures in the development process. Also called fi shbone diagrams, Fishikawa diagrams, and cause-and-effect diagrams. iteration 0 A pseudo‐iteration that includes startup tasks that must be performed before the project’s code development starts such as planning, initial requirements gathering, and building the development environment. iterative development A development model where you initially provide all the application’s features at a low fi delity. Over time, you improve the features’ fi delity, occasionally releasing improved versions of the application until all features have been implemented at full fi delity. James Martin RAD A specifi c RAD development model that uses four phases: requirements planning, user design, construction, and cutover. The user design and construction phases iterate. GLOSSARY ❘ 427 JBGE See just barely good enough . JIT See just‐in‐time . joint code ownership See shared code ownership . just barely good enough (JBGE) The idea that you should include only the bare minimum of comments and documentation to get the job done. just‐in‐time (JIT) An inventory management practice where inventory items are supplied just in time for use to minimize inventory levels. Kanban (production chain) A just‐in‐time technique that uses kanban cards to indicate when a production station needs more parts. When a station is out of parts (or is running low), a kanban card is sent to a supply station to request more parts. Kanban (software engineering) An agile methodology where a team member who fi nishes his current item takes the next highest priority item from the project’s backlog. Kanban seeks to restrict the amount of work in progress at any given time. Kanban board A big board. (See big board .) Typically, columns indicate each task’s status. d Columns might be labeled Backlog, Ready, Coding, Testing, Approval, and Done. In some variations, rows indicate the person assigned to each task. key In a relational database, a set of one or more fi elds that uniquely identifi es a record. KLOC Kilo lines of code. knowledge base system See rule‐based architecture . language guru Someone who is an expert in the programming language, technology, and other arcane items being used by the team. The other developers call on this person as needed. Also called a language lawyer. language lawyer See language guru . Lean See Lean Software Development. t Lean Software Development (LSD) An agile development methodology that focuses on removing waste (such as unclear requirements, repetition, and unnecessary meetings) from the development process. lifeline In a UML sequence diagram, a vertical dashed line that represents an object’s existence. load test A test that simulates a lot of users all running simultaneously to measure the application’s performance under stress. logic tier The middle tier in a three‐tier architecture. This tier usually contains business logic. lookup table In a relational database, a table that contains values just to use as foreign keys. LSD See Lean Software Developmentt. magic number A value that just appears in the code with no explanation. For example, it might represent an error code or database connection status. Use constants and named variables instead of magic numbers to make the code easier to read and understand. 428 ❘ GLOSSARY member In object‐oriented programming, a general name for a class’s properties, methods, and events. method In object‐oriented programming, a piece of code that makes an object do something. method prologue A description of a method that includes its purpose, input and output parameters, return type, possible exceptions (ways the method can fail), and assumptions. metric A value that you use to study some aspect of a project. A metric can be an attribute (such as the number of bugs) or a calculated value (such as the number of bugs per line of code). See also attribute and indicator . monolithic architecture A design where a single program does everything. MOSCOW (or MoSCoW) A scale for prioritizing application features. The initials stand for Must, Should, Could, and Won’t. multiple inheritance In object‐oriented programming, when a child class inherits from multiple parent classes. (Most object‐oriented languages do not support multiple inheritance.) multitier architecture A design that uses multiple tiers to allow a client to use services provided by a server. Examples include client‐server architectures, two‐tier architectures, and three‐tier architectures. multiwaterfall model See incremental waterfall model. l navigator In pair programming, the programmer who watches as the driver types. node In a UML deployment diagram, a hardware device on which an artifact is deployed. nonfunctional prototype A prototype that looks like an application but that doesn’t actually do anything. nonfunctional requirements Statements about the quality of an application’s behavior or constraints on how it produces a wanted result such as the application’s performance, reliability, and security characteristics. normalization For metrics, performing some calculation on a metric to account for possible differences in project size or complexity. Two general approaches are size normalization and function point normalization. (See also function point normalization and size normalization .) In database design, the process of rearranging tables to put them into standard (normal) forms that prevent anomalies. not invented here syndrome (NIHS) In programming, the mistake of thinking you need to rewrite a piece of code just because someone else wrote it and it doesn’t work the way you would have written it. N‐tier architecture See multitier architecture . object An instance of a class. object composition In object‐oriented programming, a technique where an object is composed of other objects, sometimes used to simulate multiple inheritance. GLOSSARY ❘ 429 object diagram In UML, a diagram that focuses on a particular set of objects and their relationships at a specifi c time. object model A model showing the classes that make up an application, the class details (such as properties, methods, and events), and interactions among the classes. observer See navigator . offensive programming The idea that the code immediately fl ags an error if it receives unexpected inputs so that you can decide whether they are valid. See also defensive programming. g Open Unifi ed Process (OpenUP) An open source tool built by the Eclipse Foundation to help in using the Unifi ed Process development model. OpenUP See Open Unifi ed Process . Osborn method A basic brainstorming approach developed by Alex Faickney Osborn. over refi nement In object‐oriented programming, a design problem that occurs when you refi ne a class hierarchy unnecessarily, making too many classes that make the code complicated and confusing. package diagram In UML, a diagram that describes relationships among the packages that make up a system. For example, if one package in the system uses features provided by another package, then the diagram would show the fi rst “importing” the second. pair programming An Extreme Programming practice where two (or three) programmers work together at the same computer. The driver or pilot types while the observer, navigator, or pointer watches and reviews each line of code as it is typed. parent class A class from which a child class is derived. The child class inherits properties, methods, and events from the parent class. parent table See foreign key . PERT Program Evaluation and Review Technique. See PERT chartt . PERT chart A graph that uses nodes (circles or boxes) and links (arrows) to show the precedence relationships among the tasks in a project. pilot See driver . planning game A game where team members use cards containing user stories and try to see how many cards they can fi t into a release. There are two kinds of planning games: release planning and iteration planning. planning poker In Scrum, a game where developers use card decks based on the Fibonacci numbers to estimate the amount of work for the project’s tasks. Cards might have numbers ace, 2, 3, 5, 8, and king; or 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, and 89; or 0, ½, 1, 2, 3, 5, 8, 13, 20, 40, and 100. Also called Scrum poker. point of no return The point during a project where the expense of canceling a project is greater than the expense of moving forward. 430 ❘ GLOSSARY pointer See navigator . point‐release A minor application build that isn’t necessarily released to the customers. polymorphism The ability to treat a child object as if it were actually from a parent class. For example, it lets you treat a Student object as if it were a Person object because a Student is a type of Person . potentially shippable increment (PSI) In Scrum, the result of a sprint. This is a fully tested application that could be shipped to the users. predictive development model A development model where you predict in advance what needs to be done and then you go out and do it. Also called big design up front (BDUF). presentation tier The client tier in a multi‐tier architecture. process metric A metric designed to measure your organization’s development process. They are collected over a long period across many projects and used to fi ne‐tune the software engineering process. product backlog In Scrum, the list of features not yet implemented by the application. product burndown chart In Scrum, a graph showing the amount of work remaining in a whole project over time. Also called a release burndown chart. product metric See project metric . product owner Someone who represents the customers, users, and other stakeholders and for whom the application is being built. Sometimes called the sponsor. profi ler A program that monitors another program to identify the parts that are slow, that use the most memory, or that otherwise might be bottlenecks. programmer An underpaid, overworked person who writes the code and complains about excessive management and restrictive coding standards. project manager Monitors the project’s progress to ensure that work is heading in the right direction at an acceptable pace. Meets with customers and other stakeholders to verify that the fi nished product meets their requirements. If the development model allows changes, the project manager ensures that changes are made and tracked in an organized manner so they don’t get lost and don’t overwhelm the rest of the team. project metric Metrics that measure and track the current project to predict future results for that project. property In object‐oriented programming, an attribute of an object that helps defi ne the object’s characteristics. prototype A mockup of some or all of the application to let the developers and customers study an aspect of the system. Typically a software prototype is a program that mimics part of the application you want to build. pseudocode Text that looks a lot like a programming language but isn’t one. You can use pseudocode to see how a piece of code would work if you wrote it in an actual programming language such as C#, Java, or Visual Basic. GLOSSARY ❘ 431 PSI See potentially shippable increment . t quality manager Someone who ensures the application’s quality. This person tracks bug reports, test results, and reviews; uses statistical methods to estimate quality; defi nes the project’s quality procedures (such as testing and review guidelines); and uses other techniques used to improve quality. race condition In distributed computing, a situation in which multiple processes interfere with each other when one incorrectly overwrites the results of another. RAD See rapid application developmentt. raise In object‐oriented programming, an object raises an event to notify the application that something interesting occurred. rapid application development (RAD) Development models that emphasize producing code and deemphasize planning. These models produce code iteratively and incrementally as quickly as possible. RAD principles include small teams, frequent customer interaction, frequent integration and testing, and short time-boxed iterations. Rational Unifi ed Process (RUP) IBM’s version of the Unifi ed Process. raw FP value In function point calculations, the sum of the function point metrics multiplied by their complexity factors. record In a relational database, a single set of values in a table. For example, a particular student’s data would be contained in a record in the Students table. Also called rows or tuples. refactor The process of rearranging and rewriting code to make it easier to understand, debug, and maintain. refi nement In object‐oriented programming, the process of breaking a parent class into multiple subclasses to capture some difference between objects in the class. regression test A test that exercises the entire application to verify that a new piece of code didn’t break anything. relational database A database that stores related data in rows and columns in tables. relatively prime Two integers are relatively prime (or coprime) if they have no common factors other than 1. For example, 21 = 3 × 7 and 8 = 2 × 2 × 2 are relatively prime because they have no common factors other than 1. By defi nition –1 and 1 are relatively prime to every integer, and they are the only numbers relatively prime to 0. release burndown chart See product burndown chart t. release manager In Feature‐Driven Development, someone who gathers information from the chief programmers to track the project’s progress. requirement validation The process of making sure that the requirements say the right things. requirement verifi cation The process of checking that the fi nished application actually satisfi es the requirements. requirements The features an application must provide to be successful. 432 ❘ GLOSSARY retrospective meeting In Scrum, a meeting after a sprint where the Scrum Master and the project team discuss the sprint and ask the questions: (1) What went well and how can we make that happen again? (2) What went poorly and how can we avoid that in the future? (3) How can we improve future sprints? row See record. rule‐based architecture A design that uses a collection of rules to decide what to do next. These systems are sometimes called expert systems or knowledge‐based systems. RUP See Rational Unifi ed Process . sashimi A variation on the waterfall model where phases overlap. Also called sashimi waterfall and waterfall with overlapping phases. SCA Service Component Architecture. scribe Someone who keeps records of requirements, agreements, assumptions, and other important facts discovered at meetings, particularly at DSDM workshops. scrum See daily scrum . Scrum A development methodology that uses frequent small increments to build an application iteratively and incrementally. Scrum Master In Scrum, someone who helps the team follow Scrum practices, challenges the team to improve itself, and removes obstacles for the team. Scrum poker See planning poker . SDLC See software development life cycle . second normal form (2NF) The second level of normalization for a table in a relational database. A table is in 2NF if: 1. It is in 1NF. 2. All nonkey fi elds depend on all key fi elds. self‐organizing team A team that has the fl exibility and authority to fi nd its own methods for achieving its goals. Team members are motivated to take work without waiting for it to be assigned. They take responsibility for their work and track their own progress. senior developer A software engineering ninja that other developers can call when they need help. sequence diagram In UML, a diagram that shows how objects collaborate in a particular scenario. This is similar to a communication diagram except a sequence diagram focuses on the sequence of messages, and a communication diagram focuses more on the objects involved in the collaboration. service A self‐contained program that runs on its own and provides some kind of service for its clients. Service Component Architecture (SCA) A set of specifi cations for service‐oriented architecture defi ned by vendors such as IBM and Oracle. See service‐oriented architecture . GLOSSARY ❘ 433 service‐oriented architecture (SOA) A design similar to a component‐based architecture except the pieces are implemented as services. shared code ownership In Extreme Programming, code ownership is joint so anyone can modify any piece of code if necessary to make changes or fi x bugs. In contrast, in Feature-Driven Development, each class is owned by a class owner. side effect A non‐obvious result of a method call that makes using the method confusing. size normalization For metrics, dividing a metric by an indicator of size such as lines of code or days of work. For example, bugs/KLOC tells you how buggy the code is normalized for the size of the project. size‐oriented normalization See size normalization . SME Subject matter expert. soapbox x In planning poker, after each hand the people with the highest and lowest estimates are given a brief soapbox to explain why they feel their estimates are correct. SOA Service‐oriented architecture. software development life cycle (SDLC) All the tasks that go into a software engineering project from start to fi nish: requirements, design, implementation, and so forth. Also called the application development life cycle. spike A quick prototype, design, or piece of code that lets you explore some feature of an application in depth. Also called a deep dive. spike solution See spike . spiral development model A development model that uses a risk‐driven approach to decide what development approach to take for each stage of the project. It uses four phases: planning, risk analysis, engineering, and evaluation. sponsor See product owner . sprint In Scrum, the name given to the time-boxed incremental iterations. Typically a sprint is 30 days; although, some projects use shorter sprints of one, two, or three weeks. sprint backlog In Scrum, the list of features not yet implemented by a sprint. sprint burndown chart In Scrum, a graph showing the amount of work remaining in a sprint over time. sprint planning meeting In Scrum, a time boxed (typically a maximum of four hours) meeting before a sprint begins to decide what features should move from the project backlog into the sprint backlog so that they will be implemented during the sprint. sprint review meeting In Scrum, after a sprint ends, this is the meeting where the team presents the potentially shippable increment to the product owner, who verifi es that it meets the sprint’s goals. staged deployment Deployment that begins with building the application in a fully functional staging environment, so you can practice deployment until you’ve worked out all the kinks. 434 ❘ GLOSSARY stakeholder Someone who has a stake in the outcome of the project. Typically, this includes users, customers (if those are different from users), sponsors, managers, and development team members. stakeholder requirements These describe the goals of the project from the stakeholders’ point of view. This term is often used interchangeably with “user requirements.” standup See standup meetingg. standup meeting in Extreme Programming, a brief (15 minutes or less) daily meeting where team members say what they did since the last meeting, what they hope to do before the next meeting, and any problems they foresee in getting that work done. state In bug tracking, a bug’s state tracks its progress through the system. Example states include New, Assigned, Reproduced (or Verifi ed), Cannot Reproduce, Pending, Fixed, Tested, Deferred, Closed, and Reopened. state machine diagram In UML, a diagram that shows the states through which an object passes in response to various events. States are represented by rounded rectangles. Arrows indicate transitions from one state to another. Sometimes annotations on the arrows indicate what causes a transition. stepwise refi nement See top‐down design . story points The number of points assigned to a story by planning poker. See planning poker r . structure diagram In UML, a diagram that describes things that will be in the system you are designing. For example, a class diagram shows relationships among the classes that will be used to represent objects in the system such as inventory items, customers, and invoices. subject matter expert (SME) See domain expert. t system administrator See administrator . system integrator Someone who builds and tests the interfaces between the application and other applications. system test An end‐to‐end run‐through of the whole system. Ideally, a system test exercises every part of the system to discover as many bugs as possible. table In a relational database, a set of records that all contain the same fi elds; although, each record’s fi elds may contain different values. For example, a Student table would contain data about students. TCO See total cost of ownership . TDD See test‐driven developmentt. team lead See team leader . team leader The leader of a programming team, particularly if a large project is broken into separate teams. Typically, a team leader is a more experienced developer. Also called a team lead. team member A member of the development team. Depending on the development model, this can include many different kinds of participants. The team may include customer representatives in addition to developers. GLOSSARY ❘ 435 technical writer Someone who writes online and printed documentation and training materials. test‐driven development (TDD) A programming technique where you; (1) Write a test to verify a feature; (2) Verify that the program fails the test; (3) Write code to implement the feature; and (4) Verify that the code passes the test. tester Someone designated to test the application and look for holes in the design. Often programmers perform their own unit testing and the tester focuses on acceptance testing. test‐fi rst development (TFD) A programming technique where you write all the unit tests for a piece of code before you write the code. You then write all the code, run the tests, and fi x the code if it doesn’t pass the tests. TFD See test‐fi rst developmentt. third second normal form (3NF) The third level of normalization for a table in a relational database. A table is in 3NF if: 1. It is in 2NF. 2. It contains no transitive dependencies. three‐tier architecture A design where a middle tier provides insulation between client and server tiers. The middle tier can map data between the format provided by the server and the format needed by the client. throwaway prototype A prototype that is used to study some aspect of a system and is then discarded. timing diagram In UML, a diagram that shows one or more objects’ changes in state over time. toolsmith Someone whose job is to build tools for use by other developers. top‐down design A design process where you start with a high‐level statement of a problem and then successively break the problem into more detailed and smaller pieces until the pieces are small enough to implement. Also called stepwise refi nement. total cost of ownership (TCO) The total expected cost of a software application including development costs, deployment costs, and maintenance costs over the expected lifetime of the application. (Often maintenance costs account for 75 percent of TCO.) tracker In XP, someone who monitors the team’s progress and the team members’ progress, and who calculates metrics. transitive dependency In a relational database, when a nonkey fi eld’s value depends on another nonkey fi eld’s value. tuple See record d . two‐tier architecture A design where a client (often the user interface) is separated from the server (normally the database). UML See Unifi ed Modeling Language . Unifi ed Modeling Language (UML) A collection of diagramming techniques for describing different aspects of a system. 436 ❘ GLOSSARY Unifi ed Process (UP) An iterative and incremental development framework that involves four stages: inception, elaboration, construction, and transition. unit test A test that verifi es the correctness of a specifi c piece of code. UP See Unifi ed Process . use case A description of a series of interactions between actors. The actors can be users or parts of the application. A simple template might include a title, main success scenario, and extensions (other variations on the scenario). use case diagram In UML, a diagram that represents a user’s interaction with the system. Use case diagrams show stick fi gures representing actors (someone or something that performs a task) connected to tasks represented by ellipses. user requirements These describe how the project will be used by the eventual end users. user story A short story explaining how the system will let the user do something. velocity In Scrum, the amount of work the team can perform during a sprint, usually measured in story points per sprint. version management Managing the versions of items produced by the project such as requirements documents, designs, and, of course, source code. You should be able to retrieve any earlier version of those items if necessary. Also called version tracking, change management, and change tracking. version tracking See version managementt. vertical prototype A prototype that has little breadth but great depth. visionary Someone who has a clear vision about what the application should do. V‐model Basically, a waterfall model that’s been bent into a V shape to emphasize that each task on the left side of the V corresponds to a task on the right side. waterfall A predictive development where each project phase fl ows into the next. waterfall with feedback k A variation on the waterfall model where each phase is allowed to feed information back to the preceding phase. web service A service that provides a standardized web‐based interface so that it is easy to invoke over the Internet. white‐box test A test designed by someone who knows how the code works internally. That person can guess where problems may lie and create tests specifi cally to look for those problems. WIP See work in progress . work in progress (WIP) The work being done at a given moment, particularly in a Kanban project. working prototype See functional prototype . workshop facilitator Someone who plans, runs, and encourages participation at workshops, particularly DSDM workshops. XP See Extreme Programmingg. {{footer navbar
software_engineering_topics.txt · Last modified: 2020/11/20 01:13 by 127.0.0.1