PASC study materials
PASC study resources

PASC key terms

PASC · Get comfortable with the vocabulary.

Requirement

A statement describing a capability, characteristic, or constraint that a software system must satisfy. It can describe what users need, what the system must do, or a restriction on how it is built.

Related: Functional Requirement, Nonfunctional Requirement, Requirements Traceability
Functional Requirement

A requirement that specifies a behavior or function the system must perform, such as computing a total or authenticating a user. It describes what the software does in response to given inputs.

Related: Requirement, Use Case, Acceptance Criteria
Nonfunctional Requirement

A requirement describing a quality attribute or constraint rather than a behavior, such as performance, security, usability, or availability. These shape how well the system performs its functions and are often harder to verify.

Related: Requirement, Quality Attribute, Acceptance Criteria
Use Case

A description of a sequence of interactions between an actor and a system that yields an observable result of value. It captures a goal-oriented scenario and its alternate paths.

Related: Actor, Functional Requirement, Acceptance Criteria
Actor

A person, role, or external system that interacts with the system under design to accomplish a goal. Actors are drawn from outside the system boundary and may be human or automated.

Related: Use Case, System Boundary
Acceptance Criteria

Concrete, testable conditions that a work item must satisfy to be accepted by the customer or product owner. They clarify intent and form the basis for verification tests.

Related: Functional Requirement, Use Case, Test Case
Requirements Traceability

The ability to link requirements forward to design elements, code, and tests, and backward to their sources. It supports impact analysis when requirements change and helps confirm coverage.

Related: Requirement, Impact Analysis, Test Case
Requirements Elicitation

The activity of discovering stakeholder needs through techniques such as interviews, workshops, observation, and prototyping. Its goal is to surface both stated and unstated requirements before specification.

Related: Stakeholder, Requirement, Prototype
Stakeholder

Any individual or group with an interest in the system or affected by its outcomes, including users, sponsors, operators, and regulators. Their needs and constraints inform requirements and priorities.

Related: Requirements Elicitation, Requirement
Software Architecture

The set of fundamental structural choices of a system: its major components, their responsibilities, their interactions, and the principles and constraints guiding them. It captures decisions that are costly to change later.

Related: Architectural Style, Design Pattern, Component
Architectural Style

A named family of system structures with characteristic components, connectors, and constraints, such as layered, client-server, or event-driven. Choosing a style sets broad trade-offs for qualities like scalability and modifiability.

Related: Software Architecture, Quality Attribute, Design Pattern
Design Pattern

A reusable, named solution to a recurring design problem in a particular context, describing collaborating roles and their responsibilities. Patterns communicate proven structures without prescribing exact code.

Related: Software Architecture, Coupling, Cohesion
Coupling

The degree to which software modules depend on one another. Low coupling is generally desirable because it limits the ripple effects of changes and makes modules easier to test and replace independently.

Related: Cohesion, Modularity, Refactoring
Cohesion

The degree to which the responsibilities inside a single module belong together and serve one purpose. High cohesion is generally desirable because focused modules are easier to understand, reuse, and maintain.

Related: Coupling, Modularity, Single Responsibility Principle
Modularity

The property of a system built from discrete, replaceable units with well-defined interfaces. Good modularity localizes change and enables independent development and testing of parts.

Related: Coupling, Cohesion, Interface
Interface

A defined boundary through which a component exposes operations and data to other components while hiding its internal implementation. Clear interfaces allow substitution and reduce unintended dependencies.

Related: Modularity, Coupling, API
Quality Attribute

A measurable property of a system such as performance, security, availability, or modifiability that shapes architectural decisions. Quality attributes are often expressed as scenarios with stimuli, responses, and measures.

Related: Nonfunctional Requirement, Architectural Style, Software Architecture
Single Responsibility Principle

A design guideline stating that a module or class should have one reason to change, meaning it should serve a single cohesive responsibility. It reduces coupling between unrelated concerns.

Related: Cohesion, Coupling, Refactoring
API

An application programming interface: the set of operations, data types, and conventions by which one software component invokes another. It forms a contract that callers rely on and providers must honor.

Related: Interface, Version Control, Backward Compatibility
Refactoring

A disciplined change to the internal structure of code that improves readability or design without altering observable behavior. It is typically supported by automated tests that confirm behavior is preserved.

Related: Technical Debt, Unit Test, Coupling
Technical Debt

The accumulated cost of shortcuts and suboptimal design decisions that make future changes harder. Like financial debt, it incurs ongoing interest in the form of slower development and higher defect risk.

Related: Refactoring, Code Review, Software Maintenance
Code Review

A systematic examination of source changes by peers before integration, checking correctness, style, security, and design. It catches defects early and spreads knowledge across the team.

Related: Static Analysis, Technical Debt, Version Control
Static Analysis

Automated examination of source code without executing it to find defects, style violations, or security weaknesses. Tools flag patterns such as unused variables, null risks, or unsafe calls.

Related: Code Review, Unit Test, Technical Debt
Unit Test

An automated test that exercises a single small unit of code, such as a function or class, in isolation from its dependencies. Unit tests run fast and pinpoint failures precisely.

Related: Test Case, Test Double, Regression Testing
Test Case

A documented set of preconditions, inputs, steps, and expected results used to verify a specific behavior. Well-designed test cases cover both normal and exceptional paths.

