Microsoft Solutions Framework (MSF) is a set of principles, models, disciplines, concepts, and guidelines for delivering information technology solutions 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 (Waterfall, Agile) but lets them decide what methodology to use.
MSF was first introduced by Microsoft as version 1.0 in 1993.
MSF was revised to version 2.0 in 1997.
2002 saw the release of MSF version 3.0. 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.
Microsoft Solutions Framework (MSF) is a set of software engineering processes, principles, and proven practices intended to enable developers to achieve success in the software development life cycle (SDLC). MSF provides an adaptable guidance, based upon experiences and best practices from inside and outside of Microsoft, to increase the chance of successful delivery of an information technology solution to the customer by working fast, decreasing the number of people on the project team, averting risk, while enabling high quality results.
The Microsoft Solution Framework version 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, named Microsoft Solutions Framework for Agile Software Development (MSF4ASD) and Microsoft Solutions Framework for Capability Maturity Model Integration Process Improvement (MSF4CMMI). Note that 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 Microsoft Solutions Framework 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.
The following are the nine foundational principles, which form the backbone for the other models and disciplines of MSF:
- Foster open communication
- Work towards a shared vision
- Empower team members
- Establish clear accountability and shared responsibility
- Focus on delivering business value
- Stay agile, expect change
- Invest in quality
- Learn from all experiences
- Partner with customers
MSF consists of two models.
This describes the role of various team members in a software development project.
The members of this team would be:Product Management: Mainly deals with customers and define project requirements, also ensures customer expectations are met
Program Management: Maintains project development and delivery to the customer
Architecture: Responsible for solution design, making sure the solution design optimally satisfies all needs and expectations
Development: Develops according to the specifications
Test: Tests and assures product quality
Release/Operations: Ensures smooth deployment and operations of the software
User Experience: Supports issues of the users
One person may be assigned to perform multiple roles. MSF also has suggestion on how to combine responsibilities such as the developer should not be assigned to any other role.
This describes the different stages in processing for a project. The MSF Governance Model has five overlapping tracks of activity, each with a defined quality goal. These tracks of activity define what needs to be accomplished and leave how they are accomplished to the team selected methodology. For instance, these tracks can be small in scope and performed quickly to be consistent with an Agile methodology, or can be serialized and elongated to be consistent with a Waterfall methodology.
Tracks of activity:Envision - think about what needs to be accomplished and identify constraints
Plan - plan and design a solution to meet the needs and expectations within those constraints
Build - build the solution
Stabilize - validate that the solution meets the needs and expectations... "synch and stabilize"
Deploy - deploy the solution
Integrate planning and conduct change control
Define and manage the scope of the project
Prepare a budget and manage costs
Prepare and track schedules
Ensure that right resources are allocated to the project
Manage contracts and vendors and procure project resources
Facilitate team and external communications
Facilitate the risk management process
Document and monitor the team's quality management process
The MSF for Agile Software Development (MSF4ASD) is intended to be a light weight, iterative and adaptable process.
The MSF4ASD uses the principles of the agile development approach formulated by the Agile Alliance. The MSF4ASD provides a process guidance which focuses on the people and changes. It includes learning opportunities by using iterations and evaluations in each iteration.
The MSF for Capability Maturity Model Integration Process Improvement (MSF4CMMI) has more artifacts, more processes, more signoffs, more planning and is intended for projects that require a higher degree of formality and ceremony.
The MSF4CMMI is a formal methodology for software engineering. Capability Maturity Model was created at the Software Engineering Institute of Carnegie Mellon University, and is a process improvement approach that provides organizations with the essential elements of continuous process improvement resulting in a reduced SDLC, improved ability to meet the cost and schedule targets, building products of high quality. The MSF4CMMI has extended the MSF4ASD guidance with additional formality, reviews, verification and audit. This results in a SEP that relies on process and conformance to process rather than relying purely on trust and the ability of the individual team members. The MSF4CMMI has more mandatory documents and reports than the agile version, and this more formal development process reduces risk on large software projects and provides a measurable status. One of the benefits of using the CMMI process is the standard evaluation by which one can compare the ability to develop software in other organizations.