Qualidade e Ética em Engenharia de Software

Explore a qualidade e a ética em engenharia de software. Entenda seu impacto, evolução e desafios. Otimize seus conhecimentos sobre ES agora!

A Engenharia de Software (ES) é uma disciplina fundamental que abrange todos os aspectos da produção de software, buscando garantir a qualidade e a eficiência em seu desenvolvimento e entrega. Neste artigo, exploraremos a importância da qualidade, as particularidades do software e o papel crucial da ética na engenharia de software, proporcionando uma compreensão profunda para estudantes e profissionais.

O que é a Engenharia de Software e por que é Vital para a Qualidade?

A engenharia de software é um ramo da engenharia que se concentra em métodos práticos para desenvolver, entregar e manter software de alta qualidade. Sua meta principal é a busca constante pela qualidade, aplicando técnicas que melhorem o produto final. Atualmente, quase todas as nações dependem de sistemas informáticos, e a produção de software confiável e com bom custo-benefício é essencial para o funcionamento da economia global.

A noção de engenharia de software surgiu em 1968 durante a chamada “crise do software”. Essa crise se deu devido à introdução de novos computadores com hardware baseado em circuitos integrados, o que permitiu aplicações maiores e mais complexas. No entanto, a abordagem informal de desenvolvimento da época resultava em projetos com anos de atraso, sobrecustos, dificuldades de manutenção e resultados insatisfatórios. Tornou-se evidente a necessidade de novas técnicas e métodos para gerenciar essa complexidade crescente.

A Evolução da Engenharia de Software

Nos últimos 15 anos, a ES tem se desenvolvido significativamente, criando e implementando métodos, procedimentos, técnicas e ferramentas. Estes buscam atender às necessidades de cada etapa do ciclo de vida de um produto de software, desde a definição de requisitos até sua manutenção. O objetivo é aumentar a produtividade da programação enquanto se melhora e garante simultaneamente a qualidade do produto resultante.

O Software: Além de um Simples Programa

O software não é apenas um programa de computador; inclui também toda a documentação associada. Os produtos de software podem ser desenvolvidos para um cliente específico ou para um mercado geral.

Tipos de Produtos de Software

Existem duas categorias principais de produtos de software:

  • Produtos genéricos: São sistemas produzidos por uma organização de desenvolvimento e vendidos no mercado aberto a qualquer cliente. Exemplos incluem software para celulares, bancos de dados, processadores de texto e ferramentas de gestão de projetos.
  • Produtos personalizados: São sistemas requisitados por um cliente particular, desenvolvidos especificamente para suas necessidades. Exemplos são sistemas de controle de componentes eletrônicos, sistemas para processos de negócios específicos ou sistemas de controle de tráfego aéreo.

A distinção entre esses tipos tem se tornado cada vez mais difusa. Muitas empresas de software iniciam com um produto genérico e o adaptam às necessidades de clientes específicos, como é o caso dos sistemas de planejamento de recursos empresariais (ERP) como o SAP.

Histórico e Definições de Qualidade no Contexto da Engenharia de Software

A busca pela perfeição e o trabalho bem-feito têm sido constantes ao longo da história, resultando no conceito de qualidade. A qualidade, em essência, busca a satisfação do cliente, a competitividade e a melhoria contínua.

Cronologia da Qualidade

O conceito de qualidade evoluiu através de várias etapas chave:

  • Artesanato: Fazer as coisas bem, sem se importar com o custo ou o esforço, buscando a auto-satisfação e um produto único.
  • Revolução Industrial: Produção em série, focada em fazer muitas coisas rapidamente para satisfazer a demanda, sem priorizar a qualidade individual.
  • Segunda Guerra Mundial: Ênfase em garantir a eficácia na produção de armamentos, assegurando disponibilidade e prazos, sem se importar com o custo.
  • Pós-guerra (Japão): Fazer as coisas bem desde a primeira vez, minimizando custos através da qualidade, satisfazendo o cliente.
  • Pós-guerra (Resto): Produzir o máximo possível para satisfazer a grande demanda de bens, buscando ser competitivo.
  • Controle de Qualidade: Inspeção na produção para evitar produtos defeituosos, satisfazendo necessidades técnicas.
  • Garantia da Qualidade: Implementação de sistemas e procedimentos para prevenir erros e reduzir custos, satisfazendo o cliente.
  • Qualidade Total: Administração empresarial centrada na satisfação permanente das expectativas de todos os grupos humanos relacionados com a empresa.

Definições Chave de Qualidade

