Buscar

1143871-Cap_1_-_Intro_(Brudge,_Sommerville,_Pfleeger,_Pressman,_Macic,_etc)

Prévia do material em texto

Engenharia de Software 
Professor: César Olavo 
Livros Texto 
• PRESSMAN, Roger S – Software Engineering: A 
Practitioner’s Approach. Editora: McGraw-Hill. Ano: 
2010. 7ª Edição 
• SOMMERVILLE, Ian - Software 
Engineering Editora: Addison Wesley. Ano: 2010. 9ª 
Edição. 
• BOOCH, Grady, et. al – Unified Modeling 
Language User Guide. Editora: Addison-Wesley. 
Ano: 2005. 2ª Edição 
• FOWLER, Martin. UML Distilled: A Brief Guide to 
the Standard Object Modeling Language Editora: 
Addison-Wesley. Ano: 2003. 3ª Edição. 
Livros Texto 
• PRESSMAN, Roger S – Software Engineering: A 
Practitioner’s Approach. Editora: McGraw-Hill. Ano: 
2010. 7ª Edição 
• SOMMERVILLE, Ian - Software 
Engineering Editora: Addison Wesley. Ano: 2010. 9ª 
Edição. 
• BOOCH, Grady, et. al – Unified Modeling 
Language User Guide. Editora: Addison-Wesley. 
Ano: 2005. 2ª Edição 
• FOWLER, Martin. UML Distilled: A Brief Guide to 
the Standard Object Modeling Language Editora: 
Addison-Wesley. Ano: 2003. 3ª Edição. 
Agenda 
1. Introdução 
2. Definições de Engenharia de Software (ES) 
3. Origens históricas da ES: 
• A crise do software 
4. A crise de software nos dias atuais 
5. Engenharia de Software 
6. Características do software 
 
Introdução 
1) O MP3 faliu as gravadoras. 
2) A Netflix faliu as locadoras. 
3) O Booking complicou as agências de turismo. 
4) O Google faliu páginas amarelas e enciclopédias. 
5) O AirBnB está complicando os hotéis. 
6) O WhatsApp está tirando o sono das operadoras de 
telefonia. 
7) As mídias sociais estão dificultando a vida dos 
veículos de comunicação. 
8) O Uber está complicando os taxistas. 
Introdução 
9) O OLX acabou com os classificados de jornal. 
10) A Câmera digital acabou com as revelações 
fotográficas (e por sua vez sumiu com o celular). 
11) O ZipCar está complicando as locadoras de 
veículos. 
12) A Tesla está complicando a vida das montadoras de 
automóveis. 
13) O e-mail prejudicou os Correios. 
14) O Waze acabou com aparelhos de GPS. 
 
 
Introdução 
15) O Original e o Nubank ameaçam o sistema 
bancário tradicional. 
16) A "nuvem" está substituindo maquinário físico. 
17) O Youtube complica a vida das TVs (adolescentes 
não assistem mais canais abertos) 
18) O comércio eletrônico está quebrando o comércio 
tradicional. 
Conclusão: 
Artefatos estão se desmaterializando 
bits estão substituindo átomos nos custos das coisas 
• A proporção dos custos com software e 
hardware vem mudando bastante ao longo do 
tempo. 
Introdução 
Introdução: A Revolução do 
Computador 
O projeto separa-se do físico, tornando-se um 
conceito totalmente abstrato. 
 
 
Máquinas antes impossíveis ou impraticáveis de 
serem construidas fisicamente tornaram-se 
possíveis 
Projeto pode ser modificado sem remanufatura. 
 
Maquina de 
proposito geral 
Software 
Maquina de 
proposito especifico 
Engenharia de Software 
O que é? 
Ciência vs Engenharia 
“The scientist builds in order to study; the engineer studies in order to build.” 
 Fred Brooks 
A Natureza da analise Cientifica 
A Natureza da Engenharia 
E onde entra a Engenharia de 
Software? 
1) Aplicação da engenharia à area de software 
2) Campo da ciência da computação que trata 
de sistemas: 
Grandes e complexos, 
construído por equipes, 
existem em muitas versões, 
duram muitos anos, 
sofrem mudanças 
 
