Glossary
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.
General Terms
- Chip away
- v. 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 "chip away" comes from an old joke: when
a sculptor was 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."
- Attached worksheet
- n. The idea is similar to filling in an IRS form and using
worksheets to calculate subtotals or make specific decisions. That
is to say, there is a hierarchy to the templates: there are the main
templates, and then worksheets for specific topics. We have divided
the information into several files so that each file is focused on
one topic, and so that each file can be worked on by one person in a
reasonable amount of time.
- Process impact
- n. The process impact box on each template explains where the
current template fits into the software development process. It
usually includes a brief comment on who should create the document,
and who would be expected to make use of it.
- Checklist
- n. There are two kinds of checklists:
- Many of the templates have a section with questions that help
to check the work in that template. Often the sample answers to
the checklist questions suggest corrective actions.
- For design and code review meetings, there are links to
guidelines and checklists that help identify common errors in
the artifacts reviewed in those meetings.
- Sticky note
- n. The idea is similar to a post-it note attached to a document
that tells you to "sign here" or fill in a certain field. There are
two types of sticky notes:
- TODO notes instruct you on how to fill in the template. This is
the minimum that you need to do. One of the main goals of ReadySET Pro
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 notes help you think of better ways to fill in the
template. Another goal of ReadySET Pro 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 the work described in the sticky note, you may delete the
sticky note.
Computer Science and Technology Terms
- API (Application Program Interface)
- n. 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
messages.
- SOAP (Simple Object Access Protocol)
- n. SOAP 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.
Process Terms
- Change Control Board (CCB)
- n. A group of people who review proposed changes to the
project 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 retest the entire product). A CCB is usually
composed of development managers and representatives of other
stakeholders, such as the QA department manager.
- Feature Complete
- 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
- 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
- n. 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,
and RC number.
- External Release Number
- n. External release numbers are the numbers that users
see. They may be the same as the internal release number,
especially if the product being built is a component intended to be
reused by another engineering group in the same development
organization. External release number are often simpler, and may
not count up logically. E.g., "Office 2000", "10 Optimized".
- Release Number
- n. The term "release number" by itself refers to an external release
number. Users normally are not aware of the existence of any
internal release numbers.
- Planning Variables
- n. The set of variables that must be balanced in
planning a project:
- Schedule
- Functionality
- Budget
- Quality
- Risk
Requirements Terms
- Feature specification
- n. A feature specification focuses on one feature of a software
product and completely describes how that feature can be used.
Feature specifications are described fully here. One feature may be used in
many different ways as part of many different use cases.
- Use case
- n. The main part of a use case is a set of steps that give an
example of how an actor can use the
product to succeed at a goal. These steps are called the "Main
success scenario", and they include both user intentions and system
responses. Use cases are described fully here. One use case may show how the
actor uses several features to accomplish a goal.
- Actor
- n. A person or external system that uses the system being built.
Design Goals
- Correctness
- This design correctly matches the given requirements.
- Feasibility
- It is possible for the design to be implemented and tested with
the planned amount of time and effort.
- Understandability
- Developers can understand this design and correctly implement
it.
- Implementation phase guidance
- This design divides the implementation into components or
aspects that can correspond to reasonable implementation tasks.
- Modularity
- Concerns are clearly separated so that the impact of most design
changes would be limited to only one or a few modules.
- Extensibility
- New features or components can be easily added later.
- Testability
- It is easy to test components of this design independently, and
information is available to help diagnose defects.
- Efficiency
- The design enables the system to perform functions by using an
acceptable amount of time, storage space, bandwidth, and other
resources.
- Ease of integration
- The components can work together, and making them work together
can be accomplished within the planned budget and schedule.
- Capacity matching
- The architecture deploys components onto machines that provide
needed resources with reasonable total expense. E.g., a database
should run on a machine with fast disks, while an application server
might depend more on CPU speed.
- Expressiveness
- This design allows for storage of all valid values and
relationships. I.e., the functionality of the system is not unduly
restricted by the design of its database.
- Ease of access
- Application code to access stored data is simple.
- Reliability
- Stored data cannot easily be corrupted by defective code,
concurrent access, unexpected process termination, or other causes.
- Data capacity
- The system can store the amount of data needed.
- Data security
- The system protects sensitive user and corporate data from
unauthorized access or modification.
- Performance
- The design allows data to be accessed and updated quickly.
- Interoperability
- The database or data files can be accessed and/or updated by
other applications.
- Intrusion prevention
- Prevent unauthorized access at the operating system level. E.g.,
prevent hackers from opening a command shell on the server.
- Abuse prevention
- Prevention of abuse (e.g., using the system to send spam).
- Auditability
- The system allows all changes to be accounted for later. I.e.,
we can look back and see who made each change.
- Understandability and learnability
- 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
- The UI is well matched to the users' tasks and it can be used
with a reasonable number of clicks and keystrokes.
- Safety
- Users are not likely to accidentally produce an undesired result,
e.g., delete data, or send a half-finished email.
- Consistency and familiarity
- Users can apply their knowledge of similar UIs or UI standards
to this system.
UI Terms
- Abstract widget
- n. Each abstract widget is a piece of information or a
user interface affordance. In GUI design, each abstract component
will eventually be implemented as a widget, but the choice of
specific widgets happens later. E.g., an abstract widget may offer
the user a choice of one of five options. That abstract widget
could be implemented with any one of several concrete widgets, such
as a radio button group, sub-menu, drop-list, combo-box, or
roller.
- Interaction context
- n. An interaction context is an exclusive UI mode: the
user can only use one interaction context at a time. All the UI
elements within one context are visible and usable at the same time.
E.g., a dialog with three tabs has three interaction contexts
because only one tab can be used at a time. Users can easily move
among a few contexts while performing the steps of a use case, but
use cases that require too many contexts are usually difficult to
use.
- Cognitive walk-through
- n. A cognitive walk-through is a systematic method for
evaluating how well a user interface supports a specific use case.
Any step that fails one of the following indicates a potential usability
problem:
- Will the user realize that he/she should have the intention
listed in this step?
- Will the user notice the relevant UI affordance?
- Will the user associate the intention with the affordance?
- Does the system response clearly indicate that progress is
being made toward the use case goal?
- UI zone
- n. A UI zone is a set of pages that share common
characteristics such as navigational elements and security
constraints. E.g. user screens might be in one zone, whereas
administrative screens would be in a second zone. Typically an
application UI will have only three to seven zones, even if there
are dozens of screens. Zones are considered during UI design and
may or may not be explicitly visible to users.
QA Terms
- Bug
- n. Deprecated since 1991. See defect.
- Error
- n. A mistaken thought in the developer's mind. Often
caused by miscommunication or bad assumptions. Errors can lead to defects. E.g., a developer might erroneously
think that the square root of -4 is -2.
- Defect
- n. The result of the developer's 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
- 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 is visible.
- Failure
- n. The user-visible result of a fault. E.g., an error message or an incorrect
result. This is evidence that can be included in a defect report.
Developers use failure evidence during debugging to eventually find
and remove defects.
QA Goals
- Functionality > Correctness
- 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
- 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
- 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
- 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 the QA plan.
- Functionality > Factual correctness
- The data in the system is a true representation of the real
world. Any system that contains initial data or gathers data about
the real world should be sure that the data is factually correct.
E.g., a tax preparation program should embody correct and
up-to-date facts about tax law.
- Usability > Understandability and Readability
- 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
- 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
- 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., the user must invent an 8-character filename for their
"Christmas card list." E.g., the user must total their own tax
deductions.
- Usability > Efficiency
- Users should be able to accomplish common tasks with reasonable
effort. Common tasks should be possible with only one or two
user actions. 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
- Humans are error-prone, but the negative impact 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 ability to undo.
- Usability > Consistency and Familiarity
- Users should be able to apply their past experience with 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 chance that the user is dealing with another
currency on that step of his/her task.
- Usability > Subjective satisfaction
- Users should feel generally satisfied with the UI. This is a
subjective quality that sums up all the other user interface qualities
as well as aesthetics.
- Security
- The system should only allow usage by authorized users, and
restrict usage based on permissions. The system should not allow
users to side-step security rules or exploit security holes. E.g.,
all user input should be validated and any malicious input should
be rejected.
- Reliability > Consistency under load
- Every system has some capacity limits. What happens when those
limits are exceeded? The system should never lose or corrupt
data.
- Reliability > Consistency under concurrency
- Systems that allow concurrent access by multiple users, or that
use concurrency internally, should be free of race conditions,
live-lock, and deadlock.
- Reliability > Availability under load
- Every system has some capacity limits. What happens when those
limits are exceeded? The system should continue to service those
requests that it is capable of handling. It should not crash or
stop processing all requests.
- Reliability > Longevity
- The system should continue to operate as long as it is needed.
It should not gradually use up a limited resource. Longevity
defects include memory leaks or rapidly filling the disk with log
files.
- Efficiency
- The system's operations should execute quickly, with reasonable
use of machine and network resources. I.e., if one user does one
operation, it should execute efficiently.
- Scalability
- 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 large
number of users, a large number of files, very large-sized files,
or very high capacity disks. Some specific scalability goals
are listed below.
- Scalability > Performance under load
- 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
- 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 size.
- Operability
- 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
- Developers must understand the system before they can safely
make changes to it. The understandability goal addresses how easy
it is for (future) developers to understand how the system
works.
- Maintainability > Evolvability
- The evolvability quality affects the overall cost of future
changes. I.e., can the system easily be modified and extended over
time?
- Maintainability > Testability
- Testability determines if the system can easily be
tested. I.e., 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 during debugging? Is testing practical with
the available testing tools?
Additional Standard Terms
For additional standard terms, see the following reference sites: