.gif)
patterns & practices Developer Center
Shop for patterns and practices books online [Content link no longer available, original URL:http://shop.microsoft.com/practices]
June 2006
Summary
This document illustrates how various software factories can be used together to provide solutions to business and technical problems. It uses the example of Global Bank, which is a fictional banking organization that is modeled after real banks. The document demonstrates the business drivers that led to a series of technical decisions that ultimately result in the use of four software factories: Web Service Software Factory, Smart Client Software Factory, Web Client Software Factory, and Mobile Client Software Factory.
Contents
Business Environment of Global Bank
Technical Environment of Global Bank
Meeting the Business and IT Objectives
Business Environment of Global Bank
Global Bank has undergone a series of substantial changes in the last 10 years, starting with the deregulation of the U.S. financial services industry in the late 1990s. Seeking to rapidly expand its portfolio, the bank undertook a series of mergers and acquisitions. Global Bank now has over 200 branches across the western United States, and offers a complete line of integrated financial services, including:
- Core accounts. This includes savings and checking accounts.
- Lending. This includes credit cards, consumer loans (such as, auto and line of credit), mortgage, and home equity.
- Investing. This includes certificates of deposit, trust services, brokerage services (including securities), annuities, individual retirement accounts, and mutual funds.
- Financial planning. This includes comprehensive financial planning services, including retirement, education, tax, and estate planning, including both future planning and plan execution services.
The bank's profitability lags behind many of its competitors of similar size, but the Chief Executive Officer (CEO) is actively exploring ways to substantially improve profitability in the future.
Technical Environment of Global Bank
In the mid-1980s Global Bank had a single mainframe system, accessed through IBM 3270 terminals in each branch. Due to numerous acquisitions, the fragmentation of technology within its divisions, and the natural evolution of technology, the technical environment at Global Bank has changed substantially since then. It now consists of multiple different back-end systems, with a middleware component to facilitate communication between them. The 3270 terminals have been replaced with personal computer clients that run multiple applications and perform terminal emulation to communicate with the back-end systems.
During this time, Global Bank also invested heavily in technology to provide additional channels for customer communication, including:
- Automated teller machines (ATMs)
- Telephone banking services
- Internet banking
The heterogeneous environment that now exists is functional but clearly less than optimal. Operation and maintenance of the computer environment is complex and expensive. In branches, officers perform increasingly complicated and sophisticated actions to support the different back-end systems. In many cases, employees of the bank must manually reenter data from one system to another. Global Bank also struggles to integrate service offerings for branch customers across multiple channels.
Global Bank has the following facilities in these locations:
- Corporate headquarters are located in Redmond, Washington.
- Data centers are located in Seattle, Washington and Los Angeles, California.
- Telephone banking call centers are located in Fargo, North Dakota.
- Software development centers are in the United States (Portland, Oregon), Argentina (Córdoba), and India (Bangalore).
- Branch offices are located throughout the western United States.
Figure 1 shows how the facilities are connected.
.gif)
Figure 1 Global Bank networking environment
Data Centers
All back-end systems are located in one or both of the data centers. All systems are based on the Microsoft platform except for the following:
- All customer accounts reside on an IBM mainframe system (OS/390), and all core account transactions are performed using Customer Information Control System (CICS) based transactions.
- Loan information is held on systems based on IBM WebSphere J2EE.
- Customer information is held on a custom Customer Relationship Management (CRM) system that runs on a Sun Solaris Enterprise System. It was designed by a Global Bank software development team.
- Electronic payments use Automated Clearance House (ACH)-based transactions through an external payment gateway. Payees that cannot receive electronic payments are paid using electronic transactions to a manual fulfillment center, which then makes the payments manually through the U.S. mail.
Figure 2 shows the systems present in the data centers.
.gif)
Figure 2 Data center systems at Global Bank
Software Development Centers
Global Bank faces significant challenges integrating systems from the various companies it has acquired. The bank has a software development team located in the corporate headquarters, but it retains staff in three software development centers. Each center has staff with expertise in a particular system acquired by Global Bank.
Business Objectives of Global Bank
The CEO of Global Bank completed an evaluation of the bank's current status, and has identified the following revenue goals. The new goals are to:
- Improve revenue through increased market share.
- Increase the profit margin for existing services.
- Shift the bank's portfolio to focus more on higher profit services.
To meet these revenue goals, the CEO has defined the following business objectives. The new objectives are to:
- Make one or more additional acquisitions.
- Improve cross-selling between services.
- Increase efficiency from branch offices.
- Improve online experience for customers.
- Support banking on mobile devices.
The following sections discuss each of these objectives in more detail.
Make one or more additional acquisitions
The CEO has determined that the fastest way to significantly increase market share is to make further acquisitions. He is also looking to use these acquisitions to shift the portfolio of Global Bank to increase its focus on more profitable services. Through well chosen acquisitions, the CEO aims to increase both revenue and profitability in the medium term.
Improve cross-selling between services
A recent customer survey demonstrated that in many cases customers are unaware of the full suite of services offered by Global Bank. The CEO sees a significant opportunity to encourage existing customers to make use of additional, more profitable services. To this end, the CEO has tasked the Chief Technology Officer (CTO) to explore ways technology can be used to promote cross-selling opportunities.
Increase efficiency from branch offices
The mergers and acquisitions in Global Banks recent history are also reflected in the branch office experience. Branch office workers must use a variety of different systems to perform customer service operations. This increases training costs for employees, and results in slower customer service in each branch.
The CEO wants to provide more efficient service in branches, which he believes will result in lower training costs and greater satisfaction for both the customers and the staff.
Improve online experience for customers
The online services of Global Bank are not currently widely used by customers. The services of different divisions are represented on separate Web sites, each with a different user experience.
The CEO identified this as a critical area of growth for the company because increased use of online banking can reduce overall costs for the bank. An effective online presence may attract new customers who predominantly use internet banking services, and it can also be used to increase existing customer base awareness of additional financial services.
The CEO has tasked the CTO with increasing the online banking functionality for users, and with standardizing the user experience across the portfolio.
Support banking on mobile devices
Market research has shown that 14% of Global Bank customers currently use a mobile device to access the Internet. This figure is forecast to increase dramatically in the coming years, with particular growth occurring for customers with an income over $100,000.
These findings have persuaded the CEO that support for banking on mobile devices will provide additional value for high income customers. As a result, he has tasked the CTO with examining how the bank can provide support for banking on mobile devices.
Technology Objectives
After meeting with the CEO, the CTO realizes that the following changes to the IT environment are necessary for Global Bank to meet its business objectives. To meet its objectives, Global Bank must:
- Improve current application integration and simplify the integration of future applications.
- Provide a single client application for branch office and call center employees.
- Simplify and enhance the online banking experience.
- Create an online banking application for mobile devices.
The following sections discuss each objective in more detail.
Improve application integration
Application integration is at the core of many of the problems identified by the CEO. With technology from a number of different vendors, and a patchwork environment that has evolved over time, compromises have been necessary to quickly get systems working. This has resulted in high operations costs, and difficulty in adding new services in a cost-effective and timely manner.
To improve interoperability, one option is to standardize applications on a single platform. However, the CTO is worried about the migration costs that would result, and recognizes that with future acquisitions on the horizon the problem is only likely to reoccur. Instead the CTO decides the best solution is to focus on better integration of the existing applications, and to provide a more standardized approach to application integration moving forward. In particular, the CTO wants to make it significantly easier to add and remove systems in the future.
Provide a single client application for branch office and call center employees
The CTO plans to develop a single application that the branch officers can use for all day-to-day branch operations. This application would display an interface specific to the job role of the branch office employee, and it would be able to communicate with the many different back-end systems found in the bank. The same application will also be used in the call center in Fargo, North Dakota.
The CTO believes that providing a single client application for branch employees will increase employee productivity and satisfaction, reduce data entry errors, reduce training costs, and decrease customer wait times in branches.
Simplify and enhance the online banking experience
The CTO identified the following two areas for specific improvement in their online banking services:
- Online banking should be standardized. Currently the way a user interacts with Global Bank online banking depends on the services he or she is accessing. For example, the user interface for mortgage payments is completely different from the user interface for accessing a savings account.
- Online banking should offer additional services. Currently the financial services division offers minimal functionality.
The CTO hopes to make changes to the IT architecture that will facilitate these needed improvements. He also intends to make it easier to add more Web-based services for customers in the future.
Create an online banking application for mobile devices
Global Bank currently has no support for mobile devices. Customers that browse to the Global Bank Web site on their mobile device are rejected for using an incompatible browser. This has caused some customers to complain.
The CTO plans to develop a mobile banking application that is specifically designed for mobile devices. The application will support basic features such as checking account balances, along with more advanced features such as transferring money between accounts and online bill pay. Eventually, the application will be expanded to support additional financial services such as real-time share transactions.
Meeting the Business and IT Objectives
After thorough consultation, the CTO has determined that the best way to achieve the business and technical goals of Global Bank is to shift toward a service-oriented architecture (SOA), and use internal development resources to develop a single smart client solution for use in the branch offices and call center.
Because Global Bank lacks the internal resources to perform all development internally, the CTO decides to outsource the development of the new retail banking Web site, and of the mobile client application.
The senior architect has provided the CTO with a high-level vision for the technical environment at Global Bank. It is shown in the following diagram.
.gif)
Figure 3 Global Bank technical environment
The CTO is confident that this solution meets each of the following technical objectives he set:
- Improve application integration now and simplify the integration of future applications. By exposing legacy systems as services, communication can be standardized between systems, both internally and across the Internet. In addition, new service-oriented applications can be introduced into the environment more easily. The bank is also better able to interoperate with other systems if necessary.
- Provide a single client application for branch office employees. The smart client will display an interface specific to the job role of the employee, and the staff will only have to enter customer information once. The smart client will propagate the information to each back-end system, resulting in significantly more efficiency to benefit both the staff and the customers.
- Simplify and enhance the online banking experience. The CTO feels comfortable outsourcing this work because the online banking Web site will communicate with Web services using standard protocols.
- Create an online banking application for mobile devices, Global Bank lacks expertise in this area, but again the CTO feels confident in outsourcing the work because the back-end proprietary systems will be exposed as Web services.
Development Challenges
This project represents one of the most significant changes in the technology environment of Global Bank. Work is going to be spread across all the software development centers, with additional development being outsourced. However, in the past, co-operation between the development centers had been limited, and development tended to occur on an ad-hoc basis.
The senior architect has identified the following problems that result from the current development methodology:
- Inconsistency. Similar applications are developed in different ways, resulting in higher maintenance and training costs.
- Varying Quality. Developers with varying levels of experience lack guidance on implementing proven practices. This results in inconsistent quality among the applications they produce.
- Poor Productivity. In many cases, developers across the company repeatedly solve the same problems in different applications, with little or no reuse of code. Additionally, developers spend a good deal of time on routine development tasks that potentially can be automated.
The Solution: Software Factories
The Senior Architect needs a strategy to realize the architectural vision set forth and to resolve the development challenges identified in the previous section. After significant research he decides that the best solution can be found in these software factories from patterns & practices: Web Service Software Factory, Smart Client Software Factory, Web Client Software Factory, and Mobile Client Software Factory.
A software factory is a structured collection of related software assets that help architects and developers create high-quality instances of specific types of applications predictably and efficiently. Each factory is designed to help build applications that share architecture and feature sets.
A software factory contains a variety of software assets such as reusable code components, documentation, reference implementations, and tools, such as wizards, code generators, and visual designers. A factory typically provides templates and other tools a development team can use to quickly start new application development. It continues to assist the developers far beyond this first step, providing guidance and automation of the prescribed development activities throughout the development life cycle.
Architects and developers can customize, extend, and adjust software factories, to address more closely the unique needs of a project team or an organization. Typically, the architect performs this customization, and then repackages and distributes the factory to his project teams.
The software factories from patterns & practices meet the requirements of Global Bank, and should make the development tasks significantly more efficient and predictable. The senior architect is confident that the software factories will assist him in delivering an effective solution that is robust, reliable, and based on proven practices. After discussing these plans with the senior architect, the CTO believes that the software factories will help to deliver an effective solution efficiently and cost-effectively. He gives approval for the project to proceed.
Contributors and Reviewers
- Program and Product Management: Jason Hogg, Don Smith, Microsoft Corporation
- Review: Tom Hollander, Eugenio Pace, Microsoft Corporation; Tim Osborn, Ascentium Corporation
- Documentation: Paul Slater, Wadeware LLC; Melissa Seymour, TinaTech Inc; Claudette Siroky, CI Design Studio; Nelly Delgado, Microsoft Corporation
- Release Management: Sanjeev Garg, Microsoft Corporation
.gif)