Definições da Literatura 
Aplicação de uma abordagem sistemática, 
disciplinada, e quantificável ao desenvolvimento, 
operação e manutenção de software [IEEE 1990] 
Construção, por múltiplas pessoas, de software com 
multiplas versões (Parnas 1978) 
Disciplina que se preocupa com problemas práticos 
inerentes ao desenvolvimento de sistemas de grande 
porte. 
– Não é só ciência da computação; 
– Tampouco é simplesmente programação; 
– Uso de teorias, métodos, e ferramentas na resolução 
de problemas. 
Características da 
Engenharia de Software 
Engenharia de Software refere-se a software 
(sistemas) desenvolvidos por grupos ao invés de 
indivíduos; 
Engenharia de Software usa princípios de 
engenharia - ao invés de arte; 
Engenharia de Software inclui tanto aspectos 
técnicos quanto não técnicos. 
Engenheiro de Software 
Engenheiro de Software? 
"The existence of the mere term has been the 
base of a number of extremely shallow --and 
false-- analogies, which just confuse the 
issue...Computers are such exceptional 
gadgets that there is good reason to assume 
that most analogies with other disciplines are 
too shallow to be of any positive value, are 
even so shallow that they are only confusing.“ 
E. W. Djikstra 
Porque a vida do Engenheiro de 
Software não é fácil? (1) 
 Se você é um engenheiro civil que constrói barragens, 
então, tudo o que você precisa saber é sobre construção 
de barragens. 
 Porém, um engenheiro de software precisa saber sobre o 
domínio no qual o software vai ser aplicado (que pode ser 
qualquer um, inclusive, barragens) 
 Alguns problemas requerem longos períodos de 
pesquisa (anos, décadas, ou até mais). 
 Obviamente, não podemos considerar esse tipo de pesquisa 
como parte da engenharia de software. 
 Grandes sistemas são “one of a kind” 
 
Porque a vida do Engenheiro de 
Software não é fácil? (2) 
 A capacidade de aprender rapidamente novas e 
diversas disciplinas e seus processos de negócios. 
 A capacidade de comunicar-se com especialistas de 
domínio, extrair um modelo abstrato do problema a 
partir de um fluxo de informações fornecidas no 
jargão específico do problema e formular uma 
solução que faça sentido no contexto do negócio do 
cliente. 
 A capacidade de projetar um sistema de software 
que realize a solução proposta e graciosamente 
evolua com as necessidades de negócios. 
Engenheiro de software não é (só) 
programador 
 O engenheiro de software tem por objetivo: 
 1) compreender o problema do negócio 
 2) propor uma solução e 
 3) elaborar “abstrações" da solução 
 4) soft skills 
 O foco do programador é no código do programa, 
garantindo que ele implemente fielmente os “modelos” 
elaborados pelo engenheiro de software 
 A Engenheiro de Software preocupa-se com todo o ciclo 
de vida do software (concepção, implementação, uso e 
manutenção) 
Engenharia de Software 
Histórico e 
Crise do Software 
Uma crise no horizonte 
• A industria de Software tem tido uma “crise” 
que a acompanha há mais de 40 anos: 
• Problemas não se limitam ao software que 
não funciona adequadamente, mas abrange: 
–desenvolvimento, 
– testes, 
–manutenção, 
– suprimento, 
–etc. 
A Crise de Software: 
principais problemas 
• Os grandes softwares não funcionam 
adequadamente; 
• Os projetos de software estão sempre 
atrasados 
• Os custos dos projetos de desenvolvimento de 
software são sempre maiores do que o 
previsto. 
A Crise de Software: 
principais problemas 
• Os computadores estão cada vez mais 
rápidos, sofisticados e baratos: 
 
The major cause of the software crisis is that the 
machines have become several orders of 
magnitude more powerful! To put it quite bluntly: 
as long as there were no machines, programming 
was no problem at all; when we had a few weak 
computers, programming became a mild problem, 
and now we have gigantic computers, 
programming has become an equally gigantic 
problem. (Edsger Dijkstra, The Humble 
Programmer) 
Crise do software: consequências 
Conferência da OTAN sobre Engenharia de 
Software, em Garmisch Partenkirchen 
(Alemanha), 1968O próprio termo Engenharia de Software 
–A área de Engenharia de Software nasceu 
no fim dos anos 60, em resposta às 
dificuldades crônicas que grandes projetos 
de software tinham em respeitar calendário 
e orçamento. 
Alguns erros clássicos 
• Ariane 
• Therac 25 
• Denver Airport 
Ariane 5 
• Projeto da Agência Espacial 
Européia que custou: 
– 10 anos. 
– US$ 8 Bilhões. 
• Capacidade 6 toneladas. 
• Garantiria supremacia 
européia no espaço. 
 
