# Microsoft Solutions Framework

Framework de Soluções da Microsoft (do inglês Microsoft Solutions Framework - MSF) é um guia de boas práticas de desenvolvimento de softwares, criado pela Microsoft em 1994. Originou-se da análise de times de projetos e grupos de produtos. Estas análises eram constatadas com a indústria de práticas e métodos. Estes resultados combinados eram consolidados em melhores praticas entre pessoas e processos.
Este framework (concorrente do RUP e XP) é usado pela Microsoft como método para desenvolvimento interno de soluções de software e, também, para atender os clientes e parceiros da empresa. Agora está na versão 4.0 integrado na IDE de programação Visual Studio.
Um projeto MSF é regido por ciclos ou iterações. A cada ciclo, cada componente da equipe executa suas funções e atualiza o resultado do seu trabalho conforme a necessidade. Os ciclos se repetem até que o projeto seja concluído ou quando cada versão é lançada.
A Microsoft não classifica o MSF como uma metodologia, mas sim como uma disciplina. Basicamente, serve como um guia de boas práticas, sem aprofundamento dos detalhes. O que pode parecer uma deficiência, mas permitiu uma abordagem simples e direta das técnicas apresentadas. Permitindo uma fácil compreensão tanto por parte da equipe como do cliente, além de ser bastante flexível em sua aplicação.

## Características

A versão 4.0 do Microsoft Solution Framework é uma combinação de um metamodelo, que pode ser usado como base para processos de engenharia de software prescritivos; e dois processos personalizáveis e escaláveis de engenharia de software. Os metamodelos MSF consistem de princípios fundamentais, uma "equipe modelo" e ciclos de iterações.
O MSF 4.0 fornece uma ferramenta de alto nível, com um quadro de orientações e princípios que podem ser mapeados para uma variedade de modelos prescritivos de processos. O programa está estruturado em duas metodologias: descritiva e prescritiva. A componente descritiva é chamado de metamodelo MSF 4.0, que é uma descrição teórica das melhores práticas SDLC para a criação de metodologias SDLC. A Microsoft tem a opinião de que as organizações têm diferentes dinâmicas e contrariam as suas prioridades durante o desenvolvimento de software. Algumas organizações necessitam de um sensível e adaptável ambiente de desenvolvimento de software, enquanto outros precisam de um padronizado, repetitivo e ambiente mais controlado. Para atender estas necessidades, a Microsoft representa o metamodelo do MSF 4.0 em dois modelos, que prevêem uma metodologia prescritiva específica para processos de orientação, chamado Microsoft Solutions Framework for Agile Software Development (MSF4ASD); e para melhoria de processos, chamado Microsoft Solutions Framework for Capability Maturity Model Integration (MSF4CMMI). Nota-se que estes processos de engenharia de software podem ser modificados e personalizados de acordo com as preferências da organização, clientes e equipe do projeto.
A filosofia MSF afirma que não existe uma única estrutura ou processo que se aplica optimamente aos requisitos e ambientes para todos os tipos de projetos. A MSF, portanto, suporta múltiplas abordagens de processos, para que estes possam ser adaptados para apoiar qualquer projecto, independentemente da sua dimensão ou complexidade. Esta flexibilidade significa que ele pode oferecer suporte a uma ampla variação no grau de execução dos processos de engenharia de software, mantendo, porém, dentro de um conjunto de princípios fundamentais e mentalidades.
A Microsoft Solutions Framework Process Model consiste em séries curtas de ciclos de desenvolvimento e iterações. Este modelo abraça um rápido desenvolvimento iterativo, com a aprendizagem contínua e refinamento, devido ao progressivo conhecimento da empresa e do projeto de todos os agentes envolvidos. Identifica necessidades e desenvolve produtos; e os ensaios ocorrem nas iterações sobrepostas, resultando em uma conclusão de acréscimo para assegurar um fluxo de valor do projeto. Cada iteração tem um foco diferente; e o resultado é uma porção estável do sistema global.
Seguem-se os oito princípios fundamentais, que constituem a "espinha dorsal" para os outros modelos e disciplinas do MSF:
1. Manter a comunicação aberta;
2. Trabalhar em prol de uma visão compartilhada;
3. Capacitar os membros da equipe;
4. Estabelecer uma responsabilidade clara e partilhada;
5. Concentrar-se em negócios de prestação de valor;
6. Ficar ágil, esperar mudanças;
7. Investir em qualidade;
8. Aprender com todas as experiências.

