Descubra a importância da ética na engenharia de software. Como agir diante dos dilemas éticos no desenvolvimento de sistemas?
Tempo de Leitura: 8 minutos
Em um mundo onde a tecnologia permeia cada vez mais aspectos de nossa vida, a ética na engenharia de software emerge como um tema de extrema relevância. Desde a concepção até a operação dos sistemas, questões éticas moldam não apenas a qualidade dos produtos, mas também o impacto que têm sobre a sociedade.
Neste artigo, exploraremos a importância da ética no desenvolvimento de software, destacando sua influência nas decisões profissionais e os dilemas enfrentados pelos engenheiros. Prepare-se para uma reflexão profunda sobre como a ética molda o futuro da tecnologia. Continue a leitura!
Introdução: o que é ética?
Do grego ethos, a origem da palavra “ética” se refere ao conjunto de valores que orientam o comportamento. Em outra via, segundo a concepção aristotélica de ethos, o termo assume um significado voltado ao “modo de ser” e “caráter”. Dada a sua origem, a ética pode ser interpretada como uma ciência prática que estuda e trata dos comportamentos humanos sob o viés da razão filosófica.
Ela se responsabiliza pela reflexão das condutas humanas partindo da moral - o certo, e o errado. Somos seres políticos, como já afirmava Aristóteles há milhares de anos na Grécia Antiga. Portanto, nossas ações podem ser abordadas por perspectivas psicológicas, filosóficas e biológicas.
Dessa maneira, a ética permeia todas as nossas relações com outras pessoas e com o meio onde estamos inseridos. Ela investiga e pondera a essência dos valores morais, bem como as orientações que esses valores fazem sobre as nossas ações. Há vários sub ramos da ética como ciência filosófica, por exemplo: Ética racionalista, Ética Teológica ou Cristã, Ética Moderna, Ética Contemporânea, Ética Aristotélica, Ética Kantiana…
A ética está relacionada à moral e, comumente, as duas podem ser confundidas. Aqui vale a ressalva que a moral se originou do termo latim mores que se aproxima do significado de “costumes”. Sendo assim, a moral é um conjunto de regras estabelecidas em sociedade com base nos comportamentos tradicionais dessa sociedade em questão. Enquanto a ética é um raciocínio e compreensão dos fundamentos que formam a moral.
Uma vez incorporado à civilização, o desenvolvimento de software também está sujeito aos princípios éticos. No presente momento, o mundo como conhecemos não funciona sem software. Portanto, a engenharia de software é indispensável para o exercício do governo, da sociedade e das instituições de todo o planeta, sejam elas empresariais, acadêmicas, religiosas ou de outro tipo.
Isso ocorre porque os sistemas computacionais operam na infraestrutura das organizações e elas dependem disso. Até pequenos produtos eletrônicos possuem um software para permitir seu controle. Outro exemplo está no processo de produção e distribuição industriais que usam automações complexas para tornar os resultados cada vez mais eficientes.
Citando um tipo de sistema ainda mais crítico, podemos mencionar os softwares financeiros que movimentam milhões de dólares a cada hora. Caso não houvesse diretrizes éticas para controlar o desenvolvimento dessas aplicações, o quanto a economia e a sociedade seriam prejudicadas?
O Desenvolvimento Profissional de Software
Uma das dificuldades que a humanidade enfrenta em relação à ética no desenvolvimento de software se refere à sua característica de intangibilidade. Os sistemas são abstratos, ou seja, não possuem materialização física que obedeça às propriedades de matéria convencionais. Portanto, não há limites para o potencial de um software e isso permite que ele se torne muito complexo num piscar de olhos. Isso implica em uma dificuldade de entender, controlar e sustentar financeiramente essas aplicações.
Existem variados tipos de sistemas de softwares, desde pequenos sistemas embarcados como o de um microondas, até sistemas de informação complexos de amplitude mundial como os de navegação de aeronaves. Isso impede métodos ou técnicas universais a todo tipo de sistema porque diferentes tipos de software exigem procedimentos igualmente específicos.
O desenvolvimento de um jogo para XBox dispõe de um cenário totalmente distinto de um sistema de automação industrial. Há, por exemplo, um uso de gráficos muito mais intenso num jogo computacional do que no controle de robôs de produção em série. A engenharia de software se faz necessária em ambas circunstâncias, mas as técnicas, métodos e parâmetros de segurança variam. Segundo Ian Sommerville (2018), as muitas falhas de software são consequência de dois motivos principais:
- Complexidade progressiva dos sistemas: as demandas evoluem à medida que as novas técnicas permitem sistemas cada vez mais complexos e maiores Exigindo que eles sejam construídos e distribuídos rapidamente. E novos desafios exigem novas técnicas de engenharia de software para desenvolver sistemas ainda mais complexos, é um ciclo.
- Não utilização de métodos de engenharia de software: é muito simples e acessível começar a programar, mas controlar a evolução do software para obter sustentabilidade no futuro é algo que nem todos aprendem. Na ausência dos métodos de engenharia, cada progresso do software torna-o mais caro, difícil de entender e menos confiável.
Obviamente, ainda há problemas no desenvolvimento de sistemas complexos, mesmo adotando métodos de engenharia. Mas é um fato que, sem eles, seria impossível alcançar o patamar de complexidade que conquistamos. Estamos falando de um mundo sem internet ou sistemas de comunicação mundial.
Sendo a Engenharia de Software a disciplina de engenharia que trata dos aspectos de produção de software desde sua mais primitiva concepção até sua operação e manutenção, cabe a ela conduzir esses processos de maneira ética. O desenvolvimento e atuação dos sistemas estão intimamente introduzidos num arcabouço social e legal que limita a liberdade dos atuantes.
Não só os desenvolvedores de software, como todos os envolvidos na prestação de serviços relacionados a sistemas devem trabalhar de maneira ética e moralmente responsável para garantir a integridade de seus usuários, bem como a sua própria.
Princípios éticos no desenvolvimento de software
Os padrões básicos de honestidade e integridade se mantêm imutáveis no cenário de desenvolvimento de software. Afinal, existem comportamentos relacionados ao respeito, transparência e retidão que independem da área, como a boa-fé, humanidade, imparcialidade e veracidade. Para além desses princípios, a produção de software também demanda algumas outras extensões:
Confidencialidade:
Relativa ao sigilo das informações dos seus empregadores ou clientes, independente de um acordo formalmente assinado. É necessário que os dados estejam protegidos de terceiros que venham usá-los de forma fraudulenta.
Competência:
Deve-se apresentar um nível de competência que seja compatível com a realidade. Sendo assim, se faz necessária a honestidade de não aceitar trabalhos que estejam além da capacidade de desenvolvimento atual.
Direitos de propriedade intelectual:
Há leis que regem o uso da propriedade intelectual, como patentes e direitos autorais, que devem ser monitoradas pelos responsáveis do desenvolvimento de software a fim de garantir seu cumprimento.
Mau uso do computador:
As habilidades técnicas não devem ser usadas de má-fé para acessar indevidamente as máquinas de outras pessoas. Isso vale para eventos banais como jogar no computador de outro empregador até os cenários mais graves, como acessar sites indevidos, e disseminar vírus ou outros tipos de malwares, por exemplo.
Alguns princípios podem parecer óbvios, porém seu reforço é necessário uma vez que as infrações podem ocorrer por mera desatenção ou esquecimento deles. Além disso, é preciso se precaver às más condutas intencionais que serão identificadas de maneira mais rápida se os princípios estiverem bem fixados.
Organizações como ACM (Association for Computing Machinery), IEEE (Institute of Electrical and Electronic Engineers) e a British Computer Society são exemplos de instituições importantes no estabelecimento de padrões éticos. Inclusive, elas publicaram códigos de conduta ética e seus membros se comprometem a segui-lo quando se associam. Essas condutas profissionais abordam geralmente as diretrizes fundamentais da ética que devem ser adotadas como padrão de operação.
Em 1999, a ACM e IEEE produziram um código de ética e prática profissional cuja versão resumida conta com os oito princípios abaixo:
- Público: Os engenheiros de software devem agir coerentemente com o interesse público.
- Cliente e empregador: Os engenheiros de software devem agir de uma maneira que atenda aos interesses de seu cliente e empregador, coerente com o interesse público.
- Produto: Os engenheiros de software devem assegurar que seus produtos e modificações relacionadas cumpram o máximo possível os mais altos padrões profissionais.
- Opinião: Os engenheiros de software devem manter a integridade e independência em sua opinião profissional.
- Gestão: Os gestores e líderes em engenharia de software devem aceitar e promover uma abordagem ética do gerenciamento do desenvolvimento e manutenção do software.
- Profissão: Os engenheiros de software devem promover a integridade e a reputação da profissão em conformidade com o interesse público.
- Colegas: Os engenheiros de software devem ser justos e apoiar seus colegas.
- Caráter: Os engenheiros de software devem aderir a uma aprendizagem contínua durante toda a vida no que diz respeito à prática de sua profissão e promover uma abordagem ética para o exercício dela.
A versão resumida está disponível aqui.
Segundo esse código, os engenheiros de software têm o compromisso com a saúde, segurança e bem-estar do público e, por isso, devem seguir os princípios acima. Suas responsabilidades incluem analisar, projetar, especificar, desenvolver, testar e dar manutenção aos softwares de modo útil e respeitoso.
Dilemas éticos no desenvolvimento de software
As diferenças entre cada indivíduo nos proporcionam diferentes perspectivas para uma mesma situação, podendo causar dilemas éticos. Por exemplo, se os seus princípios contrariarem as políticas de colaboradores de maior escalão da empresa, qual deve ser a sua reação? Será melhor brigar pelo seu ponto de vista ou se demitir? Claramente, isso depende muito das pessoas envolvidas e da natureza das divergências.
Nesse contexto também surgem dúvidas sobre o momento ideal para revelar suspeitas ou problemas de softwares constatados. Se as suspeitas forem pouco fundamentadas ou muito antecipadas, podem ser vistas como exagero, por ora, se forem feitas muito tardiamente podem gerar problemas irreversíveis.
Os dilemas éticos estão presentes na vida profissional de todos os ramos de atuação. Na maioria das vezes, são pequenos ou médios e, portanto, de resolução mais simples. Mas em alguns casos, uma ação movida por princípios pode desencadear uma demissão e isso afeta mais do que um único colaborador, pois seus colegas de trabalho, amigos, familiares e dependentes podem sofrer por essas consequências.
Nesses casos, é necessário que a empresa tenha um padrão ético a seguir e que seus parceiros e colaboradores estejam cientes a fim de alimentar princípios compatíveis. Haverá discordâncias e elas são boas para nos questionarmos continuamente sobre a validade das nossas ações e corrigi-las à medida que for preciso. Tanto empregadores como funcionários necessitam de um ambiente seguro para expor suas opiniões uns aos outros antecipadamente às decisões de impacto ético visando prevenir tais dilemas.
Presuma que uma empresa esteja desenvolvendo um sistema crítico de segurança, porém falsificou os registros de validação da segurança devido à urgência da entrega. Nesse caso, o que o engenheiro de software deve fazer? Manter a confidencialidade do fato, alertar o cliente, ou tornar público de alguma maneira que o sistema pode não estar totalmente seguro?
Mesmo se tratando de safety, não há "verdades absolutas". Os critérios de validação predefinidos podem ter sido rigorosos demais e incompatíveis com a viabilidade do projeto, por exemplo. E apesar disso, o sistema pode operar com segurança durante toda a vida. Também há a possibilidade de que, quando validado da maneira correta, o sistema demonstre falhas de seguranças que provoquem prejuízo ao público. Se por um lado a revelação precoce pode resultar em danos a essa empresa, por outro a ocultação pode causar danos a terceiros.
Em vista deste tipo de situação, tenha suas próprias opiniões e embasamentos. Aqui, a conduta ética também depende da opinião das demais pessoas e setores envolvidos. Há três pontos principais a serem considerados na decisão: o potencial para danos, o grau do dano e as pessoas afetadas. Se o potencial do dano for muito perigoso, é justificável publicar os fatos, por exemplo.
Outra questão ética se refere ao desenvolvimento de sistemas militares e nucleares. Algumas pessoas possuem opiniões formadas a respeito de assuntos bélicos e políticos, preferindo não participar desse tipo de projeto. Outras trabalharão em sistemas militares de defesa, mas não de armamento. Ainda há os que acreditam que a segurança nacional seja prioridade e não apresentarão objeções éticas sobre trabalhar em sistemas de armamento.
Esse é um cenário onde os princípios pessoais do colaborador podem conflitar com os objetivos do software. Para contornar essa situação, ambas as partes devem apresentar transparência de interesses e valores antecipadamente para evitar futuros constrangimentos.
Conclusão
Ao passo que os sistemas intensivos de software permeiam todos os aspectos de trabalho, relações pessoais e cotidiano, a ética e responsabilidade profissional tornam-se cada vez mais requisitadas. Neste artigo, iniciamos com o conceito de ética e avançamos até a ética aplicada e os seus dilemas no desenvolvimento de software. A ética abstraída filosoficamente pode se tornar confusa para aplicar na experiência do dia a dia.
Portanto, os códigos de ética e conduta construídos por instituições profissionais podem ser uma linha mais clara para orientar o seu desenvolvimento. Aqui, o estudo desses códigos, o benchmarking com outras empresas e a troca de experiências profissionais podem ter grande valor. Lembre-se que os métodos de engenharia de software e os códigos de ética existem para dar a estrutura necessária para grandes sistemas.
Esse embasamento funciona como a fundação de um prédio que precisa se firmar a muitos metros abaixo do solo para garantir segurança e crescimento.
O que achou deste conteúdo?
Te convido a deixar seu comentário e também a participar da nossa comunidade, basta clicar no botão abaixo: