Ética em Computação Selma Shin Shimizu Melnikoff Escola Politécnica da USP Setembro de 2004 Situação Atual Sistemas de computação cada vez mais presentes na sociedade Necessidade de postura ética em relação à computação: Profissionais de computação Usuários e Clientes Ser Humano Ética Ética aplicada: relacionada com a conduta diária de uma pessoa Ética Profissional: relacionada com a conduta de pessoa engajada na prática de uma profissão particular Ética em computação: abrange os dois aspectos Profissional em computação Usuário da computação Principais Pontos de Discussão Desenvolvimento de sistemas Automação de decisões Violação da informação Internet Sistemas críticos Desenvolvimento de Sistemas Responsabilidade perante cliente Garantir produto adequado ao cliente Participação do cliente Definir produto adequado para o seu uso Produtos com qualidade Realizar avaliação durante o desenvolvimento Redução de riscos no desenvolvimento Proporcionar condições para sucesso do desenvolvimento Automação de Decisões Nível de automação de um sistema Garantir melhor distribuição das tarefas entre o usuário e o computador Informação para apoio à decisão Garantir conteúdo correto para tomada de decisão pelo usuário Violação da informação Acesso aos dados armazenados Garantir e respeitar os níveis de confidencialidade dos dados Violação da comunicação Garantir e respeitar a segurança da comunicação Danos ao sistema computacional (vírus) Garantir a proteção contra ações de virus Não danificar o sistema computacional Internet Conteúdos de sites Garantir a veracidade e qualidade da informação Comércio eletrônico Garantir a integridade das transações Garantir a existência de regras definidas Sistemas Críticos Sistemas críticos Sistemas cujas falhas podem causar morte, grande prejuízo e graves danos ao ambiente Sistemas de controle de aeronave, equipamentos médicos, controle de plantas químicas Necessitam de técnicas de desenvolvimento e de avaliação que garantam que o produto é seguro Disciplinas de Suporte Necessidade leva a Automação Para ter um bom sistema Engenharia de Requisitos Software é parte significativa Engenharia de Software Para ter bom produto Qualidade de Software Automação Necessidade leva a Automação Para ter um bom sistema Engenharia de Requisitos Software é parte significativa Engenharia de Software Para ter bom produto Qualidade de Software Motivação para Automação Aumento da concorrência com a globalização Escassez de energia Encarecimento das matérias primas Pressões sociais: proteção ambiental e condições de trabalho Desenvolvimento da tecnologia Benefícios da Automação Qualidade assegurada dentro de limites estabelecidos Redução de custos através de: Racionalização de trabalho Eficiência no processo Uniformidade da qualidade dos produtos e serviços Redução de tempo na manutenção Benefícios da Automação Flexibilidade para adaptação a novos produtos ou serviços Melhor conhecimento do processo, através da coleta dos dados e dos estados Melhor conhecimento do equipamentos do processo para a obtenção de melhor desempenho Exemplo Sistema de Supervisão e Controle Controlador da Sala de Controle Movimentação de trem Grau de Automação Está relacionado com a transferência de responsabilidade do homem para o Sistema de Automação. Transferência obrigatória: segurança ou precisão exigidas são incompatíveis com a habilidade humana. Desligamento da caldeira em emergência Transferência planejada: as tarefas podem ser realizadas pelo homem, mas o Sistema de Automação aumenta a produtividade. Operação da caldeira Engenharia de Requisitos Necessidade leva a Automação Para ter um bom sistema Engenharia de Requisitos Software é parte significativa Engenharia de Software Para ter bom produto Qualidade de Software O que são requisitos? Serviços e funções fornecidos pelo sistema Restrições para a operação do sistema Características do sistema Desempenho Facilidade de uso por leigos, etc. Interface com outros sistemas Informações sobre o domínio de aplicação Restrições sobre o desenvolvimento plataforma computacional parte legal, etc. Problemas Comuns Falta de participação dos envolvidos no desenvolvimento do sistema. Necessidades do negócio não são consideradas. Falta de gerência na alteração de requisitos. Falta de responsabilidades definidas. Conseqüências Sistema não reflete as necessidades reais dos clientes. Sistema é inconsistente ou incompleto. Ocorre entendimento errôneo entre cliente, gerente de projeto e engenheiro de software. É dispendioso mudar os requisitos após um acordo. Mais Conseqüências O sistema pode ser liberado após o prazo previsto, com custo maior. O cliente e os usuários não ficam satisfeitos com o sistema. Os usuários não usam todos os recursos do sistema. E mais ainda... O sistema pode ser descartado, após uso parcial. O sistema não é confiável, apresentando falhas ou interrupções na operação. Os custos de manutenção são altos. Etc. Engenharia de Requisitos Fazer o levantamento eficiente dos requisitos Obter a concordância das pessoas envolvidas Resolver conflitos Gerenciar as alterações de requisitos Engenharia de Software Necessidade leva a Automação Para ter um bom sistema Engenharia de Requisitos Software é parte significativa Engenharia de Software Para ter bom produto Qualidade de Software Software - Definição Software é: 1. Conjunto de instruções (programas de computador) que, quando executado, realizam as funções desejadas, com o desempenho desejado; 2. Conjunto de dados que permitem aos programas manipularem adequadamente a informação; 3. Documentos que descrevem a operação e o uso dos programas. Características de Software Software não é um produto concreto. Software é desenvolvido; não é manufaturado. Software não desgasta. Software ainda não resulta da montagem das partes, apesar de esforços para componentização. Problemas com Software Por que os programas não ficam prontos rapidamente? Por que os custos de desenvolvimento são tão altos? Por que os erros não são detectados antes da entrega aos clientes? Por que é difícil medir o progresso durante o desenvolvimento? Desenvolvimento de Software É necessário que seja sistemático. É necessário ter produtos intermediários, além do código. É realizada através de fases definidas Análise Projeto Implementação Teste Engenharia de Software A aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, operação e manutenção do software IEEE 610.12 Fases de Desenvolvimento ENGENHARIA DE SISTEMAS ANÁLISE PROJETO IMPLEMENTAÇÃO TESTE MANUTENÇÃO Para cada fase Informações de entrada Produtos gerados Atividades Responsáveis Qualidade de Software Necessidade leva a Automação Para ter um bom sistema Engenharia de Requisitos Software é parte significativa Engenharia de Software Para ter bom produto Qualidade de Software Abordagens para Qualidade Qualidade na obtenção de software Desenvolvimento Projeto contratado Aquisição Integração Qualidade na utilização Utilização do sistema Atividades de suporte Qualidade no Desenvolvimento definição do processo de desenvolvimento definição do processo de verificação e validação seleção e aplicação de métodos de análise, projeto e codificação sistematização de testes (planos, procedimentos e documentos de testes) Qualidade no Desenvolvimento utilização de ferramentas adequadas acompanhamento da aplicação de normas pertinentes gerência de requisitos especificação de requisitos controle de alteração gerência da configuração Qualidade no Projeto Contratado definição do processo de contratação definição do processo de acompanhamento de projeto definição da avaliação do andamento e dos produtos definição do processo de aceitação definição do processo de manutenção Qualidade na Aquisição definição do processo de aquisição definição do processo de seleção do fornecedor definição do processo de avaliação dos produtos existência do apoio do fornecedor: treinamento manuais conhecimento Qualidade na Integração definição do processo de integração: especificação dos sistemas e componentes a serem integrados estratégia de integração fases e produtos da integração responsabilidades Qualidade na Utilização definição do processo de utilização definição dos procedimentos de utilização treinamento dos usuários definição dos responsáveis pelo sistema manutenção dos equipamentos fornecimentos de dados corretos em tempos corretos Qualidade nas Atividades de Suporte identificação dos processos de suporte definição dos processos e papéis treinamento da equipe Resumindo: A ÉTICA ESTÁ EM TODAS AS ATIVIDADES. [email protected] Código de Ética Software Engineering Code of Ethics and Professional Practice IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices (versão 5.2) http://www.computer.org/tab/seprof/code.htm (acessado em 3/5/2004) Bibliografia Ethics and Computing: Living Responsibly in a Computerized World Ed. Kevin W. Bowyer, IEEE Press, 2000, 2nd Edition Ética em Computação, Paulo César Masiero, Editora da USP, 2000