Offensive programming, the Glossary
Offensive programming is a name used for the branch of defensive programming that expressly departs from defensive principles when dealing with errors resulting from software bugs.[1]
Table of Contents
12 relations: Acceptance testing, Assertion (software development), Defensive programming, Design by contract, Enumerated type, Fail-fast system, Fault tolerance, Null pointer, Software bug, Strategy pattern, Test-driven development, Unit testing.
- Programming principles
Acceptance testing
In engineering and its various subdisciplines, acceptance testing is a test conducted to determine if the requirements of a specification or contract are met.
See Offensive programming and Acceptance testing
Assertion (software development)
In computer programming, specifically when using the imperative programming paradigm, an assertion is a predicate (a Boolean-valued function over the state space, usually expressed as a logical proposition using the variables of a program) connected to a point in the program, that always should evaluate to true at that point in code execution.
See Offensive programming and Assertion (software development)
Defensive programming
Defensive programming is a form of defensive design intended to develop programs that are capable of detecting potential security abnormalities and make predetermined responses. Offensive programming and defensive programming are programming paradigms and programming principles.
See Offensive programming and Defensive programming
Design by contract
Design by contract (DbC), also known as contract programming, programming by contract and design-by-contract programming, is an approach for designing software. Offensive programming and design by contract are programming paradigms.
See Offensive programming and Design by contract
Enumerated type
In computer programming, an enumerated type (also called enumeration, enum, or factor in the R programming language, and a categorical variable in statistics) is a data type consisting of a set of named values called elements, members, enumeral, or enumerators of the type.
See Offensive programming and Enumerated type
Fail-fast system
In systems design, a fail-fast system is one that immediately reports at its interface any condition that is likely to indicate a failure. Offensive programming and fail-fast system are programming principles.
See Offensive programming and Fail-fast system
Fault tolerance
Fault tolerance is the ability of a system to maintain proper operation despite failures or faults in one or more of its components.
See Offensive programming and Fault tolerance
Null pointer
In computing, a null pointer or null reference is a value saved for indicating that the pointer or reference does not refer to a valid object.
See Offensive programming and Null pointer
Software bug
A software bug is a bug in computer software.
See Offensive programming and Software bug
Strategy pattern
In computer programming, the strategy pattern (also known as the policy pattern) is a behavioral software design pattern that enables selecting an algorithm at runtime.
See Offensive programming and Strategy pattern
Test-driven development
Test-driven development (TDD) is a way of writing code that involves writing an automated unit-level test case that fails, then writing just enough code to make the test pass, then refactoring both the test code and the production code, then repeating with another new test case.
See Offensive programming and Test-driven development
Unit testing
Unit testing, a.k.a. component or module testing, is a form of software testing by which isolated source code is tested to validate expected behavior.
See Offensive programming and Unit testing
See also
Programming principles
- Abstraction principle (computer programming)
- Black box
- Booch method
- Code reuse
- Cohesion (computer science)
- Command–query separation
- Composition over inheritance
- Coupling (computer programming)
- Defensive programming
- Dependency inversion principle
- Deutsch limit
- Discoverability
- Don't repeat yourself
- Encapsulation (computer programming)
- Fail-fast system
- GRASP (object-oriented design)
- Information hiding
- Interface segregation principle
- Inversion of control
- KISS principle
- Law of Demeter
- Liskov substitution principle
- Loose coupling
- Ninety–ninety rule
- Offensive programming
- Open–closed principle
- Principle of least astonishment
- Pristine Sources
- Rule of three (computer programming)
- SOLID
- Separation of concerns
- Separation of mechanism and policy
- Single-responsibility principle
- The Power of 10: Rules for Developing Safety-Critical Code
- Uniform access principle
- Worse is better
- You aren't gonna need it
- Zen of Python
- Zero one infinity rule