Stephen Cohen's thoughts on Enterprise Architecture

Should an application architecture be forced to comply with the enterprise? I think not.

Most of us can agree that there is always more than one way to achieve a given piece of functionality.  Consider getting a phone number for a person from a Sql database.

  • You can connect with integrated security, or pass in the username & password, or maybe implement application roles within the database.

  • Once connected, you can pass in a fully formed SQL statement, execute a stored procedure, or make a direct http get against a named template file.

  • Finally, how will you package the return? An out parameter? A single row in a dataset (or datareader)? Or a typed return from an execute scalar call?

So many possible combinations.  Is it possible the developer creating that "quick start" example had your particular circumstance in mind? Seems unlikely doesn't it?  It is our responsibility to have a broad understanding of the various approaches and a well defined grasp of the requirements & constraints of the target environment.  From these we need to distill the most appropriate combination of technologies, apply the most effective tools, and support our customers’ business needs without burdening them with the side effects of our choices.  At the enterprise level, our customers are the aaplication development teams.

Like most things it starts with scope.  An enterprise component may be created to constrain or enable its consumers. The important part here is the emphasis on multiple consumers.  An enterprise needs to create both massively re-usable parts and multiple interfaces to parts so that one consumer could use it in a web service running on a server while another uses it in a windows form on the client.  The additional burden is inescapable and absolutely necessary to support the multiplicity of unknowns.  

Sticking with the data access possibilities, the enterprise might define policy explicitly prohibiting passing user name and password in connection strings.  It would be kind to backup such a policy with implemental libraries which securely store and retrieve the user name or better yet, append the policy with examples showing exactly how to implement the preferred method(s) which solves the secure data connection problem.  

By comparison the application architect has a significantly narrower scope.  Constrained by the sweeping policies of the enterprise the application need only identify a single means by which to solve the problem.  The application might choose to implement a custom encryption / decryption scheme.  Doing so may not create a reusable solution but they comply with the broad enterprise policy (and hopefully achieve the immediate goals of their particular application).  It is equally likely that they would adapt some aspect of the current application so that they can use an existing component from the enterprise repository.  

At the application level they are free, and strongly encouraged, to choose based on the most expedient and appropriate way to deliver their application.  Application architecture simply doesn’t have the luxury of creating and managing highly reusable components.  Time pressures, shifting customer requirements, and limited funding drive choice.  It is the burden of the enterprise architecture to make compliance something that applications will freely choose to do.   If the enterprise architecture (policy, guidance, and binaries) isn’t making it easier the application has every right to ignore it build as they see fit. 

Published Thursday, April 22, 2004 1:41 PM by Stcohen
Filed under:

Comments

 

Adam Weigert said:

I have this inner voice telling me to scream "ARE YOU MAD?!" but at the same time I have that small quiet voice saying, "you know, this makes sense".
April 22, 2004 3:06 PM
 

Bob Riemersma said:

I have a hard time supporting this argument.

Isn't this precisely why we have a mishmash of fragile legacy distributed-technology applications today? Along with a mess of box-per-app server rooms?

Then we beat our heads against the wall trying to "integrate" these things with 3rd-party "single-signon magic bullets" and glued-on XML interface doodads.

The architect sits back sniggering "they can't trash my application and start over, I've tied up all of the business knowledge in there."

Anything developed like this should not get past production acceptance testing. If application architects don't have the "luxury" of proper software engineering practices, there is no option left but to limit what they can submit for production.

The sympathies expressed in this post scare me, but maybe I'm taking it too literally or too narrowly. It smacks of malpractice to me though.
April 22, 2004 6:05 PM
 

Stephen Cohen said:

I do not mean to encourage or condone stove-pipe applications, golden key holders, or poor "software engineering practices." I do however want to draw attention to enterprise architectures that fail to help application developers deliver real tools to their customers.

When I find application teams, or more specifically application architects, end running or ignoring the enterprise architecture I spend a fair amount of time seeking root cause. In my opinion (a dangerous thing I know) it is the enterprise architects failure to provide the application teams "the most expedient and appropriate way to deliver their application" while complying with the enterprise policies, standards, and governance that drives application teams to non-compliant approaches.

Application developers are our customers and we enterprise architects need to stop enforcing and start serving. If you form an enterprise architecture with an eye toward making application development easier / faster /cheaper / etc … You will find less and less of your time is spent convincing and coercing others to use it an more time helping stakeholders and development teams who choose to use it.

April 22, 2004 10:20 PM
 

Bob Riemersma said:

Well I can certainly appreciate that. Thanks for the clarification for this tired old brain.

I only wish I wasn't fighting with the fruits of "I don't understand that MOM stuff, who needs queues I'll just put it in a database table" and the like.
April 22, 2004 11:07 PM
 

Should an application architecture be forced to comply with the enterprise? I think not. said:

November 27, 2007 9:47 AM
 

Stephen Cohen s thoughts on Enterprise Architecture Should an | Cellulite Creams said:

June 9, 2009 9:47 PM
Anonymous comments are disabled

© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker