Based on the master thesis from Andreas Martens supervised be me, we defined an abstract 7-Layer-Software-Architecture. The idea behind this is to understand the mapping of possible components and libraries onto the landscape of software architecture. The 7-Layer-Software-Architecture is also a kind of checklist for none-functional issues like state propagation and data transformation. Each enterprise application (and so its components) can be divided logically into this 7 layers. Onto or between these layers you can find libraries like Hibernate (OR-Mapper between Domain Data model and Abstract Data model). Depending on the IT architecture these layers getting mapped into one or more tiers.