ACM-SW study materials
ACM-SW study resources

ACM-SW key terms

ACM-SW · Get comfortable with the vocabulary.

Requirement elicitation

The activity of discovering what stakeholders actually need from a system, using interviews, workshops, observation, and document study, before any of it is written down as a formal requirement.

Related: Stakeholder, Functional requirement
Functional requirement

A statement describing a behavior or service the system must provide, such as computing a total or sending a notification, expressed so that a test can confirm whether it is satisfied.

Related: Non-functional requirement, Acceptance criteria
Non-functional requirement

A constraint on how well the system performs its functions, covering qualities such as response time, availability, security, usability, or portability, rather than a specific behavior.

Related: Functional requirement, Quality attribute
Stakeholder

Any person or group affected by or interested in a system, including users, customers, operators, regulators, and maintainers, whose concerns must be identified and reconciled during requirements work.

Related: Requirement elicitation, Traceability
Acceptance criteria

Concrete, checkable conditions that a work item must meet to be accepted by the customer, written before development so that both sides agree on what done means.

Related: Functional requirement, Verification
Use case

A description of a sequence of interactions between an actor and a system that produces a result of value to that actor, typically covering a main success path and alternative paths.

Related: Actor, User story
Actor

A role played by a person, device, or external system that interacts with the system under design, defined by what it does rather than by a specific individual.

Related: Use case
User story

A short, plain-language statement of a need from a user's perspective, often written as a role, a goal, and a benefit, intended to prompt conversation rather than replace detailed specification.

Related: Use case, Acceptance criteria
Traceability

The ability to follow the life of a requirement in both directions, linking it to its source and to the design elements, code, and tests that realize and verify it.

Related: Stakeholder, Regression testing
Quality attribute

A measurable property of a system such as performance, modifiability, or security, often expressed through scenarios that state a stimulus, the system's response, and a measurable outcome.

Related: Non-functional requirement, Architecture
Architecture

The fundamental organization of a system embodied in its components, their relationships to each other and the environment, and the principles guiding its design and evolution.

Related: Quality attribute, Design pattern, Cohesion
Design pattern

A named, reusable solution to a recurring design problem in a given context, describing the roles of participating elements and how they collaborate rather than providing finished code.

Related: Architecture, Refactoring
Cohesion

The degree to which the responsibilities inside a single module belong together and serve one purpose; high cohesion makes a module easier to understand, test, and change.

Related: Coupling, Modularity
Coupling

The degree of interdependence between modules, measured by how much one must know about another; low coupling limits the ripple effect of changes across a system.

Related: Cohesion, Modularity
Modularity

The property of a system built from parts that can be understood, changed, and tested somewhat independently, achieved by careful separation of concerns and well-defined interfaces.

Related: Cohesion, Coupling
Interface

A defined boundary through which two components interact, specifying the operations, inputs, outputs, and constraints one side exposes while hiding its internal implementation.

Related: Modularity, Coupling
Refactoring

A disciplined change to the internal structure of code that improves readability or design without altering observable behavior, usually performed in small steps backed by automated tests.

Related: Technical debt, Unit test, Design pattern
Technical debt

The accumulated cost of shortcuts and expedient choices in a codebase that make future changes harder, analogous to interest paid until the debt is deliberately repaid.

Related: Refactoring, Code review
Code review

A systematic examination of source changes by people other than the author, aimed at finding defects, checking standards, and spreading knowledge before the change is merged.

Related: Code smell, Technical debt
Code smell

A surface symptom in source code, such as long methods or duplicated logic, that suggests a deeper design problem and often signals where refactoring is worthwhile.

Related: Refactoring, Code review
Coding standard

An agreed set of rules for naming, formatting, and structuring source code within a project, which reduces friction in reading and reviewing code and can be partly automated.

Related: Code review, Static analysis
Static analysis

Examination of source or compiled code by tooling without executing it, used to detect defects, style violations, and risky constructs early and cheaply.

