Data Access Objects
Provide a way of accessing and storing data
Services
Stand alone components that satisfy requests
Plugins
Components that can be added to a system to extend functionality
API
A documented set of objects that can be used across multiple systems to carry out a range of tasks