Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

27
Introdução a Engenharia de Software CJR – Empresa Júnior de Computação

Transcript of Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

Page 1: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

Introdução a Engenharia de

SoftwareCJR – Empresa Júnior de Computação

Page 3: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

Introdução1

Page 4: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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”

Page 5: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

http://en.wikipedia.org/wiki/Northeast_blackout_of_2003

Apagão no nordeste dos EUA, 2003

55 milhões de pessoas afetadas

Page 6: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

70%

30% “7 out of every 10 major weapons development programs

are encountering software problems and the rate is

increasing.”

Page 7: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

US$303.8 Bilhões Em 2008

+6.5% relativo a 2007

Valor de mercado da indústria de software

Page 8: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

“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).

Page 9: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

Software > Hardwareem preço...

Page 10: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

Manutenção >> Desenvolvimento

Page 11: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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

Page 12: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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

Page 13: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

Então...

Page 14: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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

Page 15: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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

Page 16: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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

Page 18: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

1 Processo de Software

Especificação Desenvolvimento Validação Evolução

Page 19: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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:

Page 20: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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

Page 21: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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.

Page 22: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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.

Page 23: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

A web...

+ Pessoas+ Riscos+ Diversidade de plataformas

+ Problemas

Page 24: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Page 25: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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/

Page 26: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

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/

Page 27: Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1

Renato Leal

[email protected]

[email protected]

CJREmpresa Júnior de Computação da UnB

[email protected]

[email protected]