Introdução a Engenharia de
SoftwareCJR – Empresa Júnior de Computação
Compre
Livro-texto
Compre
Introdução1
Ariane 5, 1996
Mars Climate Orbiter, 1998Mars Polar Lander, 1999
US$ 327.600.000
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”
http://en.wikipedia.org/wiki/Northeast_blackout_of_2003
Apagão no nordeste dos EUA, 2003
55 milhões de pessoas afetadas
70%
30% “7 out of every 10 major weapons development programs
are encountering software problems and the rate is
increasing.”
US$303.8 Bilhões Em 2008
+6.5% relativo a 2007
Valor de mercado da indústria de software
“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).
Software > Hardwareem preço...
Manutenção >> Desenvolvimento
http://www.crystalballservices.com/Portals/0/img/ChaosReportGraph.jpg
Software é entregue:• depois do prazo
• acima do orçamento
• com falhas
• não atende a necessidade do cliente
CHAOS Report – Standish Group
http://blog.standishgroup.com/pmresearch
0 10 20 30 40 50 60 70 80 90 100
1994
1996
1998
2000
2004
2006
2008
% Projetos
Sucesso Falha Mudança
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
Então...
Software
1 Software
Software = Programa de Computador + Documentação
Genéricos: especificação por parte da organização desenvolvedora
Personalizados: especificação por parte do cliente
Produtos genéricos que são customizados para empresas
1
“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
Engenharia de Software
1
Engenharia de Software ≠ Ciência da Computação
Engenharia de Software
Teorias e fundamentos sobre a
computação em geralPrática do desenvolvimento e
entrega de software • Algoritmos
• Arquiteturas
• SOs• Processo de desenvolvimento
• Gerenciamento de Projetos
1 Áreas da Engenharia de Software
Sim, é tudo link pra Wikipédia!
Requisitos de
SoftwareProjeto de Software
Construção de
SoftwareTeste de Software
Manutenção de
Software
Gerência de
Configuração de
Software
Gerência da
Engenharia de
Software
Processo de
Engenharia de
Software
Ferramentas e
Métodos da
Engenharia de
Software
Qualidade de
Software
1 Processo de Software
Especificação Desenvolvimento Validação Evolução
1 Modelo de Processo de Software
É uma representação do processo a partir de uma perspectiva específica. Fornece
apenas parte das informações.
Cascata Iterativo Ágil OutrosBaseada em
Componentes
Exemplos de modelos:
Manutenibilidade
1 Mas o quê um bom software precisa?
Dependabilidade e
Segurança
Eficiência
Usabilidade
Ele deve ser fácil de se evoluir
Deve ser confiável, não deve causar danos físicos ou econômicos no caso de falha.
Não deve utilizar mais recursos do que precisa.
Deve ser de fácil uso e compatível com outros softwares
Heterogeneidade
1 Desafios da engenharia de software
Entrega
Confiança
Mudanças sociais e de
negócios
Deve ser capaz de se comportar corretamente em diferentes situações. (Ex: web e mobile)
Deve ser entregue mais rapidamente mas sem perder qualidade.
Deve estar disponível sempre que precisarmos.
Deve ser possível atualizá-lo/melhorá-lo para que acompanhe mudanças das empresas e sociais.
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.
A web...
+ Pessoas+ Riscos+ Diversidade de plataformas
+ Problemas
Bibliografia do Curso (Sites)
• http://www.ic.uff.br/~viviane.silva/2010.1/es1/aulas.html• http://dinobrasilis.pro.br/mat_quali.html• http://www.les.inf.puc-rio.br/wiki/index.php/Introdu%C3%A7%C3%A3o_a_Engenharia_de_Software_de_Sistemas_Multiagentes_em_2005.1• http://www.ime.usp.br/~poliana/Eng%20de%20sw/• http://www.dcce.ibilce.unesp.br/~ines/cursos/eng_soft/• http://www.cin.ufpe.br/~processos/• http://www.cin.ufpe.br/~if720/programacao.html• http://www.softdevteam.com/Incremental-lifecycle.asp• http://lgarciasbr.wordpress.com/2011/10/19/roi/
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/
Renato Leal
CJREmpresa Júnior de Computação da UnB