0% found this document useful (0 votes)
3 views33 pages

Understanding Enterprise Applications

Enterprise applications are large-scale software solutions designed to automate and streamline complex business processes across organizations, enhancing operational efficiency and productivity. They can be categorized into upstream, downstream, and business enabler applications, each serving different roles within an organization. Key challenges include business process automation, data harmonization, application integration, and ensuring application security, all of which are critical for successful enterprise application development and management.

Uploaded by

amrutha.gen
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views33 pages

Understanding Enterprise Applications

Enterprise applications are large-scale software solutions designed to automate and streamline complex business processes across organizations, enhancing operational efficiency and productivity. They can be categorized into upstream, downstream, and business enabler applications, each serving different roles within an organization. Key challenges include business process automation, data harmonization, application integration, and ensuring application security, all of which are critical for successful enterprise application development and management.

Uploaded by

amrutha.gen
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

BUILDING ENTERPRISE

APPLICATIONS
Introduction
•Large-scale software solutions designed to meet the complex needs of an entire organization.
•The primary purpose of enterprise applications is to serve as comprehensive software solutions that
streamline and automate complex business processes across an entire organization. Unlike software
designed for individual users, these large-scale systems are specifically engineered to eliminate
manual, repetitive tasks and introduce automated workflows.
•Their ultimate goal is to significantly increase overall operational efficiency and productivity. By
providing a unified platform for various departments, these applications also foster seamless
communication and collaboration, ensuring that teams can work together more effectively to achieve
common business objectives.
•The software industry has long traversed a path of developing custom-built enterprise applications.
•There is no "one-size-fits-all" universal solution for every enterprise application.
What are Enterprise Applications?
Definition:
Software that imbibes the core business functionalities of an organization to catalyze its growth.
Key Roles:
• The key roles of a modern enterprise application extend beyond mere automation to providing
foundational support for an organization.
• Primarily, they are designed to enhance efficiency and productivity by streamlining business
processes and reducing manual effort.
• Additionally, a crucial function of these applications is to help in ensuring business continuity.
• By centralizing data, providing robust security, and enabling disaster recovery, they ensure that
critical operations can continue uninterrupted, even in the face of unforeseen challenges.
• Finally, these applications are fundamentally designed to handle large volumes of data and
concurrent users, serving as a robust and reliable backbone for an organization's operations.
Key Characteristics:
• Enterprise applications are highly sophisticated systems designed to meet the
rigorous demands of large organizations.

• At their core, they must imbibe complex business logic to accurately model
and automate intricate workflows.

• In addition to this functional complexity, they are expected to have high


performance, ensuring smooth and responsive operation under heavy load.

• A critical requirement is that they must be fortified against vulnerabilities and


attack vectors to protect
Types of Enterprise Applications
1. Upstream Enterprise Applications (or Front-end Systems)
•Definition: These are customer-facing applications that capture customer orders
and requests. They are at the beginning of the business process.
•Example: An "order capture" application that processes online customer orders is
considered an upstream application.
•Examples from Figure 1-1:
•Online retail banking application
•Loan management application
•Online credit card application
•Online retirement application
•Online commercial and investment banking application
2. Downstream Enterprise Applications (or Back-end Systems)
• Definition: These applications work behind the scenes to fulfill the customer's
orders and end-user needs. They are at the end of the business process.
• Example: An "order provisioning" application, which processes and fulfills the
orders captured by an upstream application, is considered a downstream
application.
• Examples from Figure 1-1:
• Core banking system
• Customer management system
• Core products system
• Funding system
• Account management system
• Credit rating system
3. Business Enabler Applications
• Definition: These applications fulfill the general organizational needs of a
company and do not directly deal with customer orders. They support internal
business functions.
• Example: Applications for payroll processing and human resource management
are considered business enablers.
• Examples from Figure 1-1:
• Payroll processing system
• Training system
• Performance management system
• Revenue management system
• HR management system
Categorization of Enterprise Applications
Enterprise applications can be categorized in several ways:

• By Industry: Applications for retail differ from those for the insurance industry.

• By Business Function: Applications can be categorized based on the functions


they fulfill, such as order management or fund fulfillment.

• By Processing Type: Applications may be for batch processing, online


transaction processing (OLTP), or online analytical processing (OLAP).

• By Acquisition Model: Applications can be custom-built or purchased as


commercial off-the-shelf (COTS) packages.

• By Hosting Model: Applications can be self-hosted or run on a cloud provider.


The Rise of Extended Enterprises

•Modern businesses are increasingly seen as "extended enterprises" due to the

realization of "selfservice."

•Customers and partners are more demanding, flexible, and unpredictable.

•This leads to increased complexity and challenges, where enterprise applications

play a crucial role in helping businesses meet their objectives.


