Design by Contract (DBC) is a software development technique that uses assertions to specify obligations between software components. Preconditions specify what a client must provide before a method executes. Postconditions specify guarantees a component makes after method execution. Invariants specify conditions that must always hold for a class. DBC helps ensure high-quality software by validating contracts at runtime. Java supports DBC through assertions and third-party libraries allow its use through annotations and AspectJ.