quinta-feira, 9 de maio de 2013

CMMI - DEV - I


Representação por Estágios

O modelo CMMI-DEV tem como objetivo amadurecer o processo de desenvolvimento de software, trazendo vários benefícios, como por exemplo:
  • Estabelecer uma linguagem comum.
  • Construir uma visão compartilhada. 
  • Construir um conjunto de processos e procedimentos desenvolvidos com sugestões de uma ampla participação da comunidade de software. 
  • Oferecer uma estrutura para se priorizar as ações. 
  • Estabelecer uma estrutura para se realizar avaliações confiáveis e consistentes. 
  • Auxiliar comparações em diversas indústrias. 
     

No processo imaturo teríamos:
  • Ad hoc, improvisado por profissionais e gestores.
  • Não é rigorosamente seguido e o seu cumprimento não é controlado.
  • Altamente dependente dos profissionais atuais.
  • Com baixa visão do progresso e da qualidade.
  • Cujas funcionalidades e qualidade do produto podem ficar comprometidas para que os prazos sejam cumpridos.
  • Arriscado do ponto de vista do uso de novas tecnologias.
  • Com custos de manutenção excessivos.
  • Com qualidade difícil de prever.

O CMMI-DEV possui duas representações. Uma é denominada representação por estágios e a outra representação contínua, falarei das duas durante os posts.

O modelo CMMI v1.2 (CMMI-DEV) contém 22 áreas de processo. Em sua representação por estágios, são divididas da seguinte forma:

Nível 1: Inicial (Ad-hoc)

Não possui áreas de processo.

Nível 2: Gerenciado / Gerido

  • Gestão de Requisitos (REQM - Requirements Management)
    • Gerencia os requisitos dos produtos do projeto e os componentes do produto e identifica inconsistências entre esses requisitos e os planos do projeto e produtos de trabalho.

  • Planejamento de Projeto (PP - Project Planning)
    • Orienta os gerentes de projeto, ou papéis equivalentes, no planejamento para o esforço, custo, orçamento, recursos, riscos, qualidade etc., para um projeto de desenvolvimento de software;

  • Monitoramento e Controle de Projeto (PMC - Project Monitoring and Control)
    • Fornece um entendimento do progresso do projeto para que ações corretivas apropriadas possam ser tomadas quando o desempenho do projeto desvia significativamente do plano.

  • Gestão de Acordo com os Fornecedores (SAM - Supplier Agreement Management)
    • Gerenciar a aquisição de produtos de fornecedores.

  • Medição e Análise (MA - Measurement and Analysis)
    • Desenvolve e sustenta uma capacidade de medição que é usado para apoiar as necessidades de informação de gestão.

  • Garantia da Qualidade de Processo e de Produto (PPQA - Process and Product Quality Assurance)
    • Estabelece práticas necessárias de forma a garantir que os procedimentos estabelecidos para o processo estão sendo executados e que o produto é aderente aos padrões institucionalizados de qualidade;

  • Gestão de Configuração (CM - Configuration Management)
    • Estabelece e mantém a integridade dos produtos de trabalho, utilizando identificação de configuração, controle de configuração, o que representa status de configuração e auditorias de configuração.

