Enterprise architects are responsible for providing simple, effective, enterprise worthy, domain components to the application developers. So what makes a good domain component?
Compare that to what makes a good plumbing component;
As an industry we are just starting to create plumbing components for broad consumption. Microsoft’s Patterns and Practices site (http://www.microsoft.com/resources/practices/code.mspx) has several well thought out plumbing components. These are perfect fodder to kick-start the lowest level of enterprise development. Personally, I have great hope that we, as an industry, will begin to implement the plumbing behind a higher level of abstraction targeting specific Domains. Consider a school system. One would think an enterprise approach would provide components for Students, Faculty, classes, facilities, and schedules. We could logically extend this to create a layer between the domain components and the plumbing which might include, time, location, person, and organization, with a structure something like the illustration below.
Application developers could use these domain parts, without knowledge of or any need to muck with the underlying plumbing. They need only add some application specific parts, stir in the needed logic, and test well at 400 degrees for 30 minutes … and poof, one enterprise compliant application.
I don’t mean to over simplify a truly complex task. Creating an API is high art. Extending that API to object models makes it staggeringly complex for those who create them. However, this is our mountain to climb. This is the hard work that we as enterprise developers need to suffer so that all (enterprise, developers, customers, and end-users) may have their cake … robust enterprise class products… and eat it too … quick, less expensive, less complex application development.