O documento discute a importância da qualidade de software e as técnicas para gerenciamento da qualidade, incluindo CMM, CMMI, MPS.BR e testes. A qualidade é essencial para a competitividade e requer processos bem definidos ao longo de todo o ciclo de desenvolvimento.
2. Gerenciamento da Qualidade de Software
A qualidade de um produto hoje tem importância fundamental para
disputar a concorrência com as empresas do ramo.
A qualidade hoje é um pré-requisito para as empresas que querem estar
sempre no mercado de forma ativa.
Embora a ideia de qualidade possa parecer um tanto intuitiva e de
pouca complexidade, quando estudada com mais atenção, podemos ver
que é algo que exige além do que imaginado.
3. Gerenciamento da Qualidade de Software
Um software sem qualidade pode ocasionar erros catastróficos e de
grande custo de manutenção para as empresas de softwares.
A qualidade de hoje é a grande motivadora em todas as áreas, todos
querem receber e fornecer produtos com qualidade.
Um software de qualidade tem impacto sobre milhares de pessoas, pois
ele poderá disponibilizar serviços essenciais, irá gerar competitividade
entre empresas e etc.
4. Gerenciamento da Qualidade de Software
A qualidade de um software está ligada aos requisitos solicitados pelo
cliente e em conformidade as regras de desenvolvimento.
Existem inúmeros conceitos que nos auxiliam a manter a qualidade do
software.
Visando melhorar o entendimento sobre o assunto, veremos o conceito
de qualidade de software, tratando a importância dos requisitos.
5. Gerenciamento da Qualidade de Software
Princípios da Qualidade de Software
Um dos principais desafios encontrados pelos profissionais é definir o
que é qualidade na atualidade.
Muitas são as definições de qualidade de software propostas hoje em
dia.
Qualidade de software pode ser definida como: “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 todos software
profissionalmente desenvolvido.”(PRESMANN, 2007).
6. Gerenciamento da Qualidade de Software
Em todas as fases do processo de desenvolvimento de um software
acontecem defeitos e imprevistos, eles são causados geralmente por
erros lógicos, de interpretação, desconhecimento de técnicas, falta de
atenção, de motivação, falta de requisitos detalhados e outros.
Sabendo disso podemos afirmar que a garantia de qualidade não é algo
que deve ser pensado no fim do projeto, mas sim durante todo o
processo de desenvolvimento do projeto ou produto.
Essa atividade irá ajudar a remover os defeitos existentes em cada fase.
O fato de ser detectado no começo do desenvolvimento traz benefícios
para o projeto, pois quanto mais tarde uma falha for corrigida mais cara
será sua correção.
7. Gerenciamento da Qualidade de Software
A garantia da qualidade no desenvolvimento de um software tem uma
série de prevenções que podem ser tomadas para que os problemas
que possam por ventura surgir num projeto, sejam mínimos, ou não
existam.
E existem técnicas/práticas que podem nos auxiliar na missão de manter
a qualidade do software.
Entre elas estão a utilização das práticas, CMM, CMMI, MPS.BR norma
ISO /IEC 9126 e também os testes.
8. Gerenciamento da Qualidade de Software
Atingindo a Qualidade de Software
CMM
O CMM (Capability Maturity Model) é uma série de práticas que estão
organizadas em cinco níveis crescentes de maturidade. Os níveis são:
• Inicial: Nesse nível a organização ainda está instável, os projetos
custam mais do que previsto e por mais que o projeto seja concluído
ele poderá extrapolar os prazos e custos que foram definidos;
• Repetitivo: Começa a se existir políticas e procedimentos para se
desenvolver o software, o desenvolvimento do projeto é
acompanhado e os planos são revisados;
9. Gerenciamento da Qualidade de Software
• Definido: Os processos que serão utilizados serão padrão em toda a
organização;
• Gerenciado: Nesse nível se define as métricas quantitativas para seu
projeto, essas medidas são avaliadas e analisadas com frequência;
• Otimização: Neste nível a organização atingiu todas as metas
especificas na área de processos dos níveis anteriores. É necessário
manter o foco, para continuar a diminuir o retrabalho e custos
desnecessários.
10. Gerenciamento da Qualidade de Software
CMMI
O CMMI (Capability Maturity Model Integration – Modelo Integrado de
Capacitação e Maturidade) é uma coleção das melhores práticas
necessárias, para apoiar o desenvolvimento, serviços aquisições e
manutenção de um projeto.
O CMMI foi desenvolvido em 1992 pela SEI (Software Engineering
Institute), um centro de pesquisas e desenvolvimento que é patrocinado
pelo departamento de defesa dos EUA.
Possui o foco voltado para a capacidade de maturidade de processos de
software, a versão atual possui três modelos:
11. Gerenciamento da Qualidade de Software
O CMMI é caracterizado por níveis de capacidade:
Nível 0 Incompleto: Nesse nível o processo não é realizado, ou ele é
implementado, porém um ou mais objetivos da área de processo não é
satisfatório;
Nível 1 Realizado: É necessário que todos os objetivos específicos sejam
executados e alcançados;
Nível 2 Gerenciado: Define-se objetivos e requisitos, o processo é
monitorado, revisado e controlado;
12. Gerenciamento da Qualidade de Software
Nível 3 Definido: É definido um processo que será utilizado e ele deve
ser melhorado constantemente. Esse processo que foi definido deve ser
descrito e executado de maneira mais rigorosa;
Nível 4 Gerenciado quantitativamente: O processo é definido e
controlado quantitativamente, por exemplo, aplicando-se técnicas
estatísticas. Esse nível foi removido no CMMI 1.3;
Nível 5 Em otimização: Foco na melhoria contínua do desempenho, é
realizado melhorias tecnológicas. Também removido no CMMI 1.3.
13. Gerenciamento da Qualidade de Software
O CMMI proporciona maior confiabilidade no que se refere prazos e
custos que são acordados no início do desenvolvimento do sistema.
A qualidade dos softwares criados baseados no CMMI é ocasionada por
processos bem definidos e controlados e a busca contínua nos
processos cotidianos.
O CMMI foi criado para integrar os modelos CMM apresentados nesse
artigo, a fim de suprir as limitações desses modelos, com a criação de
um método comum, permitindo a representação contínua com áreas de
processos independentes dos níveis de maturidade.
14. Gerenciamento da Qualidade de Software
MPS.BR
O modelo Melhoria de Processo de Software Brasileiro (MPS.BR) assim
como o CMMI, é baseado em níveis de maturidades, voltado para
pequenas e médias empresas e adaptado para perfil cultural das
empresas brasileiras tendo como objetivo definir e aprimorar um
modelo de melhoria e avaliação de processo de software de modo
compatível com os padrões internacionais de qualidade de software.
O MPS.BR é coordenado pela Associação para Promoção da Excelência
da Software Brasileiro (SOFTEX) e conta com o apoio do Ministério da
Ciência e Tecnologia (MCT), Financiadora de Estudos e Projetos (FINEP)
e do Banco Interamericano de Desenvolvimento (BID) (SOFTEX, 2009).
15. Gerenciamento da Qualidade de Software
MPS.BR
A escala de níveis pode ser expressa da seguinte forma:
• G – Parcialmente Gerenciado
• F – Gerenciado
• E – Parcialmente Definido
• D – Largamente Definido
• C – Definido
• B – Gerenciado Quantitativamente
• A – Em Otimização
17. Gerenciamento da Qualidade de Software
ISO /IEC 9126
A norma ISO (Organização Internacional para Normalização) 9126 foi
criada para a qualidade de software, que se enquadra no modelo das
normas da família ISO 9000, que é composta por uma série de normas
internacionais que cuidam da manutenção de um sistema de gestão de
qualidade com base nos oito princípios de gestão da qualidade, que são:
Foco no cliente, liderança, envolvimento das pessoas, abordagem por
processos, abordagem sistêmica para a gestão, melhoria contínua,
abordagem factual para a tomada de decisão e relações mutuamente
benéficas com os fornecedores. Contudo, o detalhamento desses
princípios não é o foco desse artigo.
18. Gerenciamento da Qualidade de Software
A norma ISO/IEC 9126 estabelece os seguintes componentes:
O Processo de desenvolvimento afeta a qualidade do software gerado.
Além disso, é influenciado pela natureza do produto;
O Produto, que compreende a qualidade do produto de software, estes
por sua vez divididos em internos e externos;
A qualidade em uso, que compreende na comparação da qualidade do
software em cada contexto específico.
Essa norma propõe atributos de qualidade, e são distribuídos em seis
características e cada características é dividida em sub características,
são elas:
19. Gerenciamento da Qualidade de Software
Funcionalidade – Verifica a capacidade de o software prover as
funcionalidades que foram definidas e requisitadas. As sub
características são: Adequação, onde mede o quanto as funcionalidades
são adequadas às necessidades do usuário. Precisão, é a capacidade de
o software fornecer os resultados precisos de acordo com o que foi
solicitado. Interoperabilidade, como o software interage com outro
sistema. Segurança, a capacidade de o software proteger os dados do
sistema.
Confiabilidade – Verifica se o produto continua no nível de desempenho
das condições que foram estabelecidas. As sub-características são:
Maturidade, onde se evita que as falhas do software sejam decorrentes
de outro software. Tolerância a falhas, o software se mantém
funcionando independente dos defeitos que ocorrem nele ou
externamente. Recuperabilidade, o software se recupera depois de uma
falha e restabelece seus níveis de desempenho.
20. Gerenciamento da Qualidade de Software
Usabilidade – O software é compreendido, o funcionamento aprendido
e é atraente para o usuário. Possui quatro sub-características,
inteligibilidade onde é avaliado se o usuário compreende as
funcionalidades do sistema e avalia se satisfaz as suas necessidades,
apreensibilidade identifica a facilidade de aprendizado do sistema para
os usuários, operacionalidade verifica a maneira que o produto facilita a
operação por parte do usuário, atratividade são as características que
podem atrair um potencial usuário.
Eficiência – Se o tempo de execução e os recursos são compatíveis com
o nível de desempenho do sistema. Comportamento em relação ao
tempo, avalia se o tempo de resposta estão de acordo com as
requisições e Utilização de recursos, identifica tanto os recursos
consumidos quanto a capacidade quem o sistema possui para utilizar os
recursos. São as sub-características.
21. Gerenciamento da Qualidade de Software
Manutenibilidade – A capacidade que o software tem em ser
modificado, melhorado e sua capacidade de inclusão de extensões. As
sub-características: Analisibilidade verifica a facilidade de diagnosticar
os problemas e as suas causas. Modificabilidade, a capacidade do
software em ser alterado. Estabilidade, identifica a capacidade de o
sistema evitar efeitos colaterais devidos as modificações.
Portabilidade – Verifica a capacidade do sistema se transferido de um
ambiente para outro. Adaptabilidade, capacidade para ser instalado,
coexistência e capacidade para substituir são as sub-características.
22. Gerenciamento da Qualidade de Software
Testes de software
Os testes de software têm a finalidade de fornecer informações sobre o
comportamento do seu software.
Mesmo realizando testes é impossível garantir que sua aplicação fique
isenta de erros, porém eles lhe dão uma margem de segurança maior.
As falhas podem surgir por diversos motivos, à especificação do
projeto/atividade pode está incompleta ou errada, deve ser levado em
conta também as limitações que o software pode possuir, o tamanho do
projeto pode ser extenso e muitas pessoas trabalharem no mesmo,
podendo gerar assim inúmeros conflitos no desenvolvimento.
23. Gerenciamento da Qualidade de Software
Dimensões da Qualidade
Garvin (1992) identifica oito dimensões com vistas a conhecer seus
elementos básicos e chegar a um melhor entendimento da qualidade:
• Desempenho,
• Características/Especificações
• Confiabilidade,
• Conformidade,
• Durabilidade,
• Atendimento ao cliente,
• Estética/Imagem,
• Qualidade percebida.
24. Gerenciamento da Qualidade de Software
Desempenho:
Aspecto operacional básico de qualquer produto. São as características
finais do produto e do uso que o cliente deseja.
Características/Especificações:
Característica ou especificação que diferencia um produto de seus
concorrentes. Especificações de engenharia que envolvem o uso de alta
tecnologia. Características complementares que superam as funções
básicas do produto.
Confiabilidade
Grau de isenção de falhas de um produto.
25. Gerenciamento da Qualidade de Software
Conformidade
Reflete a visão mais tradicional da qualidade.
Durabilidade
Medida da vida útil de um produto, analisada tanto por aspectos
técnicos quanto econômicos. Quantidade de tempo de uso que pode ser
obtida de um produto, antes dele se deteriorar fisicamente.
Atendimento ao cliente
Rapidez, cortesia, competência e facilidade de reparo.
26. Gerenciamento da Qualidade de Software
Estética/Imagem
É uma dimensão subjetiva. Relaciona-se com a aparência do produto, o
que se sente com ele, qual seu som, sabor, cheiro, etc. É um julgamento
pessoal e reflexo das preferências individuais.
Qualidade percebida
Resultado da falta de informações completas sobre um produto ou os
atributos de serviço que levam os consumidores a fazer comparação
entre marcas e daí inferir sobre qualidade. Reputação é um dos
principais fatores que contribuem para a qualidade percebida. Grau que
um produto provoca reação inicial positiva ou negativa no mercado a
qual se destina. Consumidores nem sempre conhecem o produto, então
usam bases comparativas indiretas, baseadas na percepção.
27. Gerenciamento da Qualidade de Software
O dilema da Qualidade
Se produzirmos um software de péssima qualidade, perdemos porque
ninguém irá querer comprá-lo. Se, por outro lado, gastamos um tempo
infinito, um esforço extremamente grande e grandes somas de dinheiro
para construir um software absolutamente perfeito, então isso levará
muito tempo para ser finalizado, além do custo de desenvolvimento.
Desta forma, os profissionais tentam encontrar aquele meio termo
mágico onde o produto é suficientemente bom para não ser rejeitado
logo de cara, como, por exemplo, durante uma avaliação, mas também
não é o objeto de tamanho perfeccionismo.
28. Gerenciamento da Qualidade de Software
Afinal o que é Qualidade de Software?
Para definir qualidade de software podemos afirmar que a qualidade de
software é uma área de conhecimento em engenharia de software e seu
objetivo é garantir a qualidade do software através da definição e
normatização de processos de desenvolvimento.
Lindas palavras! Certo?
Mas o que isso significa de verdade?
29. Gerenciamento da Qualidade de Software
O conceito de qualidade é muito subjetivo, pois está relacionado
diretamente com a percepção de cada indivíduo. A minha visão de
qualidade, como desenvolvedor, por exemplo, não é a mesma do
cliente.
Falando de um produto ou serviço podemos dizer que qualidade é
quando estes estão atendendo as exigências dos clientes, tem uma boa
relação custo/benefício, sua utilização é de fácil adequação e tem um
grande valor agregado.
Quando falamos de qualidade de software, temos que analisar dois
aspectos bem diferentes.
30. Gerenciamento da Qualidade de Software
Do ponto de vista do Desenvolvedor qualidade é quando o software
desenvolvido é produzido com a utilização de técnicas adequadas e
boas práticas para o desenvolvimento, atendendo as exigências do
cliente, não importa quais técnicas ou ferramentas são utilizadas.
Já no que diz respeito ao cliente, seu software terá a qualidade
reconhecida se trouxer retorno ao mesmo e em geral tiver um baixo
custo.
31. Gerenciamento da Qualidade de Software
Devido a estas diferentes visões, a qualidade de software mostra a sua
grande importância no processo de desenvolvimento, pois na verdade
sua função é garantir que o software que será entregue ao cliente no
fim do projeto, atenderá a todas as suas expectativas e que mesmo que
sem saber, o cliente receberá um produto desenvolvido com a utilização
de boas práticas e técnicas de desenvolvimento adequadas.
Para garantir a qualidade de um software existem diversas técnicas,
modelos de controle e garantia de qualidade que podem ser adotadas.
32. Cenário atual
Equipamentos de diferentes tecnologias
Equipamentos de diferentes fabricantes
Soluções proprietárias de gerência
Redes heterogêneas
Equipamentos heterogêneos
Soluções isoladas
Redes isoladas
32
34. Ferramentas Monitoramento
• Monitor de Sistema - Desempenho.
• Desempenho Logs e Alertas.
• Visualizado de Eventos.
• Gerenciador de Tarefas.
35. Monitor de Sistema
• Fornece visualização simples de
desempenho do Servidor em gráficos e
relatórios.
• Da saída em tempo real sobre informações
de monitoramento em um navegador.
• Mostra a utilização dos recursos como
processador, memória e espaço em disco
pelos processos.
36. Logs e Alertas Desempenho
• Monitora a pressão e o desempenho do
sistema durante um período de tempo.
• Controla automaticamente os valores
mínimo, máximo, médio e corrente dos
valores importantes do sistema.
• Envia alertas para o log de eventos.
37. Visualizado de Eventos
• Mantém vários logs de eventos separados no
servidor.
• Existem vários tipos de Logs:
Log Sistema
Log Segurança
Log Aplicativo
Log Serviço do AD
Log Serviço de DNS
Log Duplicação de Arquivo
38. Log de Sistema
• Registra o início e parada de serviços
e todos os eventos relacionados ao
sistema.
Exemplo: Mensagem de erro ao ligar o
sistema.
39. Log de Segurança
• Registra todos os eventos que passam
por auditoria, relacionados aos
problemas de segurança.
Exemplo : Usuários acessando
arquivos.
40. Log de Aplicativo
Registra eventos específicos de um aplicativo.
Exemplo : Licenciamento, backups e o sucesso de aplicação de
planos de segurança.
41. Gerenciador de Tarefas
Aplicativos – Mostra se os aplicativos estão ou não respondendo.
Processos - Lista todos os processos que estão em execução no
servidor.
Desempenho – Exibe a utilização do processador e memória.
Rede – Exibe a utilização corrente da rede para conexão do
servidor com a rede.
Usuários – Lista sessões local e remota da área de trabalho
correntes, conectadas com o servidor.