Framework defines "semi-complete" applications that embody domain-specific object structures and functionality. Frameworks avoid duplication and increase productivity. They define common loops, databases, math functions and other functionality while allowing for application-specific logic. Frameworks balance stability with allowing incremental improvements through careful management of dependencies between components.