Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia de Software I Prof. João Carlos Lima e Silva joaocarloslima@me.com O Quê é Engenharia de Software? “Engenharia de software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade. FALBO, Ricardo Almeida O Quê é Engenharia de Software? “Engenharia de software é uma disciplina de engenharia cujo foco está em todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até sua manutenção. SOMMERVILLE, Ian Introdução a Engenharia de Software • Engenheiros de Softwares desenvolvem produtos de software: o Produtos Genéricos o Produtos sob encomenda Importância da Engenharia de Software Programador Individual Equipe de Desenvolvimento Diferença entre Programa e Software • Programa: aplicativo simples, normalmente para atender necessidades individuais • Software: conjunto de programas, arquivos de configuração, documentação e suporte desenvolvido para cliente específico ou mercado em geral. Ciência e Engenharia • Ciência: foca no conhecimento • Engenharia: foca no produto (valor) Atributos Essenciais de um Bom Software Manutenibilidade Confiança e Proteção Eficiência Aceitabilidade Cenário 1: Controle de Tarefas • Quanto custa o desenvolvimento desse software? • Qual é o tempo de desenvolvimento? • Em caso de defeito, quais são as consequências? Cenário 2: Boing 777 • Quanto custa? o Mais de 4 milhões de linha de código o 79 sub-sistemas o 10.000 páginas de documentação por sub-sistema • Qual é o tempo de desenvolvimento? o 5 anos • Qual é a consequência em caso de falha? – http://www.stsc.hill.af.mil/crosstalk/1996/01/Boein777.asp – http://www.boeing.com/news/techissues/pdf/statsum.pdf Erros de Engenharia Caso Real: Therac-‐‑25 • Máquina de radioterapia controlada por computador • Problema: o Doses indevidas de radiação emitidas • Causa: o Interface com usuário inapropriada o Documentação deficiente o Software reutilizado sem ser adaptado para o novo hardware o Software de sensores de falha com defeito • Conseqüências: Ao menos 5 mortes entre 1985 e 1987 http://sunnyday.mit.edu/papers/therac.pdf Caso Real: Ariane 5 • Foguete lançador de satélites • Problema: o O foguete se auto-destruiu após o lançamento • Causa: o Software reutilizado sem ser adaptado para o novo hardware o Ausência de testes em solo deste software o Defeito apresentado em vôo • Conseqüências: Prejuízo de mais de US$ 370.000.000,00 em 1996 Dowson, Mark. 1997. The Ariane 5 software failure. SIGSOFT Softw. Eng Diversidade de Softwares Aplicações stand-‐‑alone Aplicações interativas baseadas em transações Sistemas de controles embutidos Sistemas de processamento em lotes Sistemas de entretenimento Sistemas para modelagem e simulação Sistemas de coleta de dados Limites Éticos da Engenharia de Software • Público • Cliente e Empregador • Produto • Julgamento • Gerenciamento • Profissão • Colegas • Si próprio Ética com o público • 1.01. Aceitar todas a responsabilidade pelo seu trabalho. • 1.03. Aprovar software, que apenas seja seguro, corresponda ás especificações, passe nos testes apropriados, não diminua a qualidade de vida, não diminua a privacidade ou prejudique o ambiente. O último efeito do trabalho deverá ser para o bem público. Ética com o Cliente/ Empregador • 2.01. Providencia serviço em áreas da sua competência, sendo honestos e indicando as suas limitações da sua experiência e educação. • 2.03. Usar a propriedade do cliente ou empregador apenas de maneira autorizada, e com o conhecimento e consentimento deste. • 2.05. Manter privado toda a informação confidencial que adquiriram no seu trabalho, desde que a confidencialidade seja consistente com o interesse publico e a lei Ética com o produto • 3.01. Empenhar-se por mais qualidade, custos aceitáveis, e prazos razoáveis, assegurando que significantes trade off sejam claros e aceites pelo empregador e o cliente, e estejam disponíveis para consideração por parte do utilizador e do público. • 3.06. Trabalhar seguindo normas profissionais. • 3.08. Assegurar que as especificações de software estejam bem documentadas e que satisfaça os requisitos dos utilizadores. • 3.10. Assegurar testes adequados, debugging e revisão do software e documentos relacionados em que trabalhem Ética no Julgamento • 4.02. Apenas endossar documentos que foram preparados sob sua supervisão ou que estejam na sua área de competência e que estejam de acordo. • 4.04. Não aceitar suborno, pagamentos duplos ou outras práticas financeiras impróprias. • 4.05. Revelar a todas as partes interessadas os conflitos de interesse que não possam ser evitados. • 4.06. Recusar em participar, como membros ou conselheiros, em grupos privados, governamentais ou profissionais preocupados com assuntos relacionados com software em que possa existir conflitos de interesse com os clientes ou empregadores. Ética na Gestão • 5.01. Assegurar uma boa gestão para qualquer projeto em que trabalhar, incluindo procedimentos eficazes para promoção da qualidade e redução do risco. • 5.03. Assegurar que os engenheiros conhecem as políticas do empregador e procedimentos para proteger suas palavras- chave, arquivos e informação confidencial para o empregador ou confidencial para outros. • 5.05. Assegurar estimativas realistas dos custos, prazos, pessoa, qualidade e gastos em qualquer projeto em que trabalhe e providenciar acesso a essas estimativas. • 5.06. Atrair potenciais engenheiros de software apenas com a descrição completadas condições de trabalho. • 5.07. Oferecer uma remuneração justa • 5.11. Não pedir a um engenheiro de software que faça algo de inconsistente com o código. Ética com a Profissão • 6.01. Ajudar a organizar um ambiente favorável para agir eticamente. • 6.02. Promover conhecimento público da engenharia de software. • 6.04. Apoiar, como membros da profissão, outros engenheiros de software e seguidores deste código. • 6.06. Obedecer a todas as leis que regem o seu trabalho, a não ser que, em circunstâncias especiais, sejam inconsistentes com o interesse público Ética com os Colegas • 7.02. Assistir os colegas no desenvolvimento profissional. • 7.03. Reconhecer o trabalho dos outros e não se apropriar de mérito alheio. • 7.04. Rever o trabalho dos outros com objetividade e de uma maneira bem documentada. • 7.05. Ouvir sempre as opiniões, preocupações e queixas de um colega • 7.08. Em situações fora da sua área de competência pedir a opinião de outros profissionais que tenham competência dessa área Ética Pessoal • 8.01. Prolongar o seu conhecimento no desenvolvimento, na análise, especificação, design, desenvolvimento, manutenção, teste de software e documentação relacionada, em conjunto com a gestão do desenvolvimento do processo. • 8.02. Melhorar a sua aptidão em criar software seguro, de confiança e útil a um custo e prazo razoável. • 8.05. Melhorar o seu conhecimento de normas relevantes e da lei, que regula o software e documentos relacionados em que trabalhem.Questões práticas • Sistema de missão crítica com registros de validação falsificados. • Sistema militar de destruição em massa. • Sistema de adsense “você é o visitante 1.000.000.000" Dúvidas ?
Compartilhar