Qualidade de Processo de Desenvolvimento de Software DAS 5316 Integração de Sistemas Corporativos DAS 5316 Integração de Sistemas Corporativos Prof. Ricardo J. Rabelo
Conteúdo Introdução & Problemática O que é qualidade Por que fazer qualidade Processos de Software Melhoria de Processo Modelo de referência Comentários Finais
Introdução Após... 1) a especificação de um software / solução de automação, 2) a seleção da empresa externa ou grupo de pessoas da empresa que a implementará, e 3) a implementação propriamente dita feita, testada e documentada,... em teoria o problema está resolvido, certo?
Introdução Não!!! Por que?!?!
Problema Como saber se a solução atende realmente à especificação? Como ter um grau mínimo de certeza de que o software, uma vez posto em execução no ambiente de produção, não vai ter bug e, assim, ocasionar enormes problemas à fábrica? Como saber se ele foi testado corretamente? Como saber se ele foi documentado corretamente? Como saber se, uma vez pago, um pedido de uma próxima modificação / manutenção não vai ser cobrado desproporcionalmente?
Problema Ainda hoje, na grande maioria dos casos, os clientes dessas soluções só vão perceber a falta de qualidade geral do software depois dele implementado, entregue e pago! Quanto custa esta falta de qualidade?! Como o engenheiro de automação justifica esses problemas diante dos usuais altos investimentos e recursos gerais colocados nessa solução de software?!
Situação Atual Frequentemente os projetos não terminam com sucesso: ~ 30% dos projetos são cancelados ~ 50% dos projetos custam quase o dobro do planejado ~ 85% dos projetos não terminam no prazo Muitos projetos só trazem ~70% das funcionalidades originalmente planejadas (Standish Group. Chaos Report, 2010)
Cenas de uma empresa de software ou do setor de TI
Consequência Sistemas de software são entregues mesmo sabendo-se que têm defeitos: Pressão por menores custos, entrega dentro do prazo ou com menor atraso, baixo preparo ou rigor técnico da equipe.
Consequência Portanto, como se precaver disso?!?!
Solução tradicional Analistas e engenheiros super experientes conseguem antever um pouco isso e exigir certos procedimentos das empresas de software ou da equipe de TI. Além desses profissionais serem escassos no mercado, quem disse ou garante que esses procedimentos são os mais adequados e aceitos claramente pelas empresas de software e de auditoria?!
Solução tradicional Afinal, então como se resolve efetivamente isso?!?!
Solução Adequada Atualmente, com base em sólidas bases conceituais e práticas, através de... Modelos de Melhoria de Processo de Software.
Solução Adequada Selo de Qualidade da empresa de software (do engenheiro, do setor de TI da empresa onde atua, ou da contratada); Critério de seleção / decisão da empresa de software.
Solução Adequada Palavra-chave: Qualidade de Software
Mas, o que é qualidade de software?
Mas, o que é qualidade de software? É uma área de conhecimento da engenharia de software que objetiva garantir a qualidade do software através da definição e normatização de processos do seu desenvolvimento. Apesar dos modelos aplicados na garantia da qualidade de software atuarem principalmente no processo de desenvolvimento, o principal objetivo é garantir um produto final que satisfaça às expectativas do cliente, dentro daquilo que foi acordado inicialmente.
Mas, o que é qualidade de software? Atualmente, a visão (definição) de qualidade (de um produto) de software é associada à qualidade do processo pelo qual ele é construído e mantido (aquisição, desenvolvimento e manutenção). Portanto, há diversas perspectivas de análise.
Mas, o que é qualidade de software? ISO/IEC 9126 e NBR 13596 Estas normas listam um conjunto de 6 características que devem ser verificadas em um software para que ele seja considerado um "software de qualidade.
Mas, o que é qualidade de software? Característica Subcaracterística Significado Funcionalidade (satisfaz as necessidades?) Confiabilidade (é imune a falhas?) Adequação Acurácia Interoperabilidade Conformidade Propõe-se a fazer o que é apropriado? Faz o que foi proposto de forma correta? Interage com os sistemas especificados? Está de acordo com as normas ou padrões? Segurança de acesso Evita acesso não autorizado aos dados? Maturidade Tolerância a falhas Recuperabilidade Com que frequência apresenta falhas? Ocorrendo falhas, como ele reage? É capaz de recuperar dados em caso de falha?
Mas, o que é qualidade de software? Característica Subcaracterística Significado Usabilidade (é fácil de usar?) Eficiência (é rápido e enxuto?) Manutenibilidade (é fácil de modificar?) Intelegibilidade Apreensibilidade Operacionalidade Tempo Recursos Analisabilidade É fácil entender o conceito e a aplicação? É fácil aprender a usar? É fácil de operar e controlar? Qual é o tempo de resposta, a velocidade de execução? Quanto recurso usa? Durante quanto tempo? É fácil de encontrar uma falha, quando ocorre? Modificabilidade Estabilidade Testabilidade É fácil de modificar e adaptar? Há grande risco quando se faz alterações? É fácil testar quando se faz alterações?
Mas, o que é qualidade de software? Característica Subcaracterística Significado Portabilidade (é fácil de usar em outro ambiente?) Adaptabilidade Capacidade para ser instalado Conformidade Capacidade para substituir É fácil adaptar a outros ambientes? É fácil instalar em outros ambientes? Está de acordo com padrões de portabilidade? É fácil usar para substituir outro?
Por que Fazer Qualidade? Qualidade não é mais uma opção para as empresas / clientes... Passou a ser uma exigência deles!! Cada vez mais se exige das empresas fornecedoras de software que sejam certificadas, ou seja, que ataquem aquelas 6 categorias de características de qualidade seguindo modelos de referência.
Processo de Software É o que as pessoas fazem, utilizando conhecimento, métodos, ferramentas, etc., para adquirir, desenvolver, manter e/ou melhorar software e produtos associados; Exemplos: plano de projeto, documentos de design, código, testes, manuais, etc.
Melhoria de processo Melhoria de Processo de Software (MPS) ou Software Process Improvement (SPI): Ação executada para mudar os processos de uma organização para que eles sigam as necessidades de negócio da organização e alcance suas metas mais efetivamente. Entender processos existentes e introduzir mudanças neles melhora a qualidade do produto (software), reduz custos e diminui a duração dos projetos.
Melhoria de processo: Realidade Maiores problemas nas organizações de software são gerenciais e não técnicos; Sem uma disciplina de gerenciamento, o processo de engenharia de software / qualidade é muito prejudicado; Boas práticas existem, mas são pouco disseminadas; A qualidade de uma solução é altamente influenciada pela qualidade do processo em si utilizado no desenvolvimento do software e na sua manutenção.
Metodologia de Melhoria de Processo
Metodologia de Melhoria de Processo Mas como por isso em prática? No que se basear? Utilizam-se Modelos de Referência!
Modelos para melhoria de processo de software Principais: ISO 15504 ISO 12207 ISO 9000 (-1/2/3) series CMMI - Capability Maturity Model Integration MPS.br Melhoria de Processo de Software Brasil
Modelos de Referência Repositórios com as melhores práticas; Referência para o mapeamento de processos; Referência para avaliação de processos; Definem O QUE deve ser feito; Independentes da tecnologia a ser utilizada; Independentes de contexto de aplicação. Dado a essas duas independências, os modelos não definem o COMO; portanto, detalhes de implementação, documentação, etc. precisam ser especificados ou adaptados para o caso em questão.
Como funciona (CMMI)
Como funciona Duração da transição: A transição de um nível de maturidade para outro no CMMI leva uma média de aproximadamente 2 anos. Nível 4 5 15 meses Nível 3 4 25 meses Nível 2 3 21 meses Nível 1 2 22 meses
Como funciona Período de certificação completa: 8 10 anos!! E auditorias (pagas) a cada 2 : 3 anos, que podem: Rebaixar o nível de maturidade de uma empresa; Manter o nível ou; Fazê-la ascender a um outro nível.
Como funciona No mundo o CMMI possui 3.446 empresas certificadas, 103 no Brasil; Nível de maturidade Número de empresas 1 1 2 50 3 42 4 1 5 9 O MPS.br possui 173 empresas certificadas; Nível de maturidade Número de empresas A 5 B 0 C 2 D 1 Ano-Base: 2009 E 5 F 49 G 111
Processos do MPS.br 1. Análise de Causas de Problemas e Resolução 2. Gerência de Projetos 3. Gerência de Riscos 4. Desenvolvimento para Reutilização 5. Análise de Decisão e Resolução 6. Gerência de Reutilização 7. Verificação 8. Validação 9. Projeto e Construção do Produto 10. Integração do Produto 11. Desenvolvimento de Requisitos 12. Gerência de Projetos 13. Gerência de Reutilização 14. Gerência de Recursos 15. Definição do Processo Organizacional 16. Avaliação e Melhoria do Processo Organizacional 17. Medição 18. Garantia da Qualidade 19. Gerência de Configuração 20. Aquisição 21. Gerência de Requisitos 22. Gerência de Projetos
Níveis do MPS.br
Processos da ISO 15504
Níveis da ISO15504
Capabilidade vs. Maturidade Incialmente os modelos apenas listavam os processos relacionados com a qualidade, e a isso chamavam de Modelos de Capabilidade (Capability Model), ou seja, quais processos uma empresa deveria ter para se credenciar a ser considerada como uma empresa que fazia um software de qualidade.
Capabilidade vs. Maturidade Com o tempo, observou-se que nenhuma empresa conseguia implantar todos os processos de um modelo de capabilidade de uma vez só, e que isso por si só era um processo de evolução. Daí que surgiu a noção de Modelo de Maturidade (Maturity Model), também chamado de Modelo de Capabilidade de Maturidade, que classificava os processos em níveis de evolução / melhoria, dando uma noção de maturidade da empresa em termos de capacidade dela de suportar certos níveis de qualidade de software.
Modelos para melhoria de processo de software Os modelos de referência são muito parecidos entre si, embora tenham algumas diferenças. Como escolher então um modelo de referência?
Modelos para melhoria de Critérios Básicos: processo de software Viabilidade técnico-organizacional para a adoção de um modelo / Impacto na empresa; Lista de processos e níveis de maturidade do modelo, e as prioridades dos processos de melhoria de qualidade de software da empresa; Fama / reconhecimento do modelo pelos clientes focados e o adotado pelos concorrentes; Complexidade do guia de implementação / Tempo de Implantação; Idioma do modelo / documentação; Procedimentos do guia de avaliação ( auditoria ); Nível de internacionalização pretendido, o modelo adotado pela matriz / demais empresas, nicho de mercado visualizado; Custo de implantação e de avaliação.
Custos Os custos da adoção de um Modelo se dividem em: Custos de Implantação do Modelo: custos para a introdução do modelo (seus processos) na empresa; Custos de Avaliação: custos efetuados após a implantação, para se auditar o cumprimento do modelo. Em ambas fases é exigido que as ações todas sejam conduzidas por profissionais certificados (há cursos ministrados pelas entidades de certificação que representam os modelos no País). Dependendo do porte da empresa, um funcionário (certificado!) dela costuma estar também envolvido no processo.
Custos de Implantação Uma implantação usualmente leva 2 anos, para cada nível de Maturidade. Feita por profissional (normalmente um grupo de pessoas) certificado, da ou externo à empresa (consultor). Consultores pagos por hora. No Brasil, entre 100 e 150 reais a hora, em média.
Custos de Implantação Teoricamente o preço de implantação independe do tamanho da empresa, mas o preço final de implantação acaba sendo na prática maior numa grande empresa, pois o projeto como um todo é maior (maior número de pessoas envolvidas, mais treinamento, sistemas maiores e mais complexos, etc.). Além disso, grandes empresas de software costumam ter funcionários certificados, o que diminui o custo com consultores. Como custo de referência, pode-se dizer que considerando os vários aspectos, na média, uma certificação (cada nível) custa em torno de 100 mil reais ao longo de ~2 anos.
Custos de Implantação Há linhas de financiamento do governo ou mesmo subsídios para PMEs de software para adoção do MPS.br. Na prática também se observam pacotes de consultoria, ou seja, envolvendo um grupo de PMEs de software, que implantam um modelo simultaneamente. Exemplo: 35 mil 50 mil reais pela Implantação (para tentar uma avaliação em 18:24 meses, e com uma consultoria de 4h por semana) 9 mil 15 reais pela Avaliação.
Custos de Avaliação Uma avaliação usualmente leva 2 dias. Feita por profissional certificado, externo à empresa (consultor). MPS.br = ~3 mil reais CMMI ou ISO = ~6 mil dólares Empresa precisa enviar à entidade certificadora / consultor uma série de documentos sobre as atividades realizadas / processos implementados, etc., bem antes da visita, para provar que ela está em condições de ser avaliada.
A Questão da Modelagem do Processo de negócio
Modelagem do processo de negócio é um dos subprocessos requeridos (i.e. obrigatórios) no processo de Gerência de Projetos
Objetivo da Modelagem de Processo de Negócio Expressar como todas atividades referentes ao desenvolvimento de software são feitas; Entender o negócio como um conjunto de processos bem definidos; Entender a estrutura e a dinâmica da empresa de software; Garantir que clientes, usuários e desenvolvedores tenham um entendimento comum sobre os processos da empresa;
Objetivo da Modelagem de Processo de Negócio Não há um padrão para modelagem de processos.
Modelagem de Processo de negócio Exemplo 1 Exemplo 2
Modelagem de Processo de Negócio Técnicas: Fluxograma UML BPMN IDEF0... A técnica para modelagem é escolhida de acordo com as características do negócio. O importante é conseguir representar o conhecimento.
Comentários Finais A mudança cultural é o fator principal da melhoria de processo Casos reais mostram que a falta de comprometimento das pessoas não permitem que a melhoria de processo traga resultados Convencer as pessoas da importância da mudança E não simplesmente mandar fazer
Comentários Finais Burocracia + custo financeiro + mudanças... Existe um investimento inicial grande, tanto de tempo quanto de dinheiro Mudança cultural nos gestores e programadores Principais Benefícios: Domínio do processo de negócio Documentação (especificação de requisitos) Estimativas mais realistas de tempo e custos Controle/gerência das ações do projeto Equipe mais treinada / preparada Acesso a novos mercados ou a licitações
Vale a pena! Comentários Finais
Comentários Finais Modelos de Referência concebidos para o modelo tradicional de Aquisição, mas nada ainda para o de Serviços de Software. A certificação é muito custosa, e leva muito tempo. Empresas certificadas acabam por de certa forma levar o custo adicional da certificação aos clientes.
Referências Bibliográficas CMMI Product Team. CMMI for Development (CMMI-DEV), Version 1.2. Technical Report CMU/SEI-2006-TR-008, Carnegie Mellon University/ Software Engineering Institute, Pittsburgh, August 2006. ISO/IEC FDIS 15504-5:2005(E), 2005. Information Technology - Process Assessment - Part 5: An exemplar Process Assessment Model. Ministério da Ciência e Tecnologia. Secretaria de Política de Informática. Qualidade e Produtividade no Setor de Software Brasileiro 2001. Brasília, 2002. ROCHA, A. R. C.; MALDONADO, J. C.; WEBER, K. C. Qualidade de Software: Teoria e Prática. 1. ed. São Paulo: Prentice Hall, 2001 SOFTEX, MPS.BR Melhoria de Processo do Software Brasileiro, Guia Geral, Versão 1.2, 2007. Qualidade de Software, José Barreto Júnior, http://www2.unemat.br/rhycardo/download/qualidade_em_software.pdf
F I M
Introdução Em 2010, as empresas Brasileiras de tecnologia movimentaram no Brasil US$ 14 bilhões; 11ª posição entre os maiores mercados de Software no mundo; Participação de 1,8% no mercado global. (Associação Brasileira das Empresas de Software (Abes))