Grandes figuras e entidades definiram a qualidade de diversas maneiras:

  • Feigenbaum, Deming e Juran: "Conjunto de esforços eficazes... para a integração do desenvolvimento, da manutenção e da superação da qualidade de um produto... para a satisfação completa do consumidor e ao nível mais econômico."
  • Dr. Kaoru Ishikawa: "A melhor qualidade que uma empresa pode produzir com sua tecnologia de produção e capacidades de processo atuais, e que satisfará as necessidades dos clientes, em função de fatores como o custo e o uso pretendido."
  • Consultoria Arthur Andersen: "A gestão da qualidade na empresa é o processo de identificar, aceitar, satisfazer e superar constantemente as expectativas e necessidades de todos os grupos humanos relacionados a ela."

Dessas definições, depreende-se a necessidade de planejar a qualidade (projeto), produzi-la (fabricação) e vendê-la (satisfação do cliente).

Qualidade do Software: Desafios e Particularidades

A qualidade no software deve diferenciar-se entre a qualidade do produto e a qualidade do processo de desenvolvimento. Um bom processo de desenvolvimento é quase indispensável para obter um produto de qualidade. No entanto, o software apresenta características únicas que o distinguem de outros produtos industriais:

  • É um produto mental: É desenvolvido, não fabricado no sentido tradicional.
  • Os custos de desenvolvimento concentram-se em tarefas de engenharia.
  • É uma disciplina jovem: As técnicas ainda não estão completamente aperfeiçoadas.
  • O software com erros não é rejeitado automaticamente, mas sim busca-se sua correção e melhoria contínua.
  • Não se deteriora com o tempo como o hardware, mas sofre de obsolescência funcional.
  • É enganosamente fácil realizar alterações em um produto de software, o que pode levar a problemas se não for bem gerenciado.
  • A manutenção do software é mais complexa que a do hardware.

É crucial considerar a qualidade em todas as fases de evolução do software (especificações, projeto, códigos), não apenas no final, quando corrigir problemas pode ser muito custoso.

Problemática da Qualidade na Engenharia de Software

A engenharia de software enfrenta diversos desafios em sua busca por qualidade:

  • Aumento constante do tamanho e complexidade dos programas.
  • Caráter dinâmico e iterativo do software ao longo de seu ciclo de vida.
  • Dificuldade de conseguir produtos totalmente depurados e perfeitos.
  • Elevados recursos monetários dedicados à manutenção devido à complexidade e falta de padronização.
  • Frequentes atrasos nos prazos e sobrecustos orçamentários.
  • Aumentos constantes nos custos de desenvolvimento devido a baixos níveis de produtividade.
  • Alta dependência dos clientes em relação aos seus fornecedores, especialmente em aplicações sob medida.
  • Processos de produção artesanais com escassez de ferramentas adequadas.
  • Procedimentos padronizados insuficientes para avaliar produtividade, custos e qualidade.

Esses problemas são agravados pela ausência de especificações completas, falta de aplicação sistemática de métodos e normas de engenharia de software, escassez de ambientes de programação integrados, pouco uso de técnicas de gestão de projetos automatizadas e a escassez de pessoal com formação e experiência adequada.

Modelos e Padronização para a Qualidade do Software

A padronização é um processo essencial para elaborar guias, normas e convenções em uma matéria, buscando definir, simplificar e especificar atividades. Na ES, as normas são um desafio, mas também um meio fundamental para transferir métodos e técnicas para a indústria, maximizando a comunicação entre profissionais.

O Papel das Normas IEEE na Qualidade

Organismos como o IEEE ditam normas para o desenvolvimento de software. O processo de criação de uma norma IEEE é rigoroso:

  1. Sugestão: Qualquer membro pode sugerir uma ideia ao Comitê de Normas de ES.
  2. Pedido de Autorização de Projeto (PAP): Define-se o objetivo, escopo e descrição do projeto, coordenando com o ANSI (American National Standard Institute).
  3. Desenvolvimento: Um grupo de trabalho se encarrega de desenvolver a norma, com participação aberta a todos os interessados.
  4. Revisão e Votação: O rascunho (draft) passa por várias revisões e um processo de votação. Pelo menos 75% dos membros do grupo de votação (cerca de 100 especialistas) devem votar positivamente. O tempo médio para aprovar uma norma é de três anos.
  5. Divulgação: Uma vez aprovada, a norma é divulgada através de seminários.
  6. Uso e Revisão: As empresas ou organismos a utilizam e fornecem feedback. A norma é avaliada a cada cinco anos para decidir se é mantida, modificada ou eliminada.

Essas normas são cruciais para assegurar a produção de software de qualidade, reduzir custos e aumentar a produtividade ao melhorar a comunicação entre os profissionais.

