Microsoft Solutions Framework. Microsoft Solutions Framework (MSF) is a set of principles, models, disciplines, concepts, and guidelines for delivering information technology services from Microsoft. MSF is not limited to developing applications only; it is also applicable to other IT projects like deployment, networking or infrastructure projects. MSF does not force the developer to use a specific methodology (such as the waterfall model or agile software development).

History 

MSF was first introduced by Microsoft as version 1.0 in 1993, and a version 2.0 was released in 1997.

In 2002, MSF version 3.0 was released. It modified version 2.0 in the following ways:
 Combined previously separate models into unified Team and Process models designed for application across a variety of project types including deployment, enterprise software integration, and development projects.
 Folded the Application Development and Infrastructure Deployment models into a single Process Model consisting of five phases.
 Added Project Management and Readiness Management Disciplines.
 Made changes to the Risk Management Discipline.
 Added links between MSF and the Microsoft Operations Framework (MOF).
 Added an MSF Practitioner Program designed to train individuals to lead or participate in MSF projects.

MSF version 4.0 was released in 2005. The release was a major refresh of the Process Model (now called the Governance Model) and the Team Model. MSF 4.0 included techniques for two separate methodologies: MSF for Agile Software Development (MSF Agile) and MSF for CMMI Process Improvement (MSF4CMMI).

Components 

MSF 4.0 is a combination of a metamodel which can be used as a base for prescriptive software engineering processes, and two customizable and scalable software engineering processes.  The MSF metamodel consists of foundational principles, a team model and cycles and iterations.

MSF 4.0 provides a higher-level framework of guidance and principles which can be mapped to a variety of prescriptive process templates. It is structured in both descriptive and prescriptive methodologies. The descriptive component is called the MSF 4.0 metamodel, which is a theoretical description of the SDLC best practices for creating SDLC methodologies. Microsoft is of the opinion that organizations have diverging dynamics and contrary priorities during their software development; some organizations need a responsive and adaptable software development environment, while others need a standardized, repeatable and more controlled environment. To fulfill these needs, Microsoft represents the metamodel of MSF 4.0 in two prescriptive methodology templates that provide specific process guidance, for agile software development (MSF4ASD) and  for the Capability Maturity Model (MSF4CMMI). These software engineering processes can be modified and customized to the preferences of organization, customer and project team.

The MSF philosophy holds that there is no single structure or process that optimally applies to the requirements and environments for all sorts of projects. Therefore, MSF supports multiple process approaches, so it can be adapted to support any project, regardless of size or complexity. This flexibility means that it can support a wide degree of variation in the implementation of software engineering processes while retaining a set of core principles and mindsets.

The MSF process model consists of series of short development cycles and iterations. This model embraces rapid iterative development with continuous learning and refinement, due to progressive understanding of the business and project of the stakeholders. Identifying requirements, product development, and testing occur in overlapping iterations resulting in incremental completion to ensure a flow of value of the project. Each iteration has a different focus and result in a stable portion of the overall system.

References

External links 
Microsoft Solution Framework home page
Microsoft Solution Framework in Visual Studio 2005 Team System
MSF Essentials book

Solutions Framework, Microsoft