Buscar

EDS - Aula 1 - Introdução

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  ?

Continue navegando