Modelos de Qualidade do Software de Gestão

Os modelos de qualidade definem a qualidade de forma hierárquica, avaliando-a através de indicadores ou métricas. Esses modelos se estruturam em:

  • Fatores de Qualidade: Nível mais alto, definidos a partir da perspectiva do usuário (atributos de qualidade externos).
  • Critérios de Qualidade: Decomposição dos fatores, são atributos técnicos do produto (atributos de qualidade internos).
  • Métricas: Medidas quantitativas de características do produto que indicam o grau de um atributo de qualidade.

Através de um modelo de qualidade, pode-se definir, medir e planejar a qualidade, compreendendo as relações entre as diferentes características do software. Apesar de seus benefícios, ainda não foi demonstrada a validade absoluta de nenhum desses modelos.

Código de Ética na Engenharia de Software

Dado o papel central e crescente dos computadores em todas as atividades da sociedade, os engenheiros de software têm uma grande responsabilidade. Suas ações podem gerar grandes benefícios ou causar danos significativos. Para assegurar um correto desempenho, a ACM e a IEEE redigiram um código de ética para a profissão.

Este código estabelece oito princípios básicos que devem reger a conduta dos engenheiros de software:

  1. Público: Agir em consonância com o interesse público.
  2. Cliente e Empregador: Responder aos interesses de clientes e empregadores, sendo coerentes com o interesse público.
  3. Produto: Assegurar que os produtos e suas modificações cumpram com os mais altos padrões profissionais possíveis.
  4. Julgamento: Manter a integridade e independência dos julgamentos profissionais.
  5. Gestão: Subscrever e promover uma abordagem ética na gestão do desenvolvimento e manutenção do software.
  6. Profissão: Manter a integridade e reputação da profissão de acordo com o interesse público.
  7. Colegas: Ser imparcial e apoiar os colegas.
  8. Pessoal: Aprender continuamente sobre a prática da profissão e promover uma abordagem ética.

Esses princípios são fundamentais para garantir que a engenharia de software seja uma disciplina de benefício e respeito para a sociedade.

Perguntas Frequentes sobre Qualidade e Ética em Engenharia de Software

Por que a qualidade é importante no desenvolvimento de software?

A qualidade no desenvolvimento de software é crucial porque garante que os programas funcionem corretamente, sejam confiáveis, fáceis de manter e satisfaçam as necessidades do usuário. Sem qualidade, os projetos podem sofrer atrasos, sobrecustos e um baixo desempenho, afetando a economia e a confiança nos sistemas informáticos.

Quais são as diferenças chave entre produtos de software genéricos e personalizados?

Os produtos genéricos são desenvolvidos para um mercado amplo e vendidos a múltiplos clientes, enquanto os personalizados são criados especificamente para as necessidades de um único cliente. A especificação dos genéricos é controlada pela organização desenvolvedora, enquanto nos personalizados, o desenvolvedor trabalha com a especificação do cliente. No entanto, essa distinção está se tornando difusa, com muitas empresas adaptando produtos genéricos para clientes específicos.

Como a padronização influencia a qualidade do software?

A padronização, através da criação de guias e convenções (como as do IEEE), melhora a qualidade do software ao padronizar métodos, técnicas e procedimentos. Facilita a comunicação entre profissionais, reduz custos, aumenta a produtividade e assegura que os produtos cumpram com altos padrões de confiabilidade e consistência. As normas buscam homogeneizar os planos de garantia de qualidade e gestão da configuração.

O que é a “crise do software” e como ela levou ao surgimento da engenharia de software?

A “crise do software” foi um período em 1968 onde o rápido avanço do hardware permitiu criar aplicações muito maiores e mais complexas. No entanto, as abordagens informais de desenvolvimento de software não conseguiam lidar com essa complexidade, resultando em projetos com atrasos, sobrecustos e baixa qualidade. Essa crise tornou evidente a necessidade de uma disciplina formal, a engenharia de software, para aplicar métodos e técnicas estruturadas ao desenvolvimento de software.

Quais são os princípios éticos fundamentais para um engenheiro de software?

Os princípios éticos fundamentais, segundo o código ACM e IEEE, incluem agir no interesse público, responder aos interesses de clientes e empregadores (coerente com o interesse público), assegurar produtos de alta qualidade, manter a independência de julgamento, promover a ética na gestão, preservar a integridade da profissão, apoiar colegas e buscar o aprendizado contínuo e a promoção de uma abordagem ética pessoal. Esses guiam o engenheiro para agir corretamente e evitar danos em um campo de grande influência social.

Temas relacionados