Baixe o app para aproveitar ainda mais
Prévia do material em texto
E-book 3 QUALIDADE DE SOFTWARE Lucia Tavares Neste E-Book: INTRODUÇÃO ����������������������������������������������������������� 3 GESTÃO DA QUALIDADE DE SOFTWARE �������4 Processos ����������������������������������������������������������������������������������4 Medidas de Qualidade ������������������������������������������������������������12 Boas Práticas em Qualidade de Software �����������������������������16 Personal Software Process ����������������������������������������������������26 Team Software Process ���������������������������������������������������������30 Information Technology Infrastructure Library ���������������������32 CONSIDERAÇÕES FINAIS �����������������������������������38 SÍNTESE ��������������������������������������������������������������������39 2 INTRODUÇÃO Neste módulo, vamos estudar a Gestão de Qualidade de Software e as boas práticas aplicadas à Qualidade de Software� Com isso, entenderemos o conceito de Processo de Software, uma vez que é necessário montar os indicadores no período de desenvolvimen- to do software, bem como pelo fato de o software ter um ciclo de vida� Estudaremos, ainda, de que modo diminuir erros visando a diminuir os custos, uma medida que só é possível com a adoção de uma gestão eficiente e de qualidade� Na sequência, passaremos pelos modelos de desenvolvimento e pelas metodologias que facilitam a vida do desenvolvedor� Por fim, discutiremos as melhores práticas para con- duzir esses processos� Vamos iniciar? 3 GESTÃO DA QUALIDADE DE SOFTWARE Processos Antes de iniciarmos esta discussão, precisamos com- preender o que é um processo de software� Um pro- cesso não é só a sequência de ações, mas pode ser ainda uma sequência de tarefas que sofre impacto de algumas variáveis, por exemplo: ● Responsabilidade: Quem executa as tarefas? ● Métrica: Medir o processo e criar indicadores� ● Indicadores: Números que demonstram como o processo está, se atinge o resultado necessário� ● Previsibilidade: Estimativas baseadas em indica- dores criados a partir das métricas� ● Controle: Acompanhamento e correção dos desvios que aparecem nos indicadores� Com base nessas variáveis, entendemos que um processo com qualidade de software deve ser trata- do com a finalidade de atender às expectativas dos clientes� O envolvimento de todos que participam do processo de software é um ponto nevrálgico para o seu sucesso� A existência de mudanças nos processos sempre resulta em resistência, sobretudo a resistência na cultura organizacional da empresa� Então, como tra- 4 balhar com o processo de qualidade de software? Simples de falar, complexo para executar� A execução coordena todos os processos e etapas envolvidos, como o acompanhamento, os indicadores, os riscos, a eliminação dos riscos e a prevenção� Isso depende das fases elaboradoras, revistas e que tenham como resultado um processo de melhoria contínua� Para atingir esse patamar, os processos de qualidade de software precisam de quatro fases: ● Concepção� ● Elaboração� ● Construção� ● Transição� Essas fases acontecem para que o processo tenha, naturalmente, um nível de acerto alto e a diminuição do nível de falhas� Todas essas falhas aparecem nos testes que ocorrem no meio do processo e no final para atingir um resultado de qualidade� Com isso, gera-se uma enorme economia, pois os acertos feitos durante o processo de desenvolvimen- to custam muito menos que acertos no final. Então, deduzimos que a qualidade custa menos do que os problemas� Por que adotar os processos de gestão de qualidade de software? Podemos apresentar diversas razões, mas vamos atacar a que mais incomoda os clientes: o custo� O Standish Group realizou uma pesquisa em 2012 e 5 constatou que mais de 80% dos projetos de softwa- re não são entregues porque excedem o limite de orçamento e prazo, bem como por não atenderem aos requisitos� Assim, uma condução equivocada de projetos de software resulta em 30% de cancela- mentos antes da sua finalização. Tal cenários fez com que os projetos também mu- dassem� Nesse sentido, o Manifesto Ágil trouxe uma nova concepção de como tratar os projetos de de- senvolvimento de software (Figura 1): Figura 1: Manifesto ágil. Fonte : Wiki A qualidade tem, hoje, uma vital importância no to- cante à vantagem competitiva para empresas, mui- to embora alguns líderes custem a enxergar isso� Softwares sem qualidade geram erros comprome- tedores, e o mercado atualmente tem um grande gargalo nas softwarehouses: a manutenção e a 6 http://wiki.supel.ro.gov.br/index.php/Arquivo:Imagem1.jpg descontinuidade de produtos que exigem muitas correções e manutenção de software� O cliente se coloca no centro do desenvolvimento, e o produto somente é aprovado se estiver em con- formidade com o que foi encomendado. A fim de entender melhor essa relação, vamos estudar alguns itens que impactam na qualidade de um software: Investimento e custo com qualidade Pensar em qualidade é pensar em perfeição� Porém, esse pensamento é capcioso, pois a perfeição não existe� Quando pensamos em um bom produto de software, pensamos em um nível de qualidade que atenda aos clientes� Nesse nível, calculamos o cus- to e o investimento que o cliente quer fazer� Assim, tratamos como investimento o que foi empregado e que vai trazer retorno; o custo, por sua vez, tratamos como as falhas, a prevenção e a avaliação� Controle de qualidade O controle é a base de toda a qualidade, revisões, tes- tes e inspeções durante o desenvolvimento garantem que os procedimentos e normas sejam aplicados� Nessa metodologia, são identificados a partir des- ses procedimentos as inconformidades, dentro dos requisitos funcionais ou não funcionais, que foram levantados no projeto, direcionados pelo usuário� Esses procedimentos implicam duas abordagens que são fundamentais para que o controle aconteça de maneira prática: revisões e avaliações� 7 Em revisões, temos a documentação e os processos utilizados, cujo papel é muito importante� Funcionam da seguinte maneira: um grupo operacional e outro do projeto são direcionados para revisar toda a do- cumentação e, com isso, verificar todo o processo, a fim de dar conformidade ao que foi documentado e feito, dentro dos padrões utilizados pela metodologia de desenvolvimento� O que está fora do padrão retorna à origem e é en- viado à hierarquia superior, isto é, os stakeholders e a gerência do projeto, que tomam as providências necessárias e acompanham o processo até que tudo esteja refeito de modo condizente com o padrão preestabelecido� A revisão constitui-se de três tipos básicos: ● Tipo 1: inspeções relativas ao projeto, àqueles erros que não condizem com os requisitos, seja no processo seja no código de desenvolvimento� ● Tipo 2: apanhado geral do projeto, é o que orienta as reuniões com os stakeholders e que dá transpa- rência ao projeto com um todo, ou seja, faz o acom- panhamento dos prazos, planos e custos� ● Tipo 3: refere-se à análise técnica da documenta- ção do produto, no qual se apontam as inconsistên- cias de todo o projeto, dentro da documentação (de código, erros dentro dos documentos produzidos e erros nos códigos), ou seja, trata-se de um pente fino por todas as fases e todos os processos do projeto� 8 As revisões são saudáveis e benéficas ao projeto, pois cada erro corrigido antes do fim do projeto eco- nomiza tempo e dinheiro� Por sua vez, as avaliações automáticas são realizadas segundo o acompanha- mento de indicadores quantitativos no processo de desenvolvimento� No controle de qualidade de software, as revisões têm como foco corrigir e excluir os erros antes da entrega final do produto. Por exemplo, podemos recorrer às inspeções de software com base nos critérios de entrada e saída do sistema� O que é gerência de qualidade de software? Não há como atender ao cliente de forma desorgani- zada� É preciso atender aos padrões de desenvolvi- mento e qualidade,por isso, a ISO criou as normas de qualidade� A área de gestão de qualidade de software integra todos os itens de gestão para conduzir o de- senvolvimento do produto� Geralmente, esses itens seguem os modelos de gestão de projetos do Project Management Body of Knowledge (PMBOK), e pode usar também metodologias ágeis, como o Scrum� A adoção de metodologias em projetos traz vários benefícios, como: ● Garantia no atendimento total a requisitos de de- sempenho e funcionais� ● Garantia de que os processos de desenvolvimento serão realizados conforme os padrões estabelecidos� 9 ● Garantia da diminuição de erros durante o projeto� ● Garantia da diminuição de erros durante as etapas de desenvolvimento� ● Garantia da diminuição e extinção de atrasos na entrega do produto� ● Garantia da prevenção e do controle dos riscos� ● Garantia da manutenção do produto� O gerenciamento na qualidade de software traz be- nefícios como: ● Diminuição e exclusão de defeitos: o controle de qualidade de software, quando aplicado e gerido corretamente, tem o objetivo de diminuir os resul- tados negativos de um produto� Com isso, as fases do projeto de desenvolvimento de software têm seu cronograma cumprido em tempo correto, com se- gurança e sem falhas de grau de criticidade alto, tanto para o negócio do cliente quanto para a so- brevivência do sistema� A falta de gerenciamento e gestão de projetos gera a corrida contra o tempo e retrabalho, que consiste em corrigir os erros para manter o sistema em pé, ou seja, acabando gerando prejuízos� A falta de controle dentro de um projeto coloca todos os esforços de projeto e operacionais para evitar o caos� ● Confiabilidade: testes e diminuição das falhas geram um sentimento de satisfação dos clientes, criando assim um laço de confiança quanto à utiliza- ção das aplicações� Uma vez testado e suas falhas 10 diminuídas, controladas e excluídas, o sistema criado chegou ao seu objetivo� Os testes contribuem com muita confiabilidade no produto, pois quanto mais se testa, mais falhas são encontradas e corrigidas antes de entrar em produção� ● Redução de custos: conforme estudamos anterior- mente, a adoção de qualidade, metodologia, normas, testes e controle diminui o custo do projeto� ● Maior produtividade: enquanto as falhas atrapa- lham a vida de todos envolvidos em um projeto de desenvolvimento de software, a produtividade é a chave do sucesso� Observe, porém, que não exis- te produtividade sem comprometimento de toda a equipe. Um grupo eficiente tem de se envolver e ser gerido de forma que funcione como uma orquestra� A gestão de qualidade de software visa a fazer com que a equipe trabalhe dessa maneira� Seguir as normas e a metodologia escolhida, controlar, evitar defeitos, respeitar as fases, os ciclos de vidas e os processos facilitam a condução do projeto e a geração de um produto de qualidade� ● Satisfação dos clientes: qualidade de software visa a entregar software sem problemas para os clientes� Quando isso ocorre, o cliente passa a confiar tanto no produto quanto na empresa que o produziu� Um cliente insatisfeito não contrata novamente a empre- sa que falhou com ele na primeira chance� Portanto, uma boa gestão gera um bom produto e um cliente satisfeito� Pense nisso! Na Figura 2, temos o mapa mental da ISO 25000, que trata da qualidade do produto de software: 11 Qualidade em uso SQuaRe Efetividade Eficiência • Utilidade • Confiança • Prazer • Conforto Satisfação • Completude do contexto • Flexibilidade Cobertura do contexto • Mitigação do risco econômico • Mitigação dos riscos de saúde e segurança • Mitigação do risco ambiental Ausência de Risco Figura 2: Qualidade do software. Fonte: Elaboração Própria. Medidas de Qualidade Como podemos garantir um produto quando não há possibilidade de medir a qualidade? Como sabemos se o que fizemos foi bem feito? Medir é essencial e medir os processos está direta- mente relacionado ao resultado� Essa máxima serve para qualquer área, sendo assim, na engenharia de software não podia ser diferente� Descobrir problemas ou encontrar falhas é o cerne da busca por melhorias no processo de desenvolvi- mento, não importando precisamente o modelo a ser seguido� Só é possível corrigir falhas se os processos forem medidos. E as métricas podem ser classifi- cadas como de controle ou preditivas (PRESSMAN; MAXIM, 2016)� As métricas de controle são atreladas ao processo de software; por sua vez, as métricas preditivas são atreladas ao produto de software� No entanto, am- 12 bas influenciam na tomada de decisão da gestão e possibilitam a indicação de um produto de qualidade, pois medem a produtividade de pessoas, a eficácia do processo de desenvolvimento, os benefícios do produto, além de gerarem indicadores que vão nos mostrar se o caminho tomado é o certo ou errado� Segundo Humphrey (1999), as decisões tomadas com base em indicadores confiáveis, geram quali- dade e confiabilidade. Basicamente, os indicadores giram em torno de produtividade e qualidade� Esses dois tópicos acabam por gerar os indicadores de melhoria do produto� Podemos dizer que esses in- dicadores de qualidade de softwares determinam: ● A qualidade do produto� ● A produtividade dos desenvolvedores� ● A eficácia da metodologia adotada. Com isso, somos capazes de dividir as métricas de desenvolvimento de software em duas categorias: as medidas diretas e as indiretas� Por exemplo, nas medidas diretas temos o esforço, o custo, a veloci- dade de execução, a memória, o número de erros e a complexidade condicional� Nas medidas indiretas, temos a funcionalidade, a qualidade, a complexidade, a eficácia, a confiabilidade e a manutenibilidade. REFLITA O que não se mede não se gerencia� Essa máxima fez sucesso por conta de Peter Drucker, mas na verdade ela foi proferida por W� 13 Edwards Deming, que realmente faz parte das organizações em todo o mundo� Uma empresa que não trabalha com indicadores não existe, e isso é muito forte. Ter indicadores significa ter um diferencial no mercado, pois a empresa tem que entender os momentos por que passa, como estão suas finanças e como é seu diferencial no mercado� Se não existem métricas, indicadores ou acom- panhamento para isso, a empresa fica para trás. O mesmo acontece com os projetos de desenvol- vimento, que têm um começo, um meio e um fim, além de como fazer tudo isso acontecer� Qualidade estrutural Temos de ter cuidado com a estrutura do programa, pois não basta escrever um código de programa à revelia� É preciso criar uma estrutura lógica, para isso, necessita de modularização, usabilidade e con- tinuidade, que são fundamentais para garantir que um código programado seja útil, fácil de entender e de manutenção acessível — que o torna interessante por ser possível integrar com outros programas ou que possa ser melhorado por outras funcionalidades sem prejudicar suas funções básicas� Nesse aspecto, é fundamental trabalhar com desen- volvedores profissionais e especialistas de negócio, visto que um bom código, escalável e limpo, só se produz quando condiz com as regras do negócio� 14 Para atestar a qualidade dos softwares com qualida- de estrutural, é necessário que o código seja testável, que tenha funções claras e limpas e que cumpram os requisitos do sistema� Um código produzido que não tenha tais condições de teste pode comprometer a qualidade funcional de um software� Qualidade funcional Com seu foco no desenvolvimento, no que diz respei- to à programação, a qualidade funcional visa a esta- belecer a qualidade no código de programa gerado, bem como verificar o quão eficaz ele se torna na apli- cação. Os usuários são os que mais se beneficiam com a qualidade funcional, pois medirão usabilidade, performance e confiabilidade do sistema. Para que um software atinja o objetivo de sua cria- ção, é fundamental que esteja em consonância com o que foi encomendado pelo cliente, emtodas as fases de desenvolvimento do projeto� Além da garantia de cumprimento dos requisitos, é preciso que a performance do software fique de acordo e que o produto seja confiável. Em outras pa- lavras, que o software tenha o mínimo de erros e uma garantia de conserto� Não é necessário citar interface amigável, programação modular e código produzido de forma que tenha continuidade por muito tempo� Qualidade de processo Neste tópico, a metodologia é realmente aplicada, visto que o processo deve ser o mais conciso e equi- 15 librado possível para que o projeto caminhe tran- quilamente� O impacto das falhas no projeto afeta diretamente o prazo de entrega, nesse sentido, são os clientes os mais prejudicados� Os prazos de entrega impactam diretamente na parte financeira do projeto e causam um desapontamento enorme no cliente, porque, além de pagar mais, não receberá no prazo que contratou� A comunicação durante o projeto exerce um papel primordial, pois a sinergia entre a equipe de projeto e o cliente deve ser clara, concisa, sem ruídos e em tempo total� A gestão de qualidade de software tra- balha de maneira bem contundente, pois, de acordo com que acontece, é possível negociar um prazo adequado para cada fase e para cada correção, quan- do houver� A entrega é o ponto crucial para a qualidade de pro- cesso� Não basta entregar, mas a entrega precisa ser firme, ter qualidade e atender à solicitação do cliente� Mudanças podem ocorrer no meio do proje- to, mas é necessário que a gestão de processos de qualidade de software saiba trabalhar com prazos e com processos para que o cliente fique satisfeito e não seja prejudicado no final. Boas Práticas em Qualidade de Software A fim de resumir o processo, podemos dizer que o desenvolvimento de um software funciona assim: 16 estruturar um código, desenvolver, testar, validar, cor- rigir erros e entregar� Melhorar o código, adicionar artefatos, incrementar rotinas e dar vida extra ao software� Seria fácil se não houvesse outros itens e cenários que não contribuem para a implementação e continuidade de um software� Portanto, além de promover um bom desenvolvi- mento, um produto de qualidade precisa trabalhar com boas práticas na condução de um projeto de software� Acesse o Podcast 1 em módulos Desenvolvimento iterativo de software A base de um desenvolvimento iterativo e incremen- tal é recente, visto que surgiu no contexto das meto- dologias ágeis� Diferentemente do Modelo Waterfall (ou modelo em cascata) de gerenciamento de proje- tos, as fases do projeto podem acontecer simultanea- mente� Pensemos em um projeto de desenvolvimento de software para web� Vamos pensar no modelo cascata� Primeiro, inicia- -se o desenvolvimento depois de especificar tudo que você quer nesse software, pois a metodologia preconiza que a sequência das fases de um software são definição de requisitos, detalhamento e especi- ficação, codificação, teste e produção. Agora, vamos pensar no modelo iterativo, cujo ciclo de vida do projeto é diminuído ao menor número 17 possível, porque as fases são fatiadas e conduzidas concomitantemente, ou seja, ao mesmo tempo� Quanto à documentação de software, temos novi- dades no modelo iterativo, pois não há regra de do- cumentação, é estruturada e aperfeiçoada ao longo do projeto� Mas a documentação precisa de três elementos primordiais: ● Contextualização de problema: cada problema deve ser relatado, não importando o tamanho ou o impacto no projeto� ● Contextualização de solução: toda solução dada deve ser detalhada, do mesmo modo que toda mo- dificação no código deve ser explicada. As fases servem para alimentar umas às outras� ● Detalhes técnicos: referem-se aos responsáveis por partes do desenvolvimento, sobre o que foi feito, quando foi feito e de que modo foi feito� Esse docu- mento precisa ser lido por várias áreas, as quais têm de especificar o que fizeram (arquitetura de software, desenvolvimento e programação etc�)� Documentar é parte primordial do processo de desen- volvimento� Por essa razão, elaboramos dicas para que você desenvolva um processo de documentação eficiente: 1. É preciso criar estrutura e suporte para esses documentos: A princípio, é preciso encontrar uma maneira de preparar e guardar os documentos, mes- mo antes de o projeto acontecer� O ideal é encontrar meios automatizados e com graus de hierarquia para 18 fazer esse documento transitar pelos níveis em que vai ser usado� 2. Defina papéis e responsabilidades: Coloque to- dos em seus respectivos lugares, os desenvolvedores vão escrever sobre os frameworks, o arquiteto de softwares vai escrever sobre a arquitetura do projeto e, assim, acontece com todos os outros funcionários alocados no projeto� 3. Escolha a ferramenta correta para documenta- ção: É primordial para economizar tempo� Pastas dentro de pastas sem definição acabam com qual- quer projeto� As Wikis são um excelente recurso para organizar documentação� Os serviços Trello e Jira racionalizam o backlog e criam sprint e fases de fácil entendimento� 4. Guarde as informações com lógica adequada: Quando do uso da nuvem para armazenamento, é fundamental que o controle de acesso seja bem feito e tenha backup de toda a documentação� 5. Use a documentação: É um conselho meio óbvio, mas há muita documentação de sistema que não é bem aproveitada� É um recurso para pesquisas e ajustes de modo acertado, histórico de desenvolvi- mento, artifícios para as reuniões sobre o desenvol- vimento de uma aplicação� 6. Tenha um bom ambiente dentro da equipe: A siner- gia e o bom entrosamento de uma equipe é o que faz do projeto ser bem-sucedido ou não� Uma boa docu- mentação melhora muito os processos, mas isso só 19 vai acontecer se toda a equipe estiver comprometida em manter o processo de documentação em dia� SAIBA MAIS Saiba mais sobre tudo que não podemos fazer no desenvolvimento de um software, assistindo a https://www.youtube.com/watch?v=QPiR8jTMLdI� Por que usar validação de software? Precisamos entender, antes, o que é validação de software� Trata-se do processo que prova que a do- cumentação bate com o que foi entregue em termos de sistemas. Ou seja, é o processo que verifica se o produto entregue cumpre com as especificações dos requisitos, se tem garantia de funcionamento e rastreabilidade das informações� É importante optar pelo processo de validação e ado- tar as boas práticas para evitar danos aos clientes, assim como à imagem da empresa� Podemos citar o caso do seguimento de medicamentos, no qual alguns sistemas são validados com vistas a garantir sua função� Isso pode acontecer em qualquer segui- mento de negócio� Quanto à área de medicamentos, o órgão regulador tem um guia que ajuda a indicar o que um sistema precisa e o que ele precisa validar� O mesmo processo ocorre com bancos ou siste- mas de saúde, os quais têm condições próprias do seguimento de atuação para que o software valide 20 https://www.youtube.com/watch?v=QPiR8jTMLdI informações, como normas para que o uso e a ras- treabilidade sejam requisitos desses sistemas e que funcionem de maneira eficaz. Como fazer a validação de software? A verdade é que não existe um modelo próprio para a validação de software� Cada empresa recorre a um plano de validação de acordo com as suas políticas� Ainda assim, mesmo sem um plano de validação, alguns documentos são citados em algumas normas ISO e podem fazer parte do plano de validação de qualquer empresa: ● User Requirement Specification (URS). ● Functional Requirement Specification (FRS). ● Installation Qualification (IQ). ● Operational Qualification (OQ). ● Performance Qualification (PQ). Para entender a validação dos sistemas, é importante que se entenda o ciclo de vida de um sistema com quatro fases: ● Conceito� ● Projeto� ● Operação� ● Descontinuidade� O ciclo de vida é o esqueleto de um projeto de sof- tware, pois é a estrutura que detalha as atividadesque os processos contêm, as tarefas envolvidas nes- sas atividades, o detalhe das tarefas, o impacto na 21 operação, a implantação e os resultados, é um mapa da vida do sistema da sua criação até a sua opera- cionalização� Trata-se, portanto, de dar corpo à ideia do software depois do levantamento de requisitos� É o modelo que vai definir como trabalhar e entregar ao cliente aquilo que se propôs a fazer, por isso, o processo de software consiste em um grupo de ativi- dades e compõe um sistema computacional� Essas atividades também são compostas de fases como definição de requisitos, análise, projeto, desenvol- vimento, teste e implantação� Cada fase divide-se conforme as atividades, profissionais responsáveis e produtos esperados� Com a evolução da tecnologia e a crescente neces- sidade de softwares pelo mercado, as práticas posi- tivas passaram a ser replicadas e transformaram-se em modelos de ciclo de vida� Tais fases nada mais são do que as estruturas predefinidas em que en- quadramos as fases do processo� Conforme preconiza a ISO/IEC 12207:1998, define- -se o ciclo de vida como a estrutura de todo projeto de software, que engloba tudo desde a criação ao término de uso� Para entendermos melhor o ciclo de vida de um sistema, a Figura 3 ilustra o processo� Note, contudo, que não se deve confundir ciclo de vida com método de desenvolvimento de software� 22 Ciclo de vida do produto Ciclo de vida do projeto Operações e disposição Plano de negócio Produto Ideia Início Execulção Operação Final Atualização Figura 3: Ciclo de vida do projeto. Fonte: Wikimedia Há uma maneira de comportamento nos ciclos de vida: ● Sequencial: as fases têm uma determinada ordem� ● Incremental: as fases são fatiadas� ● Iterativa: é a retroalimentação de fases� ● Evolutiva: o software é melhorado� Temos como modelos os seguintes ciclos de vida: ● Cascata� ● Modelo em V� ● Incremental� ● Evolutivo� ● RAD� ● Prototipagem� ● Espiral� ● Modelo de Ciclo de Vida Associado ao RUP� 23 https://commons.wikimedia.org/wiki/File:Ciclo_de_vida.png Contudo, abordaremos os três mais usados: ● Modelo Cascata: criado em 1966 e normatizado em 1979, é um dos modelos mais tradicionais que temos, pois usa fases sequenciais e só termina quan- do todas as fases terminam� Só é possível passar de fase quando a atual for concluída� É um processo dinâmico porque não tem fases retroativas, o que impacta no tempo do projeto� Como benefício, po- demos citar a facilidade de gestão, porque tem uma ordem, e as fases são feitas uma a uma (Figura 4)� Projeto de sistemas e de software Integração e teste de sistemas Implementação e teste de unidade Análise e definição de requisitos Operação e manutenção Figura 4: Funcionamento do modelo cascata. Fonte: Elaboração própria. ● Modelo Evolutivo: é um modelo aberto a mudanças e inovações, que busca melhorar o produto durante a criação� Seu foco é o cliente, portanto, a interação com o cliente é considerável� Seu ponto negativo é o limite do projeto que pode aumentar quando as mudanças são muitas (Figura 5)� 24 Descrição do esboço Versão inicial Versão final Versões intermediárias Especificação Desenvolvimento Validação Figura 5: Processo do modelo evolutivo. Fonte: Elaboração própria. ● Modelo Incremental: é a evolução da modelo cas- cata� Neste, o projeto é dividido em etapas até o final. Serve bem para casos em que os requisitos não estejam totalmente claros e alinhados� Se há falhas no caminho, o último incremento é descartado� A entrega também é feita por incrementos, muitas vezes disponibiliza antes do prazo as entregas aos clientes (Figura 6)� Definir esboço dos requisitos Projetos arquitetura do sistema Projetos arquitetura do sistema Atribuir requisitos aos incrementos Validar incremento Integrar incremento Validar sistema Sistema final Figura 6: Processo modelo incremental. Fonte: Elaboração própria. 25 Personal Software Process Personal Software Process, mais conhecido como PSP, pode ser definido como aquilo que foi projetado para o desenvolvimento de software individual, para engenheiros de softwares, para criação de projetos individuais (HUMPHREY, 1995)� Por ter sido criado para projetos individuais, seu foco recai sobre os pequenos projetos com qualidade� Assim, tem sido aproveitado em outras áreas além da engenharia de software, em algumas áreas como requisição de software, testes e especificação, ou seja, é um processo mais aberto� Foi projetado para ser aplicado em sistemas peque- nos, mas pode ser usado na construção de módulos de projetos maiores� Funciona como uma alça do CMMI e tem por premissa a revisão contínua de cada fase de desenvolvimento� Enquanto o CMMI visa à melhoria da organização, o PSP volta-se ao desen- volvedor individual (HUMPHREY, 1997)� Com isso, é dedicado a melhorar os prazos e trabalho para o desenvolvimento, melhorar o acompanha- mento e planejamento do cronograma, acabar com o excesso de pressão dos prazos, criar no desenvol- vedor comprometimento com a melhoria contínua e a qualidade, melhorar a capacidade de organização do desenvolvedor de maneira que cause impacto na organização� Em síntese, temos os itens que são foco do PSP: 26 ● Melhorar o planejamento e o acompanhamento de cronogramas� ● Evitar o excesso de compromissos� ● Criar um comprometimento pessoal com a quali- dade e com a melhoria contínua do processo� Por ser uma parte do CMMI, é constituído também de níveis, de qualidades próprias (Tabela 1): Nível Nome Atividades PSP0 Medição pessoal Registro de tempo PSP0�1 Registro de defeitos Padrão de tipos de defeitos Padrão de codificação Medida de tamanho Proposta de melhoramento do processo PSP1 Planejamento pessoal Estimativa de tamanho PSP1�1 Relatório de testes Planejamento de tarefas Cronogramas PSP2 Qualidade pessoal Revisões de código PSP2�1 Revisões de projeto Padrões de projeto PSP3 Processo cíclico pessoal Desenvolvimento cíclico Tabela 1: Fonte: Elaboração própria. ● Medição pessoal: momento em que se mede e registra o tempo utilizado em cada etapa do ciclo do desenvolvimento, mas também são apontadas as falhas encontradas� 27 ● PSP0.1: tem o uso do padrão de codificação, medi- das padronizadas e uma proposta de melhoramento do processo (formulário)� ● Planejamento pessoal: organização é a palavra- -chave� Trata-se de um planejamento por meio do qual será possível estimar o tempo de cada tarefa segundo os indicadores anteriores de tarefas seme- lhantes� Neste tópico, os compromissos ganham forma e prazo para acontecer� ● PSP1.1: se, no planejamento pessoal, a palavra- -chave é organizar, neste módulo a palavra-chave é organizar e distribuir� A distribuição ocorre por meio do planejamento das tarefas, e a distribuição dos prazos nos cronogramas� ● Qualidade pessoal: tópico em que encaramos os erros; é necessário pelo menos entender e saber quantos erros existem em cada fase do ciclo de de- senvolvimento e providenciar as correções� A ideia do PSP é que os erros sejam evitados desde sua origem� Portanto, se há erros, um checklist deve ser feito com a finalidade de ser utilizado nas revisões do projeto e do código de desenvolvimento� ● PSP2.1: entramos a criação de padrão de projeto, metodologia de análise e prevenção de defeitos� ● Processo cíclico pessoal: saímos do desenvolvimen- to dos pequenos projetos e fomos para os projetos maiores, mesmo que em um nível modular e pessoal� Trata-se da última etapa do PSP, na qual dividimos o projeto grande em pequenos projetos que são tratados no PSP2� Todo processo agora é incremental� 28 Entregas a caminho, é hora de treinar o pessoal� O treinamento do PSP é feito em 10 exercícios de desenvolvimento de programas� São pequenos uti- litários que funcionam como exemplos de desen- volvimento e, por isso, ajudam a medir objetos no programa, calcular desvios, prever intervalos etc� Esse processode desenvolvimento nos traz algumas lições: ● Lição 1. A estratégia tem como base definir, men- surar e monitorar seu próprio trabalho de maneira possível e prática, com ferramentas e critérios à disposição� O desenvolvedor vai aprender com as próprias experiências� ● Lição 2� Conhecimento e experiência geraram métodos e práticas para próximos projetos� Logo, ganhará habilidades e empregabilidade� Essas lições são possíveis graças a alguns princípios do PSP: ● Melhoria do trabalho por meio de processo definido e estruturado� ● Ajustes de lições aprendidas por meio de proces- sos individuais, os quais podem se transformar em habilidades e agregar facilidades em outros projetos similares� ● Envolvimento do profissional desde a concepção do software� Os processos evoluem e, juntamente com eles, as habilidades e facilidades profissionais. ● Feedback para promover a melhoria contínua� 29 ● Quanto à produtividade, observou-se que houve uma baixa de produtividade no começo, pois havia tarefas não utilizadas na programação, mas durante a evolução do projeto a produtividade melhorou, em conformidade com o tamanho do desenvolvimento� Team Software Process O intuito da criação dessa estrutura é auxiliar as equi- pes de projetos a organizar e produzir softwares� O Team Software Process (TSP) foi criado para direcio- nar o planejamento e o desenvolvimento de pequenos softwares ou módulos de grandes programas, mas pode também ser adequado a outras tarefas� Seu foco principal é melhorar a qualidade e a pro- dutividade de projeto de acordo com os níveis de maturidade do desenvolvimento, para que os custos e os compromissos sejam cumpridos da melhor forma possível� Em outras palavras, é o marco inicial para que sistemas sejam criados a partir de premissas de qualidade dentro dos prazos� O trabalho em equipe é o centro de tudo, embora não seja uma tarefa fácil criar e gerir uma equipe de ponta, eficiente e produtiva (FERNANDES, 2004). O Software Engineering Institute (SEI) criou o mo- delo, por não existir nenhum direcionado a equipes de desenvolvimento� Nesse sentido, o TSP e o PSP caminham juntos para orientar o trabalho individu- al dos desenvolvedores de software, com métricas 30 do seu trabalho e melhoria de desempenho de suas atividades� Segundo Humphrey (1999), TSP é um framework de trabalho em equipe que enfatiza o processo e o produto, priorizando o planejamento e o gerencia- mento de projetos� Para isso, o TSP usa o modelo espiral para o desenvolvimento e divide o processo em ciclos (SOMMERVILLE, 2018)� Os métodos estão prontos como modelos, basta utilizá-los� Eles podem ser utilizados novamente em outros ciclos, diminuindo o tempo do projeto� De acordo com Humphrey (1999), oito fases com- põem o ciclo de desenvolvimento do TSP: 1. Lançamento 2. Desenvolvimento de estratégia 3. Planejamento 4. Requisitos 5. Projeto 6. Implementação 7. Testes 8. Avaliação Quanto à documentação, existem muitos padrões prontos de documentos para qualquer fase e ciclo de desenvolvimento do projeto, assim como para o projeto em si, como para performance dos desen- volvedores, e essa documentação serve para fun- damentar todo o projeto e tirar as melhores lições� 31 Quanto aos indicadores, há também uma padroniza- ção de scripts de processos e formulários� Inclusive, há padronização e um formulário para o plano de qualidade, ou seja, o TSP veio organizar e facilitar o pequeno projeto do time que vai desenvolvê-lo� Information Technology Infrastructure Library Para compreender, é preciso saber o seu signifi- cado, bem como o fato de que ele nasceu como uma biblioteca e evoluiu para uma metodologia� O Information Technology Infrastructure Library (ITIL) é uma Biblioteca de Infraestrutura de Tecnologia da Informação� Em Tecnologia da Informação, biblioteca nos remete à programação� Porém, no ITIL o sentido é literal, ou seja, trata-se de uma coleção de livros� Esses livros referem-se a um conjunto de normas, maneiras e boas práticas para a otimização da ges- tão de serviços de TI� Assim, é uma estratégia que traz vantagens competitivas, pois sua implantação tem os seguintes resultados: ● Redução de custos ● Autonomia e agilidade nos processos ● Racionalização de processos ● Alinhamento com os negócios da empresa São sete livros que trazem a receita da gestão perfei- ta da TI, com os quais o ITIL se tornou um diferencial de mercado para os profissionais que se especializa- 32 ram nessa metodologia� A detentora da metodologia é a AXELOS, a maior referência em ITIL no mercado e a responsável por sua certificação. Os livros do ITIL se dividem em blocos de melhores práticas segundo o serviço implantado dentro da TI, ou seja, são um conjunto de melhores práticas e podem ser implantados por áreas dentro da TI, por exemplo: ● Service Support (suporte a serviços) ● Service Delivery (entrega de serviços) ● Infrastructure Management (gerenciamento de infraestrutura) ● Planning to implement ITSM (planejamento de im- plementação do gerenciamento) ● Business Perspective (perspectivas de negócio) ● Application Management (gerenciamento de aplicação) ● Security Management (gerenciamento da segurança) Visto que sua adoção leva a profundas mudanças na TI, há mudanças culturais muito grandes no que tange à TI, portanto, a metodologia deixa claro que a alta direção tem de patrocinar o projeto e comprar a ideia� Muitas pessoas saem de suas zonas de conforto, com isso, problemas podem surgir� Se a alta direção não comprar a ideia, a implantação pode não ocorrer ou ainda, se for implantado, corre o risco de fracasso ao longo do tempo� 33 É importante esclarecer que ITIL e Gestão de Projetos não são a mesma coisa� O ITIL traz um novo conceito de trabalho para área de TI; a Gestão de Projetos trata de projetos pontuais, com um começo, meio e fim. E qual é o impacto do ITIL dentro de qualidade de software, se seu foco não é a criação de produtos? A metodologia cria um ambiente propício para o desenvolvimento de sucesso, pois a aplicação das melhores práticas para o fornecimento de serviço organiza a empresa, a gestão e o desenvolvimento fluem com mais facilidade, pois há processos esta- bilizados de gerenciamento� Acesse o Podcast 2 em módulos Cobit O Cobit é um framework criado pela Associação de Auditoria e Controle de Sistemas de Informação (Isaca), que aproxima a Gestão de TI e Governança Corporativa� Note que o conceito de TI aqui já não é mais de suporte, e sim de área estratégica de negócio, tal qual a Governança Corporativa traz os conceitos de transparência, equidade, responsabilidade e prestação de contas, a TI passa a ter Governança de TI, adotando assim os conceitos da Governança Corporativa� Esse conceito representa os processos dentro do trabalho realizado pela TI, enquanto o ITIL foca no gerenciamento dos processos de negócio dentro da TI, unindo a parte operacional com a parte de negó- 34 cios� Toda a metodologia é permeada de controles� Portanto, na TI os controles se interligam aos pro- cessos de TI, isto é, Governança de TI� Os principais componentes do Cobit são: ● Framework TI: direciona o foco da Governança de TI nos processos da TI atrelados aos processos e requisitos de negócio da empresa� ● Descrições de processo: na empresa, funcionam como referência de descrição dos processos; inse- rem-se nesse contexto o planejamento, a construção, a execução e o monitoramento dos processos de TI� ● Objetivos de controle: é praticamente um mapa para os controles de gerenciamento de TI� ● Modelos de maturidade: são modelos para a me- lhoria de processo� ● Diretrizes de gerenciamento: são diretrizes para a atribuição de responsabilidades, como fazer e das melhorias contínuas� Resumindo, o Cobit funciona como um integrador que trabalha para suprir as deficiências relativas aos requisitos de controle, questões técnicas e ricos de negócio, promovendouma maior interação entre áreas� Como é baseado em Governança, as suas políticas e boas práticas são tanto para as empresas em geral quanto para os departamentos de TI� Tem a vantagem da integração e harmonização com outros padrões e guias, com ISO, ITIL, CMMI� A sua estrutura de processos e o foco de um outro patamar aos negócios dão uma visão global da TI; são fatores que contribuem nas tomadas de decisão, 35 portanto, há vantagens de usá-lo como um modelo de governança de TI� Tal processo inclui: ● Aceitação e concordância com órgãos reguladores e terceiros ● Alinhamento com o negócio ● Entrosamento e transparência entre as áreas interessadas ● Mudança da visão da TI dentro da empresa e diretoria ● Uma divisão transparente de tarefas e atribuições de acordo com as responsabilidades de cada função ● Cumprimento dos requisitos do Committe of Sponsoring Organisations of the Treadway Commission’s Internal Control – Integrated Framework para controle do ambiente de TI� O Cobit tem vários componentes, quatro domínios e 34 processos de TI referentes a essa metodologia� Com isso, os domínios podem ser definidos como as áreas direcionadas para planejar, construir, executar e monitorar, provendo um panorama total da área de TI. Podemos defini-los como: ● Planejar e organizar� Dá o objetivo para a entrega de soluções, (AI) e entrega de serviços (DS) recebem as soluções e as adaptam de acordo com os usuários finais. Trabalha-se com a definição do planejamento estratégico da TI, ou seja, com a arquitetura, investi- mentos, riscos, projetos e qualidade� ● Aquisição e implementação� Gera soluções e as direciona ao público correto, entrega serviços e é 36 responsável por automatizar ou reaproveitar proces- sos dentro da organização, manutenção de sistema e infraestrutura, mapeamento de desenvolvimento de procedimentos para sistemas, instalação e gerência de mudanças� ● Entregar e suportar. Definição dos níveis de ser- viços, hierarquia de usuários finais, treinamento e repasse de informações a usuários finais. Garantia de continuidade, desempenho e segurança de sis- temas, alocação de custos problemas e incidentes� ● Monitoramento/monitorar� É responsável pelo mo- nitoramento de todos os controles da TI em conso- nância com a organização� O Cobit fornece à Tecnologia da Informação o lugar estratégico na empresa pois tem como base os pen- samentos e as técnicas de governança corporativa, isto é, usa princípios, práticas, ferramentas analíticas e modelos aceitos globalmente para ajudar a aumen- tar a confiança e o valor dos sistemas de informação. 37 CONSIDERAÇÕES FINAIS A Qualidade de Software depende de algumas va- riáveis para se fazer valer� Entender o processo, o ciclo de vida e as metodologias faz parte da gestão da qualidade de software, que busca entregar o me- lhor produto, com custo acordado e dentro do prazo determinado� Para isso, no entanto, é necessário o uso de boas práticas, não só no ambiente de desenvolvimento, mas também em toda a empresa para que o projeto flua e obtenha o sucesso almejado. Nesse sentido, além de colaborar com o fluxo de de- senvolvimento, devido à toda padronização proposta, metodologias como PSP, TSP, ITIL e Cobit também colaboram com o ambiente das organizações, crian- do meios, controles e processos sólidos que facilitam um bom desenvolvimento e um excelente resultado� 38 SÍNTESE ITIL COBIT TEAM SOFTWARE PROCESS • Investimento e custo com qualidade • Controle de Qualidade • O que é gerência de qualidade de software? • Desenvolvimento iterativo de software • Por que usar validação de software? • Como fazer a validação de software? MEDIDAS DE QUALIDADE: BOAS PRÁTICAS DE QUALIDADE DE SOFTWARE QUALIDADE DE SOFTWARE • Qualidade estrutural • Qualidade funcional • Qualidade de processo PROCESSOS DE GESTÃO DA QUALIDADE DE SOFTWARE: BOAS PRÁTICAS EM QUALIDADE DE SOFTWARE PERSONAL SOFTWARE PROCESS Referências Bibliográficas & Consultadas ABNT� ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS� Disponível em: http://www.abnt.org.br� Acesso em: 22 out� 2019� BRAGA, P� H� C� (Org�) Testes de Software� São Paulo: Pearson Education do Brasil, 2016 [Biblioteca Virtual]� CMMI INSTITUITE� Disponível em https://cmmiins- titute.com/� Acesso em: 22 out� 2019� COBIT� Disponível em: http://www.isaca.org/COBIT/ Pages/COBIT-5-Portuguese.aspx� Acesso em: 01 nov� 2019� FERNANDES, A� A� Fábrica de Software: implanta- ção e gestão de operações� São Paulo: Atlas, 2004� GALLOTTI, G� M� A� (Org�)� Qualidade de Software� São Paulo: Pearson Education do Brasil, 2016 [Biblioteca Virtual]� GOTH, G� The team software process: a quiet quali- ty revolution� IEEE software, 2000 HUMPHREY, W� S� A discipline for software engi- neering� Massachusetts: Addison-Wesley, 1995� http://www.abnt.org.br HUMPHREY, W� S� Introduction to the personal sof- tware process� Massachusetts: Addison-Wesley, 1997� HUMPHREY, W� S� Introduction to the team softwa- re process� Massachusetts: Addison-Wesley, 1999� ITIL� Disponivel em https://www.axelos.com/best- -practice-solutions/itil, acesso em 02/11/2019� PAULA FILHO, W� P� Engenharia de Software: fundamentos, métodos e padrões� 3� ed� Rio de Janeiro: LTC, 2009 [Minha Biblioteca]� PFLEEGER, S� L� Engenharia de Software: teoria e prática� 2� ed� São Paulo: Prentice Hall, 2004 [Biblioteca Virtual]� PRESSMAN, R� S�; MAXIM, B� R� Engenharia de Software: uma abordagem profissional� 8� ed� Porto Alegre: AMGH, 2016 [Minha Biblioteca]� SCHACH, S� R� Engenharia de Software: os para- digmas clássico e orientado a objetos� 7� ed� Porto Alegre: AMGH, 2010 [Minha Biblioteca]� SOMMERVILLE, I� Engenharia de software� 10� ed� São Paulo: Pearson Education do Brasil, 2018 [Biblioteca Virtual]� WINDER, R� ROBERTS, G� Desenvolvendo Software em Java� 3� ed� Rio de Janeiro: LTC, 2009 [Minha Biblioteca]� INTRODUÇÃO Gestão da qualidade de software Processos Medidas de Qualidade Boas Práticas em Qualidade de Software Personal Software Process Team Software Process Information Technology Infrastructure Library CONSIDERAÇÕES FINAIS Síntese
Compartilhar