Design by Contract
Abstraction
Seamlessness
Reversibility
Extendibility
Reuse