Related: Acceptance Criteria, Unit Test, Test Coverage
Test Double

A stand-in object substituted for a real dependency during testing, such as a stub, mock, or fake. Doubles isolate the unit under test and let testers control dependency behavior.

Related: Unit Test, Test Case
Regression Testing

Re-running selected tests after changes to confirm that existing behavior still works and nothing previously working has broken. It is central to safe modification and release.

Related: Unit Test, Continuous Integration, Software Maintenance
Test Coverage

A measure of how much of the software a test suite exercises, expressed in terms such as statements, branches, or requirements covered. It indicates gaps but does not by itself prove correctness.

Related: Test Case, Unit Test, Requirements Traceability
Version Control

A system that records changes to files over time so that specific versions can be retrieved, compared, and merged. It enables collaboration, history tracking, and recovery from mistakes.

Related: Branch, Merge Conflict, Continuous Integration
Branch

An independent line of development within a version control system that diverges from a common base. Branches let teams isolate work such as features or fixes before integrating it.

Related: Version Control, Merge Conflict, Continuous Integration
Merge Conflict

A situation where version control cannot automatically combine changes because two branches modified the same part of a file. A developer must resolve it manually before integration completes.

Related: Branch, Version Control
Continuous Integration

A practice where developers integrate changes into a shared mainline frequently, each integration triggering automated build and test. It surfaces integration defects early and keeps the codebase releasable.

Related: Version Control, Regression Testing, Continuous Delivery
Continuous Delivery

A practice that keeps software in a state where it can be released to production at any time, with automated build, test, and deployment pipelines. Release timing remains a business decision.

Related: Continuous Integration, Deployment Pipeline
Backward Compatibility

The property that a new version of a system or API continues to support clients built against older versions. It protects existing users from breaking changes during upgrades.

Related: API, Version Control
Sprint

A fixed-length iteration, common in agile methods, during which a team builds and verifies an increment of potentially shippable work. Scope is planned at the start and reviewed at the end.

Related: Product Backlog, Velocity, Burndown Chart
Product Backlog

An ordered list of desired work items, such as features, fixes, and improvements, maintained by the product owner. Items are refined and prioritized so the team always works on the highest value next.

Related: Sprint, Velocity, Stakeholder
Velocity

A measure of how much backlog work a team completes per iteration, often in story points. It supports forecasting but should not be used to compare teams or pressure them to inflate estimates.

Related: Sprint, Product Backlog, Burndown Chart
Burndown Chart

A visual chart showing remaining work versus time within an iteration or release. Its slope reveals whether the team is on track to finish the planned scope.

Related: Sprint, Velocity
Risk Management

The process of identifying, assessing, prioritizing, and mitigating threats to project objectives. It includes contingency planning and ongoing monitoring so problems are addressed before they become crises.

Related: Stakeholder, Software Project Plan
Software Project Plan

A document describing scope, schedule, resources, milestones, risks, and quality approach for a project. It guides execution and is revised as conditions change.

Related: Risk Management, Sprint
Software Maintenance

The modification of software after delivery to correct faults, adapt to new environments, improve performance, or add features. It consumes a large share of total lifecycle cost.

Related: Technical Debt, Regression Testing, Legacy System
Legacy System

An older system that remains in use and is often critical to operations but is hard to change due to outdated technology, poor documentation, or scarce knowledge. It poses special risks for evolution.

Related: Software Maintenance, Refactoring, Technical Debt
Impact Analysis

The study of what will be affected by a proposed change, including code, tests, documentation, and dependent systems. It estimates effort and risk before modification begins.

Related: Requirements Traceability, Software Maintenance, Regression Testing
Reverse Engineering

The process of analyzing an existing system to recover its design, behavior, or data structures when documentation is missing or outdated. It often precedes reengineering or maintenance work.

Related: Legacy System, Software Maintenance
Professional Code of Ethics

A published set of principles guiding practitioner conduct, such as honesty, competence, public safety, and avoidance of conflicts of interest. It helps engineers weigh obligations to employers, clients, and the public.

Related: Conflict of Interest, Whistleblowing
Conflict of Interest

A situation where a professional's personal interests or outside relationships could improperly influence decisions made on behalf of an employer or client. It should be disclosed and managed.

Related: Professional Code of Ethics, Whistleblowing
Whistleblowing

Reporting a serious wrongdoing, such as a safety hazard or illegal practice, to an authority outside the organization when internal channels fail. It raises ethical tensions between loyalty and public welfare.

Related: Professional Code of Ethics, Conflict of Interest
System Boundary

The dividing line between what is inside the system under design and the external actors, systems, and environment it interacts with. It scopes requirements and clarifies responsibilities.

Related: Actor, Use Case, Requirement
Prototype

A preliminary, often partial implementation built to explore requirements, validate design ideas, or gather feedback. Prototypes may be discarded or evolved into production code.

Related: Requirements Elicitation, Stakeholder
Deployment Pipeline

An automated sequence of build, test, and deployment stages that moves code from commit toward release. It enforces quality gates and makes releases repeatable and fast.

Related: Continuous Integration, Continuous Delivery, Regression Testing
Component

A replaceable, independently deployable unit of software with a defined contract and explicit dependencies. Components are the building blocks of architectural structures.

Related: Interface, Modularity, Software Architecture