Introduction to Enterprise Software
What Is Enterprise Software?
Evolution of Enterprise Software
Enterprise Software and Component-Based Software
What Is Enterprise Software?
The term enterprise refers to an organization of individuals or entities, presumably working together to achieve some common goals. Organizations come in all shapes and sizes, large and small, for-profit and nonprofit, governmental and nongovernmental.
Chances are, however, that when someone uses the term enterprise, they mean a large, for-profit organization, such as Intel, General Motors, Wal-Mart, Bank of America, or eBay.
Enterprises generally have some common needs, such as information sharing and processing, asset management and tracking, resource planning, customer or client management, protection of business knowledge, and so on. The term enterprise software is used to collectively refer to all software involved in supporting these common elements of an enterprise.
Figure 1-1 depicts enterprise and enterprise software graphically.
Figure 1-1 Enterprise and enterprise software
The figure shows an enterprise software setup that is essentially a collection of diverse systems. Software is organized along the various functions within the organization, for example, sales, human resources, and so on. A firewall is provided to safeguard enterprise data from unauthorized access. Some software systems such as those for sales and inventory management interact; however, most are fairly isolated islands of software.
Enterprise software may consist of a multitude of distinct pieces today, but enterprises have gradually come to realize that there is a strong need for their diverse systems to integrate well and leverage each other wherever appropriate for maximum enterprise benefit. B2B and B2C are good examples of such integration and leveraging.
Some of the potential ways an enterprise hopes to leverage integrated enterprise software follows:
By integrating its customer support and in-house product knowledge, an enterprise could provide new and better services to its customers via the Web.
By linking its marketing machine with the online world, an enterprise could reach a much larger audience online.
By linking its sales management and inventory, an enterprise may be able to devise specific, lower cost Web sales channels to reach an untapped market segment.
By providing a front end to one of the services used by its employees, such as the internal office supply ordering system, and tying it into the accounting system, the enterprise could lower the overall cost and improve employee efficiency.
Making the enterprise HR system available online could be used as a way to give employees more control over their health and 401(k) choices and reduce the overall administrative costs to the enterprise.
By automating one of its human resource intensive operations and making it available on an anytime, anywhere basis, an enterprise could provide better service to its customers while reducing the overall operational costs.
Challenges in Developing Enterprise Software
Successful enterprises tend to grow in size, hire more people, have more customers and more Web site hits, have bigger sales and revenues, add more locations, and so on. In order to support this growth, enterprise software must be scalable in terms of accommodating a larger enterprise and its operations.
Enterprises encounter constraints as they grow. One common constraint is the computer hardware's inability to scale as the enterprise's processing needs increase. Another constraint is the enterprise's ability to put more people in the same physical or even geographical location. Thus, the challenge of distribution comes into the picture. Multiple physical machines solve the processing needs but introduce the challenge of distributed software. New building or geographical locations address the immediate need, but they introduce the challenge of bringing the same level of services to a diversely located enterprise.
Connecting previously separate systems in order to gain enterprise-scale efficiencies can be a major challenge. Legacy systems were typically designed with specific purposes in mind and were not specifically conceived with integration with other systems in mind. For example, human resource management perhaps was treated as a distinct need without much interaction with financial management, and sales management had little, if anything, to do with customer support. This disjointed approach to software development often resulted in excellent point products being purchased to address specific needs, but it commonly resulted in software architectures that were difficult to integrate.
A related challenge is the need to deal with a multivendor environment. Partly out of evolution, and partly out of necessity, enterprise software has often ended up with similar products from multiple vendors used for the same purpose. For instance, although the HR application might be built on an Oracle 8i database, the customer support application might rely on Microsoft SQL Server.
Enterprise software also typically requires some common capabilities, such as security services to safeguard the enterprise knowledge, transaction services to guarantee integrity of data, and so on. Each of these requires specific skills and knowledge. For instance, proper transaction handling requires strategies for recovering from failures, handling multiuser situations, ensuring consistency across transactions, and so on. Similarly, implementing security might demand a grasp of various security protocols and security management approaches.
These are just some of the common challenges that must be addressed when dealing with enterprise software development.