SpiderLogic.com

SpiderLogic.com

SpiderLogic.NET Architecture Series

Enterprise Applications are Complex

Enterprise applications (EA) are the large-scale, line-of-business applications every enterprise depends upon.  This includes applications such as CRM, EAI, E-Commerce and data warehousing.  Enterprise Applications are typically very complex, expensive to build, and difficult to maintain than other types of applications.


Developing an enterprise application is an inherently risky process.  Some industry experts estimate that up to 45% of EA development projects fail.  Many different factors contribute to these failed projects, but most of the projects fail due to Missed deadlines, Cost overruns, Missing or misunderstood functional requirements and Poor performance

Additionally, enterprise level applications must support the “abilities”.  Enterprise applications are increasingly bumping up against complex issues such as interoperability, extensibility, scalability, and reliability. 

  • Interoperability – enterprise applications must interoperate with other systems, both internal and external.
  • Extensibility – enterprise applications must be modifiable and extendable to meet the changing business demands.
  • Scalability – enterprise applications must scale up to meet additional demands of users and the business.
  • Reliability – enterprise applications must be error proof and always available. 

So if these line-of-business applications are required by the today’s dynamic and agile enterprises, and the effort to build them typically fails, how can enterprise IT organizations reduce the risk associated with building Enterprise Applications? 

Enterprise Application Frameworks

To solve the problems inherent to developing Enterprise Applications, large enterprise IT shops need to embrace and utilize an Enterprise Application Frameworks (EAF).  An EAF is a set of software components and guidelines which can be used to:

  • accelerate application development
  • lower resource requirements
  • provide consistent levels of quality
  • provide an “out-of-the-box” software architecture
  • establish best practices for developers

The bottom line is that Enterprise Application Frameworks reduce the risk of developing enterprise applications.  The EAF solves complex issues such as security, error handling, and data access across development teams within an enterprise.

Doesn’t the platform supply this?

Today’s technology platforms, whether it’s Java/J2EE or .NET, provide the low level technical infrastructure to build an enterprise application.  All of the pieces are provided by the platform, but which pieces are used and how they fit together is not defined.  The platform is targeted for a broad range of application types and therefore provides multiple methods to accomplish the same task.

It can be somewhat confusing and overwhelming to the software architect to determine the appropriate technology for the given problem.


  • What distributed technology should we use? 
  • .NET remoting?  Web services?  Enterprise Services?
  • How should we encapsulate our business logic? 
  • Where should we put the business rules? 
  • How do we keep the business rules out of the UI?
  • What type of UI should we build?  Rich client?  Thin client?

As a general platform, .NET provides choices for the software architect.  .NET addresses most of the enterprise issues in multiple ways.  Other issues are not addressed at all.  Essentially, it is very difficult for the software architect to navigate all of the choices provided by the platform.

What comes first? The framework or the application.

Enterprise applications are complex to build.  A need exists for an enterprise application framework to ease the complexity of building and deploying enterprise applications.  Should the framework be built first, or should some applications be built before the framework.
Companies today have different approaches. Some have built frameworks based on years of experience.  They understand the importance of an application framework and are willing to invest in the time and effort to build a solution.  They have the expertise in house to solve the complex issues of building an EAF.

Other organizations take a different tact and build several pilot applications first.  They then extract common design patterns and/or components from each application and assemble a common framework.

However it is approached, the goals are similar – to implement a robust framework which reduces development time, increases developer productivity, and increases the quality and consistency of applications across the entire enterprise.

SpiderLogic’s experience is that the home grown frameworks come up short of the stated objectives.  Most of the frameworks solve “low-level” issues such as message queuing, logging, data access, and transactions.  They may even solve problems such as common reference data or pre-built UI components.

Where most of these frameworks come up short is solving “high-level” issues such as enforcement of business rules, validation of data, and coordination of process or work flow.  Additionally, the frameworks could address more advanced technical issues such as distributed execution of business logic, asynchronous processing, loose coupling between applications and/or components, and consistent diagnostic and monitoring.

A true enterprise application framework should provide standard business services for the various department and/or groups across the enterprise.  An example could be a bank exposing its core businesses as services that can used by many applications. For example, a Bank Balance service, Funds Transfer service, Account service and so on.

Summary

In summary, enterprise applications are very complex to build and maintain. Distributed enterprise applications which are reliable, scaleable and maintainable are even harder to build. Traditional business developers, coming from a mainframe or client/server background, aren’t equipped to make the right decisions.


An enterprise application framework can ease the pain and reduce the complexity of building enterprise class applications.  An enterprise application framework must address the low level technical needs of the developer, but also provide a consistent approach to solving the business problem. 


Enterprise application frameworks need to reduce time to market, increase productivity, enforce security, ensure data integrity, increase maintainability, and enable integration.

Architecture Series RoadMap

What is Service Oriented Architecture ?

Options for SOA and Enterprise Architecture - Part I

coming soon

Options for SOA and Enterprise Architecture - Part II

Looking Beyond Visual Studio - Tool Options

Slicing and Dicing Application Blocks