operation, and maintenance of the software system" "The ultimate goal is to minimize the lifetime cost of the system and to maximize programmer productivity." "The strategy behind that facilitation is to leave as many options open as possible, for as long as possible." — Robert C. Martin
modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. — "Agile Software Development, Principles, Patterns, and Practices", Robert C. Martin