Key Challenges for Enterprise Applications
1. Business Process Automation

• Business process automation is a core objective for modern enterprise applications, driven by the challenge of achieving "flow
through," a state where business processes are automated across an entire organization without manual intervention. The
purpose of this automation is to simplify complex workflows, drastically reduce the time-to-market for new products and services,
and optimize the use of business resources. As a direct result, enterprise applications are becoming increasingly sophisticated
and complex, as they must be capable of handling this high level of integration and orchestration to manage business operations
seamlessly from end to end.

2. Data Harmonization

• A significant challenge in enterprise environments is the lack of a "single source of truth," a problem caused by the existence of
multiple versions, copies, and representations of the same data across disparate systems. To solve this, the purpose of data
harmonization is to bring together and standardize this fragmented data from various sources into a unified, consistent format.
This process is not just about data cleaning; it is a crucial, foundational step for the effective orchestration of underlying business
processes. By ensuring that all systems are working from a single, reliable dataset, data harmonization enables true business
process automation and significantly improves the integrity of an organization's operations.
3. Application Integration
• A major challenge in enterprise environments is that applications are frequently developed as
isolated "silos," which severely hinders the ability to automate business processes that span
multiple systems.
• To overcome this, application integration becomes a critical purpose, aiming to connect these
disparate applications into a cohesive, functional ecosystem.
• The complexity of this integration is a direct result of several factors, including the diverse
platforms and technologies involved, as well as the varying degrees of integration required to
achieve a seamless, automated workflow.
4. Application Security
• The attack surface of modern enterprise applications is rapidly broadening due to the increasing
use of the public internet for access by both users and other applications.
• This new reality has made fortifying the security perimeter a crucial purpose for any enterprise.
• Consequently, with the emergence of new attack vectors and the constant discovery of security
vulnerabilities, application security is becoming an increasingly critical challenge that must be
addressed proactively and comprehensively to ensure the integrity and safety of sensitive data.
Internationalization
•As businesses become global, enterprise applications must be able to serve customers
across different geographies using online mechanisms.
•Challenge: Applications need to be built to support a localized manner, including specific
language, date, time, and currency formats.

Transaction Management
•Online applications are the core of business processes, involving vendor partners, suppliers,
and customers.
•Challenge: A typical business process transaction involves multiple system-level
transactions. The key challenge is to manage these as a single, "atomic unit" to ensure the
success or failure of the overall business process.
Rich User Experience
•Customers today expect desktop-like performance and features from browser-based
applications.
•Challenge: Providing an engaging and responsive user experience on a browser is a key
challenge for enterprise applications.
Quality of Service (QoS)
•Enterprise applications often play a "mission-critical" role, so their non-functional quality attributes
are essential.
•Challenge: Ensuring qualities like scalability, reliability, security, and maintainability.
•Purpose: QoS is about making sure an application is "fit for purpose" and satisfies the stated
and unstated needs of businesses and users. Poor QoS can lead to lost productivity, revenue,
and goodwill.
Technology Selection
Enterprise application development involves a vast array of platforms, frameworks, and
tools, including both commercial and open-source options.

Challenge: Keeping a development team up-to-date with the ever-changing technology


landscape and selecting the right set of technologies for a specific application.

Governance and Team Productivity


Enterprise applications are typically developed and maintained by diverse teams.

Challenge: Managing these teams and ensuring their productivity is a key challenge.

Purpose: Strong governance, well-defined skill sets, and the effective reuse of existing
solutions are necessary to shorten the time-to-production for enterprise applications.
1.2 Software Engineering Methodologies
Software Engineering Defined:
• An engineering discipline for developing, managing, and maintaining software.
• It focuses on software quality, requirements, design, development, testing, and
configuration management.
Traditional Waterfall Methodology:
• A linear, sequential approach with a sequence of phases: requirements, analysis,
design, build, and testing.
• Each phase acts as input for the next.
• Disadvantage: Typically takes more time to production and assumes a
"big-design-upfront" approach, which can lead to premature design decisions.
Iterative Software Development:
• A cyclic approach to building software components in incremental stages.
• Development involves a subset of requirements in each cycle.
• Advantage: Leverages learning from previous iterations to improve the next one,
making it effective for risk mitigation.
• Allows for requirements to evolve over time, ensuring a better fit to the final design.
IBM Rational Unified Process (RUP):
• A specific, iterative software development process.
• It organizes the development into four phases: inception, elaboration, construction, and transition.
• Within each phase, the work is divided into nine disciplines, including business modeling,
requirements, analysis, design, and implementation.
Agile Software Development:
• An extension of the iterative approach, favoring a light-weight process.
• Development occurs in small, rapid iterations to quickly incorporate short feedback loops.
• It favors incremental and test-driven development and encourages continuous customer
involvement.
• Code Refactoring: A key practice in Agile for improving the quality of the design based on
hindsight.
• Specific Agile Methodologies:
• Extreme Programming (XP): Uses user stories, CRC cards for design, and practices like Pair
Programming.
• Scrum: Involves shorter, time-boxed iterations (often 30-day releases), daily stand-up meetings,
and a concept of a product backlog.
• Agile approaches are generally considered more suitable for small and mid-sized projects with
mature development teams.
1.3 Life Cycle of Raising Enterprise Applications
The life cycle of an enterprise application, regardless of the methodology used, typically follows a
sequence of phases: incepting, architecting and designing, constructing, and testing.

