Is it just a buzzword that means nothing or is there a definition of what makes an application (desktop or web) an enterprise application?
views:
1980answers:
18It's a buzzword, used to refer to complex systems designed for large organizations. There is no technical definition.
The adjective "enterprisey" is often used to deride such systems, as they are often bloated, often based upon antiquated technologies, and they require a lot of support and maintenance.
It's all too often a buzzword that's appended to appeal to corporate purchasing orders.
c.f. Wikipedia entry
I have come to believe that the biggest difference between an enterprise application and a "normal" one is that whereas a regular application tries to enable the user to do as many things as easily and as flexible as possible, an enterprise application is all about limiting what the user can do according to "business logic": Access to all data is restricted by ACL, and the page flow is constrained according to baked-in workflows that the business process consultants have come up with.
In other words, the main feature of an enterprise application is to limit the harm that an employee can do (and to assign blame later using the audit trail).
Basically enterprise
should mean the characteristics:
- capable of high load
- high scalability
- high integration to other systems
- solves or serves specific business cases
Sometimes you get enterprise level software for free. But you can always have commercial/professional support.
Lots of XML? :)
Seriously, though, the word enterprise is a meaningless extension that implies it was developed after a game of buzzword bingo. If you need to use the word, then you are probably doomed to an endless round of heartache and pain.
Biased? Me?
Martin Fowler gives a good (Lengthy) definition of what he believes Enterprise applications are in the introduction of his book Patterns of Enterprise Application Architecture. Too long to put here, get the book.
Enterprise is just a buzzword. "Enterprisey" systems are often bloated monsters. The reasons applications become "enterprisey" are very powerful.
- Once a feature is added, it can never be removed so applications almost always get bloated over time.
- Some large customers demand features that nobody else cares about but they must be added to keep those large customers happy.
- In order to sell new versions, companies have to add features whether they're important or not.
- The more diverse the customer base, the wider the feature set becomes making the application almost impossible to understand.
On the other hand, enterprise products also have attributes that are positive or difficult things to provide from a developer perspective.
- Must handle high load -- many transactions with many simultaneous users -- critical performance. Often includes cluster support.
- Must be multi-platform -- usually a minimum of Windows, Linux, and Solaris.
- Must support many different configurations, including databases -- often has to support at least Oracle, DB2, SQL Server, and MySQL.
- Must support high availability -- 24/7 operation, 99.99% uptime, etc.
Companies that sell enterprise applications have to
- Provide 24/7 tech support.
- Provide critical patches, often within 24 hours.
Edit: To elaborate on the point that features can never be removed: There are always customers that depend on or love some particular feature. When you try to take it away, they get really upset and threaten never to buy a product from you again. Even with features that you think (in hindsight) were a mistake, you find someone uses it. I've even had to "un-fix" bugs because some customer was dependent on that behavior!
From Martin Fowler's Patterns of Enterprise Architecture:
- a lot of persistent data
- concurrent data access
- a lot of user interface screens
- integrate with other enterprise applications
- lots of translation between data formats (usually for integration or reporting)
Note that this is not a precise definition of EA. It's just a list of common attributes.
It is quite hard to distinguish "true" enterprise apps from applications that are merely buzzword compliant. Lots of apps are called "enterprise" so they can be sold to businesses for more cash.
However.
I would class Enterprise Applications as large-scale, distributed, transactional and highly-available applications designed to support mission-critical business requirements.
(I am paraphrasing my own answer from elsewhere on SO ... )
I many cases, "Enterprise" just means you paid for exclusive support from the company.
I've seen some companies that sell different levels of support for available Open Source applications.
It means the price tag is $10,000 per seat (or $50,000 per server) or higher.
Also you have to have a SQL database in there somewhere. It doesn't have to be useful, it's sufficient to just write logs to it and have a form to allow "advanced" users to query it (read: "Write the SQL yourself.")
You need to defend yourself against claims that "it doesn't scale." The best way to do this is to ensure the software doesn't do anything useful, so that no-one uses it. That way you can be sure that it can handle thousands of users.
The last rule is that it must occasionally be able to produce pie charts. Random data is fine, as long as the labels look simultaneously high-tech AND vaguely finance-related (e.g. "Flux capacitor resource leverage compliance 2007-2008")
As for the code to generate the pie chart, you can't get away with a static image and your engineers are probably too dumb to implement it, so you will probably have to buy this from a 3rd party. Have this updated every couple of years with new 3D shading effects.
For the brochure, you must have a window with hundreds of buttons and some kind of diagram in the middle. Writing a real program for the purpose is overkill, but you can't just substitute a Paint Shop Pro screenshot as the managers you are trying to sell to will recognise that. A trick that works well is to erase the icons (of spray cans etc.) from the PSP buttons and replace them with meaningless 3-letter acronyms in a tiny font that's hard to read even on-screen, and almost impossible to read in the brochure. Then superimpose your pie chart report window on top of your modified PSP window.
Note: the above rules do not apply to the "Enterprise Edition" of a desktop application. You can stick that tag on pretty much anything.
I can come up with a couple of criteria that I have encountered in the enterprise applications I have worked on:
- Software is installed in multiple separate security domains.
- Ownership (prioritization of enhancements) is shared across multiple peer organizations.
- Cost is spread across multiple organizations, sometimes by usage, sometimes by ability to pay.
- Support (enhancements, implementations, bug fixes) is centralized.
- Administration is centralized.
As my day job is all about enterprise architecture, I believe that the word enterprise isn't nowadays about size nor scale but refers more to how a software product is sold.
For example, Ruby on Rails isn't enterprise because there is no vendor that will come into your shop and do Powerpoint presentations repeatedly for the developer community. Ruby on Rails doesn't have a sales executive that takes me out to the golf course or my favorite restaurant for lunch. Ruby on Rails also isn't deeply covered by industry analyst firms such as Gartner.
Ruby on Rails will never be considered "enterprise" until these things occur...
An application is “enterprise” if it makes people working in large companies feel like they’re doing something important.
Or if it launches photon torpedos.
(To answer the question rather than just venting my own insecurities and obsessions, there’s no strict definition. Like most terms, it’s pretty loose.)
Lots of forms, with lots of input box, check box and buttons in them :)
Definition is very simple - Enterprise application is a application which solve specific problem of specific enterprise. period.