MSF is a collection of models, principles, and practices that helps organizations be more effective in their creation and use of technology to solve their business problems. It helps by providing measurable progress and rigorous guidance that is flexible enough to meet the changing needs of an organization. The core building blocks for this MSF-based solutions guidance are the six major models:
We describe each model briefly below. In later chapters we show how they can be applied to application development projects.
The MSF Enterprise Architecture Model provides a consistent set of guidelines for rapidly building enterprise architecture through versioned releases. The model aligns information technology with business requirements through four perspectives: Business, Application, Information, and Technology. Using this model helps shorten the enterprise architecture planning cycle.
The MSF Team Model for Application Development (MSF Development Team Model) provides a flexible structure for organizing project teams. It emphasizes both clear roles and responsibilities and clear goals for team success, and it increases team member accountability through its team of peers approach. Its flexibility means that it can be adapted depending on the scope of the project, the size of the team, and the skills of the team members. Using this model and its underlying principles and practices helps produce more engaged, effective, resilient, and successful teams.
The MSF Process Model for Application Development (MSF Development Process Model) provides structure and guidance through a project's life cycle that is milestone-based, iterative, and flexible. It describes the phases, milestones, activities and deliverables of an application development project and their relationship to the roles of the MSF Development Team Model. Using this model helps improve project control, minimize risk, improve quality, and shorten delivery time.
The MSF Risk Management Model provides a structured and proactive way to manage project risks. It sets forth a discipline and environment of proactive decisions and actions to continuously assess what can go wrong, determine what risks are important to deal with, and then implement strategies to deal with those risks. Using this model and its underlying principles and practices helps teams focus on what is most important, make the right decisions, and be better prepared for when the unknown future becomes known.
The MSF Design Process Model provides a three-phase, user-centric continuum that allows for a parallel and iterative approach to design for the greatest efficiency and flexibility. Three different phases—Conceptual Design, Logical Design, and Physical Design—provide three different perspectives for three different audiences—users, the project team, and developers. Moving from Conceptual Design through Logical Design to Physical Design shows the translation of user-based scenarios to services-based components so that application features can be traced back to user requirements. Using this model helps ensure that applications are created not just for the sake of technology, but to meet business and user requirements.
The MSF Application Model provides a logical, three-tier, services-based approach to designing and developing software applications. The use of user services, business services, and data services allows for parallel development, better use of technology, easier maintenance and support, and the greatest flexibility in distribution, because the services that make up the application can reside anywhere from a single desktop to servers and clients around the world.
Throughout this book, we use the basic concepts of MSF to provide a foundation for our discussions of enterprise architecture and enterprise application development. The MSF models and their key principles originate within the MSF team at Microsoft. In this book, we draw heavily on materials provided by the MSF team. Rather than limiting ourselves to these materials, however, we also draw on other sources and our own application development experience to round out these concepts and show how they can be applied in practical ways within an organization. When discussing MSF concepts, we try to distinguish information drawn from places other than official MSF sources wherever it is possible to do so in a way that does not detract from the readability of the text and the cohesiveness of the approach to application development we are trying to present.