Pular para o conteúdo principal

Qualidade de Software



Olá pessoal,
O assunto de hoje é qualidade de software! :)
A discussão foi baseada na apostila do Ricardo Falbo¹ e o podcast Qualidade de Software do dotnet Architecs Cast.
Qualidade é algo bem subjetivo - concordando com a fala do Alexandre. O que tem qualidade para mim, pode não ter para você e vice-versa, ainda mais quando se trata de software, algo que costuma ser bem abstrato na sua construção. O que é, afinal, qualidade de software ?
De acordo com a apostila do Ricardo Falbo¹, qualidade de software está fortemente relacionada à conformidade com os requisitos e o ponto principal, qualidade diz respeito à satisfação do cliente.
Vamos ter como exemplo base para toda essa postagem o WhatsApp², um aplicativo de troca de mensagens instantâneas.
Recentemente, o WhatsApp realizou uma atualização³ no qual, ao invés de escrever alguma mensagem no status, as pessoas postavam fotos. Isso gerou uma grande insatisfação entre a maioria dos usuários e fez com que ele voltasse atrás, trazendo de volta o status mensagem, mas mantendo também, o status foto.
Essa nova atualização, considerando o conceito de qualidade de software, pode ser considerada de qualidade ? Como já foi dito, qualidade está relacionada diretamente com satisfação do cliente, não foi uma boa mira, embora depois de um tempo as pessoas possam se acostumar e isso ser considerado algo bom, mas por hora, não foi.
Segundo ponto que podemos abordar: qual a importância da qualidade de software ? Se está ligado a satisfação do cliente, se o software não tem qualidade, isto é, não satisfaz o cliente, ele não vai querer e o projeto não vai para frente. Então, é extremamente importante para a sobrevivência do software e ambos perdem,caso não haja, tanto quem compra quanto quem desenvolve.
Já que é tão importante assim, como podemos especificá-la ? podemos especificar com documentação, tais como documento de requisitos, documento de projeto; assegurando que o software está sendo construído corretamente e que o software é o que o cliente quer (verificação e validação); com técnicas de medição da qualidade e etc.
Agora que sabemos tudo isso sobre qualidade de software, a questão agora é: como encontrar os atributos de qualidade ? bom, esses atributos variam bastante dependendo do software desenvolvido e o contexto no qual ele está inserido, mas podemos usar técnicas, tipo entrevista, para identificá-los, isto é, elaborar perguntas que deixem implícito algum atributo. Por exemplo, se perguntássemos ao criador do WhatsApp, visando construir o aplicativo que se tem hoje, se ele gostaria de registrar as ações dos usuários ou saber qual usuário usou tal coisa em um dado momento, ele diria que sim e nós conseguiríamos identificar que o atributo de qualidade segurança é importante para ele. No geral, as considerações de negócio determinam as características de qualidade que devem ser acomodadas em um sistema. Essas características de qualidade vão além das funcionalidades, ainda que estejam fortemente relacionadas a elas.
Para finalizar a nossa discussão, antes de começar a tentar identificar os atributos de qualidade com o cliente, é necessário conhecer o melhor possível sobre o escopo do problema, fazer toda uma análise prévia para que a negociação com ele não se torne algo muito subjetivo e ele não consiga nos ajudar nessa fase, na qual  é essencial para construir um software de qualidade.

Ps: Apenas para fazer um link, na postagem anterior sobre Arquiteto de Software foi citado um podcast do dotnet Architecs Cast, durante a discussão foi falado sobre a importância de um arquiteto de software num time; e por que ele é importante? porque ele vai direcionar para o melhor caminho e esse melhor caminho significa qualidade de software.

¹ Ricardo Falbo, Projeto de Sistemas.

Comentários

Postagens mais visitadas deste blog

TDD e BDD

Olá pessoal, Hoje nós falaremos sobre TDD e BDD! Logo que eu ouvi sobre eles gerou um confusão enorme na minha cabeça. O que é TDD e BDD ? TDD – Test-Driven Development (Desenvolvimento Orientado a Testes) é o Desenvolvimento de Software orientado a Testes. O processo de desenvolvimento do TDD seria: Escrever um teste, sem mesmo ter escrito o código real a ser testado (Imagine o que deseja testar). Executar os testes e acompanhar a falha (Pode ser um código falso que retorne o  erro) Escrevemos a funcionalidade do sistema que iremos testar. Testar novamente, agora para passar (Se não passou algo saiu errado, faça novamente o passo 3) Refatore sua funcionalidade e a escreva por completo (o teste também) (Refactor) Passe para o próxima estória ou caso de uso e inicie novo teste. Confesso que isso é bem estranho, principalmente os passos 1 e 2 rs, até porque se funcionasse sem código seria mais estranho ainda kkk. BDD – Behavior Driven Dev

Padrões GRASP

Olá pessoal! Hoje nós vamos falar sobre os padrões GRASP. Engraçado né? Está no plural. Isso porque GRASP é um acrônomo para General Responsability Assignment Software Patterns ( Padrões Gerais para Atribuição de Responsabilidades). Bom, para esse post nós teremos como base esse minicurso do YouTube sobre   padrões GRASP . Vamos lá! Uma definição feita no minicurso sobre padrões GRASP é que: é um conjunto de princípios fundamentais para modelagem de objetos e atribuição de responsabilidades escrito na forma de padrões. Um padrão do GRASP é um par: problema e solução. Já que é um par problema solução, vamos falar primeiro o problema e depois o padrão mais adequado para a ocasião. 1) Qual princípio básico para se atribuir responsabilidade a objetos ? Ora, vamos atribuir a responsabilidade a quem tem a informação para realizá-la. Qual o padrão que estamos utilizando ? O information expert! Os benefícios ao usar são: Encapsulamento mantido  Comportamento é bem mais distribu

Medição de Software

Olá, hoje nós vamos falar sobre medição de software e da experiência em fazê-la no sistema para a escola de surfe que estou desenvolvendo na faculdade juntamente com outros colegas. Os conceitos aqui apresentados, se baseam na apostila de medição de software . Para começar, o que é medição de software ? Segundo Dumke, medição é o processo pelo qual números ou símbolos são atribuídos a propriedades de entidades do mundo real de forma a descrevê-las. Sendo assim, é possível perceber a importância da análise estatística do desenvolvimento do seu software, pois com ela consegue-se obter informações relevantes, tais como: tamanho do projeto, custos de desenvolvimento, quantidade de defeitos e etc. No contexto de projetos de software, a medição pode auxiliar a elaboração de planos realísticos e pode prover informações úteis ao acompanhamento do alcance dos objetivos, à identificação de problemas e à tomada de decisões informadas. No contexto organizacional, a medição pode auxiliar