Buscar

impressao (1)

Prévia do material em texto

1 
 
 
 
 
 
 
 
 
 
 
 
QUALIDADE DE SOFTWARE 
AULA 6 
 
 
 
 
 
 
 
 
 
 
 
Prof.a Maristela Regina Weinfurter Teixeira 
 
 
2 
 
CONVERSA INICIAL 
Olá, seja bem-vindo. Assista ao sexto vídeo da professora Maristela 
Regina Weinfurter Teixeira, que irá apresentar e contextualizar esta disciplina, 
bem como os assuntos que serão estudados nesta aula. 
CONTEXTUALIZANDO 
Ao percorrermos os caminhos da gestão e garantia da qualidade no 
desenvolvimento de software, percebemos que há uma concentração bastante 
grande na área de testes, sejam eles inspeções, revisões, validações ou 
verificações. Vimos que há divergências de opiniões, pois quando olhamos 
profundamente para a área de qualidade total, percebemos que não 
conseguimos escapar dos inúmeros documentos, auditorias, controles e 
estatísticas, porém, encontramos um manifesto em prol de metodologias ágeis 
para garantir menos papel e mais produtividade. Parece-nos antagônico então 
pensarmos em qualidade versus agilidade! Observando essas variadas formas 
de se pensar produtividade e qualidade em processos de desenvolvimento de 
software, vamos focar em melhoria contínua, tentando agregar conceitos mais 
conservadores (documentais e grande número de recursos humanos e 
financeiros), bem como para equipes mais ágeis (com poucos recursos e 
focadas num bom custo com um bom prazo de entrega)! 
Assim iniciamos falando sobre o que seria melhoria contínua. E esse 
termo não surge na área de informática, assim como o termo qualidade não é 
proveniente desta. A melhoria contínua tem origem na Terra do Sol Nascente 
(Japão), e o termo original para isso é KAIZEN. Kaizen agrega um significado de 
“melhoria contínua nos âmbitos do trabalho, família, pessoal e social.” (ADAMI, 
2016). O grande propósito do Kaizen consiste no aprimoramento diário e 
constante de nossas atividades (profissionais ou pessoais) para aumento da 
produtividade, poupando tempo, recursos, esforços, bem como humanizando as 
relações. 
Para a administração, a expressão refere-se a uma filosofia de vida e não 
simplesmente a um conjunto de ferramentas. Para Costa Junior (2012), Kaizen 
 
3 
 
é “um processo de aprimoramento contínuo, que consiste na busca de melhorias 
pela inovação dos processos produtivos, dos métodos, dos produtos, das regras 
e dos procedimentos.” Ele procura eliminar problemas por meio da identificação 
de ideias de melhoria, com a participação de todos na resolução dos mesmos. 
Não teremos apenas indicadores de performance, 
mas mediremos a taxa de melhoramentos, aplicando ações de 
melhoria e implementações em um determinado período de tempo 
(COSTA JUNIOR, 2012). 
Ao aplicarmos a ideia do Kaizen, desejamos alguns dos seguintes 
resultados (COSTA JUNIOR, 2012): 
 Melhorias nos processos produtivos; 
 Adaptação ou adequação dos postos de trabalho, das 
máquinas e dos equipamentos; 
 Adequação dos métodos de trabalho; 
 Redução de desperdícios em processos; 
 Capacitação e envolvimento dos colaboradores; 
 Aumento de produtividade. 
 
É interessante notarmos que o Kaizen possui alguns princípios básicos: 
 
1. Abandono de ideias fixas e rejeição do estado atual das coisas; 
2. Não explicar o que não se pode fazer, mas refletir sobre como fazer; 
3. Acatar e utilizar de imediato boas ideias para alcançarmos as melhorias; 
4. Não conseguiremos a perfeição, mas 60% já é um ótimo resultado; 
5. Correção dos erros de imediato e no local; 
6. Dificuldades devem ser encaradas como desafios; 
7. Procurar causas reais para solução perfeita; 
8. Experimentar e validar; e 
9. Melhorias são infinitas. 
 