1. Incepting:
• This phase is the starting point of a project. It involves enterprise analysis, business modeling,
and requirements elicitation.
• Purpose: To understand the business needs, define requirements using use cases or user
stories, and perform a feasibility assessment considering budget, technology, and risks. This
phase concludes with a plan and estimation for the project.
2. Architecting and Designing:
• This is the next phase in the life cycle. It involves defining the overall architecture of the
organization, including business, data, application, and technology architecture. It's about
fitting the enterprise application as a piece into the overall "jigsaw puzzle" of the organization.
• Purpose: To define the high-level perspectives (logic, integration, security, etc.) and then
base the detailed design on various patterns, frameworks, and technologies.
3. Constructing:
• This phase is focused on building the application. It starts with building the application
framework and then implementing the use cases identified during the requirements
engineering phase.
• Purpose: To write and unit test the code. Code review is an essential activity, which
includes static and dynamic code analysis for checking code style, security, and quality.
4. Testing:
• This is considered the "most vital phase" of the life cycle. It involves various types of
testing to ensure the application is ready for rollout.
• Types of Testing:
Integrated Testing: To check if different parts of the application work together.
System Testing: To test the system as a whole.
User Acceptance Testing (UAT): To ensure the application meets the users' needs.
Performance and Penetration Testing: To check for non-functional requirements.
• Final Phase: Rollout and Support
After successful testing, the application is rolled out for end-users. It is then maintained
and supported throughout its life cycle.
Quality of Service (QoS) and Stakeholders

•Quality of Service (QoS): Every successful enterprise application is expected to meet certain QoS
qualities, with the predominant ones being performance, security, maintainability, scalability, and
reliability.
•Security: Security requirements are captured early on in the inception phase. Threat modeling is done
during the architecting and designing phase to ensure a secure application design.
•Performance: Performance requirements are also laid out during the inception phase. During the
testing phase, applications are subjected to various tests like load testing and stress testing to assess
their scalability and performance.
•Stakeholders: Throughout the life cycle of an enterprise application, various stakeholders are
involved. These include sponsors, customers, process groups, service groups, IT infrastructure
groups, analysts, and project teams. Architects also play a crucial role during the architecting and
designing phase.
1.4 Three Key Determinants of Successful Enterprise
Applications
A successful enterprise application is the result of a strong alignment with business
needs. There are three broad determinants for achieving this success:
1. Business Case Readiness
• The foundation of a successful project is a strong, approved business case.
• Requirements: The business case must be supported by organizational objectives
and vision. It should have the buy-in of all key stakeholders and include well-defined
parameters to measure success from a financial and business perspective.
2. Strategy to Execute
• This is the next step after a business case is established.
• Requirements: The execution strategy is a comprehensive plan that outlines the
required budget, resources, timelines, and the availability of subject matter experts
(SMEs). This plan ensures that the project can be executed in a consistent manner.
3. Excellence in Execution
This is the final determinant, where the strategy is effectively carried out.
• Requirements: It involves the careful implementation of the execution strategy by
capable teams and management to realize a successful enterprise application.
Excellence in Execution

• This is the final stage of a project, where the plan is put into action to successfully realize
the enterprise application.

• Key Practices:
• Robust Change Management: Since objectives, circumstances, and environments may change, a
strong change management mechanism is vital.
• Stakeholder Management: Continuous assessment and stakeholder sign-offs are necessary to
ensure project objectives are being met.
• Communication: On-going communication and a feedback mechanism in each life cycle phase are
crucial for success.
• Skilled Teams: The successful delivery of an enterprise application requires a team with both
technical and "soft" skills, such as organizational constraints, team dynamics, and collaborative
abilities.
Figure 1-2: Ingredients of an Enterprise Application
The honeycomb diagram visually represents the various
ingredients—processes, technologies, and practices—that come together to
build a successful enterprise application. These ingredients can be categorized
as follows:
1. Architectural & Business Components:
• Business analysis
• Application architecture
• Integration architecture
• Data architecture
• Technology architecture
2. Development Technologies & Platforms:
• Web services
• XML
• Java EE
• Middleware
• Infrastructure components
• Application components
• Application tier frameworks
3. Development Processes & Tools:
•Integrated development environment
•Modeling language
•Design patterns
•Aspect orientation
•Object orientation
•Code profiling
•Code coverage
•Secure code analysis
4. Testing & Quality Assurance:
•Performance testing
•Integrated testing
•Unit testing
•Application build
5. Documentation:
•Requirements documentation
•Architecture documentation
•Test strategy documentation
•Design documentation
Knowledge and Skills for Enterprise Application Teams
1. Knowledge of Organizational Dynamics
• Understanding the business and its needs, and how the application fits into the larger
organizational landscape.