Nível 3: Definido

  • Desenvolvimento de Requisitos - RD (Requirements Development)
    • Levantamento, análise, coleta, desenvolvimento dos requisitos de clientes, de produto e de componentes de produto. 

  • Solução Técnica - TS (Technical Solution)
    • Desenvolve e implementa soluções para os requisitos. 

  • Integração de Produto - PI (Product Integration)
    • Monta o produto a partir dos componentes do produto, certifique-se de que o produto, como integrada, as funções corretamente, e entregar o produto.
 
  • Verificação - VER (Verification)
    • Assegura que os produtos de trabalho selecionados satisfazer as suas necessidades específicas. 
 
  • Validação - VAL (Validation)
    • Demonstra que um produto ou componente de produto cumpre a sua utilização a que se destinam, quando colocado no seu ambiente pretendido.
 
  • Foco de Processo Organizacional - OPF (Organizational Process Focus)
    • Planeja, implementa e implanta melhorias nos processos organizacionais com base em uma compreensão aprofundada dos pontos fortes e fracos dos processos da organização e dos ativos de processo atuais. 
 
  • Definição de Processo Organizacional - OPD (Organizational Process Definition)
    • Estabelece e mantém um conjunto utilizável de ativos de processos organizacionais e os padrões do ambiente de trabalho.

  • Treinamento Organizacional - OT (Organizational Training)
    • Desenvolve as habilidades e conhecimentos das pessoas para que possam desempenhar suas funções de forma eficaz e eficiente.

  • Gerenciamento Integrado de Projeto - IPM (Integrated Project Management)
    • Estabelece e Gerencia o projeto e o envolvimento das partes interessadas de acordo com um processo integrado e definido que é adaptado a partir de conjunto de processos padrão da organização.

  • Gerenciamento de Riscos - RSKM (Risk Management)
    • Identifica potenciais problemas antes que eles ocorram de modo que as atividades de manuseio de risco pode ser planejado e invocado como necessário através da vida do produto ou projeto para mitigar os impactos adversos em alcançar objetivos.

  • Análise de Decisão e Resolução - DAR (Decision Analysis and Resolution)
    • Analisa possíveis decisões usando um processo de avaliação formal que avalia alternativas identificadas contra os critérios estabelecidos.

Nível 4: Quantitativamente gerenciado / Gerido quantitativamente

  • Desempenho de Processo Organizacional - OPP (Organizational Process Performance)
    • Estabelece e mantém um entendimento quantitativo do desempenho do conjunto da organização de processos padronizados de apoio de qualidade e desempenho do processo objetivos e fornecer os dados de desempenho processo, referências e modelos para gerenciar quantitativamente os projetos da organização. 

  • Gerenciamento Quantitativo de Projeto - QPM (Quantitative Project Management)
    • Gerencia quantitativamente o processo definido do projeto para alcançar a qualidade estabelecida do projeto e os objetivos de desempenho do processo.

Nível 5: Em otimização


  • Gestão de Processo Organizacional - OPM (Organizational Process Management)
    • Seleciona e implanta melhorias incrementais e inovadoras que comprovadamente melhoram processos e tecnologias da organização. 

  • Análise Causal e Resolução - CAR (Causal Analysis and Resolution)
    • Identifica as causas de defeitos e outros problemas e tomar medidas para impedir que elas ocorram no futuro.


Grande Abraço,
Gilberto Ribeiro.

SCRUM - Implantação I

Princípios, padrões e práticas são importantes, mas são as pessoas que os fazem funcionar. Uma equipe que tem um bom relacionamento é a força de desenvolvimento de software mais poderosa que existe.


Manifesto para o desenvolvimento Ágil de Software


Estamos descobrindo maneiras melhores de desenvolver softwares, fazendo-o nós mesmos e ajudando outros a fazê-lo.
Com esse trabalho passamos a valorizar:

Indivíduos e interações mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contrato
Resposta a mudanças mais que seguir um plano

Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.
 

Nós seguimos os seguintes princípios


Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.

(Quanto mais frequentes são as entregas, maior é a qualidade final)


Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.

(Canalizar as mudanças para as vantagem competitivas do cliente. A adaptação as mudanças mostram o quando a equipe entendeu o negócio do cliente)


Entregar software funcionando com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos.

(Nossa atenção está no objetivo de entregar software que atenda as necessidades do cliente)


Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.

(Clientes, desenvolvedores e interessados devem ter uma interação significativa e frequente)

Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.

(As pessoas são o fator de sucesso mais importante)


O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.

(O principal modo de comunicação é a interação humana)


Software funcional é a medida primária de progresso.

(Quantidade de software que está satisfazendo o cliente)


Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes.

(As equipes ágeis tem seu ritmo próprio)


Contínua atenção à excelência técnica e bom design, aumenta a agilidade.

(Alta qualidade é o segredo da alta velocidade)


Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.

(Buscamos o caminho mais simples e coerente)

As melhores arquiteturas, requisitos e designs emergem de times auto organizáveis.

(A equipe determina a melhor maneira de cumprir essas responsabilidades)

Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.

(A equipe e extremamente flexível)

Grande Abraço,
Gilberto Ribeiro.