Código de Ética e Prática Profissional do
Engenheiro de Software
Preparado para:
Instituto de Informática - Universidade Federal de Goiás (UFG) Preparado por:
Fábio Nogueira de Lucena, Auri Marcelo Rizzo Vincenzi, Juliano Lopes de Oliveira e Plínio de Sá Leitão Júnior Financiado parcialmente por:
FAPEG Edital 01/2007 via projeto Engenharia de Software via TV Digital 2 de março de 2009
IMPORTANTE
Em Software Engineering Code of Ethics and Professional Practice, disponível em http://www.acm.org/about/se-code, é apresentado o Código de Ética do Engenheiro de Software, também adotado no presente curso. Este Código foi desenvolvido pela ACM/IEEE-CS. O comitê executivo desta força conjunta inclui: Donald Gotterbarn (presidente), Keith Miller e Simon Rogerson. Os membros incluem Steve Barber e Peter Barnes, entre vários outros aqui não mencionados. A publicação do Código é autorizada sem permissão, desde que não seja alterado em nenhuma forma e seja acompanhada dos direitos autorais (fornecidos abaixo em destaque):
Copyright (c) 1999 by the Association for Computing Machinery, Inc. and the Institute for Electrical and Electronics Engineers, Inc.
O restante deste documento contém uma tradução livre deste código de ética.
Este documento encontra-se disponível em http://engenhariadesoftware.inf.br. Você pode copiar, criar obras derivadas e outras, mas deve citar esta fonte e seus autores (detalhes em http://creativecommons.org/licenses/by-sa/2.5/br/).
Código de Ética e Prática Profissional do Engenheiro de Software
Computadores desempenham um papel central e crescente no comércio, indústria, governo, medicina, educação, entretenimento e sociedade como um todo. Engenheiros de Software são aqueles que por participação direta ou por meio do ensino, contribuem com análise, especificação, projeto, desenvolvimento, certificação, manutenção e teste de sistemas de software. Em decorrência dos papéis por eles desempenhados no desenvolvimento de sistemas de software, tais profissionais têm oportunidades significativas para fazer o bem ou causar o mal, permitir que outros façam o bem ou causem danos, ou influenciar outros a fazer o bem ou causar danos. Para assegurar, tanto quanto possível, o uso dos esforços dos profissionais da Engenharia de Software para o bem, tais profissionais devem se comprometer, com eles próprios, a tornar a Engenharia de Software um profissão benéfica e respeitada. Em acordo com este comprometimento, engenheiros de software devem aderir ao seguinte Código de Ética e Prática Profissional do Engenheiro de Software. O Código contém oito Princípios relacionados ao comportamento e decisões feitas por engenheiros de software profissionais, incluindo praticantes, educadores, gerentes, supervisores e aqueles responsáveis pela definição de políticas, assim como trainees e estudantes da profissão. Os Princípios identificam os relacionamentos de responsabilidade ética nos quais indivíduos, grupos e organizações participam e as principais obrigações com estes relacionamentos. As Cláusulas de cada Princípio são ilustrações de algumas das obrigações incluídas nestes relacionamentos. Tais obrigações estão fundamentadas na humanidade do engenheiro de software, em particular no cuidado devido a pessoas afetadas pelo trabalho de engenheiros de software, e nos elementos peculiares à prática da engenharia de software. O Código prescreve tudo isto como obrigações de qualquer um que se diga ou aspire ser um engenheiro de software.
Partes do Código não podem ser usadas isoladamente para justificar erros de omissão ou dever. A lista de Princípios e Cláusulas não é exaustiva. As Cláusulas não devem ser interpretadas como a separação do aceitável do que não é aceitável na conduta profissional em todas as situações práticas. O Código não é um algoritmo ético simples que gera decisões éticas. Em algumas situações os padrões podem estar em tensão uns com outros ou com padrões de outras fontes. Estas situações exigem do engenheiro de software um julgamento ético para agir de forma mais consistente com o espírito do Código de Ética e Prática Profissional, dadas as circunstâncias.
Tensões éticas são melhor resolvidas por consideração extensiva dos princípios fundamentais, em vez de posições restritas contidas em regulamentos detalhados. Estes princípios devem influenciar engenheiros de software a considerar amplamente o que é afetado pelo seu trabalho; a examinar se eles e seus colegas estão tratando os seres humanos com o devido respeito; a considerar como o público, se razoavelmente bem informado, interpretaria suas decisões; a analisar como os mais fracos serão afetados pelas suas decisões; e a considerar se seus atos seriam julgados dignos quanto ao trabalho profissional idealizado para o engenheiro de software. Em todos estes julgamentos a preocupação principal deve ser a saúde, a segurança e o bem-estar do público; ou seja, o “Interesse público” é central para o Código.
O contexto dinâmico e exigente da engenharia de software demanda um código que é adaptável e relevante para novas situações à medida que ocorrerem. Entretanto, mesmo com essa diretriz geral, o Código fornece suporte a engenheiros de software e gerentes de engenheiros de software que necessitam tomar ações positivas em caso específico por meio da documentação do posicionamento ético da profissão. O Código fornece uma fundação ética na qual indivíduos em equipes e a equipe como um todo pode apelar. O Código ajuda a definir aquelas ações que são eticamente impróprias para serem exigidas de um engenheiro de software ou de equipes de engenheiros de software.
O Código não é um instrumento formal para simplesmente julgar a natureza de atos questionáveis; há também uma função educativa importante. Dado que o Código expressa o consenso da profissão em questões éticas, ele também é um meio de educar tanto o público quanto aspirantes a profissionais acerca das obrigações éticas de todos os engenheiros de software.
Princípio 1: Público
Engenheiros de software devem agir consistentemente com o interesse público. Eles devem, quando apropriado: 1. Aceitar completa responsabilidade pelo seu próprio trabalho.
2. Moderar os interesses do engenheiro de software, do empregador, do cliente e usuários com o bem público.
3. Aprovar software apenas se eles possuem crença bem-fundada de que o mesmo é seguro, atende especificações, passa nos testes apropriados e não diminui a qualidade de vida, não diminui a privacidade ou causa dano ao meio ambiente. As últimas consequências do trabalho devem ser para o bem público.
4. Apresentar a pessoas apropriadas ou autoridades qualquer perigo real ou potencial para o usuário, o público, ou o meio ambiente, no qual eles razoavelmente acreditam estar associados com software ou documentos relacionados. 5. Cooperar para solucionar sérias preocupações públicas causadas por software, sua instalação, manutenção, suporte
ou documentação.
6. Ser razoável e evitar formar opinião, em qualquer que seja a declaração, especialmente aquelas públicas, pertinentes a software ou documentos correlatos, métodos e ferramentas.
7. Considerar pessoas com dificuldades físicas, alocação de recursos, desvantagem econômica ou outros fatores que possam diminuir o acesso aos benefícios de software.
8. Ser encorajado a voluntariamente exercer habilidades profissionais para causas boas e contribuir para a educação pública pertinente à Engenharia de Software.
Princípio 2: Cliente e Empregador
Engenheiros de software devem decidir e agir de forma compatível com o que é melhor para os interesses dos seus clientes e empregadores, além de consistente com o interesse público. Em particular, eles devem, quando apropriado:
1. Fornecer serviço em suas áreas de competência, sendo honesto e franco acerca de qualquer limitação de suas experiências e educação.
2. Não usar deliberadamente software que é obtido ou retido ilegalmente ou de forma não ética.
3. Usar a propriedade de um cliente ou empregador apenas nas formas autorizadas, e com o conhecimento e consentimento do cliente ou empregador.
4. Assegurar que qualquer documento sobre o qual tomem como referência foi aprovado, quando exigido, por alguém autorizado a aprová-lo.
5. Manter privada e confidencial a informação obtida no desempenho de trabalho profissional, onde tal confidencialidade é consistente com o interesse público e consistente com a lei.
6. Identificar, documentar, coletar evidências e relatar prontamente ao cliente ou ao empregador se, em sua opinião, um projeto provavelmente irá falhar, mostrar-se muito oneroso, ou violar lei de propriedade intelectual, ou ser problemático de alguma outra forma.
7. Identificar, documentar e relatar questão relevante de interesse social do qual tornou-se ciente, pertinente a software ou documento relacionado, para o empregador ou cliente.
8. Não aceitar nenhum trabalho fora em detrimento do trabalho que realizada para seu empregador principal.
9. Não promover nenhum interesse adverso ao seu empregador ou cliente, exceto em caso de questão ética que está sendo comprometida; e neste caso, informar o empregador ou outra autoridade apropriada acerca da questão ética.
Princípio 3: Produto
Engenheiros de software devem assegurar que seus produtos e modificações relacionadas atendem os mais altos padrões profissionais possíveis. Em particular, engenheiros de software devem, quando apropriado:
1. Se esforçar para atingir alta qualidade, custo aceitável e cronograma razoável, assegurando que compromissos sejam claros e aceitos pelo empregador e pelo cliente, e estão disponíveis para consideração pelo usuário e o público. 2. Assegurar metas e objetivos adequados e exequíveis para qualquer projeto no qual eles trabalhem ou proponham. 3. Identificar, definir e tratar questões éticas, econômicas, culturais, legais e de meio-ambiente relacionadas a projetos do
trabalho.
4. Assegurar que estão qualificados para qualquer projeto no qual eles trabalhem ou proponham trabalhar por uma combinação adequada de educação, treinamento e experiência.
5. Assegurar que um método apropriado é usado para qualquer projeto no qual ele trabalhe ou se proponha a trabalhar. 6. Seguir padrões profissionais, quando disponíveis, que são mais apropriados para a tarefa em questão, desviando-se
desta abordagem apenas quando eticamente ou tecnicamente justificado.
7. Esforçar-se para compreender completamente especificações de software com as quais venha trabalhar.
8. Assegurar que especificações de software nas quais eles trabalhem são bem documentadas, satisfazem os requisitos dos usuários e têm as aprovações apropriadas.
9. Assegurar que estimativas quantitativas de custo, cronograma, pessoal, qualidade e resultados de qualquer projeto no qual eles trabalhem ou proponham trabalhar sejam realísticas e que avaliem as incertezas destas estimativas.
10. Assegurar que testes, depuração e revisão do software e documentos relacionados, sobre os quais eles trabalham, sejam executados de forma adequada.
11. Assegurar documentação adequada, incluindo problemas significativos descobertos e soluções adotadas, para qualquer projeto nos quais eles trabalhem.
12. Trabalhar para desenvolver software e documentos correlatos que respeitam a privacidade daqueles que serão afetados pelo software.
13. Ser cuidadoso ao usar somente dados precisos obtidos por meios éticos e em conformidade com leis, e usá-los apenas da forma autorizada.
14. Manter a integridade dos dados e a atenção às ocorrências desatualizadas ou com erros.
15. Tratar todas as formas de manutenção de software com o mesmo profissionalismo de um novo desenvolvimento.
Princípio 4: Julgamento
Engenheiros de software devem manter a integridade e a independência em seu julgamento profissional. Em particular, engenheiros de software devem, quando apropriado:
1. Basear todo julgamento técnico pela necessidade de oferecer suporte a valores humanos e mantê-los.
2. Apenas endoçar documentos preparados sob sua supervisão ou em sua área de competência e na qual eles estão de acordo.
3. Manter objetividade profissional em relação a qualquer software ou documentos relacionados que eles estão avaliando. 4. Não participar de práticas financeiras como propinas ou similares.
5. Relatar a todas as partes interessadas os conflitos de interesse que podem ser razoavelmente evitados.
6. Recusar a participar, como membro ou conselheiro, em equipe privada, governamental ou profissional interessada em questões relacionadas a software nas quais eles, seus empregados ou clientes possuem conflitos de interesse velados.
Princípio 5: Gerência
Gerentes e líderes devem subscrever e promover uma abordagem ética para a gerência de desenvolvimento e manutenção de software. Em particular, aqueles gerenciando ou liderando engenheiros de software devem, quando apropriado:
1. Assegurar boa gerência para qualquer projeto no qual eles trabalhem, incluindo procedimentos efetivos para a promoção da qualidade e redução de risco.
2. Assegurar que engenheiros de software são informados de padrões antes de serem cobrados por eles.
3. Assegurar que engenheiros de software conhecem as políticas e procedimentos do empregador para proteger senhas, arquivos e informações que são confidenciais para o empregador ou confidenciais para outros.
4. Atribuir trabalho apenas após levar em consideração contribuições apropriadas de educação e experiência balanceadas com o desejo de estender esta educação e experiência.
5. Assegurar que estimativas quantitativas e realísticas de custo, cronograma, pessoal, qualidade e produtos de qualquer projeto nos quais eles trabalhem ou proponham trabalhar, e fornecer uma avaliação de incerteza destas estimativas. 6. Atrair potenciais engenheiros de software somente pela descrição completa e precisa das condições de emprego. 7. Oferecer remuneração razoável e justa.
8. Não evitar indevidamente a ocupação de cargo por pessoa que esteja adequadamente qualificada.
9. Assegurar que há um acordo razoável pertinente à propriedade de qualquer software, processo, pesquisa, escrito ou outra propriedade intelectual na qual o engenheiro de software contribua.
10. Fornecer tratamento justo em processos ao ouvir acusações de violação da política do empregador ou deste Código. 11. Não requisitar a um engenheiro de software a execução de tarefa ou qualquer coisa inconsistente com este Código. 12. Não punir ninguém por expressar preocupações éticas acerca de um projeto.
Princípio 6: Profissão
Engenheiros de software devem avançar na integridade e reputação da profissão consistente com o interesse público. Em particular, engenheiros de software devem, quando apropriado:
1. Ajudar a desenvolver um ambiente organizacional favorável a ações éticas. 2. Promover o conhecimento público da engenharia de software.
3. Estender o conhecimento da engenharia de software pela participação em organizações profissionais, encontros e publicações.
4. Oferecer suporte, como membros de profissão, a outros engenheiros de software em situações nas quais o presente Código deve ser seguido.
5. Não promover seus próprios interesses em detrimento da profissão, cliente ou empregador.
6. Obedecer todas as leis que regulam seu trabalho, a menos em situações excepcionais, nas quais a conformidade é inconsistente com o interesse público.
7. Ser preciso ao estabelecer características de um software no qual eles trabalhem, evitando não apenas afirmações falsas mas também afirmações que podem ser razoavelmente especulativas, inócuas, enganosas ou dúbias.
8. Assumir responsabilidade por detectar, corrigir e relatar erros em software e documentos associados nos quais eles trabalham.
9. Assegurar que clientes, empregadores e supervisores conhecem os compromissos do engenheiro de software com este Código de ética, e as subsequentes ramificações de tal comprometimento.
10. Evitar associações com negócios e organizações que estejam em conflito com este código.
11. Reconhecer que violações deste Código são inconsistentes com ser um profissional da engenharia de software. 12. Expressar preocupações às pessoas envolvidas quando violações significativas deste Código são detectadas, exceto
se for impossível, contra-produtivo ou perigoso.
13. Relatar violações significativas deste Código às autoridades apropriadas quando é claro que a consulta às pessoas envolvidas nestas violações significativas é impossível, contra-produtivo ou perigoso.
Princípio 7: Colegas
Engenheiros de software devem ser razoáveis com os seus colegas e também apoiá-los. Em particular, engenheiros de software devem, quando apropriado:
1. Encorajar colegas a aderirem a este Código. 2. Assistir colegas no desenvolvimento profissional.
3. Dar o crédito completo ao trabalho de outros e negar crédito indevido.
4. Revisar o trabalho de outros de forma objetiva, cândida e de forma documentada apropriadamente. 5. Ouvir as opiniões, preocupações ou reclamações de um colega.
6. Assistir colegas ao tomar conhecimento das práticas de trabalho padrão incluindo políticas e procedimentos para proteção de senhas, arquivos e outras informações confidenciais, e medidas de segurança em geral.
7. Não intervir indevidamente na carreira de qualquer colega; contudo, preocupação com o empregador, o cliente ou o interesse público pode exigir que engenheiros de software, em boa fé, questionem a competência de um colega. 8. Em situações fora de suas áreas de competência, obter opiniões de outros profissionais que têm competência na área.
Princípio 8: O próprio engenheiro de software
Engenheiros de software devem participar de prática continuada de aprendizado da sua profissão e devem promover uma abordagem ética para a prática da profissão. Em particular, engenheiros de software devem continuamente procurar por: 1. Estender seu conhecimento de desenvolvimentos em análise, especificação, projeto, desenvolvimento, manutenção e
teste de software e documentos relacionados, juntamente com a gerência do processo de desenvolvimento.
2. Melhorar suas habilidades ao criar software de qualidade, seguro, confiável e útil, a um custo razoável e dentro de tempo razoável.
3. Melhorar sua habilidade ao produzir documentação precisa, informativa e bem escrita.
4. Melhorar sua compreensão de software e documentos relacionados nos quais trabalha e do ambiente no qual eles serão empregados.
5. Melhorar o conhecimento de padrões relevantes e de leis que regulam software e documentos relacionados nos quais ele trabalha.
6. Melhorar o conhecimento deste Código, sua interpretação, e sua aplicação ao seu trabalho. 7. Não dar tratamento injusto a qualquer pessoa em decorrência de preconceito irrelevante. 8. Não influenciar outros a executar qualquer ação que envolva quebra deste Código.