Project Design and Approach: The Microsoft Solutions Framework
The success of most technology projects depends on proper planning and the adoption of a formal methodology to fulfill the business objectives through effective project management and development. The use of a framework within which to operate is even more important as larger development efforts are undertaken. Therefore, care was taken by the authoring and development team to implement the sample application within a development framework that would ensure the quality of the resulting application.
For that framework, the team used the Microsoft Solution Framework (MSF). MSF presents a collection of industry-wide best practices, concepts, and models that help lay the foundation for planning, constructing, and administering development efforts. This foundation aids an organization in defining required resources and timetables for meeting key project objectives and deliverables.
One key point about MSF is that it is a framework, not a methodology. Consider MSF a map that shows key landmarks and possible routes to a destination as opposed to specific driving instructions that lay out the specific route you have to take to reach the destination.
There are actually several models included within MSF:
Team model—Presents the key roles and responsibilities of development team members.
Process model—Presents the main phases and deliverables included within the software development lifecycle.
Applications model—Presents the basic structure for best implementing applications.
However, for purposes of this book, only the process model is discussed. The remainder of this section provides a brief overview of that development process and provides a foundation for understanding the overall sectional structure of the book.
For more information on the Microsoft Solutions Framework, visit http://www.microsoft.com/msf.
Development Process Overview
The MSF process model presents the basic steps involved in a software development project. According to the framework, as presented in Figure 2.4, development is divided into four basic phases. These are:
Borrowing from the spiral approach to software development, the process model calls for each of the four phases to be repeated in an iterative manner as often as necessary. Each iteration results a new, fully functional version of the software. This is the reason why Figure 2.4 shows the end of the stabilization phase leading into the envisioning phase of a new version of the product.
Figure 2.4 The MSF process is circular.
Each of those phases consists of a set of intermediate milestones discussed in the subsections that follow.
This phase concludes with the "Vision/Scope Approved" milestone, which represents an agreement on long-range vision motivating the effort, as well as short-range scope of what will be accomplished. At this time, the team members share opportunities, risks, and assumptions.
In relation to this book, Section 1, "Envisioning," consists of chapters outlining the .NET architecture and presents the high-level requirements of the application.
This phase concludes with the "Project Plan Approved" milestone, which represents an agreement on project deliverables, features and priorities, and the targeted release date. All team members buy into and commit to the delivery schedule.
Section 2 of this book, "Planning," focuses on the architectural options available in configuring an n-tier application under the .NET architecture. Hence, the chapters are focused on the technical design of the overall system that is part of the overall planning phase and not on program management issues.
This phase concludes with the "Scope Complete/First Use" milestone, which represents an agreement that all features have been built to specification, yet accepting that the solution is not completely stable.
Section 3 of this book, "Development," presents code examples of how specific aspects of system functionality were implemented using .NET. The goal is to highlight examples of how different tools within .NET are used to meet specific business or design criteria. This chapter is not concerned with program issues of how to best develop code and it does not discuss use of unit tests, code reviews, or other such best practices. This subject matter is outside of the scope of this book and has been well documented in numerous other books.
This phase concludes with the "Release" milestone, which represents an agreement that all outstanding stability issues have been addressed, and that the support and operations organization is sufficiently prepared to deploy and manage the solution.
Section 4 of this book, "Stabilization," focuses on technical issues associated with testing, debugging, and deploying applications within the .NET framework. The focus is not on how to best track bugs or reach a "golden release" as, again, such subject matter is outside of the scope of this book and has been well documented in other books.
A Note on the Sample Application
For the purposes of this book, not all aspects of gasTix were developed by the development team. Only a subset of the entire system has been implemented. Aspects that were necessary to demonstrate the principles of building a .NET application were implemented here.
This does not mean that the sample site is not robust. On the contrary, the site has been rigorously tested to ensure the highest stability and scalability. Rather, not all functionality has necessarily been implemented. The following list shows the overall gasTix company infrastructure provided in the sample application:
gasTix site—This is the main site in support of the Internet users. The complete site includes the Web server code, the ticketing engine, and the supporting database.
gasBags site—This is a mockup site for a fictitious partner site supporting a bagpipe band called the gasBags. The objective of this site is to demonstrate consumption of Web services provided by gasTix.
Fulfillment site—The fulfillment site is a simple set of services implemented purely to show the use of BizTalk in communications. The site exists primarily to implement the fulfillment side's interface and does not actually print or handle the shipping of the tickets.
Address verification—This is a simplified version of what a full-blown address-verification site provides. This site was created to demonstrate consumption of services needed by gasBags and to simulate a large-scale database application for Microsoft Data Server analysis.
Microsoft Passport—Interfacing with Passport was implemented to demonstrate the techniques involved in accessing this key service from Microsoft.
The online version of gasTix will continue to evolve this functionality over time. Visit it often at http://www.gastix.com to see the latest implementation surrounding the service.