If ten CIOs were asked what an Enterprise Application is, they would probably offer ten different definitions! But they would also converge on a few critical elements of what makes anEnterprise Application: security, scalability, robustness, IT standards adherence…
According to Techopedia, an enterprise application is “a large software system platform designed to operate in a corporate environment such as business or government.”
The “large” part of the definition is a question of perspective and does not matter, really, but the fact that the application operates in a corporate environment is critical. An enterprise application must therefore meet the IT standards of that environment.
Software development expert and author Martin Fowler offers a more functional definition: “Enterprise applications are about the display, manipulation, and storage of large amounts of often complex data and the support or automation of business processes with that data.”
Minimum set of services
Technically speaking, a number of capabilities must be addressed by enterprise applications. They include for example:
- Users & permissions: sets users rights to view any object, run any transaction and set administrative rights. These rights are defined in an enterprise directory such as Active Directory. Therefore the enterprise application needs to be able to connect to this directory, to implement role-based access control (RBAC) permissions and to integrate with enterprise single sign-on (SSO).
- Organizations: defines the organizational structure and the assignment of users to these organizations. Assignments are used by workflows and filters.
- Payments & charges: whether through a wallet system or by plugging into transactional payment systems, defines how users pay to use the application
From a functional standpoint, referring to Fowler’s definition, one can add:
- Data structures (tables, files), to store and leverage the data managed by the application or that controls its behavior.
- Workflow, for supporting processes that require user actions (review, approval…).
- Events, to define and implement routing and mediation rules.
Depending on organizations, further requirements may exist related to data governance,privacy, redundancy, scalability IT policies, systems used, etc. Enterprise architecture rules may also govern the way the application is built (micro services, APIs, n-tier, etc.) and how it is maintained.
Bottom line, enterprise applications are complex beasts. Before even starting to write code for the application’s logic, the developer must consider a whole set of underlying requirements that may very well represent a lot more work/cost than the actual business logic!
This is why developers often leverage development frameworks or platforms, that provide access to the foundational capabilities required by enterprise applications. These frameworks are varied in types, functionality and technical depth. Among the most well known, we could list for example J2EE, Ruby, Spring, Angular, Eclipse, CUBA, Zend, Sensio – and of course Platform 6.