After working for serveral years with CMSs systems, I got very familiar with the idea that sophisticated components abstraction and the ability to plug in new functionality on existing software were some of the best signals of a good software architecture.
Full article