Profa. Cátia dos Reis Machado
catia@ifc-camboriu.edu.br
Quando falamos de administração científica, não podemos ignorar a contribuição de F. W. Taylor e Henry Ford. A principal mudança trazida por eles ao conceito de administração foi a criação de
padrões dentro das linhas de montagem, dando origem a um método de produção.
Fonte: Engenharia de Software Magazine
Evolução da Qualidade na
indústria automotiva
Tarefas começaram a ser divididas, facilitando o
controle de qualidade. Nesse sentido, todas as peças produzidas passaram por uma verificação de qualidade antes de sair da área de produção. Ainda na década de 20, com o desenvolvimento de estudos de especialistas militares e o trabalho de Walter Shewart (1939) do Bell Laboratories, surgiu
a base do controle estatístico da qualidade.
Evolução da Qualidade na
indústria automotiva
Agora, não mais toda a linha de produção precisaria ser testada, mas apenas uma
amostragem passou a ser utilizada no controle de qualidade dos produtos. Assim, os produtos
eram testados em pequenos lotes que eram o
identificador de um conjunto total de produtos.
Desse modo, houve um ganho de tempo na linha de produção e aumento da qualidade do produto apenas utilizando critérios de certeza estatística
que aperfeiçoaram a verificação e,
consequentemente, foram eliminados custos desnecessários.
Evolução da Qualidade na
indústria automotiva
Entre as décadas de 40 e 50, o Japão se colocou em destaque no cenário da qualidade como
ciência devido ao trabalho de William Edwards Deming (1982) que reforça o conceito de
controle de qualidade desviando o foco da qualidade do produto para a qualidade do
processo como fator chave para o sucesso da implementação de um sistema de qualidade.
Esse modelo de qualidade de processo só foi disseminado na década de 1970.
Evolução da Qualidade na
indústria automotiva
Outro que se destacou neste campo foi Genichi Taguchi (1990) para projetos experimentais.
Algumas outras metodologias contemporâneas como 5S e os Diagramas de Causa e Efeito de Ishikawa, conhecido como Diagrama de Espinha de Peixe também colaboraram com a evolução da qualidade no Japão.
Evolução da Qualidade na
indústria automotiva
Na década de 60, Feigenbaum (1991) consolida o conceito de controle da qualidade total que leva à qualidade um sentido não mais focando somente em produção, mas sim em elementos como Marketing, Finanças, Recursos Humanos, Pesquisa e Desenvolvimento. A qualidade total não implica em 100% do produto correto ou zero defeito, mas sim de que todas as pessoas
envolvidas são responsáveis pelo produto final.
Evolução da Qualidade na
indústria automotiva
Na década de 80 se popularizou as normas ISO (International Organization for Standardization – www.iso.org). As montadoras de automóveis se destacaram nessa época e as normas
contribuíram na definição de padrões de
processos de garantia da qualidade.
Evolução da Qualidade na
indústria automotiva
A qualidade na indústria de software não seguiu uma evolução tão diversa assim da indústria
automotiva. O rumo que a Qualidade de Software tomou na história se iniciou a partir da reunião da
OTAN em 1968 onde o termo “Engenharia de
Software” foi utilizado pela primeira vez por F. L. Bauer.
Evolução da Qualidade na
indústria automotiva
Nessa reunião foi utilizado também o termo
“Crise do Software” para definir a situação em que a indústria do software atravessava naquele momento.
E a crise foi atribuída à complexidade de
desenvolver sistemas cada vez maiores, bem como à falta de gerenciamento no processo de desenvolvimento de software.”
Evolução da Qualidade na
indústria automotiva
Qualidade de Software a partir
da década de 70
A Década de 70: Medição do
Código Fonte
Caracterizada por
Métricas para código fonte propostas por Halstead (ex: número de operadores distintos, número de operandos distintos, etc.)
Métricas de Complexidade Ciclomática de McCabe Medida do número de caminhos linearmente independentes
num módulo
Influenciada por:
Aceitação crescente da programação estruturada
A Década de 80: Medição no
início do ciclo de vida
Estimativas de medição: esforço e custo
Medidas na etapa de projeto
A Década de 90: Um perspectiva
mais ampla
Surgimento de relatórios sobre programas de métricas aplicados em empresas
Benchmarking
Impacto do modelo CMM
Surgimento de ferramentas para medição
Surgimento de uma teoria de medição como um
framework unificado
Surgimento de padrões internacionais de
medição de software (ex: Análise de pontos de função)
Tendências: procura por métricas
mais específicas
Medidas que:
capturem a complexidade cognitiva
capturem a complexidade estrutural
capturem a complexidade funcional
sejam independentes de linguagem
possam ser extraídas nas etapas iniciais do ciclo de vida
Engenharia de Software
O principal objetivo da Engenharia de Software (ES) é ajudar a produzir software de qualidade
Software de qualidade
Software entregue ao cliente com quantidade
mínima de defeitos e que atenda as expectativas do cliente.
“Qualidade é tudo aquilo que melhora o produto no ponto de vista do cliente.”
Empresas que desenvolvem software de qualidade são mais competitivas.
Cliente satisfeito: volta empresa
Indica a empresa em sua rede de relacionamento
Empresas que utilizam software de alta
qualidade podem, em geral, oferecer um melhor serviço a um preço mais competitivo.
Conceito
Qualidade é estar em conformidade com os requisitos dos clientes;
Qualidade é antecipar e satisfazer os desejos dos clientes;
Qualidade é escrever tudo o que se deve fazer e fazer tudo o que foi escrito.
1º) capturar com eficácia os requisitos do cliente Dificuldade de capturar requisitos
Dificuldade de entender corretamente o problema
Dificuldade de o usuário passar os requisitos
2°) Transformar os requisitos corretamente em um
produto que esteja refletindo aquilo que o cliente pediu Nessas transformações nós humanos podemos inserir defeitos ao
Conceitos de Qualidade
“A totalidade das características de uma entidade
que lhe confere a capacidade de satisfazer as necessidades explícitas e implícitas”.
(NBR ISO 8402)
“Conformidade a requisitos funcionais e de
desempenho explicitamente declarados, a padrões de desenvolvimento claramente
documentados e a características implícitas que são esperadas de todo software profissional
desenvolvido”.
O conceito é simples, entretanto atingir a qualidade não é tão trivial.
Eficiência / Eficácia
A eficiência envolve a forma com que uma
atividade é feita, a eficácia se refere ao resultado da mesma.
“Fazer a coisa certa de forma certa é a melhor
definição de trabalho eficiente e eficaz”. Paulo Sandroni (1996)
Fatores de qualidade de software
A noção de qualidade de software pode serdescrita por um grupo de fatores, requisitos ou atributos, tais como: confiabilidade, eficiência,
facilidade de uso, modularidade, legibilidade, etc.
Podemos classificar estes fatores em dois tipos principais: externos e interno;
Fatores de qualidade de software
Fatores externos são concebidos tanto pelaspessoas que desenvolvem software quanto pelos usuários. Por exemplo, confiabilidade, eficiência e facilidade de uso são fatores externos;
Fatores internos são percebidos apenas pelas
pessoas que desenvolvem software. Por exemplo, modularidade e legibilidade são fatores internos;
Se os fatores internos forem observados, os fatores externos serão consequentemente observados. De fato, os fatores internos são um meio para alcançar os fatores externos.
Fatores externos de qualidade
Facilidade de uso: a facilidade de aprender como usar o software;
Eficiência: o bom uso dos recursos computacionais;
Portabilidade: a facilidade de transferir software entre ambientes operacionais.
Fatores externos da qualidade
Correção: habilidade do software executar suastarefas exatamente como definida pelos requisitos e especificação;
Robustez: habilidade de um software funcionar mesmo em condições anormais;
Integridade: habilidade do sistema de proteger seus vários componentes contra acessos ou modificações indevidas.
Padrões de qualidade de
software
Provêem um framework conceitual para a implementação do processo de garantia de qualidade.
Considerando que esses padrões englobam as melhores práticas, a garantia da qualidade
envolve assegurar que padrões apropriados foram selecionados e usado.
Métricas de qualidade de
software
Várias métricas foram desenvolvidas para medir os atributos ou fatores de qualidade;
Independente da métrica usada, sempre se busca os mesmos objetivos
Melhorar o entendimento da qualidade do produto;
Atestar a efetividade do processo;
Melhorar a qualidade do trabalho realizado a nível de projeto;
Formar uma base para as estimativas;
Auxiliar na justificativa de aquisição de novas ferramentas ou de treinamentos adicionais;
Avaliar o retorno de investimento;
Propriedades desejáveis de uma
métrica
Facilmente calculada, entendida e testada
Passível de estudos estatísticos
Expressa em alguma unidade
Obtida o mais cedo possível no ciclo de vida do software
Passível de automação
Repetível e independente do observador
Medição
A medição é o processo pelo qual números ou
símbolos são atribuídos aos atributos de entidades no mundo real, descrevendo-os de acordo com regras claramente definidas. (FENTON, 94)
Exemplo:
Utilizar medidas para analisar a produtividade, o esforço gasto numa tarefa, a confiabilidade do sistema desenvolvido, etc.
Categorização de Métricas
Métricas diretas (fundamentais ou básicas) Medida realizada em termos de atributos
observados (usualmente determinada pela contagem)
Ex.: custo, esforço, no. linhas de código, capacidade de memória, no. páginas, no. diagramas, etc.
Métricas indiretas (derivadas)
Medidas obtidas a partir de outras métricas
Ex.: complexidade, eficiência, confiabilidade, facilidade de manutenção
Categorização de Métricas
Métricas orientadas a tamanho São medidas diretas do tamanho dos artefatos de software associados ao processo por meio do qual o software é desenvolvido.
Ex.: esforço, custo, no. KLOC, no. páginas de documentação, no. erros
Métricas orientadas por função
Consiste em um método para medição de software do ponto de vista do usuário, determinando de
forma consistente o tamanho e a complexidade de um software.
Categorização de Métricas
Métricas de produtividade Concentram-se na saída do processo de engenharia de software.
Ex.: no. de casos de uso/iteração.
Métricas de qualidade
Oferecem uma indicação de quanto o software se adeqüa às exigências implícitas e explícitas do cliente.
Ex.: erros/fase
Métricas técnicas
Concentram-se nas características do software e não no processo por meio do qual o software foi desenvolvido.
Possíveis problemas com
métricas
Ex: Comparar a produtividade de engenheiros em termos de linha de código
Está sendo utilizado a mesma unidade de medida? O que é uma linha de código válida?
O contexto considerado é o mesmo?
Todos os engenheiros são familiarizados com a linguagem de programação?
O que se quer realmente é o tamanho do código? E a qualidade do código?
Como o resultado será interpretado? Produtividade média de um engenheiro?
O que se quer com o resultado?
Por que medir?
“Você não pode controlar o que não pode medir”Tom DeMarco Medição ajuda, por exemplo, a saber:
Qual será a duração de um projeto?
Quanto custará o desenvolvimento de uma nova versão de um produto de software?
Que percentual do produto já foi concluído?
Quantos erros foram detectados e corrigidos antes da entrega do produto?
Que percentual do esforço do projeto foi gasto em re-trabalho?
Medição ajuda, por exemplo, a saber:
Utilizando o nosso processo de software, o nível da qualidade dos nossos produtos está estável?
Existe algum problema na execução do projeto e o que está causando este problema?
A mudança da plataforma de desenvolvimento diminui o esforço gasto no teste?
Por que medir?
“Você não pode controlar o que não pode medir” Fornecendo informações para responder estas questões, a medição pode oferecer dados
quantitativos e qualitativos para que,
sistematicamente, os projetos sejam gerenciados e
os processo e produtos de software sejam controlados.
Somente a medição fornece a base para a criação de modelos organizacionais e estimativas de
esforço e custo que podem ser empregados no
Desafios enfrentados pelas
organizações
O que medir?
Como coletar os dados de forma eficiente e válida?
Como analisar os dados e como utilizar os resultados da medição?
Padrões de qualidade de
software
São baseados no conhecimento sobre as
melhores e mais apropriadas práticas para a empresa.
Ajudam a empresa a evitar a repetição de erros cometidos no passado.
Medição de software
Existem vários tipos de referência para medição: Referências que descrevem o que deve ser feito –
norma internacional ISO / IEC 15939 sobre o processo de medição de software;
Referências que descrevem como isto pode ser feito –
GQM – Goal / Question / Metric e o PSM Pratical
Software & Systems Measurement;
Referências que visam a implementação e avaliação da capacidade de medição – Quão bom - modelos e normas de melhoria de processo de software – modelo CMMI (Capability Maturity Model Integration), norma ISO / IEC 15504 e o modelo Brasileiro de melhoria de processo MPS.BR
Qualidade é ?
Estar em conformidade com os requisitos dos clientes
Antecipar e satisfazer os desejos dos clientes
Escrever tudo o que se deve fazer e fazer tudo o que foi escrito
Medições de software para serem efetivas
precisam
estar alinhadas às necessidades de
negócio da organização
, isto é, aos seus
objetivos estratégicos, e estarem direcionadas
às necessidades de informação de gerentes de
projetos e engenheiros de software. Essas
necessidades devem ser explicitadas e devem
orientar a definição do que medir e de como
analisar e comunicar o resultado das medidas .
Melhoria de processo de software
Processos devem ser tecnicamente corretos e devemser capazes de atender às necessidades do negócio.
Um objetivo de melhoria de processo é um conjunto de características desejadas, definidas para orientar o esforço de melhoria de processos de modo específico e mensurável (SEI, 2010).
Esses objetivos devem agregar valor ao negócio da organização e melhorar a qualidade dos produtos desenvolvidos (BARRETO, 2011).
Melhoria de processo de software
Relacionam-se a : Galgar níveis mais altos de maturidade;
Realizar mudanças visando a uma maior
adequação às necessidades da organização ou melhorias no desempenho dos processos.
O que é necessário para realizar melhorias nos processo de software????
Objetivos para medição
Coletar dados para medir o desempenho do processo;
Analisar o desempenho do processo;
Armazenar e utilizar os dados para interpretar os resultados de observações e análises, predizer custos e desempenho futuros, fornecer baselines e benchmarks, identificar tendências e avaliar a estabilidade e capacidade do processo.
Normas internacionais
ISO/IEC 12207 ISO/IEC 15504Modelos de maturidade
CMMI-DEV MR-MPSMétodos para apoio a medição
GQM (Goal – Question – Metric)Processo de medição nas
organizações
Um programa de medição para ser efetivo em uma organização deve estar apoiado em um processo capaz de garantir a execução
disciplinada do conjunto de atividades envolvidas.
Atividade
Identifique algumas orientações sobre o processo de medição (Capítulo 2)
Livro:
Ana Regina Cavalcanti da Rocha; Gleison dos Santos Souza; Monalessa Perini Barcellos. Medição de
Software e Controle Estatístico de Processos, 2012, 232 p.
Disponível em:
http://www.mct.gov.br/index.php/content/view/340171 /Medicao_de_Software_e_Controle_Estatistico_de_P rocesso.html
Referências
BARRETO, A. Definição e Gerência de Objetivos de
Software Alinhados ao Planejamento Estratégico. Tese de Doutorado, universidade Federal do Rio de Janeiro. 2011.
BASILI. V.; CALDIERA, G.; ROMBACH, H. Goal Question Metric Paradigm, In: Encyclopedia of Software
Engineering, V.2, pp: 527 – 532.
FENTON, N. Software Measurement: A Necessary Scientific Basis. IEEE Transactions on Software Engineering, vol. 20, No. 3, March 1994.
Florac, W. A.; Carleton, A. D. Measuring the Software Process, Addison-Weslwy. 1999.
Referências
ISO/IEC. Software Engineering – Software Measurement Process, The International Organization for
Standardization and the International Electrotechnical Commission, 2002.
PRESSMAN, R. S. Engenharia de software: uma
abordagem profissional. 7ª Edição. Porto Alegre: AMGH, 2011. 780 p.
SEI. Capability maturity Model Integration (CMMI) for Development, version 1.3, Carnegie Mellon university,
Software Engineering Institute, Technical Report CMU/SEI. 2010.