Olá sejam bem-vindos ao canal engenharia de software com ênfase o mério eu sou o professor Janes GS e eu já atuo na área de modelagem de software há vários anos eu tenho quatro líos publicados sobre o assunto e eu já ministrei diversas palestras e cursos técnicos sobre modelagem de software utilizando a linguagem uml na aula de hoje eu vou iniciar a falar sobre o tema de qualidade de software Então vamos iniciar a nossa aula então essa vai ser uma aula introdutória sobre qualidade software eu vou apresentar alguns conceitos básicos sobre esse tema e falar principalmente
sobre fatores que influenciam a qualidade software entre outros assuntos Então vamos iniciar com uma de algumas algumas definições de conceito então de acordo com presman qualidade software pode ser definida como uma gestão de qualidade efetiva aplicada de modo a criar um produto útil que forneça valor Men mensurável para aqueles que o produzem e para aqueles que o utilizam Essa é a definição do prm já de acordo com summerville ah qualidade software pode ser eh um pouco subjetivo ele afirma que avaliar a qualidade de software é um processo objetivo ã e que depende muito da da
própria equipe de gerenciamento de qualidade para estabelecer O que é software de qualidade [Música] hã então eh a partir disso eh se propôs algumas perguntas para determinar a qualidade do software essas perguntas elas foram inspiradas em summerville mas foram adaptadas não está exatamente como no livro algumas perguntas foram adicionadas outras foram eh adaptadas modificadas então algumas perguntas sobre as características do software que ajudam a determinar se o software tem qualidade então primeiro o software atende aos requisitos estabelecidos o software é realmente útil para as partes interessadas o software foi desenvolvido foi devidamente inspecionado e testado
o software é bem estruturado compreensível e Fácil de usar os pões de documentação projeto e programação foram seguidos durante o processo de desenvolvimento o software é suficientemente confiável para ser colocado em uso o desempenho do software é aceitável para uso o software foi desenvolvido dentro dos prazos e custos estimados o software é fácil de manter evoluir e reutilizar Então essas são algumas perguntas que podem ajudar a determinar a qualidade do software agora vamos falar sobre alguns fatores que influenciam a qualidade de software Na minha opinião fatores importantes obviamente outros autores outras professores iriam considerar talvez
outros fatores também Existem algumas normas ISO que podem considerar alguns valores além desses mas esses para mim são alguns fatores importantes que influenciam a qualidade do software e eu vou falar sobre eles nessa aula em outras aulas nós podemos abordar outros fatores que são eh considerados por algumas normas ISO por exemplo mas eu considero que requisitos de software prazos e custos usabilidade manutenibilidade reusabilidade documentação como um todo inspeções e testes processos de desenvolvimento e padrões de processo são fatores que influenciam muito a qualidade de um software nós vamos falar um pouco sobre cada um deles
então começando com H requisitos considerando a questão da qualidade do software com relação a requisitos então ã os requisitos eles são a base a partir da qual se determina a qualidade de um software em Essência se o software não atende aos requisitos isso significa falta de de qualidade eh e Isso inclui também os requisitos não funcionais porque não adianta um software satisfazer os requisitos funcionais se o desempenho do software lento se ele não é se o nível de confiabilidade não é suficiente se o ser é sucetível a falhas de proteção se ele não é capaz
de permitir escalabilidade de maneira eh adequada is tipo de coisa então na minha opinião ah os requisitos eles formam a base para determinar se um software tem qualidade ou não mas como já foi falado qualidade é um tanto subjetiva então Em algumas situações outros fatores podem ter um peso maior Mas na minha opinião essencialmente os requisitos determinam a base a partir da qual a qualidade de um software é medida simplesmente se o software não atende o que Foi estabelecido ele não tem qualidade eh Um Outro fator que influencia a qualidade de software são os prazos
e custos eh basicamente se o software não cumpre os prazos e ele extrapola o que fo o custo que foi estimado a qualidade do software Nesse quesito eh pode ser prejudicada o software pode atender os requisitos mas pode ter demorado muito para ser desenvolvido e um produto às vezes até de menor qualidade ganhou o mercado ou o software ele é um software bom mas o custo de desenvolvimento foi muito além do esperado então isso invalida H muito da qualidade obtida em outros quesitos agora eh com relação a prazo e custos Existem algumas perguntas que precisam
ser respondidas e elas nem sempre são fáceis de responder por exemplo Como determinar o prazo real de entrega de um software essa é uma pergunta muito difícil quantos profissionais deverão trabalhar no projeto Qual será o custo total de desenvolvimento essa é uma outra pergunta bastante complexa qual deverá ser o valor estipulado para produzir o sistema Como determinar a real complexidade de desenvolvimento do do sistema essa é uma pergunta muito difícil de responder eh Na verdade estimar o tempo de desenvolvimento sempre foi um tópico bastante espinhoso bastante difícil bastante Complexo da engenharia de software eh bom
para começo de conversa é a para estimar os prazos e custos é necessário que haja uma boa engenharia de requisitos nós precisamos compreender bem o problema precisamos compreender bem as necessidades das partes interessadas existem técnicas que permitem estimar o A complexidade de desenvolver o software e Por conseguinte o tempo que vai se demorar para desenvolvê-lo e o custo decorrente disso mas são técnicas de estimativa elas não são eh totalmente exatas são estimativas e eventualmente sujeit a falhas Então existe por exemplo análise de pontos de função ex existe análise de pontos de cas de uso existe
planing poker que é uma forma de estimativa muito popular eh nos métodos ágeis mas que na minha opinião Depende muito da experiência H do desenvolvedor para dar certo h e existem outras técnicas de estimativa e existem inclusive ferramentas para que implementam Pontos de função experimentam Estimativa de pontos de caso de uso existem outras ferramentas que implementam por exemplo cocomo e e assim vai bom mas elas ajudam a estimar os prazos e custos ã existe uma outra técnica bem mais antiga que basicamente ela documenta ã Os projetos que já foram desenvolvidos com uma empresa e com
base nessa documentação ela consegue na medida em que o novo software tem características ou se destina a uma área semelhante a outros projetos a desenvolvidos elas ela auxilia na Estimativa de prazos e custos mas isso funciona no momento em que eh o software é um software com semelhanças a a outros já desenvolvidos E além disso eu preciso ter uma certa quantidade de softwares já desenvolvidos e e bem documentados anteriormente como falei com níveis de dificuldade características semelhantes ao software que irá ser desenvolvido e para auxiliar a a estimar com maior exatidão os prazos de entrega
mas novamente existem outras técnicas de estimativa que devem ser utilizadas em conjunto com essa a essa documentação de projetos essa documentação de histórico de desenvolvimento de projetos Ah então a documentação ela precisa possuir registro das datas de início e término dos projetos que foram concluídos anteriormente do custo real para desenvolvimento desses projetos obviamente o tempo de desenvolvimento ele vai influenciar diretamente o custo do software e Por conseguinte o valor que deverá ser pedido por ele agora a qualidade dos do software com relação aos prazos e custos leva em consideração a falha da estimativa desses prazos
porque que se a estimativa de prazo ela estiver errado cada dia mais que for gasto desenvolvendo um projeto que já deveria ter sido concluído vai acarretar prejuízos diretos e indiretos por exemplo relativos ao pagamento de Salários extras aos desenvolvedores a equipe de desenvolvimento ã num projeto que eles já deveriam ter concluído e que não haviam sido previstos e ainda muitos desses profissionais poderiam estar trabalhando em um outro projeto e estão na verdade trabalhando em algo que já deveria ter sido dado por eh eh finalizado então Além de eu pagar mais salários para um projeto que
já deveria estar acabado eu estou deixando de aproveitar a capacidade de uma equipe em projetos novos e há ainda um custo difícil de medir mas que pode ser muito grave para a empresa que é insatisfação do cliente Porque não recebeu o produto no prazo então isso pode causar o impacto significativo em termos de propaganda negativa há também o desgaste dos equipamentos utilizados gastos com energia elétrica materiais de consumo pessoal de apoio esse tipo de coisa então prazos e custos Aliás a estimativa de prazos eh errada pode causar prj juízos graves para uma empresa Ah agora
vou falar um pouquinho sobre usabilidade usabilidade é quão fácil em Essência determina quão fácil um software é de usar e a usabilidade ela tem uma grande influência sobre a qualidade do software por quê Porque se o os usuários eles não acham fácil utilizar o software consideram o nível de aprendizado muito difícil a forma de interagir com software muito difícil pouco pouco intuitiva H isso faz com que eles se fiquem satisfeitos com o produto então eles vão considerar o software ruim ou seja de baixa qualidade então basicamente usabilidade Então ela abrange a facilidade com que os
usuários podem aprender interagir realizar tarefas evitar que erros ocorram e também implica na satisfação que os usuários terão utilizando o software então para o usuário final a usabilidade impacta muito na qualidade do software e nós temos também a um Outro fator que é a manutenibilidade manutri é um fator muito importante no desenvolvimento de software e muitas vezes o o custo de manutenção pode ser superior ao desenvolvimento do próprio software eh existe um mito de que depois de concluído o trabalho Acabou e o serviço tá concluído à Não vai ser necessário mais se preocupar com aquele
software isso para pessoas Talvez um pouco inexperientes mas na verdade muitas vezes na maioria das vezes o Ele precisará ser mantido e evoluído certo se um software não sofre manutenção software não sofre evolução é porque provavelmente ele não está sendo muito utilizado então ah é muito provável que um software precisa precise sofrer modificações precise receber evoluções na forma de produção de novas versões então a manutenção embora alguns considerem Poxa eu já desenvolvi o software acabou meu trabalho na verdade não a manutenção é um dos fatores que mais influenciam a qualidade do software porque ela determina
a facilidade com que o sistema ele pode ser alterado corrigido ou evoluído ao longo do tempo e impacta fortemente na longevidade e adaptabilidade do software se um software for difícil de manter ou que ele ou se ele for sendo mantido de forma errada sem refaturamento eh sem eh Estimativa de de de custo e impacto da manutenção porque na verdade a manutenção de um software na verdade ela é um projeto novo então se o software ele form mal mantido ou for difícil de manter eh o código começa a ficar muito remendado devido às várias alterações que
ele vá sofrendo e chega um ponto em que não vale mais a pena manter o software é melhor desenvolver um software novo é como como software sofrem desgaste então a manutenção a manutenibilidade ela impacta muito a qualidade de um software principalmente com relação a projetos de longo prazo mas na verdade para praticamente qualquer software Ah então uma boa manutenibilidade ela permite que o software possa ser mantido rapidamente que responda rapidamente às solicitações de mudança nos seus requisitos e Isso facilita a evolução e a adaptação do software a novas situações Já se o sistema possuir baixa
manutenabilidade Toda a manutenção toda a alteração vai ser um desafio vai ser complexo vai ser arriscado vai ser difícil vai ser Custoso vai comprometer a qualidade do software e os custos vão aumentar muito então o custo de manutenção do software será muito maior do que o custo de desenvolvimento então se a manutenção é difícil o tempo de resposta falhas pode aumentar e isso compromete a confiabilidade que o usuário tem com relação ao sistema e a própria experiência do usuário que ele fiica insatisfeito ah como falei muitas vezes a manutenção pode ser maior do que o
custo total de desenvolvimento do do software alguns autores afirmam que ela pode representar de 40 a 60% do custo total de um projeto E por que isso ocorre manutenção ocorre devido a erros de implementação que precisam ser corrigidos estão dentro da garantia de qualidade do software então eles precisam ser corrigidos eh ela ocorre também por desejos de melhorias dos usuários mudanças estratégicas da empresa a empresa muitas vezes tem que precisa investir em novos nichos mudanças relacionadas com relativas ao governo que ele muda leis alíquotas impostos eh qu porque por por por necessidades políticas necessidades econômicas
e os softwares precisam se adaptar a essas mudanças bom então H como eu falei já a manutenção muitas vezes ela ela é inevitável por mais bem projetado modelado que o software tenha sido a manutenção é muitas vezes inevitável por quê Porque as empresas elas precisam ser dinâmicas para eh permanecerem competitivas no mercado para elas sobreviverem ao mercado que também é muito dinâmico e portanto Como as empresas dependem totalmente software o software precisa acompanhar essa dinamicidade então essa constante mudança do mercado essa constante Adapt adaptação da empresa a novas situações do mercado a novas situações do
a novas leis do governo eh faz com que surjam novas necessidades de maneira constante então o software pode ter sido projetado e desenvolvido de maneira excelente mas os requisitos podem mudar novas necessidades podem surgir e essa necessidades elas não existiam na época que o software foi projetado mas prec mas o software precisa ser adaptado para cobri-las para suportá-las então Eh ainda falando sobre manutenção ah a manutenção muitas vezes é uma atividade malquistar ingrata ah muitos dos desenvolvedores de software não gostam de manter software por quê porque eh essa atividade exige um grande esforço da parte
dos desenvolvedores para que eles compreendam códigos antigos que provavelmente foram inscritos por outros profissionais E que provavelmente também não se encontram mais na empresa utilizar estilos e padrões de codificação diferentes Muito provavelmente o código não possui nenhuma documentação de apoio não possui comentários não possui projeto não possui especificação de requisitos O que é uma característica bastante comum de sistemas antigos os sistemas legados ah Além disso eh na verdade existe o mau costume de que a manutenção seja atribuída a profissionais pouco experientes O que é um erro eh porque a manutenção tem que ser feita com
muita seriedade Quem deve fazer manutenção são justamente os desenvolvedores mais experientes porque eh muitas vezes ah acontece de ocorrer efeitos colaterais ou contraindicações da manutenção porque a manutenção Não foi bem feita Então o que são esses efeitos colaterais o que são essas contraindicações acontece que após uma manutenção outros módulos componentes classes funções métodos que antes funcionavam de forma correta eles passam a apresentar erros ou não funcionam mais após a manutenção Ah bom isso é uma característica de manutenção de baixa qualidade muitas vezes por causa de falta de documentação de apoio falta de especificação de requisitos
falta de projeto falta de modelos que ajudem a compreender a o software ajudem a estabelecer rastreabilidade paraa frente para determinar Qual o impacto da mudança em determinado requisito nos diversos artefatos eh do software não somente código mas também eh especificação de requisitos eh projeto arquitetural projeto detalhado esse tipo de coisa eh Então essa falta de documentação Além disso ela ela também eh impede estimar o custo e o tempo de realizar essas mudanças eh Na verdade o ideal é que haja uma matriz de rastreabilidade Ou seja que determine qual quais artefatos serão impactados pela mudança em
determinado requisito a mudança nesse requisito irá alterar eh Tais modelos de projeto eh irá alterar Tais classes irá alterar Tais métodos irá alterar Tais componentes com base nisso eu consigo fazer uma Estimativa de custo mais próxima da realidade como eu falei anteriormente eh manter um software na verdade é muitas vezes eh implica em desenvolver um um exige um processo de desenvolvimento totalmente novo e a manutenção ela tem que ser feita com seriedade porque o projeto tem que ser atualizado não somente o código se houve modificações no software isso tem que refletir no projeto tem que
refletir na especificação de requisitos porque senão a especificação de requisitos e o projeto eles deixam de ser úteis é aquela é aquele exemplo um mapa errado é pior do que não ter mapa nenhum certo bom bom então a qualidade da manutenção ela é muito fortemente influenciada por uma boa especificação de requisitos um projeto adequado e os diversos modelos de software que ilustrem o os trechos do projeto que precisarão ser modific precisarão ser alterados então no momento que eu tenho essa uma boa uma boa documentação de apoio então isso torna o processo de manutenção mais rápido
e impede que ocorra os efeitos colaterais as contraindicações da manutenção eh como já foi falado que é quando eh outros módulos passam a não funcionar Ahã ainda existem outros fatores que influenciam a qualidade da manutenção além da documentação eh que a organização do código e modularidade documentação e comentários Claros consistência e padrões de codificação testes automatizados e de regressão e refatoração constante nós vamos falar um pouquinho sobre cada um deles então com relação à organização do código e modularidade então no momento que eu tenho um código bem organizado e modular Isso facilita que problemas sejam
localiz ados que se entenda mais rapidamente e melhor o funcionamento do código e que permita alterar partes específicas do código sem que seja necessário eh alterar outras o que evita Muitas vezes os efeitos colaterais as contraindicações da manutenção ainda boas práticas como separação de responsabilidades ajudam a diminuir a complexidade do software e portanto aumentam a eficiência na manutenção ainda com relação à documentação e comentários Claros então a documentação adequada do código e das funcionalidades que ele suporta eh ajuda a garantir que membros novos de uma equipe membros que que ingressam numa equipe quando o projeto
está emendamento ou mesmo quando desenvolvedores futuros vão mexer num software já concluído que eles Consigam entender manter e evoluir o software mais rápido e de forma mais correta então comentários Claros no código podem eh prevenir a ocorrência de erros prevenir os efeitos colaterais e reduzir o tempo necessário para localizar e resolver os problemas que precisam ser eh corrigidos ou alterados ah com relação à consistência e padrões de codificação então muitas empresas adotam padrões de codificação então no momento que eles são seguidos de forma consistente de com por exemplo como é estabelecido em convenções de linguagem
isso torna a leitura e a manutenção do código mais rápido é importante que todos desenvolvedores utilizem o mesmo padrão de codificação porque isso fica parecendo que o código não pertence a uma pessoa específica Ah no momento que todos seguem a mesmo padrão a leitura fica muito mais fácil isso reduz a chance de que novos erros sejam introduzidos e facilita a adaptação do software quando novos requisitos ou novas tecnologias precisam ser adequados a ele ah com relação a testes automatizados de regressão Bom na verdade testes em particular é um um por si só um fator que
influencia a qualidade mas com relação à manutenção ah a presença de testes automatizados ela permite que alterações do código não introduzam novos erros eh porque eu posso eh executar novamente todos os testes automatizados que já haviam sido eh criados anteriormente então eu sei que se algum erro surgir é com relação a ao código que está sendo modificado então eu sei onde mexer então isso também permite que as funcionalidades originais sejam preservadas Ah isso é muito importante principalmente em ambientes ágeis porque costumam eles costumam trabalhar com muitas mudanças frequentemente ainda com a refur constante é um
Outro fator que ajuda na manutenção que é a prática de sempre estar melhorando o código sempre que for possível então isso faz com que o sistema ele permaneça flexível atualizado e eficiente isso impede que o software sofra desgast mas como assim o software sofra desgaste software não sofre desgaste ele sofre na medida em que ele for sendo mantido de maneira incorreta Então se o código ele não for refatorado sempre em busca de tornar ele mais elegante e evitar que ma cheiros de código sej introduzidos chega um ponto que o código ele fica muito difícil de
manter e simplesmente não vale mais a pena utilizar aquele código é melhor desenvolver um projeto novo então a prática de refatoração Evita que o software ele se torne suscetível a maus cheiros de código que são características que podem levar a ocorrência de erro Ahã e evita que ele sofra desgaste permanecendo fácil de ser mantido como eu falei o processo de manutenção na verdade ele é um novo processo de desenvolvimento ele implica em analisar e estimar o impacto das mudanças solicitados daí importância de documentação importância de eu criar Matriz de rastreabilidade para me permitir a rastreabilidade
para frente que é a uma forma de eu determinar Qual o impacto da mudança no requisito nos artefatos do meu projeto seja na própria especificação de requisitos seja no projeto detalhado seja nos casos de testes e no código propriamente dito as classes nos componentes nos módulos nos métodos etc ã então Eh sempre que eu for fazer manutenção eu tenho que fazer essa rastreabilidade para frente determinar o impacto da mudança o que vai ser modificado E com isso determinar o custo e o tempo de de de realizar essa manutenção e após isso eu preciso atualizar a
especificação de requisitos o projeto de software os casos de testes o que for necessário o que for modificado por quê Porque a documentação ela não pode ficar desatualizada porque senão eu caio na no problema do mapa errado e como eu falei o mapa errado é pior do que não ter mapa nenhum a partir da se a manutenção não refletir na documentação ela deixa de ser útil para para me ajudar em manutenções futuras bom vou falar um pouquinho sobre reusabilidade reusabilidade é a capacidade que eu tenho de reaproveitar código em projetos novos então este é um
também um fator de qualidade do software então o software ele precisa ser projetado modelado documentado e desenvolvido de tal forma que eu possa reaproveitar o código os métodos as classes os componentes mesmo módulos em projetos futuros então isso eh Tem se tornado bastante Popular existe uma ênfase muito grande em reusabilidade existe inclusive técnicas de desenvolvimento como SPR que trabalham com linhas de produto de software que trabalham muito na questão de H reaproveitar ativos de software bom então a reusabilidade ela é muito influenciada pela documentação em termos de especificação de requisitos projeto de software modelagem elas
auxiliam a encontrar módelos componentes funcionalidades algoritmos rotinas funções classes métodos que podem ser reaproveitadas eh em novos desenvolvimentos além de ajudar na compreensão do código propriamente dito e determinar se vale a pena se é possível reaproveitar aquele código ou não Ah então algumas perguntas que precisam ser respondidas com relação à reusabilidade Onde estão os modos componentes rotinas algoritmos e métodos para que foram utilizadas em que projetos eles são documentados eles são adequados ao software atualmente em desenvolvimento Qual o nível necessário de adaptação do código para que este possa ser utilizado no sistema atual porque se
for necessário adaptar muito código não vale a pena reutilizá-lo é mais fácil desenvolver código novo Ah e agora vou falar um pouquinho sobre qualidade de software com relação à documentação mas não a documentação de projeto e sim a documentação relativa às práticas de desenvolvimento da empresa práticas padrões eh processos de desenvolvimento diretrizes que são que são sendo adotadas então H aqui no caso é a qualidade da do desenvolvimento do software pela empresa como a empresa pode afirmar se ela está evoluindo ou não como ela Pode garantir que os softwares que ela está desenvolvendo que a
qualidade desses softwares está melhorando como el ela pode afirmar que o processo de desenvolvimento atualmente adotado é superior aos processos anteriores as práticas e padrões adotados atualmente são superiores à práticas e padrões aplicados anteriormente Como eu posso responder isso essa é uma essa é uma diferença entre empresa profissional e empresa amadora uma empresa profissional tem que saber se ela está evoluindo se o seu produto está Ah apresentando uma qualidade superior ao que apresentava anterior mente então para isso a empresa necessita de registros detalhados dos seus projetos de tal forma que ela possa eh responder algumas
perguntas por exemplo ela precisa possuir informações sobre o custo que eh foi necessário o custo eh que foi gerado pelo durante atividades como engenharia de requisitos o projeto do software tanto projeto arquitetural Como projeto detalhado os diversos testes a codificação provalmente Dita e também com relação à manutenção de cada produto de software Além disso eh ela precisa responder ela precisa saber qual a média de tempo eh despendido até a finalização dos processos dos projetos Isso é uma forma por exemplo de ajudar na Estimativa de desenvolvimento dos projetos futuros Claro apoiada por outras estimativas como eh
cálculo por eh ponto de caso de uso por exemplo Como já foi falado também ela precisa responder qual a média de profissionais envolvidos em projetos qual a média de manutenções no primeiro ano que um software sofre em em um ano ou em determinado período de tempo então essa informações elas são utilizadas para produzir orçamentos mais próximos da realidade e Por conseguinte elas auxiliam a determinar prazos e custos ã mais acurados claro que é preciso uma ressalva isso funciona ã no momento que há projetos com certo grau de semelhança quando há projetos novos e que h
não são em uma área que a empresa está acostumada a desenvolver esse tipo de documentação ela não sexia tanto a determinar prazo de custos então outras técnicas estimativas são mais adequadas e que na verdade devem utilizar devem ser utilizados em conjunto com essa documentação Mas o importante é que essa documentação ajuda a determinar se a empresa está evoluindo ou não se os seus processos estão sendo mais úteis se as suas práticas estão sendo eh melhores do que a as anteriores então isso determina se a empresa está evol uindo ou não com relação a inspeções e
testes então inspeções e testes auxiliam muito na qualidade do software auxiliam muito no no da qualidade do do desenvolvimento do software na verdade elas são essenciais são críticas para garantir a qualidade do software porque elas permitem identificar e corrigir problemas ainda durante o desenvolvimento do produto eh impede que esses problemas anomalias e erros sejam descobertos pelos clientes e ajudam a garantir que o sistema funcione conforme esperado e também que realmente atenda aos requisitos do cliente no caso garantir que o o sistema funcione conforme foi solicitado é uma verificação garantir que realmente o sistema atende aos
requisitos do cliente às necessidades do cliente é ser uma validação ã então falar um pouquinho sobre inspeções elas são técnicas que ajudam a garantir a qualidade do software então basicamente elas envolvem a analisar detalhadamente os artefatos produzidos durante o desenvolvimento software artefatos pode ser são basicamente qualquer produto desenvolvendo produzido durante o desenvolvimento do software não somente código artefato pode ser especificação de requisitos pode ser projeto arquitetural pode ser projeto detalhado pode ser caso de testes e outras ã produtos desenvolvidos ao longo do desenvolvimento software Então essas inspeções elas buscam por erros buscam por inconsistências anomalias
e quaisquer outros tipos de erros que afetem a qualidade do só Ah então as principais vantagens das inspeções são prevenção de problemas aperfeiçoamento de qualidade interna e redução do retrabalho e custo nós vamos falar um pouquinho sobre cada uma delas com relação à prevenção de problemas então as inspeções elas ajuda a identificar problemas ã antes que eles venham a se tornar defeitos no software final eles as expressões costumam eh encontrar defeitos costuma encontrar erros eh de uma forma eh de maneira cedo de maneira Logo no início do desenvolvimento software então o custo para corrigir os
erros é é bem menor então se eu conseguir corrigir erros ainda na fase de engenharia de requisitos ou mesmo na fase de projeto eu consigo evitar que falhas sejam descobertas em fases posteriores que seriam muito mais caras corrigir ah com relação ao apressamento de qualidade interna Então as as inspeções elas melhoram a legibilidade dos artefatos como falei artefato não necessariamente é código mas com relação a código Fontes elas garantem que foram aplicadas boas práticas de codificação impedem a ocorrência de maus cheiros de código como falei são más práticas de de programação e verificam se padrões
de codificação estão sendo adotados de maneira correta então a longo prazo isso influencia a manutenção e evolução do software e com relação à redução do de rabalho e custo como eu falei como as falhas são descobertas de maneira prematura então a as inspeções elas reduzem o retrabalho e o custo de corrigir erros então o o custo e o e o prazo de de desenvolvimento do projeto costuma diminuir na verdade existe eh uma um mito de que inspeções aumentam o custo de desenvolvimento do software mas na verdade é o contrário elas diminuem o custo porque elas
encontram erros de maneira prematura ou seja Logo no início do desenvolvimento do softw e nós temos os testes que obviamente eles influenciam muito a qualidade do software um software precisa ser bem testado tá eh quanto mais testado o software melhor o nível de teste vai depender um pouco do Risco associado ao software Então se o software eh vai influenciar pode causar impacto com relação à saúde ou mesmo com relação a vidas humanas então o nível de teste tem que ser muito alto então basicamente os testes eles executam software ou trechos desse do software ã em
condições controladas para determinar se as funcionalidades operam como Foi estabelecido com relação aos requisitos existem n tipos de testes os mais comuns são testes unitários testes de integração testes de sistema e testes de aceitação que são testes realizados no ambiente da empresa com a participação das partes interessadas para garantir que realmente o software atende às aos requisitos que foram solicitados ã e com relação ao gerenciamento de qualidade de software existe a suposição de que os testes de sistema Eles serão fortemente baseado nos requisitos então como eu falei eh se o software não atende aos requisitos
ele não tem qualidade então a decisão sobre se o software Ele oferece ou não a funcionalidade necessária ela precisa se basear nos resultados destes testes então por isso a equipe de gerenciamento e qualidade ela precisa revisar os testes que foram desenvolvidos e determinar se os registros de testes para verificar se os testes for e analisar os registros dos testes para determinar se se eles foram devidamente realizados Além disso os testes eles também permitem detectar falhas em funcionalidades específicas na integração entre módulos e na no software como um todo e esse processo ele garante que o
software final que for ser entregue ele seja funcional e confiável e que temha a qualidade também ele permite um aprimoramento da experiência do usuário Então os testes de usabilidade e desempenho Eles procuram garantir que o software não só funcione mas também seja agradável para o usuário então ele tenta determinar se há problemas como lentidão ã interfaces confusas eh falta de eh confiabilidade falta de proteção Então esse o objetivo desse desse tipo de teste então o objetivo é ã que o software seja bem aceito pelos usuários finais vamos falar um pouquinho sobre qualidade de software com
relação ao processo de desenvolvimento então obviamente o processo de desenvolvimento adotado pela empresa vai influenciar fortemente a qualidade de sof um bom processo um bom processo e que seja bem executado ele pode conduzir a software de qualidade ã também e o gerenciamento e a melhoria da qualidade do processo pode gerar software com menos defeitos Ahã agora nem sempre é fácil avaliar com certa profundidade atributos e qualidade do software como por exemplo proteção ou manutenibilidade sem eh realmente utilizá-lo num ambiente real por um certo período então às vezes é difícil afirmar como essas características do processo
realmente influenciaram alguns desses atributos Ah vamos falar um pouquinho sobre padrões de software então uma par importante da gestão de qualidade que é a gestão para garantir que o software tenha qualidade obviamente é definir padrões que precisam ser aplicados no processo de desenvolvimento eh então a gestão de qualidade ela deve escolher métodos e ferramentas que suportem o uso desses padrões e uma vez que os padrões foram estabelecidos Então os processos de projeto eles precisam ser definidos para monitorar o uso desses padrões Ah então os padrões eles são importantes por três razões principais eles capturam sabedoria
valiosa para a organização fornece uma um arcabo ou seja um Framework para definição do que é qualidade na organização eles estabelecem uma base para definir o que o se o software tem qualidade ou se o e o se o processo de desenvolvimento tem qualidade ah inclusive isso ajuda muito em programas para ah medição de qualidade como cmmi e eles ajudam a dar continuidade ao trabalho que foi realizado por pessoas eh e que precisam ser substituídos por outras por algum motivo então com relação aos padrões de software capturarem sabedoria valiosa para a organização eh o conhecimento
que é produzido por uma organização e obviamente pelas pessoas que trabalham nela não pode ser perdido ele é extremamente valioso porque ele Guarda ele contém a sabedoria adquirida ao longo da experiência dos seus profissionais onde eles eh vivenciaram situações de sucesso e de falhas então Eh esse o o a empresa ela deseja que as situações de sucesso possam ser repetidas E para isso é preciso armazenar esse conhecimento de alguma maneira e e de forma que ela que ele possa ser transmitido para novos profissionais ã então inserir esse conhecimento e um padrão ajuda a reutilizar essa
experiência e evitar que os que foram cometidos anteriormente sejam repetidos eh eles também fornecem um Arc bolso para definição do que é qualidade na organização então ao adotar ar padrões se estabelece uma base para decidir se o nível de qualidade exigido realmente foi atingido e ele deve esses padrões eles precisam refletir eh as expectativas do usuário com relação à confiabilidade usabilidade desempenho entre outros então os padrões eles asseguram que todos os engenheiros em uma organização adote as mesmas práticas isso também airia na na manutenção então o esforço de aprendizagem eh ao se iniciar um novo
trabalho ou substituir um outro profissional uma equipe costuma ser reduzido graças à adoção desses padrões existem dois tipos de padrões que podem ser utilizados pelo gerenciamento de qualidade padrões de produto e padrões de processo padrões de produto como o nome já diz se aplica ao produto que está sendo desenvolvido e quanto que padrões de projeto define os processos que devem ser seguidos durante o desenvol mento do software aliás padrões de processo Ah então falando sobre padrões de produto eh Existem várias eh possíveis padrões de produto como por exemplo padrões de documentos que estabelece por exemplo
como a estrutura do documento de especificação de requisitos deve ser eh seguida deve ser eh utilizada deve ser produzida padrões de documentação que estabelece por exemplo como cabeçalho de comentário padrão para definição de classes deve ser adotado padrões de codificação que determinam como o código deve ser desenvolvido como ele deve ser estruturado e com relação aos padrões de processo os padrões de processo eles estabelecem quais processos devem ser utilizados durante o desenvolvimento de um software então eles devem encapsular boas práticas de desenvolvimento que foram adquiridos ao do tempo pela empresa ou mesmo que foram aproveitados
de eh outras empresas e que estão eh representados dentro da de um determinado processo de desenvolvimento e esses processos eles podem incluir definições de como criar especificações e requisitos como realizar o projeto e modelagem como verificar e validar o software também ele pode incluir ferramentas de suporte ao processo hã e que documentos e artefatos devem ser produzidos que Marcos devem ser atingidos entre outras possibilidades existe diversos organismos tais como o dod o departament of Defense o ans e o bsi a otan a isu e a i3e que trabalham na criação de padrões e normas então
esses padrões e normas eles são Gerais e podem ser aplicadas a uma grande quantidade de projetos Além disso organismos com instituições militares instituições governamentais eles podem exigir que os seus próprios padrões sejam utilizados h quando é feito um contrato de desenvolvimento com empresa Então as equipes de gerenciamento de qualidade geralmente elas baseiam os seus padrões em padrões e normas nacionais e internacionais como por exemplo o msbr ou as diversas isos que existem ã então eles podem por exemplo adotar a ISO 2510 de 2023 então ao usar padrões de normas internacionais com ponto de partida a
equipe de garantia de guidade ela precisa elaborar um manual de padrões que vai estabelecer Quais são os padrões necessários para a organização agora a problema na adoção desses padrões de software por quê Porque os engenheiros de software muitas vezes eles podem considerar os padrões como perda de tempo que eles são demasiadamente prescritivos que na verdade eles não causam Impacto real eles são pura burocracia isso ocorre Principalmente quando esses padrões exigem muita documentação considerada tediosa e registro de trabalho Ah então para diminuir essa existência a adoção de padrões e encorajar que eles sejam utilizados H podem
ser utilizar pode ser seguidas pode ser adotadas as seguintes abordagens envolver os engenheiros de software na seleção dos padrões então eles se sentem mais participativos na escolha desses padrões e eles vão entender o porqu deles terem sido adotados revisar e modificar regularmente os padrões para refletir as atualizações tecnológicas e fornecer ferramentas de software para auxiliar a utilizar esses padrões isso é bastante importante então com relação ao envolvimento dos Engenheiros de software na seleção de padrões no momento que os engenheiros eles entendem porque os padrões foram foram selecionados então e existe uma maior probabilidade que eles
se comprometam a utilizar esses padrões ah Além disso eh além de definir qual padrão deve ser seguido o documento de padrões ele precisa incluir também comentários que expliquem porque essas decisões de padronização foram tomadas foram adotadas com relação a revisar e modificar os padrões regularmente para que eles estejam sempre atualizados então o problema é que desenvolver desenvolver padrões é um processo bastante caro e então esses padrões no momento que tiver esse custo tão alto eles costumam ser consagrados em manual de padrões vira quase uma Bíblia e como eles custaram muito caro e demoraram muito tempo
existe muita relutância em alterar esses padrões acontece que isso não funciona no desenvolvimento de software por quê Porque o desenvolvimento de software implica em uma evolução muito rápida Ah uma evolução de técnicas uma evolução de modelos uma uma evolução de linguagens uma evolução de padrões constante então não pode haver um manual de padrões rígidos ele precisa ser constantemente evoluído para que ele reflita as mudanças nas circunstâncias tecnologias senão ele se torna defasado e inútil se torna pura burocracia que no final termina não só no ajudando como atrapalhando o desenvolvimento do software e finalmente é necessário
fornecer ferramentas para auxiliar no suporte aos padrões então no momento que houverem ferramentas de software que ajudem a utilizar os padrões então é mais provável que os desenvolvedores aceitem utilizar esses padrões Ahã Então por quê Porque os padrões utilizar esses padrões muitas vezes eh não é bem visto pelos desenvolvedores os desenvolvedores não gostam de utilizar padrões acham que dá trabalho demais é chato então se houver a ferramenta que auxilie a utilizar esses padrões no momento que elas diminuírem o esforço então a aceitação e obediência esses padrões se torna mais palatável Ahã Além disso diferentes tipos
de software eles precisam de processo de desenvolvimento diferentes Então os padrões eles precisam ser adaptáveis a cada situação então por exemplo não faz sentido determinar um tipo específico de trabalho se esse se esse modo de trabalho é inadequado a um determinado projeto a uma determinada equipe ou uma uma Filosofia de desenvolvimento específico então cada agente projeto precisa ter autoridade suficiente para para poder modificar e adaptar os padrões a determinadas circunstâncias ah ah então quando são feitas alterações do padrões é muito importante garantir que essas alterações elas não impactem na perda de qualidade do produto então
o gerente de projeto e o gerente de qualidade eles podem de alguma maneira evitar os problemas com padrões não apropriados se eles fizerem um planejamento de qualidade cuid dosa eh Logo no início do projeto então eles precisam decidir quais padrões organizacionais precisam ser utilizados sem alterações quais precisam ser modificados e quais não devem ser adotados numa determinada situação então nós terminamos essa aula sobre introdução à qualidade de software eu espero que vocês tenham considerado essa aula válida espero que vocês tenham gostado dessa aula Se vocês gostaram dessa aula eu peço que vocês curtam esse vídeo
compartilhem com quem possa se interessar e se ainda não estão inscritos eu peço que se inscreva obrigado pela atenção nós os vemos nas próximas aulas