Related: Coding standard, Code smell
Unit test

An automated test that exercises a single small piece of production code in isolation, typically with dependencies replaced by test doubles, and runs fast enough to be run often.

Related: Integration test, Test double
Integration test

A test that exercises two or more real components together to verify that their interactions, data exchange, and interfaces work as intended.

Related: Unit test, Test double
Test double

A stand-in object substituted for a real dependency during testing, such as a stub returning canned data or a mock recording calls, to isolate the code under test.

Related: Unit test
Regression testing

Re-running a chosen set of existing tests after a change to confirm that previously working behavior still works and that nothing unintended broke.

Related: Traceability, Refactoring
Verification

Confirmation by examination and testing that a work product meets the requirements and standards specified for it, answering the question of whether the product was built right.

Related: Validation, Acceptance criteria
Validation

Confirmation that the product actually fulfills its intended use and stakeholder needs in its real environment, answering the question of whether the right product was built.

Related: Verification, Stakeholder
Boundary value analysis

A black-box test design technique that selects inputs at and just around the edges of valid input ranges, where defects are statistically most likely to appear.

Related: Equivalence partitioning, Test case
Equivalence partitioning

A black-box test design technique that divides input space into classes expected to be handled alike, then tests one representative value from each class to reduce redundant cases.

Related: Boundary value analysis, Test case
Test case

A documented set of preconditions, inputs, and expected results assembled to verify a specific behavior or requirement, reusable for regression runs.

Related: Boundary value analysis, Regression testing
Version control

A system that records changes to files over time, allowing authors to retrieve earlier versions, work on parallel branches, and merge contributions with a traceable history.

Related: Baseline, Continuous integration
Baseline

A formally approved and fixed version of a configuration item or set of items that serves as the reference point for further development and can be changed only through change control.

Related: Version control, Change control
Change control

The formal process by which proposed changes to a baselined product are recorded, evaluated for impact, approved or rejected, and then implemented and verified.

Related: Baseline, Configuration management
Configuration management

The discipline of identifying configuration items, controlling their changes, recording their status, and auditing them so that the exact composition of a product is known at all times.

Related: Baseline, Change control, Version control
Continuous integration

A practice in which developers merge small changes into a shared mainline frequently, with each merge triggering an automated build and test run to expose integration problems quickly.

Related: Version control, Unit test
Software process model

A simplified representation of the activities, artifacts, roles, and sequencing used to develop software, such as waterfall, iterative, or incremental approaches.

Related: Agile development, Software life cycle
Software life cycle

The full span of a product from concept and requirements through design, construction, testing, release, maintenance, and eventual retirement, each phase with its own activities and outputs.

Related: Software process model, Software maintenance
Agile development

An approach that favors short iterations, frequent delivery of working software, close collaboration with customers, and responsiveness to change over comprehensive up-front documentation.

Related: Software process model, User story
Software maintenance

The work of modifying software after release to correct faults, adapt to new environments, improve performance, or add features, which typically consumes most of a system's total cost.

Related: Refactoring, Software life cycle
Software metric

A quantitative measure of some attribute of a product or process, such as cyclomatic complexity or defect density, used to understand, compare, or predict software quality.

Related: Code smell, Software quality assurance
Software quality assurance

The planned and systematic activities, including process definition, reviews, audits, and measurement, intended to give confidence that quality objectives are being met.

Related: Software metric, Code review
Professional code of ethics

A published set of principles, such as those from ACM or IEEE, that guides practitioners to act in the public interest, honor confidentiality, and disclose conflicts or unsafe products.

Related: Conflict of interest
Conflict of interest

A situation in which a practitioner's personal, financial, or other interest could improperly influence professional judgment, which must be disclosed or avoided.

Related: Professional code of ethics
Intellectual property

Legally protected rights in creations of the mind, such as copyright, patents, and trade secrets, which constrain how software, code, and documentation may be used or redistributed.

Related: Professional code of ethics