A comparação é um dos meios que a indústria encontrou para medir a qualidade entre produtos de uma mesma linha, os materiais envolvidos, a durabilidade, a eficiência e a manuseabilidade são um dos muitos fatores que determinam o diferencial qualitativo de um objeto. No entanto se torna um tanto fácil realizar a medição de qualidade em produtos físicos em comparação a produtos virtuais.
Assim como na construção civil a arquitetura também se faz presente no âmbito de desenvolvimento de software, todos os elementos precisam passar por algum tipo de planejamento (em muitos casos experimentos de tentativa e erro) antes mesmo de iniciar qualquer implementação. Alguns autores explicam a arquitetura de software utilizando a analogia com o esqueleto humano, esta é uma boa forma de introduzir o tema, pois como sabemos é o esqueleto que dá sustentação para todo o organismo. Entretanto, as questões arquiteturais de software vão além da sustentabilidade e permeiam outras áreas porém não restritas à usabilidade, portabilidade, escalabilidade, implantação e monitoramento. Como citado no texto sobre micro serviços, cada parte do software deverá ser desenvolvido de tal forma em que todos os elementos possuam uma única e concisa interface de entrada e saída, seja ele monolítico ou não, assim facilitará a manutenção do mesmo (algo que parece simples na teoria, mas possui altíssima complexidade na prática).
Uma boa prática no desenvolvimento de software é a construção de provas de conceito antes do produto final, as PoCs (do inglês Proof of Concept) são úteis para validar as funcionalidades principais de um futuro produto e não devem ser utilizadas para compor a solução final. É muito importante deixar claro para o cliente que as PoCs possuem papel fundamental para a preservação do investimento, também como um ótimo momento para a geração de novas idéias. As PoCs ajudam mensurar a qualidade do software, no qual embora possua escopo limitado, permite a análise de possíveis gargalos e geração das métricas e definição dos limites.
A usabilidade não limita-se ao usuário final, a criação de componentes de software de forma simples e concisa permite que o desenvolvedor integre diferentes componentes para a criação do todo, o reuso de componentes aumenta a confiabilidade do sistema e diminui os custos de implementação, por sua vez, elementos menores se tornam fáceis de serem testados e substituíveis de forma escalável. A analogia ao esqueleto ou a uma planta de uma casa embora serem didáticos podem não se encaixar em cenários onde a disponibilidade do software é prioridade, afinal, temos partes do esqueleto ou da casa que não podem ser removidas após desenvolvidos. O conceito de escalabilidade está ligado tanto à usabilidade, quanto à implantação, em sistemas onde a disponibilidade é um fator crucial, a facilidade de re-implantar uma nova instância dos serviços quando as falhas ocorrerem, assim como a distribuição, réplica e armazenamento dos dados serão pontos chave que definem a confiança e qualidade do software.
Na terceira edição do livro ‘Software Architecture in Practice’ dos autores Len Bass, Paul Clements e Rick Kazman são dedicados 12 capítulos sobre atributos de qualidade, nestes, os autores destacam a importância da documentação e gestão do projeto na qualidade do software e ressaltam que tais atributos são intrínsecos ao contexto, custo, tempo e objetivos. De forma extremamente resumida, uma das mais importantes mensagens que os autores passam em sua obra é que a responsabilidade com a qualidade de software permeia todas as áreas do projeto, desde testes, gestão, desenvolvimento e documentação, abrangendo não somente o conceito de portabilidade, mas também de usabilidade (seja para desenvolvedores ou usuários finais).
A responsabilidade de se criar software levando em consideração os principais atributos de qualidade é uma batalha constante no âmbito do desenvolvimento, a complexidade aplicada na prática é inversamente proporcional à teoria e está totalmente ligado ao sucesso e longevidade do investimento como todo, independente do escopo da aplicação é necessário ter em mente que neste contexto, a mudança é a única constante.
Por Yrineu Rodrigues, juazeirense, desenvolvedor de software. Atualmente morando em San Jose, CA
*Este texto é de inteira responsabilidade do autor e não reflete, necessariamente, a opinião do Revista Cariri