Modelo de Maturidade de Software – Processo de Desenvolvimento de Software
Fundamentos da medição de software
O objetivo da medição de software é aumentar a qualidade, o desempenho e a produtividade dos processos de desenvolvedores.
O uso de métricas está diretamente ligado ao controle desses processos.
Pesquisas realizadas em empresas de software indicam que acima de 60% dos projetos de software apresentam atraso na entrega, acarretando em custos excessivos e, em muitos casos, fracasso no seu resultado. Isso se deve, principalmente, à falta de controle dos projetos de software.
Depois dessas informações, você pode estar se questionando: Por que o software deve ser medido?
O software deve ser medido para:
- Entender e melhorar o processo de desenvolvimento;
- Aperfeiçoar o modelo de gerenciamento de projetos;
- Melhorar o relacionamento com clientes;
- Elaborar cronogramas mais realistas;
- Gerenciar contratos de software;
- Certificar a qualidade do software;
- Avaliar a produtividade do processo;
- Avaliar novas ferramentas de engenharia de software;
- Avaliar retorno de investimento (ROI).
Medição e modelos/normas de qualidade de um software
Para compreendermos melhor esse processo, vamos ver em que as medições de software se baseiam:
- Medição na ISO/IEC 15504, também conhecida como SPICE, é a norma ISO/IEC que define o processo de desenvolvimento de um software. Ela é uma evolução da ISO/IEC 12207 e possui níveis de capacidade para cada processo assim como o CMMI.
- Medição no CMMI.
- Medição no MPS.BR
Vamos acompanhar, agora, boas práticas na implantação de Programas de Medição nas organizações:
- Começar com um conjunto pequeno de métricas;
- Utilizar um conjunto de métricas coerentes;
- Utilizar um conjunto de medições rigorosamente definido;
- Não utilizar métricas para motivar comportamentos esperados;
- Foco desde os estados iniciais do ciclo de vida do software;
- Automatizar a coleta dos dados;
- Motivar a Gerência;
- Estabelecer metas;
- Envolvimento de todos com educação e treinamento;
- Ganhar confiança;
- Adotar uma abordagem evolutiva;
- Aplicar a ferramenta 5S e descartar o que não é útil;
- Fornecer informações corretas;
- Incentivar os desenvolvedores a fazer uso das métricas;
- Compreender que a adoção leva tempo;
- Evitar má interpretação dos dados.
É preciso prestar bastante atenção nos fatores críticos para implantação de programas de medição. Veja quais são eles:
Sobrecarga: evitar coletar dados em excesso e desnecessários, que podem causar desperdícios e perda da credibilidade do programa de medição.
Uso incorreto da medição: medições com perda da integridade dos dados, pois os profissionais tendem a mascarar os dados com medo de que estes sejam utilizados contra eles.
Falhas de medição: obtenção de medidas erradas, ambíguas e inconsistentes, resultando em análises não conclusivas.
Falhas de processo: obtenção de medidas que motivam falhas no processo (exemplo: o objetivo de diminuir a taxa de resolução de problemas induz a ação indesejada de que as equipes tratem primeiramente os problemas mais simples).
ISO e a tecnologia da informação
A ISO criou com a IEC (International Eletrotechnical Commission), a primeira comissão conjunta para elaboração de normas, o JTC1 (Joint Technical Committee).
O JTC1 é responsável pela criação de normas relacionadas à TI e é dividido em subcomissões (SC), que, por sua vez, são divididas em grupos de trabalho (Working Groups – WG).
A subcomissão SC-7 (Engenharia de Software e de Sistemas) trata das normas relacionadas à qualidade de software.
Veja alguns grupos de trabalho da SC-7:
- WG-2: Documentação de Sistemas.
- WG-6: Avaliação e Métricas.
- WG-7: Gerência do Ciclo de Vida.
- WG-12: Medição do Tamanho Funcional.
Para compreender melhor, acompanhe o histórico da Série ISO 9000.
Normas da Série ISO 9000:2000
- ISO 9000:2005 – Sistemas de Gestão da Qualidade – Fundamentos e Vocabulário.
- ISO 9001:2000 – SGQ – Requisitos.
- ISO 9004:2000 – SGQ – Diretrizes para a Melhoria de Desempenho.
- ISO 19011:2002 – Diretrizes para Auditoria de SGQ e/ou ambiental.
Estrutura da Série ISO 9000:2000
A Norma ISO 9000 descreve os fundamentos de sistemas de gestão da qualidade e estabelece a terminologia para esses sistemas. Define uma abordagem centrada em modelo de processos, baseada em 8 princípios de gestão da qualidade e 13 fundamentos, para atingir excelência e satisfação dos clientes. Serve como base de orientação a toda a série de normas ISO 9000 (ISO, 2005).
Princípios de gestão da qualidade
Todo o processo de medição, modelos e ISO, está totalmente ligado à qualidade. Vamos aprofundar mais no assunto:
Foco no cliente: Organizações dependem de seus clientes e, portanto, é recomendável que atendam às necessidade atuais e futuras do cliente, aos seus requisitos e procurem exceder as suas expectativas.
Liderança: Líderes estabelecem a unidade de propósito e o rumo da organização. Convém que criem e mantenham um ambiente interno, no qual as pessoas possam estar totalmente envolvidas no propósito de atingir os objetivos da organização.
Envolvimento de pessoas: Pessoas de todos os níveis são a essência de uma organização e seu total envolvimento possibilita que as suas habilidades sejam usadas para o benefício da organização.
Abordagem de processo: Um resultado desejado é alcançado mais eficientemente quando as atividades e os recursos relacionados são gerenciados como um processo.
Abordagem sistêmica para a gestão: Identificar, entender e gerenciar os processos inter-relacionados, como um sistema contribui para a eficácia e eficiência da organização no sentido desta atingir os seus objetivos.
Melhoria contínua: Convém que a melhoria contínua do desempenho global da organização seja seu objetivo permanente.
Abordagem factual para tomada de decisão: Decisões eficazes são baseadas na análise de dados e informações.
Benefícios mútuos nas relações com os fornecedores: Uma organização e seus fornecedores são interdependentes e uma relação de benefícios mútuos aumenta a capacidade de ambos em agregar valor.
Para se obter sucesso na implantação da ISO 9000, é necessário implantar o processo de melhoria contínua, com o objetivo de aumentar a probabilidade de fazer crescer a satisfação dos clientes.
Qualidade é estar em conformidade com os requisitos dos clientes; é antecipar e satisfazer os desejos do cliente.
Visões da qualidade de software
- Usuário: facilidade de uso, desempenho, confiabilidade dos resultados, preço do software.
- Desenvolvedor: taxa de defeitos, facilidade de manutenção e conformidade emrelação aos requisitos de usuários.
- Organização: cumprimento de prazo, boa previsão de custo, boa produtividade.
Padrões de qualidade de software
O conhecimento referente aos padrões de qualidade está apoiado nas melhores práticas recomendadas pelas normas internacionais e que venham a favorecer a empresa. Esse conhecimento é adquirido após um grande número de tentativas e erros. Ajudam a empresa a evitar a não repetir erros cometidos no passado.
Os padrões favorecem para a implantação do processo de garantia de qualidade. Como esses padrões se apoiam nas melhores práticas, a garantia da qualidade deve estar assegurada.
Alguns padrões de Qualidade de Software
CMM – Capability Maturity Model – Desenvolvido pelo SEI (Software Engineering Institute).
SPICE (Software Process Improvement and Capability Determination) -Desenvolvido pela “International Organization for Standardization and the International Electrotechnical Commission” (ISO/IEC).
ISO 9001:2000 e ISO 1207
Vamos acompanhar, agora, as outras ISOs que também estão envolvidas no processo de qualidade e software.
A ISO 9001: 2000 é usada para demonstrar capacidade de atender aos requisitos do cliente e os da própria organização.
A organização deve documentar seus processos, comunicar, manter e melhorar continuamente o SGQ. Para tal, a organização deve:
- Identificar os processos do SGQ;
- Determinar sequência e interação desses processos;
- Determinar critérios e métodos para assegurar que a operação e o controle desses processos são eficazes;
- Assegurar disponibilidade de recursos e informações;
- Monitorar, medir e analisar esses processos;
- Impor ações para alcançar os resultados planejados e a melhoria contínua.
Vamos acompanhar, agora, as outras ISOs que também estão envolvidas no processo de qualidade e software.
ISO 1207
O padrão internacional ou modelo de referência ISO/IEC 12207 – Processos do Ciclo de Vida do Software tem como objetivo fornecer uma estrutura única para que o desenvolvedor e todo pessoal envolvido no desenvolvimento de software utilizem uma linguagem comum, que é estabelecida na forma de processos bem definidos.
A ISO/IEC 12207 contém processos, atividades e tarefas a serem aplicados durante a aquisição de um produto ou serviço de software e fornecimento, desenvolvimento, operação e manutenção e distribuição de produtos de software. A ISO/IEC 12207 provê, também, um processo que pode ser empregado na definição, controle e melhoria de processos de ciclo de vida (ISO/IEC, 2008).
ISO/IEC 12207: histórico
- 1a Versão (1995): Tecnologia da Informação – Processos de Ciclo de Vida de Software: descreve processos e suas atividades e tarefas, de modo a facilitar o desenvolvimento de software em situações envolvendo duas partes.
- Paralelamente, a Indústria de Software constata que, igualmente importante, é a necessidade de avaliar a capacidade de processo (ISO/IEC 15504), o que requer a declaração do propósito do processo e descrição de resultados esperados.
- Emendas 1 (2002) e 2 (2004): introdução de novos processos e definição de propósitos e resultados esperados para cada processo.
- Apesar da ISO 12207 tratar processos de ciclo de vida de software dentro de um contexto de sistemas, era necessário um padrão no domínio de sistemas: ISO/IEC 15288 (2002).
- O desenvolvimento confuso das emendas e a falta de harmonia com a 15288 dificultavam a aplicação da ISO 12207.
- Começa, então, um projeto de harmonização que culmina com a 2a edição da ISO 12207(2008): Engenharia de Software e de Sistemas – Processos de Ciclo de Vida de Software.
- A norma ISO/IEC 12207 reconhece que nem todos os projetos e organizações precisam usar todos os processos providos. Assim, a implantação do padrão tipicamente envolve a seleção de processos apropriados para o projeto da organização (ISO/IEC, 2008).
Medição de software e melhorias em processos
Atualmente, há uma série de abordagens para medição de software, inclusive alguns padrões internacionais. Existe uma comunidade que divulga a combinação entre medição de software e melhorias em processos. Essa comunidade colaborou no desenvolvimento do processo de Medição e Análise do Capability Maturity Model Integration (CMMI) e no desenvolvimento do padrão ISO relacionado à medição de software e à avaliação de processos. O processo de Medição e Análise foi um importante adendo ao CMMI. Seu escopo é bem mais abrangente e explícito que o tratamento dispensado à questão de medição no Capability Maturity Model for Software (SW-CMM).
Atividade proposta
Pesquise um caso de sucesso com o emprego de métricas no desenvolvimento de um software.
Chave de resposta: Os modelos de métricas são usados na busca incessante pela qualidade de software.
Referências
PRESSMAN, Roger S. Engenharia de Software – Uma Abordagem Profissional. 7. ed. São Paulo: MCGRAW-HILL BRASIL, 2011.
SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: PEARSON (LIVROS UNIVERSITÁRIOS), 2011.
PFLEEGER, Shari Lawrence. Engenharia de Software – Teoria e Prática. 2. ed. São Paulo: Pearson (Livros Universitários), 2003.
Lista de Exercícios de Modelo de Maturidade de Software – Lista 4