### MSF Models

1. Modelo de equipe MSF: Este artigo descreve o papel dos vários membros da equipe de projeto de desenvolvimento de software. Os membros dessa equipe seriam:
* Gerente de produto: Lida principalmente com clientes e define requisitos de projeto, garante ainda aos clientes o cumprimento das expectativas.
* Gestão de programas: Mantém o projeto de desenvolvimento e o entrega ao cliente.
* Arquitetura: Responsável pela concepção e solução, garantindo uma ótima solução e concepção que satisfazem todas as necessidades e expectativas.
* Desenvolvedor: Desenvolve de acordo com as especificações.
* Testes: Práticas que garantem a qualidade dos produtos.
* Lançamento / Operações: Garantem a implantação e o bom funcionamento do software.
* Experiência do usuário: Apoia questões dos usuários.
Uma pessoa pode ser atribuída a desempenhar múltiplos papéis. O MSF também tem sugestões sobre como combinar as responsabilidades, como o dono da obra não dever ser atribuído a qualquer outro papel.
2. Modelo de governança MSF: Este descreve as diferentes fases da transformação de um projeto. O Modelo de Governança MSF tem cinco faixas de sobreposição de atividades, cada uma com uma meta de qualidade definida. Essas faixas de atividade definem o que precisa ser cumprido e definem como isso se encaixa na na metodologia da equipe selecionada. Por exemplo, as faixas podem ser pequenas e realizadas rapidamente no âmbito, para serem coerentes com uma metodologia Agile; ou podem ser serializadas e "alongadas" para serem coerentes com uma metodologia Waterfall.
* Envision - pensar sobre o que deve ser realizado e identificar constrangimentos.
* Plan - planejar e projetar uma solução para atender às necessidades e expectativas dentro dessas limitações.
* Build - construir a solução.
* Estabilize - validar a solução que vai ao encontro das necessidades e expectativas.
* Implement - implantar a solução.

### MSF Project Management Process

* Integrar planejamento e condução para mudança de controle;
* Definir e gerenciar o escopo do projeto;
* Preparar um orçamento e gerenciar os custos;
* Preparar e acompanhar os horários;
* Garantir que os recursos serão atribuídos "à direita do projeto";
* Gerir contratos e vendedores ao projeto e adquirir recursos;
* Facilitar a equipe e comunicações externas;
* Facilitar o processo de gestão do risco;
* Documento e monitorar a qualidade da equipe do processo de gestão.

### MSF para Agile Software Development

O MSF para Agile Software Development (MSF4ASD) se destina a ser um peso leve, processo iterativo e adaptável.
O MSF4ASD usa os princípios da abordagem de desenvolvimento ágil formulada pela Agile Alliance; e prevê um processo de orientação que incide sobre as pessoas e mudanças. Inclui aprendizagem de oportunidades e de avaliações, usando iterações em cada iteração.

### MSF para Capability Maturity Model Integration

O Microsoft Solutions Framework for Capability Maturity Model Integration (MSF4CMMI) dispõe de mais artefatos, mais processos, mais signoffs e mais planejamento; e destina-se a projetos que requerem um maior grau de formalidade e cerimônia.
O MSF4CMMI é uma metodologia formal para a engenharia de software. O Capability Maturity Model foi criado a partir do Software Engineering Institute da Universidade Carnegie Mellon, e é um processo de abordagem de melhoria que fornece às organizações os elementos essenciais do processo de melhoria contínua, resultando em uma redução SDLC, na melhoria da capacidade de cumprir as metas de custo e cronograma e materiais de construção de alta qualidade. O MSF4CMMI, que ampliou a orientação MSF4ASD com o adicional de formalidade, comentários, verificação e auditoria. Isso resulta em um processo que depende do SEP e não de conformidades ao processo, confiando unicamente na confiança e na capacidade de cada um dos membros da equipe. O MSF4CMMI tem mais documentos obrigatórios e relatórios do que a versão ágil, é mais formal e o desenvolvimento deste processo reduz risco em grandes projetos de software, além de fornecer um estatuto mensurável. Uma das vantagens de utilizar o CMMI é o processo pelo qual uma avaliação padrão poderia comparar a capacidade de desenvolver software em outras organizações.