Stephen Cohen's thoughts on Enterprise Architecture

Can an application really be simple AND comply with an Enterprise Architecture?

High quality applications are simple.  They do some one thing well.  The classic example is the famous Hello World app.  It simple displays the text back to the caller.  While there are vast language dependant permutations lets follow our own advice, keep it simple, and stick with C#.

 

using System;

 

class HelloWorldApp

{

      public static void Main()

      {

            Console.WriteLine("Hello, world!");

      }

}

 

Simple, Easy, effective … what more could one want?  How about making this enterprise ready. 

 

First we need to get more serious about what Enterprise Ready means. On the short list, and enterprise ready application would;

 

  • Comply with the enterprise architecture
    • N-tier
    • Component based
  • Use existing components for common tasks
    • Data access
    • Logging
    • Rules
  • Be extensible over time
    • Implements the façade pattern
    • Separates GUI from business implementation from data access
  • Be flexible once deployed
    • Provides variables outside of the compiled code
  • Support multiple languages
    • Unicode
  • Be secure
    • No trust at machine (maybe even component) boundaries
    • Communications are not in clear text and keys, if used, are securely stored

 

Left to fend for itself, this is nearly punitive overhead for a simple application.  To keep it simple and meet the enterprise needs the people responsible for the enterprise architecture need to provide the parts and examples on their application (not their internals) to the developers.  If the enterprise parts exists the changes to the code may be a few extra parts and a few additional lines of code. 

 

A client windows application will need to be built to call a server hosted façade.

The façade would implant the enterprise security and call a refactored, generic text handler.  Except for the text handlers overloaded interfaces, it need only know about the enterprise data access component.  Every thing else would be invisible to the developer.

 

By most estimates the application would still be considered simple;

Windows form code;

private void button1_Click(object sender, System.EventArgs e)

{

      myFacade myF = new myFacade();

      CultureInfo cu = new CultureInfo( "es-ES", false );

      string s = myF.getText(text, cu);

      this.textBox1.Text = s;

}

 

 

Façade code;

using System;

using System.Globalization.CultureInfo;

 

namespace MyCompany

{

      public class getText

      {

            public string getText(string text, CultureInfo cu)

            {

                  string s = MyCompany.Dattacess.getCutlureText(text, cu);

                  return s;

            }

      }

}

 

Complexity for the enterprise is provided by the enterprise;

  • The text handler would get text from a database or resource file using an existing data access component, and ensure the connections a managed and the correct language is returned in the appropriate character set.
  • Access controls would have been established and implemented in groups and roles
  • Logging would happen by attributing the appropriate interfaces in the data access class.
  • The users identity would be flipped to a generic application role which would limit access and improve performance.

 

So a simple application can comply with the enterprise architecture but ONLY IF the enterprise invests in providing the application developers enterprise ready components BEFORE the application is being built.

 

 

 

 

Published Monday, November 01, 2004 1:39 PM by Stcohen
Filed under:

Comments

 

P said:

do we need spell checking in enterprise class source codes?

getCutlureText
November 1, 2004 3:08 PM
 

Brent Orchard said:

I have been thinking down these same lines and enjoyed your post. (I sent to my whole team to read and comment) There is always so much theory of what can be done, but for a simple departmental application it is such over kill and way more code than is needed. Do you know of any books that take an enterprise approach but in the context of a departmental application?
November 1, 2004 3:38 PM
 

Stephen Cohen said:

I haven't seen any books taking this perspective (I will admit I am working on one but it may be a while before I finish "-).

It is a personal soapbox to get enterprise architecture implemented in such a way that it makes building applications easier, faster, and cheaper. Like so many things, if it is done well it's a true joy to all involved.

I will be posting more on this topic for the next few weeks. I look forward to your comments.
--Stephen
November 1, 2004 5:14 PM
 

Alex Campbell said:

using System;

using System.Globalization.CultureInfo;



namespace MyCompany

{

public class getText

{

public string getText(string text, CultureInfo cu)

{

string s = MyCompany.Dattacess.getCutlureText(text, cu);

return s;

}

}

}


I'm pretty sure this won't compile.

"member names cannot be the same as their enclosing type"

Not to mention that System.Globalisation.Culture is a class, not a namespace.

Just being pedantic...
November 1, 2004 5:39 PM
 

Stephen Cohen said:

Your right... it doesn't compile.

I actually spent a lot of time trying to decide if I should put all of the parts in so everything would hang together. I fell back on using selfish notation ("MyCompany" as a Namespace) in hopes of relaying the notational not actual intent of the pseudo code.

I will be following this post with a series of more detailed parts. I'll make sure to be more explicit as to what is intended to be complete and what is not.

Thanks for the comment
--Stephen
November 1, 2004 5:47 PM
 

Brent Orchard said:

I promise not to try to compile your book once you release it :-)

Thanks again
November 2, 2004 10:52 AM
 

Rob Caron's Blog said:

November 12, 2004 2:57 AM
 

Rob Caron's Blog said:

November 12, 2004 3:21 AM
 

Famous Peoples Birthdays » Stephen Cohen’s thoughts on Enterprise Architecture : Can an … said:

April 28, 2008 9:14 AM
Anonymous comments are disabled

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