Resultado 
• Explosão 40 segundos 
após a decolagem. 
• Destruição do foguete 
e carga avaliada em 
US$ 500 milhões. 
Therac-25 
• Equipamento de Radioterapia. 
• Entre 1985 e 1987, envolveu-se em 6 
acidentes, causando mortes por overdoses 
de radiação. 
• Software foi adaptado de uma antecessora, 
Therac-6: 
– falhas por falta de testes integrados 
– falta de documentação 
Denver International Airport 
• Custo do projeto: US$ 4.9 bilhões 
– 100 mil passageiros por dia 
– 1,200 vôos 
– 53 milhas quadradas 
– 94 portões de embarque e desembarque 
– 6 pistas de pouso / decolagem 
Denver International Airport 
• Erros no sistema automático de transporte de 
bagagens: 
– Atraso na abertura do aeroporto com custo total 
estimado em US$360 Milhões 
• 86 milhões para consertar o sistema 
Engenharia de Software 
A Crise de Software 
nos dias atuais 
A Crise de Software nos Dias Atuais 
 Os softwares estão cada vez maiores e mais 
sofisticados, e a produtividade não segue a 
demanda; 
A Crise de Software nos Dias Atuais 
 Os custos com manutenção são muito altos: 
 para sistemas com uma longa vida, eles são 
várias vezes maiores do que os custos de 
desenvolvimento. 
 
A Crise de Software nos Dias Atuais 
 Há uma carência global de desenvolvedores 
 
 
 
 
 
 Se não bastasse, os melhores desenvolvedores 
gastam, em média, 50% do tempo tirando bugs e a 
maior parte do tempo restante com tarefas repetitivas, 
em vez de construir novas funcionalidades. 
 
A Crise de Software nos Dias Atuais 
Tampouco é possível resolver o problema simplesmente 
adquirindo computadores mais velozes, agora que a 
barreira do silicio foi atingida (processadores acima de 
4GHz não são viaveis, por consumir muita energia - 
pense em termos de vida util da bateria e de calor) 
– A solução seriam arquiteturas multicore e, na 
realidade, fabricantes vêm oferecendo máquinas com 
4, 8, 16 e até 512 cores! 
– O problema passa a ser a falta de programadores que 
saibam tirar proveito desse paralelismo; na realidade, 
as próprias liguagens de programação modernas são 
baseadas na premissa de que o computador faz 
apenas uma coisa por vez. 
planejamento 
testes 
codificação 
Custos de desenvolvimento 
1/3 planejamento 
1/6 codificação 
1/4 teste de 
componente 
1/4 teste de sistema 
Custos de manutenção 
Custos de 
desenvolvimento 
Manutenção 
Manutenção de software: 
 20% - correção de erro* 
 20% - adaptação (adaptar ao ambiente, software e 
hardware, que evoluem) 
 60% - melhorias (adaptação aos requisitos do 
usuário) 
 
*maior parte dos erros deriva de requisitos e não de 
código 
Perguntas que Engenharia de 
Software quer responder: 
• Porque demora tanto para concluir um 
projeto (não cumprimos prazos)? 
• Porque custa ($) tanto (às vezes, uma 
ordem de magnitude a mais)? 
• Porque não descobrimos os erros antes de 
entregar o software ao cliente? 
• Porque temos dificuldade de medir o 
progresso enquanto o software está sendo 
desenvolvido? 
• Porque a Engenharia de Software 
não pode ter resultados mais 
rigorosos, como outras areas da 
ciência da computação? 
– Que partes em um projeto e 
construção de software podem ser 
formais? 
– Uma resposta pode ser encontrada 
na figura a seguir: 
Características da 
Engenharia de Software 
A linha demarcatoria da ciência da 
computação 
Engenharia de Software 
Características do Software 
Software é um produto diferente... 
 Diferentemente da maioria dos outros produtos, software é 
intangível e difícil de visualizar. A maioria das pessoas 
experimenta software por meio do que ele faz, através de 
suas entradas e saídas. 
 é provavelmente o mais complexo artefato existente - 
