One might ask, why are Enterprise applications complex. Must they be? One reason is that the Enterprise application development lifecycle can span years. It is a constant challenge building an application over such a lengthy time span. This challenge is further complicated when the technology underlying the application is in a state of rapid change. The application owners and technical architects need to be able to anticipate and plan for these changes, else the application, application development timeline, and application development budget will suffer negatively.
In addition to the lengthy development cycles, Enterprise Applications often have even lengthier maintenance cycles. An application that is worth the investment of multiple man-years worth of software engineering must have a lifespan that provides a reasonable return on investment. What’s more, Enterprises tend to collect applications that perform useful functionalities. These applications can last a decade, or even multiple decades. You can bet the maintenance engineers will change out a few times over those periods. The lack of tribal knowledge can complicate maintenance.
Another source of complexity are roles and permissions. Enterprise applications generally have lots of different user roles or permissions. These roles and permissions are cross-cutting concerns that often affect many different parts of the application like business logic, user interface, and data manipulation. Often, the data source for these roles and permissions may live in a special environment like an LDAP or some other federated authentication system. It is important for Enterprise applications to be able to react to changes in user roles, permissions, or even the source data system for this information.