Engenharia de software é introduzida, discutindo projetos de software que falharam e os desafios da área. Um bom processo de software deve considerar requisitos, projeto, teste e manutenção.
4. Ariane 5, 1996
US$ 7.000.000.000
“exception was caused during execution of a data
conversion from 64-bit floating point to 16-bit signed
integer value”
US$ 327.600.000
Mars Polar Lander, 1999 Mars Climate Orbiter, 1998
5. Apagão no nordeste dos EUA, 2003
55 milhões de pessoas afetadas
http://en.wikipedia.org/wiki/Northeast_blackout_of_2003
6. 30% “7 out of every 10 major weapons development programs
are encountering software problems and the rate is
70% increasing.”
7. Valor de mercado da indústria de software
US$303.8 Bilhões Em 2008
+6.5% relativo a 2007
8. “Average cancelled project in U.S. is about a year behind schedule and has
consumed 200% of expected budget” (Capers Jones).
“Work on cancelled projects comprises about 15% of total U.S. software efforts, amounting
to as much as $14 billion dollars in 1993” (Capers Jones).
11. % Projetos
Software é entregue:
2008 • depois do prazo
2006 • acima do orçamento
2004 • com falhas
2000 • não atende a necessidade do cliente
1998
1996
1994
0 10 20 30 40 50 60 70 80 90 100
Sucesso Falha Mudança
CHAOS Report – Standish Group
http://www.crystalballservices.com/Portals/0/img/ChaosReportGraph.jpg
http://blog.standishgroup.com/pmresearch
12. Cutter Consortium (2002):
78% das empresas de TI se envolveram em disputas judiciais
por conta de software entregue
67% dos casos o software não entregava o pedido
56% as datas prometidas não foram cumpridas
45% apresentavam falhas graves
http://www.cutter.com/research/2002/edge020409.html
14. 1 Software
Software = Programa de Computador + Documentação
Genéricos: especificação por parte da organização desenvolvedora
Software Produtos genéricos que são customizados para empresas
Personalizados: especificação por parte do cliente
15. 1 Engenharia de Software
“Engenharia de software é a criação e a utilização de sólidos princípios de engenharia
a fim de obter software de maneira econômica, que seja confiável e que trabalhe
eficientemente em máquinas reais.”
Primeira Definição de Software – Friedrich Ludwig Bauer
16. 1 Engenharia de Software
Engenharia de Software ≠ Ciência da Computação
Teorias e fundamentos sobre a
Prática do desenvolvimento e computação em geral
entrega de software • Algoritmos
• Arquiteturas
• Processo de desenvolvimento
• SOs
• Gerenciamento de Projetos
17. 1 Áreas da Engenharia de Software
Requisitos de Construção de Manutenção de
Projeto de Software Teste de Software
Software Software Software
Ferramentas e
Gerência de Gerência da Processo de
Métodos da Qualidade de
Configuração de Engenharia de Engenharia de
Engenharia de Software
Software Software Software
Software
! Sim, é tudo link pra Wikipédia
18. 1 Processo de Software
Especificação Desenvolvimento Validação Evolução
19. 1 Modelo de Processo de Software
É uma representação do processo a partir de uma perspectiva específica. Fornece
apenas parte das informações.
Exemplos de modelos:
Baseada em
Cascata Iterativo Ágil Componentes Outros
20. 1 Mas o quê um bom software precisa?
Manutenibilidade Ele deve ser fácil de se evoluir
Dependabilidade e
Deve ser confiável, não deve causar danos físicos ou econômicos no caso de falha.
Segurança
Eficiência Não deve utilizar mais recursos do que precisa.
Usabilidade Deve ser de fácil uso e compatível com outros softwares
21. 1 Desafios da engenharia de software
Heterogeneidade Deve ser capaz de se comportar corretamente em diferentes situações. (Ex: web e mobile)
Entrega Deve ser entregue mais rapidamente mas sem perder qualidade.
Confiança Deve estar disponível sempre que precisarmos.
Mudanças sociais e de
Deve ser possível atualizá-lo/melhorá-lo para que acompanhe mudanças das empresas e sociais.
negócios
22. 1 Fundamentos da engenharia de software
Utilizar modelo de processo de software conhecido. Cada modelo é mais adequado para um tipo de software.
O software deve se comportar da forma esperada, sem exibir falhas e garantir segurança, além disso ele deve, sempre que
necessário, estar disponível para o usuário.
Entender o quê o software deve fazer de acordo com cada usuário que o utilizará, além de gerenciar os desejos de cada usuário para
que estes se adequem ao orçamento.
Você deve utilizar todos os recursos disponíveis, ou seja, se você pode então reutilize um software ao invés de criar um do zero.
26. Bibliografia do Curso (Sites)
• Stanford
• http://www.stanford.edu/class/cs295/
• Berkley
• https://sites.google.com/site/ucbsaas/
• MIT
• http://sunnyday.mit.edu/16.355/
• MIT
• http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-355j-software-engineering-concepts-
fall-2005/lecture-notes/
27. CJR
Empresa Júnior de Computação da UnB
Renato Leal contato@cjr.org.br
renatodossantosleal@gmail.com
renatoleal@cjr.org.br
renatodossantosleal@gmail.com