Like any modern application, an enterprise application must be reliable, perform well, provide an intuitive and efficient user interface, and so on. But beyond these common qualities, it can be characterized by three specific attributes.
An enterprise application is:
A multi-user, multi-developer, multi-machine, multi-component application that can manipulate massive data and utilize extensive parallel processing, network distributed resources, and complex logic. It can be deployed across multiple platforms and inter-operate with many other applications, and it is long lived.
Its purpose is to meet specific business requirements. It encodes business policies, processes, rules, and entities, is developed in a business organization, and is deployed in a manner responsive to business needs.
An enterprise application must be robust enough to sustain continuous operation. It must be extremely flexible for scalability and deployment, and allow for efficient maintenance, monitoring, and administration.
These qualities clearly make the task of enterprise development extraordinarily challenging, and the trend is toward rapidly increasing demands. The rapid improvement of computer hardware and software, combined with global economic competition — and opportunities — have created an environment in which business systems must respond quickly and deliver unparalleled levels of performance. As these demands continue, developers must automate even more of their businesses, build their software even faster, serve more and more users, and process a rapidly growing mass of data.
Aside from these challenges, the power, complexity, and rate of change of the technology used in building these corporate solutions makes efficient development ever more difficult.
To design an enterprise application you must consider and balance an enormous array of application requirements, such as:
Without a systematic way to understand the relationships among these complex and often conflicting requirements, it’s hard to know where to begin. A simpler model can help reduce this complexity, and provide an organized way to design and build applications that chart an optimum course among the many requirements. This model is introduced in the section, "Enterprise Application Model."