ReadySetGit/Glossary-Standard-Terms.md

561 lines
18 KiB
Markdown
Raw Normal View History

2018-08-14 18:25:38 +00:00
**Process impact:** This file as a dictionary of standard terms defined
as they are used across projects. Individual projects should not need to
edit this file. Writing out the definitions of terms and acronyms here
helps keep other documents more concise and easy to edit. Check the
[ReadySET glossary](http://readyset.tigris.org/templates/glossary-std.html) for
updates.
2018-08-23 17:23:45 +00:00
Jump to: [General](#general-terms) | [Computer science & technology](#computer-science-and-technology-terms) | [Process](#process-terms) | [Software development tools](#development-tool-terms) | [Requirements](#requirements-terms) | [Design](#design-terms) | [Design goals terms](#desigD-DIAGRAMn-goals-terms) | [QA terms](#qa-terms) | [QA goals terms](#qa-goals-terms) | [Additional terms](#additional-standard-terms)| [Project terms](Glossary)
2018-08-14 18:25:38 +00:00
### General Terms
##### Chipping away
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The process of removing sample text from templates when that text
does not apply to the current project. Often some of the sample text
will be kept or revised to fit the current project. Even if the
sample text does not fit the current project, it provides a reusable
example of how to phrase that type of description. The term
"chipping away" comes from an old joke: when a sculptor is asked how
he carved a marble statue of a horse, he replies "It was easy, I
just started with a big block of marble and chipped away everything
that did not look like a horse."
2018-08-23 17:23:45 +00:00
##### Attached worksheetD-DIAGRAM
The idea is similar to fillD-DIAGRAMing in an IRS form and using worksheets
to calculate subtotals or mD-DIAGRAMake specific decisions. That is to say,
there is a hierarchy to theD-DIAGRAM templates: there are the main templates,
and then worksheets for speD-DIAGRAMcific topics. We have divided the
information into several fiD-DIAGRAMles so that each file is focused on one
topic, and so that each filD-DIAGRAMe can be worked on by one person in a
reasonable amount of time.D-DIAGRAM
D-DIAGRAM
##### Process impactD-DIAGRAM
The process impact box on eD-DIAGRAMach template explains where the current
template fits into the softD-DIAGRAMware development process. It usually
2018-08-14 18:25:38 +00:00
includes a brief comment on who should create the document, and who
would be expected to make use of it. You can change the process
impact box, but you should not need to.
##### Checklist
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
There are two kinds of checklists:
- Many of the templates have a section with questions that help
you check your work in that template. Often the sample answers
to the questions prompt you to take some corrective action.
- For design and code review meetings, there are links to
guidelines and checklists that help you identify common errors
in those artifacts.
##### Sticky note
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The idea is similar to a post-it note attached to a document that
tells you do "sign here" or fill in a certain part. There are two
types of sticky notes:
- *TODO: Instructs you on how to fill in the template. This is the
minimum that you need to do. One of the main goals of ReadySET
is to help your team *quickly* carry out basic software
engineering activities. The TODO sticky notes make that easy by
making the templates more self-explanatory.*
- TIP: Helps you think of better ways to fill in the template. One
of the other main goals of ReadySET is to help your team make
better decisions that can make your whole project more
successful. The TIP sticky notes help with that.
After you have done what the sticky note says, you can delete the
sticky note.
### Computer Science and Technology Terms
##### ::API (Application Programming Interface)
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
An API is a set of functions that one software component makes
available to other software components. That allows other programs
to "call" this program via direct function calls, or more indirect
communications such as [SOAP](#soap) messages.
##### ::SOAP
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
SOAP (Simple Object Access Protocol) is the message format used by
standard web services. It entails sending an XML document to a
server in order to invoke an operation on the server-side.
[More information on SOAP](http://directory.google.com/Top/Computers/Programming/Internet/Web_Services/SOAP/?tc=1).
### Process Terms
##### Change Control Board (CCB)
2018-08-23 17:23:45 +00:00
A group of people who review proposed changes toD-DIAGRAM the project
2018-08-14 18:25:38 +00:00
requirements and/or source code to accept or reject changes in each
particular release. Proposed changes are usually rejected if they
introduce too much risk or would trigger additional effort (e.g.,
the need to redo a lot of testing on new code). A CCB is usually
composed of managers and representatives of other stakeholders such
as the QA group and key customers.
##### Feature Complete
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
A release is called "feature complete" when the development team
agrees that no new features will be added to this release. New
features may still be suggested for later releases. More development
work needs to be done to implement all the features and
repair defects.
##### Code Complete
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
A release is called "code complete" when the development team agrees
that no entirely new source code will be added to this release.
There may still be source code changes to fix defects. There may
still be changes to documentation and data files, and to the code
for test cases or utilities. New code may be added in a
future release.
##### Internal Release Number
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
An internal release number is the number that the development team
gives each release. Internal release numbers typically count up
logically, i.e., they do not skip numbers. They may have many parts:
e.g., major, minor, patch-level, build number, RC number.
##### External Release Number
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
External release numbers are the numbers that users see. Often, they
will be the same as the internal release number. That is especially
true if the product being built is a component intended to be reused
by another engineering group in the same development organization.
External release numbers can be different for products that
face competition. External release number are simpler, and may not
count up logically. E.g., a certain major ISP jumped up to version 8
of their client software because their competition had released
version 8. Later, the competition used version "10 Optimized" rather
than "10.1" or "11".
##### Release Number
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The term "release number" by itself refers to an
[external release number](#external_release_number). Users normally are not aware
of the existence of any internal release numbers.
### Development Tool Terms
#### Version Control System
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION1
#### Commit Log Message
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION1
#### Issue Tracker
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION1
#### Unit Testing Automation
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION1
#### Automated Build System
::DEFINITION1
#### Style Checker
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION1
#### Source Code Formatter (Pretty Printer)
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION1
#### System Test Automation
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION1
### Requirements Terms
#### Feature specification
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
A feature specification focuses on one feature of a software product
and completely describes how that feature can be used. It includes a
brief description of the purpose of the feature, the input and
output, and any constraints. Individual bullet items give precise
2018-08-14 18:36:54 +00:00
details on all aspects of the feature. One feature may be used in
many different ways as part of many different use cases.
2018-08-14 18:31:13 +00:00
2018-08-14 18:36:54 +00:00
#### Use case
2018-08-23 17:23:45 +00:00
2018-08-14 18:36:54 +00:00
The main part of a use case is a set of steps that give an example
of how an [actor](#actor) can use the product to succeed at
a goal. These steps are called the "Main success scenario", and they
2018-08-14 18:25:38 +00:00
include both user intentions and system responses. One use case may
show how the actor uses several features to accomplish a goal.
#### Actor
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
A user or an external system that uses the system being built.
### Design Terms
#### ::TERM2
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
::DEFINITION2
### Design Goals Terms
#### Correctness
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
This design correctly matches the given requirements.
#### Feasibility
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
This design can be implemented and tested with the planned amount of
time and effort.
#### Understandability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Developers can understand this design and correctly implement it.
#### Implementation phase guidance
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
This design divides the implementation into components or aspects
that can correspond to reasonable implementation tasks.
#### Modularity
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Concerns are clearly separated so that the impact of most design
changes would be limited to only one or a few modules.
#### Extensibility
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
New features or components can be easily added later.
#### Testability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
It is easy to test components of this design independently, and
information is available to help diagnose defects.
#### Efficiency
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The design enables the system to perform functions with an
acceptable amount of time, storage space, bandwidth, and
other resources.
#### Ease of integration
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The components will work together.
#### Capacity matching
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The architecture deploys components onto machines that provide
needed resources with reasonable total expense.
#### Expressiveness
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
It allows for storage of all valid values and relationships
#### Ease of access
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Application code to access stored data is simple
#### Reliability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Stored data cannot easily be corrupted by defective code, concurrent
access, or unexpected process termination
#### Data capacity
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The system can store the amount of data needed.
#### Data security
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Protection of sensitive user and corporate data from unauthorized
access or modification
#### Performance
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Data can be accessed quickly
#### Interoperability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The database or data files can be accessed and updated by other
applications
#### Intrusion prevention
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Prevent, e.g., hackers opening a command shell on our server.
#### Abuse prevention
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Prevention of abuse (e.g., using our system to send spam).
#### Auditability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
All changes can be accounted for later.
#### Understandability and learnability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Users can reasonably be expected to understand the UI at
first sight. Users will be able to discover additional features
without aid from other users or documentation, and they will be able
to recall what they have learned.
#### Task support and efficiency
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The UI is well matched to the users' tasks and it can be used with a
reasonable number of clicks and keystrokes.
#### Safety
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Users are not likely to accidentally produce an undesired result
(e.g., delete data, or send a half-finished email).
#### Consistency and familiarity
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Users can apply their knowledge of similar UIs or UI standards to
this system.
### QA Terms
#### Bug
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
*n.* **Deprecated** since 1991. See [defect](#defect).
#### Error
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
*v.* A mistaken thought in the developer's mind. Often caused by
miscommunication or bad assumptions. Errors can create
[defects](#defect). E.g., a developer might erroneously think that
the square root of -4 is -2.
#### Defect
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
*n.* The result of the developer's [error](#error) embodied in the
product source code, initial data, or documents. E.g., a square root
function which allows negative numbers as arguments is defective.
Defects can be removed by changing the source code, initial data,
or document.
#### Fault
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
*n.* The execution of defective code. E.g., if a certain input is
provided to defective code, it may cause an exception, or go into an
infinite loop, or store an incorrect value in an internal variable.
A fault is not normally visible to users, only the
[failure](#failure) is visible.
#### Failure
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
*n.* The user-visible result of a [fault](#fault). E.g., an error
message or an incorrect result. This is evidence that can be
reported in a defect report. Developers use failure evidence during
debugging to eventually find and remove [defects](#defect).
### QA Goals Terms
#### Functionality > Correctness
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Correctness is the most basic quality goal. It means that, when
valid inputs are given and the system is in a valid state and under
reasonable load, the system's behavior and results will be correct.
#### Functionality > Robustness
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Robustness is the system's ability to gracefully handle
invalid inputs. It should never be possible for any user input to
crash the system or corrupt data, even if that user input is
abnormal, unexpected, or malicious.
#### Functionality > Accuracy
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Accuracy refers to the mathematical precision of calculations done
by the system. Any system that does numeric calculations must
consider accuracy, e.g., financial or scientific applications.
#### Functionality > Compatibility
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Systems that claim to follow standards or claim compatibility with
existing systems must adhere to the relevant file formats,
protocols, and APIs. The relevant standards are linked at the top of
this document.
#### Functionality > Factual correctness
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Is the data in the system a true representation of the real world?
Any system that contains initial data or gathers data about the real
2018-08-23 17:23:45 +00:00
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
2018-08-14 18:25:38 +00:00
#### Usability > Understandability and Readability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Users need to understand the system to use it. The basic metaphor
should be understandable and appropriate to user tasks. Some defects
in understandability include unclear metaphors, poor or hard-to-see
labels, lack of feedback to confirm the effects of user actions, and
missing or inadequate on-line help.
#### Usability > Learnability and Memorability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Every user interface contains some details that users will need to
learn and remember. E.g., Alt-F to open the "File" menu. UI cues and
rules can make these details easier to learn and remember. E.g., the
"F" is underlined and, as a rule, the first letter is usually the
accelerator key.
#### Usability > Task support
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
This is the quality of match between user tasks and the system's UI.
Task support defects are cases where the system forces the user to
take unnatural steps to accomplish a task or where the user is given
no support for a difficult step in a task. E.g., must the user
invent an 8-character filename for their "Christmas card list"?
E.g., must users total their own tax deductions?
#### Usability > Efficiency
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Users should be able to accomplish common tasks with
reasonable effort. Common tasks should be possible with only one or
two steps. The difficulty of each step should also be considered.
E.g., does the user have to remember a long code number or click on
a very small button?
#### Usability > Safety
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Humans are error-prone, but the negative effects of common errors
should be limited. E.g., users should realize that a given command
will delete data, and be asked to confirm their intent or have the
option to undo.
#### Usability > Consistency and Familiarity
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Users should be able to apply their past experience from other
similar systems. This means that user interface standards should be
followed, and common conventions should be used whenever possible.
Also, UI elements that appear in several parts of the UI should be
used consistently, unless another UI quality takes priority. E.g.,
if most currency entry fields do not require a dollar-sign, then one
that does demand it is a consistency defect, unless there is a real
2018-08-23 17:23:45 +00:00
chance that the user is dealing with anoD-DIAGRAM
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
2018-08-14 18:25:38 +00:00
in his/her task.
2018-08-23 17:23:45 +00:00
#### Usability > Subjective satisfactionD-DIAGRAM
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
2018-08-14 18:25:38 +00:00
Users should feel generally satisfied with the UI. This is a
subjective quality that sums up the other user interface qualities
as well as aesthetics.
#### Security
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The system should allow usage only by authorized users, and restrict
usage based on permissions. The system should not allow users to
side-step security rule or exploit security holes. E.g., all user
input should be validated and any malicious input should
be rejected.
#### Reliability > Consistency under load
2018-08-23 17:23:45 +00:00
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
2018-08-14 18:25:38 +00:00
#### Reliability > Consistency under concurrency
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Systems that allow concurrent access by multiple users, or that use
concurrency internally, should be free of race conditions
and deadlock.
#### Reliability > Availability under load
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Every system has some capacity limits. What happens when those
limits are exceeded? The system should continue to service those
2018-08-23 17:23:45 +00:00
requests that it is capable of handling. It should not crash or sD-DIAGRAM
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
2018-08-14 18:25:38 +00:00
processing all requests.
#### Reliability > Longevity
2018-08-23 17:23:45 +00:00
The system should continue to operate as long as it is needed. ItD-DIAGRAM
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
should not gradually use up a limited resource. Example longevityD-DIAGRAM
D-DIAGRAM
D-DIAGRAM
D-DIAGRAM
2018-08-14 18:25:38 +00:00
defects include memory leaks or filling the disk with log files.
#### Efficiency
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The system's operations should execute quickly, with reasonable use
of machine and network resources. E.g., if one user does one
operation, it should execute efficiently.
#### Scalability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Scalability is a general quality that holds when the system
continues to satisfy its requirements when various usage parameters
are increased. E.g., a file server might be scalable to a high
number of users, or to very large files or very high capacity disks.
Several specific scalability goals are listed below.
#### Scalability > Performance under load
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
This is a specific type of scalability goal dealing with the
performance of the system at times when it is servicing many
requests from many users.
#### Scalability > Large data volume
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
This is a specific type of scalability goal dealing with the ability
for the system to handle large data sets. Operations should continue
to be correct and efficient as data set size increases. Furthermore,
the user interface should still be usable as the data presented to
users increases in length.
#### Operability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
The long-term needs of system administrators should be
reliably supported. E.g., is the system easy to install? Can the
administrator recover from a crash? Is there sufficient log output
to diagnose problems in the field? Can the system's data be backed
up without downtime? Can the system be upgraded practically?
#### Maintainability > Understandability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Will it be easy for (future) developers to understand how the system
works?
#### Maintainability > Evolvability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Can the system easily be modified and extended over time?
#### Maintainability > Testability
2018-08-23 17:23:45 +00:00
2018-08-14 18:25:38 +00:00
Can the system easily be tested? Do the requirements precisely
specify possible inputs and the desired results? Can the system be
tested in parts? When failures are observed, can they be traced back
to defects in specific components (i.e., debugging)? Is testing
practical with the available testing tools?
### Additional Standard Terms
For additional standard terms, see the following reference sites:
- [Dictionary.com](http://www.dictionary.com/)
- [Whatis.com](http://www.whatis.com/)
- [NIST Dictionary of Algorithms and Data Structures](http://www.nist.gov/dads/)
- [Free on-line dictionary of computing](http:/http://foldoc.doc.ic.ac.uk/foldoc/index.html)
- [IBM's glossary of computing terms](http://www-3.ibm.com/ibm/terminology/goc/gocmain.htm)
- [Jargon File](http://www.jargon.org/)