consiste em tantos pedaços, bem como suas relações. Um 
único bit trocado pode mudar todo o sentido de um 
programa. 
 é certamente o mais flexível artefato: pode ser facilmente e 
radicalmente modificado em qualquer fase do processo de 
desenvolvimento, conseguindo, assim responder 
rapidamente às mudanças nos requisitos do cliente. 
Características do software, 
segundo Brooks (1/2) 
Fred Brooks (No Silver Bullet): 
Complexidade. Vista como uma propriedade 
essencial do software, onde não ha’ duas partes 
iguais e sistemas possuem muitos estados durante 
execução. Essa complexidade é arbitraria, 
dependendo mais do projetista do que do problema. 
Conformidade. Por ser “moldavel” espera-se que o 
software adapte-se a outros componentes 
(hardware, padrões, software legado, etc.) 
"Software is the resting place of afterthoughts." 
Características do software, 
segundo Brooks (2/2) 
 
Modificabilidade: Todo software sofre uma constante 
necessidade de mudança (ironicamente, pela 
aparente facilidade de mudança). 
Invisibilidade. Por ser ‘invisivel’, não se pode 
estabelecer links visuais entre um software e sua 
representação, o que facilitaria estabelecer relações 
entre os dois. 
Algumas inconveniências da 
invisibilidade... 
 
 Hardware: muito alto! 
- Projetos devem ser concluidos antes de serem 
manufaturados e vendidos 
- Falhas: retorna Hardware 
 
 Software: baixo 
- Pra que retirar os bugs antes, se isso pode ser 
feito depois? E com a ajuda do próprio cliente! 
- Falhas: espera-se nova versão 
 
 Hardware degrada, software não! 
Software vs. Hardware 
Custo do reparo 
Bugs... 
18/09/12 Aula 3 - Gestão de Projectos 52 
Software vs Hardware: 
 Desgaste com o tempo 
Software vs Hardware: 
 Desgaste com o tempo 
Leis de Belady e Lehman: 
 
• O software mudará continuamente. 
• O software ficará cada vez mais desestruturado à medida que é alterado. 
 
 Custo do software geralmente domina o custo 
do desenvolvimento. 
– Os custos do software de um PC são geralmente 
maiores do que do hardware 
 
 Software custa mais para manter do que para 
desenvolver! Para sistemas com uma longa 
vida, os custos de manutenção são várias vezes 
maiores do que o de desenvolvimentoa 
Características do Software 
ou coisas com que um software de garagem não se 
preocupa 
 Manutenibilidade 
– Deve ser possível para o software evoluir de 
 forma a atender a requisitos que mudam 
Confiabilidade 
– Software não deve causar prejuízo físico ou 
 econômico no caso de uma falha 
Eficiência 
– “Capacidade do produto de software de apresentar 
desempenho apropriado, relativo à quantidade de 
recursos usados, sob condições especificadas”.(NBR 
ISO/IEC 9126) 
Usabilidade 
– “Capacidade do produto de software de ser compreendido, 
aprendido, operado e atraente ão usuário, quando usado sob 
condições especificadas”. (NBR ISO/IEC 9126) 
Características do Bom Software 
Usabilidade 
Portabilidade 
– Capacidade do produto de software de ser 
transferido de um ambiente para outro”. 
Adaptabilidade 
– Capacidade do produto de software de ser adaptado para 
diferentes ambientes especificados, sem necessidade de 
aplicação de outras ações ou meios além daqueles fornecidos 
para essa finalidade pelo software considerado 
Estabilidade– “Capacidade do produto de software de evitar efeitos 
inesperados decorrentes de modificações no software”. (NBR 
ISO/IEC 9126) 
Testabilidade 
– “Capacidade do produto de software de permitir que o 
software, quando modificado, seja validado”. (NBR ISO/IEC 
9126) 
Características do Bom Software 
 A importância relativa destas características 
depende do produto e do ambiente em que ele 
será usado. 
Em alguns casos, alguns desses atributos podem ser 
mais importantes que outros: 
– Em sistemas de segurança-críticos de tempo-real, os 
atributos chave podem ser confiabilidade e eficiência 
 custos tendem a aumentar exponencialmente se 
altos níveis de um dado atributo são necessários: 
Características do Software

Continue navegando