Application development code is too focused and too volatile to be promoted across the enterprise, and enterprise code is too generic and too hard to change for it to precisely address application needs. Coming to an agreement on these ownership / boundaries within the enterprise is critical for the intertwined success of all parties involved. 

As a first step, I am proposing a simple ownership scheme.  Given the four major types of binaries (user, application, domain, plumbing) along the X axis and application and enterprise developers along they Y axis.  We can plot two curves reflecting who the "level of influence" assignable to either the developers or the enterprise. (see figure below)

   

The separation is not artificial, and reflects three very important principles;

  • The enterprise can not shift the responsibility for the creation of enterprise parts to the application developers
  • The Application needs can not drive the components developed for the domain or their supporting plumbing
  • The enterprise should not do anything which drives the way an application addresses specific application needs or the presentation related to the same.

Next, we will look at implementing the parts within the control of the Enterprise Architecture.