The Stock Trader RI illustrates a fictitious, but realistic financial investments scenario. Contoso Financial Investments (CFI) is a fictional financial organization that is modeled after real financial organizations. CFI is building a new composite application to be used by their stock traders. This topic contains a summary of the scenario and demonstrates the business drivers that led to a series of technical decisions that ultimately result in the use of the Composite Application Guidance.
Contoso Financial Investments Scenario
Contoso Financial Investments (CFI) is a global investment firm with one hundred traders. Core to doing business in CFI, there is a 15-year-old legacy trader application developed in Visual C++ with the Microsoft Foundational Class Library that, over time, has become increasingly difficult to maintain.
For the last several years, CFI's lack of maintainability has brought new development on the application to a standstill—this has left the application in maintenance mode. To meet new customer requirements, CFI adopted the Microsoft .NET Framework development platform and branched out, creating additional applications that were each maintained by separate teams in a silo. The idea was that having separately developed applications would actually result in the development effort being more efficient. Each team developing in their own silo meant that CFI could remove any contention that might arise, and it would pave the way for easily creating new teams. This would allow CFI to scale out their development teams into several locations, including setting up several offshore teams.
The harsh reality is that the approach proved to be extremely inefficient on several levels. Because each application was developed in a silo, the trader is now required to maintain multiple copies of the same data throughout a growing suite of applications, including StockPortfolio, MarketView, and StockHist. The data is not identical, but there are elements of the data that are duplicated. To do their jobs, traders constantly jump back and forth between these various applications. To assist with this, CFI employed a "launcher" that quickly launched all the applications from a central place. The launcher also passed the user's login credentials to the application to skip the logon screen for each application. The launcher is more of a bandage than anything else. It did not greatly improve the overall workflow of the traders in that the applications cannot integrate with one another, nor do they support a consistent user interface.
Because of the lack of integration, getting a consolidated view of all the related data is not an easy task. There is a customer-facing reporting site that can pull from each of the back-end systems to create this "one" view, but it is littered with problems, the least of which is that if the data has not been properly duplicated, the reports do not work. In addition, entering the duplicate data is extremely time consuming and significantly impacts the number of orders that the trader is processing. Manually entering the data caused many errors in the system. Attempts to automatically synchronize the different systems have been too costly, because the schemas are very different and change frequently. With all these problems, CFI, like many other businesses, has managed to continue to operate as a profitable business. As customer demand has increased, CFI has invested the necessary funds to expand its services. It has also consistently grown its trading force whose jobs have become more and more difficult because of the inefficient operating conditions. Recently, however, this inefficiency has increased to the point that the business is starting to lose money:
- The interaction time per transaction has greatly increased because of the time it takes to navigate the suite of applications.
- The cost of employee training and in-house support has greatly increased because of the high complexity and lack of consistency of the applications.
- Maintenance costs of the various applications are extremely prohibitive. For example, in a recent instance, a logic bug that was detected required changes in seven different systems. This critical bug took three weeks to fix because other parts of the system heavily depended on the code where the bug resided. This greatly increased the cost of fixing it, testing it, and deploying it—it brought the total price to $150,000. This included the effort to fix three additional bugs that were created as part of the original fix.
- CFI has been unable to keep up with emerging technologies that can offer it a competitive edge and reduced development costs.
Currently, CFI is faced with a new challenge around Service-Oriented Architecture (SOA). Fabrikam Web Traders, one of CFI's chief competitors has offered its customers both a stand-alone rich client desktop experience and a Rich Internet Application (RIA) experience for managing their portfolios remotely and on-site. The client is able to access Fabrikam's back-end systems through Web services. Several large CFI customers are now requesting the same capabilities.
Although there is no immediate threat, in the long term, the business impact can be crippling. If CFI continues with the current strategy and does not both improve its efficiency and adapt to changing market conditions, it will lose out to its competition.
Meeting the Business and IT Objectives
The Chief Executive Officer (CEO) is an opportunist who sees this challenge as an opportunity for CFI to rise to the occasion. Working with the Chief Information Officer (CIO) and Chief Technology Officer (CTO), they devise a three-point strategy for how to take CFI forward. The strategy is as follows:
- Reduce the cost of development. To do this, the new system should do the following:
- It should provide structure for teams to collaborate through a well-defined architecture.
- It should support distributed teams, including using some offshore developers.
- It should provide a shorter development life cycle—this improves the time to market.
- It should present data in ways that were previously prohibitive and time consuming to implement.
- It should support Test-Driven Development (TDD).
- It should support automated acceptance tests.
- It should support integration with third-party systems.
- Improve trader efficiency. To accomplish this, the system should do the following:
- It should support better multitasking.
- It should provide a user interface that is better adapted to the trader workflow.
- It should consolidate existing applications.
- It should provide shorter interaction time per transaction (data visualizations).
- It should provide better information flow (contextual user interface queues).
- It should provide better use of screen area (also known as screen real estate).
- It should provide integration among the different components of the system and with external components (services).
- It should present reduced training time.
- It should support users whether they are located remotely or are on-site.
- It should support corporate branding and user interface styling.
- It should minimize the cost of adding new functionality to the system.
- It should support adding custom extensions either provided by the customer or third parties.
- Create a new customer-facing product offering. This offering should do the following:
- It should include a stand-alone rich client desktop experience and a RIA experience for portfolio management.
- It should provide user interface (UI) customization and corporate branding to beat out the competition.
- It should provide extensibility for third-party vendors.
The CTO has delivered these requirements to the senior architect, who is investigating various options for delivering them.
For the architect, this project represents one of the most significant changes in the technology environment of CFI. Work will be spread across several software development teams, with additional development being outsourced. In the past, cooperation between the development teams has been limited, and development tended to occur on an ad-hoc basis. This was because he identified the following problems that are a result of current development methodology:
- Inconsistency. Similar applications are developed in different ways. This results in higher maintenance and training costs.
- Varying quality. Developers with varying levels of experience lack guidance on implementing proven practices. This situation 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. Because there was no central design, it was very difficult to get the applications to communicate with one another.
The Solution: Composite Application Guidance for WPF and Silverlight
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 the Composite Application Guidance offered by the Microsoft patterns & practices group.
The Composite Application Guidance is a set of assets for building complex Windows Presentation Foundation (WPF) and Silverlight applications. The Composite Application Guidance enables designing a composite application in the following ways:
- It provides infrastructure and support for developing and maintaining WPF and Silverlight composite applications through non-invasive and lightweight APIs.
- It dynamically composes user interface components.
- It supports application modules that are developed, tested, and deployed by separate teams.
- It allows incremental adoption.
- It provides an integrated and consistent user experience.
- It can be integrated with existing WPF applications.
- It supports a multi-targeted scenario.
The Composite Application Guidance from Microsoft patterns & practices meets the requirements of CFI and should allow them to achieve their goals by making development significantly more efficient and predictable. Support for integrating with existing WPF and Silverlight applications is of particular interest to the architect because CFI recently developed several WPF and Silverlight applications to address recent customer needs. He is confident that the guidance will assist him in delivering an effective solution that is robust, reliable, based on proven practices, and that can best utilize WPF and Silverlight. After present his findings to the CTO, the CTO agrees that the Composite Application Guidance will help to deliver an effective solution efficiently and cost-effectively. He gives approval for the project to proceed.
To continue exploring the reference implementation, see the following topics:
- Stock Trader RI Features
- Logical Architecture
- Implementation View
- How the Stock Trader RI Works
- Technical Challenges
- Installing and Running