ACM-SW key terms
ACM-SW · Get comfortable with the vocabulary.
- Requirement elicitation
- Related: Stakeholder, Functional requirement
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.
- Functional requirement
- Related: Non-functional requirement, Acceptance criteria
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.
- Non-functional requirement
- Related: Functional requirement, Quality attribute
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.
- Stakeholder
- Related: Requirement elicitation, Traceability
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.
- Acceptance criteria
- Related: Functional requirement, Verification
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.
- Use case
- Related: Actor, User story
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.
- Actor
- Related: Use case
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.
- User story
- Related: Use case, Acceptance criteria
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.
- Traceability
- Related: Stakeholder, Regression testing
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.
- Quality attribute
- Related: Non-functional requirement, Architecture
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.
- Architecture
- Related: Quality attribute, Design pattern, Cohesion
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.
- Design pattern
- Related: Architecture, Refactoring
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.
- Cohesion
- Related: Coupling, Modularity
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.
- Coupling
- Related: Cohesion, Modularity
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.
- Modularity
- Related: Cohesion, Coupling
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.
- Interface
- Related: Modularity, Coupling
A defined boundary through which two components interact, specifying the operations, inputs, outputs, and constraints one side exposes while hiding its internal implementation.
- Refactoring
- Related: Technical debt, Unit test, Design pattern
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.
- Technical debt
- Related: Refactoring, Code review
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.
- Code review
- Related: Code smell, Technical debt
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.
- Code smell
- Related: Refactoring, Code review
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.
- Coding standard
- Related: Code review, Static analysis
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.
- Static analysis
- Related: Coding standard, Code smell
Examination of source or compiled code by tooling without executing it, used to detect defects, style violations, and risky constructs early and cheaply.
- Unit test
- Related: Integration test, Test double
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.
- Integration test
- Related: Unit test, Test double
A test that exercises two or more real components together to verify that their interactions, data exchange, and interfaces work as intended.
- Test double
- Related: Unit test
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.
- Regression testing
- Related: Traceability, Refactoring
Re-running a chosen set of existing tests after a change to confirm that previously working behavior still works and that nothing unintended broke.
- Verification
- Related: Validation, Acceptance criteria
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.
- Validation
- Related: Verification, Stakeholder
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.
- Boundary value analysis
- Related: Equivalence partitioning, Test case
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.
- Equivalence partitioning
- Related: Boundary value analysis, Test case
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.
- Test case
- Related: Boundary value analysis, Regression testing
A documented set of preconditions, inputs, and expected results assembled to verify a specific behavior or requirement, reusable for regression runs.
- Version control
- Related: Baseline, Continuous integration
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.
- Baseline
- Related: Version control, Change control
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.
- Change control
- Related: Baseline, Configuration management
The formal process by which proposed changes to a baselined product are recorded, evaluated for impact, approved or rejected, and then implemented and verified.
- Configuration management
- Related: Baseline, Change control, Version control
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.
- Continuous integration
- Related: Version control, Unit test
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.
- Software process model
- Related: Agile development, Software life cycle
A simplified representation of the activities, artifacts, roles, and sequencing used to develop software, such as waterfall, iterative, or incremental approaches.
- Software life cycle
- Related: Software process model, Software maintenance
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.
- Agile development
- Related: Software process model, User story
An approach that favors short iterations, frequent delivery of working software, close collaboration with customers, and responsiveness to change over comprehensive up-front documentation.
- Software maintenance
- Related: Refactoring, Software life cycle
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.
- Software metric
- Related: Code smell, Software quality assurance
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.
- Software quality assurance
- Related: Software metric, Code review
The planned and systematic activities, including process definition, reviews, audits, and measurement, intended to give confidence that quality objectives are being met.
- Professional code of ethics
- Related: Conflict of interest
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.
- Conflict of interest
- Related: Professional code of ethics
A situation in which a practitioner's personal, financial, or other interest could improperly influence professional judgment, which must be disclosed or avoided.
- Intellectual property
- Related: Professional code of ethics
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.