Nosso esforço nessa aula será buscar e mostrar ideias e alternativas para 
conseguirmos exercitar a filosofia do Kaizen, demonstrando que é possível 
 
4 
 
aplicarmos engenharia de software e qualidade de software, mesmo que com o 
mínimo de documentação, observando que nosso alvo será sempre superar as 
expectativas de nossos usuários! 
 
Pesquise 
Percebemos que melhoria contínua tem origem no Japão. Várias 
ferramentas, técnicas, filosofias que foram incorporadas à Teoria Geral da 
Administração possuem origem em estudos e experimentos japoneses. Busque 
dentro da Engenharia de Software, ou mais precisamente dentro da área de 
qualidade de software visualizar outras técnicas, ferramentas ou métodos que 
possam ter origem nessas filosofias de produtividade. Vamos refletir e analisar 
o quanto podemos melhorar em nossa produtividade e em serviços e processos 
com mais qualidade. 
 
 
TEMA 1: CMMI 
Dentro das estratégias de melhoria contínua, a ideia da CMMI é 
interessante, pois transforma todo o processo de desenvolvimento de software 
em um ambiente controlado e com alta excelência nas definições e execuções 
dos processos. 
Originalmente, CMM (Capability Maturity Model) foi desenvolvida pelo 
Instituto de Engenharia de Software na década de 1990 como uma estrutura da 
SPI (Melhoria do Processo de Software). Evoluiu então para CMMI como um 
metamodelo de processo abrangente e qualificado para colaborar com a 
maturidade do processo de desenvolvimento de software. Esse metamodelo 
representa o processo de duas maneiras diferentes: modelo contínuo e 
encenado. Descreve um processo em duas dimensões (Figura 1). 
 
 
 
5 
 
Figura 1: Dimensões do metamodelo CMMI 
 
Fonte: Pressman, 2011. 
 