• Importance: This is crucial for defining the application's components, functionalities, and
interfaces, especially during the inception and architecting phases.

2. Domain Knowledge
• Understanding industry context and specific best practices are important to build an enterprise
application.
• Importance: This provides critical input on business processes, information flow, and data
models, which is essential during the inception, architecting, design, and testing phases.
3. Business Analysis Skills
• The ability to analyze the business and use a combination of domain knowledge, technical
knowledge, and soft skills.
• Importance: Business analysis skills are vital for the inception of an application, and business
process modeling helps create robust documentation.
4. Program Management Skills
• The skills needed to manage a complex project.
• Importance: These skills, which include planning, estimation, budgeting, and change
management, are required across all phases of the application's life cycle.

5. Architecting and Designing Skills


• Finding an optimal solution to a problem requires strong architectural and design skills.
• Importance: This includes knowledge of architectural views, design patterns, and design
paradigms like object-orientation and service-orientation.

6. Programming Skills
• The ability to code, coupled with a deep understanding of the underlying platform.
• Importance: This includes not only knowledge of programming languages and IDEs but also
programming best practices, code review skills, and "algorithmic thinking."
7. Testing Skills
The ability to perform multiple types of tests to ensure an application is ready for use.
Importance: Enterprise applications require various testing skill sets, including:
Integration testing
Performance testing, load testing, and stress testing
Application security testing and penetration testing
Interface testing and user acceptance testing
8. Knowledge of Tools
Using a variety of tools is key to achieving faster time-to-production and enhancing team
productivity.
Tools are used across all life cycle phases:
Inception: Requirements gathering and analysis tools.
Architecture/Design: Design and modeling tools.
Construction: IDEs, unit testing, build tools, and static/dynamic code analysis tools.
Testing/Rollout: Testing tools for performance, regression, and penetration testing.
1.5 Measuring the Success of Enterprise Applications
1. Effectiveness of the Solution
This is the primary parameter for success, as it measures how well the application solves the
business problem at hand.
• Measurement: It can be measured qualitatively by end-user acceptance and quantitatively by
measuring productivity gains.
2. Quality of the Enterprise Application
Quality is defined by the application's conformance to functional requirements, having
defect-free code, and adhering to key non-functional requirements.
• Measurement:
• Performance and Scalability: Measured using standardized benchmarks.
• Security: Measured by checking for compliance with security standards like Open Web Application
Security Project (OWASP) Top-10.
• Code Quality: Measured by metrics like cyclomatic complexity and code coverage.
3. Time-to-Production

This is the total time from the application's inception to its final rollout.

Importance: In a fast-moving, competitive business world, being able to quickly roll out an
application is key to success.

4. Cost Effectiveness

This parameter measures the expenditure versus the benefits of the application.

Measurement: It is determined by the application's Return on Investment (ROI).

5. Budget and Schedule Adherence

This is a key parameter from the perspective of the development team and program management.

Importance: Overruns in budget and schedule directly impact the time-to-production and
cost-effectiveness of the project.
6. Productivity

This measures the productivity of the development teams responsible for raising the
application.

Importance: Factors like reuse of code, use of best practices and frameworks, and
automation of software processes are catalysts that enhance team productivity.
Summary

This chapter introduces the concept of enterprise applications, their types, and the typical
challenges faced in raising them. It explains iterative software engineering methodologies
from the perspective of their characteristics and applicability. The chapter also describes the
typical life cycle phases of enterprise applications and the stakeholders involved. It
concludes by outlining the three key determinants for successful enterprise applications, the
knowledge and skill sets required by the team, and the key parameters for measuring an
application's success.
• Review Questions
• Identify the enterprise applications in your domain area and
categorize them.
• List three most important challenges in raising an enterprise
application.
• Perform a SWOT analysis of the two software engineering
methodologies.
• Find out the names of life cycle phases in the Scrum approach.
• Explore the 4+1 view of IBM Rational Unified Process.
Further Readings
•Application security:
[Link]
•IBM patterns for e-business: [Link]
•IBM Rational Unified Process:
[Link]
•Performance benchmarks: [Link]
•Scrum methodology: [Link]
•XP methodology: [Link]

You might also like