Ele possui uma série de níveis, que são devidamente avaliados por 
profissionais especializados pelo Instituto de Engenharia de Software 
(CMM07 apud PRESSMAN, 2011): 
Nível 0: Incompleto – a área de processo (por exemplo, 
gerenciamento de requisitos) não funciona ou não atinge todas as 
metas e objetivos definidos pela CMMI para a capacidade nível 1 para 
a área de processo. 
Nível 1: Executado – todas as metas específicas da área de processo 
(definida pela CMMI foram satisfeitas. Estão sendo executadas as 
tarefas necessárias par produzir os artefatos definidos. 
Nível 2: Controlada – todos os critérios do nível de capacidade 1 
foram satisfeitos. Além disso, todo o trabalho associado com a área de 
processo está de acordo com uma política definida em termos de 
organização; todas as pessoas que estão fazendo o trabalho têm 
acesso a recursos adequados para executar o trabalho; os 
interessados são envolvidos ativamente na área de processo conforme 
necessário; todas as tarefas e produtos são monitorados, controlados 
e revisados; e são avaliados quanto à conformidade com a descrição 
de processo. (CMM07). 
 
6 
 
Nível 3: Definido – todos os critérios do nível de capacidade 2 foram 
satisfeitos. Além disso, o processo é adaptado com base no conjunto 
de processos padronizados da organização de acordo com as regras 
de adaptação da organização, e dos produtos acabados, medidas e 
outras informações de melhoria de processo para agregar valores ao 
processo organizacional (CMM07). 
Nível 4: Controlado quantitativamente – todos os critérios do nível 
de capacidade 3 foram satisfeitos. Além disso, a área de processo é 
controlada e melhorada usando medição e avalição quantitativa. São 
estabelecidos objetivos quantitativos para qualidade e desempenho de 
processo e utilizados como critérios no controle do processo. (CMM07). 
Nível 5: Otimizado – todos os critérios do nível de capacidade 4 foram 
satisfeitos. Além disso, a área de processo é adaptada e otimizada 
usando meios quantitativos (estatísticos) para atender à mudança de 
necessidades do cliente e melhorar continuamente a eficiência da área 
de processo em consideração. 
A CMMI define cada área de processoem termos de metas específicas e 
as práticas específicas para que as metas sejam atingidas. Práticas específicas 
são refinamentos de uma meta, que são transformadas em uma série de 
atividades relacionadas ao processo. (PRESSMAN, 2011). 
A Figura 2 ilustra as áreas de processo, necessárias para cada nível de 
maturidade da CMMI. 
 
 
 
 
 
 
 
 
7 
 
Figura 2: Áreas de Processo da CMMI 
 
 
Com a implantação da CMMI em uma empresa que desenvolva software, 
certamente atingiremos muitos dos níveis desejados em termos de qualidade 
dos processos e dos produtos finais. E isso não sairá barato. Envolverá muito 
recurso humano e de capital, porém, dependendo do tamanha da empresa, o 
retorno disso virá a médio e longo prazo, com a conquista de maiores e melhores 
clientes que prezam pela excelência na prestação de serviços e produção de 
software. 
Leitura obrigatória 
SOMMERVILLE, 2011 
 
 
 
8 
 
TEMA 2: KANBAN 
O método Kanban, aplicado ao desenvolvimento de software, percorre a 
ideia de não sobrecarregar a equipe de criação do software. Contém princípios 
básicos que consideram que a equipe deve iniciar uma nova tarefa quando é 
capaz de realizá-la. Deve aceitar mudanças incrementais e evolutivas 
estimuladas pelo método Kanban, respeitando os atuais processos, papéis 
e responsabilidades. Mas o que é Kanban e no que ele poderá nos auxiliar na 
garantia da qualidade de processo e de software? 
“Kanban é uma palavra japonesa que significa ‘cartão ou cartaz’, que pode ser 
utilizada como cartão ou carta Kanban e tem a finalidade de representar um 
sinal.” (COSTA JUNIOR, 2012). 
Ainda segundo Costa Junior (2012): 
Kanban é uma ferramenta de informação que auxilia a fabricação 
correta de produtos, nas quantidades corretas e no tempo correto, em 
todos os estágios da produção. Por isso, constitui-se em um sistema 
físico de controle da movimentação de materiais ou de contêiner, que 
se faz como o uso de cartões. 
Uma das grandes vantagens da utilização de Kanban fica por conta de 
suas características de fácil gerenciamento das ordens de produção, fácil 
compreensão por toda a organização e baixo custo de implementação. Além 
claro, da rapidez nas tomadas de decisões e autonomia nas decisões pelo 
sequenciamento das ordens de produção. 
Como cita Costa Junior (2012), basicamente a ferramenta é composta por 
1. Fila de espera (sequenciador da produção); 
2. Quadro Kanban (gerenciamento das ordens); 
3. Padronização dos contêineres (cartões); 
Parece simples? Sim, e é bastante simples, por isso a ideia da junção de 
Kanban a processos de desenvolvimento de software ágeis. 
 
9 
 
O Kanban, na área de TI, torna-se digital, mas o conceito de quadro e 
cartões continuam os mesmos. Algumas empresas preferem até adotar a forma 
física, pois a visualização em painéis, tabuleiros, lousas e paredes cria uma 
sensação de movimento e evolução do processo. Um dos pontos importantes do 
Kanban aplicado para garantia da qualidade encontra-se na busca pela 
maturidade da produção. Isso é fundamental para a equipe que busca aprender 
a construir código de alta qualidade e equilíbrio no trabalho em andamento para 
cumprimento de metas e prazos. Aqui a qualidade está atrelada à velocidade no 
nível de produção, no desempenho da equipe e na 
eliminação de retrabalhos. A figura 3 nos exemplifica um modelo de sinalizador 
visual Kanba. 
Figura 3: Sinalizador visual Kanban 
 
Fonte: Mariotti, 2016. 
 
O Kanban auxilia no rastreio e demonstração visual do progresso das 
atividades em andamento e na redução rápida do lead-time. Lead-time consiste 
no tempo decorrido entre a entrada da solicitação pelo cliente até o momento da 
 
10 
 
disponibilização para o mesmo do software. Para quem atua de acordo com a 
metodologia Scrum, um dos desafios enfrentados é o atraso na entrega 
conforme o Sprint. A entrega em atraso representa riscos e afeta o desempenho 
da produção, bem como o resultado de valor entregue para o cliente. Ele espera 
que todos atuem em conjunto em cada atividade, não iniciando outra até que 
cada atividade seja encerrada. 
Então o Kanban vem agregar em muito um excelente requisito para 
aplicarmos garantia de qualidade em nossos processos de desenvolvimento de 
software para os quais não temos nem tempo, recursos humanos e financeiros 
para adoção de metodologias mais elaboradas. 
 
Leitura obrigatória 
COSTA JUNIOR, 2012 
MARIOTTI, 2016 
 
Saiba mais 
 http://www.sabesim.com.br/Kanban-
landing/?gclid=CKapyaH0gc0CFVIFkQodxGoP8w 
 
 
TEMA 3: DESENVOLVIMENTO BASEADO EM TESTE 
 Uma nova tendência é o desenvolvimento com base em teste 
(test-driven development – TDD). Nesse tipo de desenvolvimento os requisitos 
para um componente de software servem de base para a criação de uma série 
de casos de teste que exercitam a interface e tentam encontrar erros nas 
estruturas de dados e funcionalidade fornecida pelo componente. Ela não é 
exatamente uma nova tecnologia, mas uma tendência que enfatiza o projeto de 
casos de testes antes que o próprio código-fonte exista! (PRESSMAN, 2011). 
Como o TDD funciona? Vamos observar a Figura 4. 
 
11 
 
 
 
 
Figura 4: Fluxo de funcionamento do TDD 
 
Fonte: Pressman, 2011. 
O processo segue um fluxo procedural (figura 4), para o qual criamos cada 
caso de teste, escrevemos um segmento de código, executamos os testes e os 
refazemos (corrigimos) até que estejam de acordo com cada caso de teste. Logo, 
nosso sistema será escrito em pequenos 
incrementos (subfunções) e nenhum código é escrito sem um caso de teste bem 
definido. Os testes comandam o projeto detalhado de componentes e códigos-
fontes resultantes. 
Aqui fica mais uma tendência para os desenvolvedores de metodologias 
ágeis, num caso bem aderente ao método XP (Extreme Programming). Entramos 
novamente então com a prática de garantia de qualidade, porém de forma mais 
simplificada, enxuta e que apoia o processo de desenvolvimento. Em 
consonância com método ágeis, teremos um feedback rápido sobre novas 
 
12 
 
funcionalidades, um código mais limpo, segurança no Refactoring, segurança na 
correção de bugs, mais produtividade, aplicação flexível. Refactoring ou 
refatoração é o momento que analisamos nosso código para nosso teste passar. 
Retiramos duplicidades, renomeamos variáveis, extraímos métodos, classes, 
interfaces e utilizamos algum padrão conhecido. Nosso código ficará mais 
funcional após a refatoração. (GAMA, 2016). 
 
Leitura obrigatória 
SOMMERVILLE, 2011 
Saiba mais 
http://agiledata.org/essays/tdd.html 
 
TEMA 4: QUALIDADE DE SOFTWARE E O BRASIL 
O Brasil iniciou uma proposta na década de 1996 para alcance da 
excelência do software brasileiro, criando a SOFTEX (Associação para 
Promoção da Excelência do Software Brasileiro). Dentre as iniciativas da 
associação, encontravam-se fomento e promoção da indústria brasileira de 
software e serviços de TI, capacitando e promovendo a criatividade, 
competência e fonte de talentos. Abaixo do Ministério da Ciência, Tecnologia e 
Inovação (MCTI), tornou-se um programa que beneficia mais de 2 mil empresas 
em todo o território nacional por meio de uma rede de 20 agentes regionais 
(SOFTEX, 2016). 
Dentro do Programa SOFTEX temos o Projeto denominado MPS.BR, 
criado em 2003. Nada mais é que um projeto que visa impulsionar a melhoria da 
capacidade de desenvolvimento de software e serviços para empresas 
brasileiras. (SOFTEX, 2016). 
 
13 
 
Uma das iniciativas desse projeto resultou no desenvolvimento do Modelo 
de Referência para Melhoriado Processo de Software Brasileiro 
(MPS-SW), levando em consideração normas e modelos internacionalmente 
reconhecidos, além de boas práticas da engenharia de software e necessidades 
de negócio da indústria de software brasileira. (SOFTEX, 2016). Veja Figura 5 a 
seguir. 
Com o MPS-SW foi possível estabelecer um caminho economicamente 
viável para que organizações, incluindo as pequenas e médias 
empresas, alcancem os benefícios da melhoria de processos e da 
utilização de boas práticas da engenharia de software em um intervalo 
de tempo razoável. Ele trouxe para a indústria nacional ganhos 
comprovados de competitividade, por isso é considerado um marco 
que representa a evolução da qualidade do software desenvolvido no 
país. (SOFTEX, 2016) 
Figura 5: Componentes do Modelo MPS 
 
“A iniciativa conta com o financiamento do Banco Interamericano de 
Desenvolvimento (BID), a Financiadora de Estudos e Projetos (FINEP), o 
 
14 
 
Ministério da Ciência, Tecnologia e Inovação (MCTI) e o Serviço Brasileiro de 
Apoio às Micro e Pequenas Empresas (SEBRAE).” (SOFTEX, 2016). 
As bases do MPS.BR são encontradas em: 
1. ISO/IEC 12207:2008 
2. ISO/IEC 15504 
3. ISO/IEC 20000 
4. CMMI-DEV 
5. CMMI-SVC 
Da mesma forma que a CMMI, o MPS.BR possui níveis de avaliação para 
classificar os processos de desenvolvimento de software de empresas 
brasileiras. Em geral, o CMMI é altamente dispendioso para implantação. Uma 
excelente proposta do Programa SOFTEX foi a criação de uma forma de 
certificação nacional, a qual pode ser implantada em colaboração com várias 
empresas por meio de uma das regionais do Programa Softex. 
‘Você pode pensar: mas eu vou implantar o MPS.BR em colaboração com 
meus concorrentes? Não é essa a visão que você deve ter. Você deve pensar 
que se você, como empresa de desenvolvimento de software, deseja seguir 
métodos, padrões e métricas que lhe garantam maior confiabilidade em seus 
processos e produtos, é a forma mais acessível e rápida. 
Leitura obrigatória 
SOFTEX, 2016 
 
TEMA 5: GRANDES DESAFIOS 
Uma grande tendência para a área de computação é inegável, o software 
se tornará cada vez mais complexo. Se observarmos o que estudamos até aqui 
sobre testes de software, utilizamos apenas software convencional, orientado a 
objetos e para Web. Mas quando olhamos ao nosso redor, o que vemos? 
 
15 
 
Software embarcado (automóveis, eletrodomésticos, etc.), computadores 
descartáveis, interação com um ambiente (conjunto de periféricos, 
computadores e outros aparelhos), e por aí a fora. Assim, poderíamos catalogar 
um pouco sobre as nossas novas características a serem abordadas para a 
garantia da qualidade do processo de desenvolvimento de software 
(PRESSMAN, 2011): 
 
1. Multifuncionalidade: um conjunto cada vez maior de funções num único 
dispositivo. Exemplo: celular que serve para comunicação, fotos, 
calendário, mídias digitais, entre tantas outras utilidades. 
 
2. Temporização: dispositivos digitais reagindo a estímulos 
externos. Sensores que fazem com que se dependa menos da 
intervenção humana. 
 
3. Novas interações com o ser humano: teclado e mouse são periféricos 
que deixaremos de ver em breve. Então, modelar outros tipos de interação 
se tornam um desafio cada vez maior. 
 
4. Arquiteturas complexas: várias CPUs, barramentos sofisticados, 
sensores, interface humana mais sofisticada, componentes de segurança. 
Exemplo? Automóveis. 
 
5. Sistemas heterogêneos distribuídos: componentes de tempo real 
embutido e conectado por meio de redes sem fio ou Internet. 
 
6. Criticidade: sistemas que envolvem um nível altíssimo de questões de 
segurança. Exemplo: aviões. 
 
7. Variabilidade de manutenção: o tempo útil de nossos dispositivos 
digitais não se prolonga além de 3 anos. Mas automóveis, aviões entre 
outros ainda terão um tempo maior de vida. 
 
16 
 
No que isso interfere na garantia da qualidade de processos de software? 
Certamente teremos no futuro uma disciplina de Qualidade de Software I e II 
para cobrirmos todas as necessidades de variação de acoplamento entre 
software, hardware e comunicação. 
 
Leitura obrigatória 
SOMMERVILLE, 2011 
CAMPOS, 2016 
 
TROCANDO IDEIAS 
Refletir sobre a introdução da garantia de qualidade, utilizando metas, 
métricas, estatísticas e padrões em projetos de desenvolvimento de software. 
Quais seriam os custos para introduzirmos tantas avaliações, correções e 
padronizações? Precisaríamos de profissionais habilitados para tais tarefas, ou 
bastaria utilizarmos o próprio pessoal do desenvolvimento? 
 
SÍNTESE 
Estudamos até aqui sobre elementos importantes para garantia da 
qualidade. Tanto o gerenciamento quanto a garantia da qualidade querem 
assegurar que o software tenha poucos defeitos e esteja em conformidade com 
padrões de manutebilidade, confiabilidade e portabilidade. Os padrões são muito 
importantes para a garantia de qualidade, pois, por meio de suas melhores 
práticas, oferecem uma base para construção de software de boa qualidade. O 
processo de documentação, que é um elemento bastante importante dentro da 
área de qualidade, pode ser baseado num conjunto de procedimentos da 
garantia de qualidade sugeridas pela ISO 9001. Optar por revisões e inspeções 
garantirão melhoria no processo e no produto. As revisões dos entregáveis são 
 
17 
 
técnicas usadas para avaliação da qualidade, enquanto que inspeção de 
programas ou revisão em pares buscam possíveis erros e omissões. Quando 
falamos em medição de software, usamos coleta de dados quantitativos capazes 
de subsidiarem métricas de software para garantir a qualidade tanto do produto 
quanto do processo. 
 
REFERÊNCIA 
ADAMI, A. Kaizen. Disponível em: 
<http://www.infoescola.com/sociedade/Kaizen/>. Acesso em: maio de 2016. 
COSTA JUNIOR, E. L. Gestão em processos produtivos. Curitiba: 
Intersaberes, 2012. 
GAMA, A. Test Drive Development: TDD simples e prático. Disponível em: 
<http://www.devmedia.com.br/test-driven-development-tdd-simples-e-
pratico/18533>. Acesso em: 2016 em maio de 2016. 
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. 
ed. Porto Alegre: AMGH, 2011. 
LÉLIS, E. C. Gestão da qualidade. São Paulo: Pearson Prentice Hall, 2012. 
MARIOTTI, F.S. Kanban: o ágil adaptativo: introduzindo Kanban na equipe 
ágil. Disponível em: 
<http://www.garcia.pro.br/EngenhariadeSW/artigosMA/A6%20-%2045-6-
%20Kanbam.pdf>. Acesso em: maio de 2016. 
SHIGUNOV NETO, A. Introdução à gestão da qualidade e produtividade: 
conceitos, história e ferramentas. Curitiba: InterSaberes, 2016. 
SOFTEX. Disponível em: <http://www.softex.br/mpsbr/>. Acesso em: maio de 
2016. 
 
18 
 
GUIA GERAL DO MPS.BR. Disponível em: <http://www.softex.br/wp-
content/uploads/2013/07/MPS.BR_Guia_Geral_Software_2012-c-ISBN-1.pdf>. 
Acesso em: maio de 2016. 
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson 
Prentice Hall, 2011. 
XIV Simpósio Brasileiro de Qualidade de Software. Anais. 17-21 de agosto de 
2015. Manaus. Disponível em: 
<https://drive.google.com/file/d/0B4ZBCAydIkutSUFuVVhCdXVnbDA/view>. 
Acesso em: maio de 2016.

Continue navegando