Você está na página 1de 26

Uma Introduo Engenharia

de Software

Slides originais elaborados por Ian Sommerville


O autor permite o uso e a modificao dos slides para fins didticos

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 1


Motivao
J ouviram falar da Crise do Software ?

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 2


Motivao
J ouviram falar da Crise do Software ?

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 3


Motivao
J ouviram falar da Crise do Software ?

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 4


Motivao
J ouviram falar da Crise do Software ?

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 5


Motivao
J ouviram falar da Crise do Software ?

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 6


Engenharia de software
As economias de TODAS as naes desenvolvidas
so dependentes de software.
Cada vez mais sistemas so controlados por software.
A engenharia de software se dedica s teorias,
mtodos e ferramentas para desenvolvimento de
software profissional
Sistemas no-triviais
Com base em um conjunto de requisitos

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 7


Custos de software
Os custos de software dominam os custos de
sistemas computacionais.
Em geral, software custa mais que hardware
Manter um software custa mais que desenvolv-lo
A engenharia de software dedica-se ao
desenvolvimento de software com custos adequados
Respeitando o cronograma acordado
Satisfazendo as necessidades dos clientes
Minimizando o custo de manuteno
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 8


FAQs sobre engenharia de software
O que software?
O que engenharia de software?
Qual a diferena entre engenharia de software e
cincia da computao?
Qual a diferena entre engenharia de software e
engenharia de sistemas?
O que processo de software?
O que um modelo de processo de software?

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 9


FAQs sobre engenharia de software
Quais so os custos da engenharia de software?
Quais so os mtodos da engenharia de software?
O que CASE (Computer-Aided Software
Engeneering)
Quais so os atributos de um bom software?
Quais so os desafios-chave enfrentados pela
engenharia de software?

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 10


O que software?
Programas de computador e artefatos associados
Produtos de software podem ser
Genricos desenvolvidos para serem vendidos para
uma grande variedade de clientes (e.g., Excel e Word)
Personalizados desenvolvidos para um nico cliente
de acordo com as suas especificaes
Um software novo pode ser criado atravs de
desenvolvimento de novos programas
configurao de sistemas de software genricos; ou
reutilizao de um software existente
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 11


O que engenharia de software?
Engenharia de software uma disciplina relacionada
com todos os aspectos da produo de software
... e prope ferramentas, tcnicas e processos para
Entender com preciso qual o problema (as
necessidades associadas ao sistema que deve ser
construdo/modificado)
Produzir uma soluo adequada para esse problema (um
sistema pronto para usar, levando-se em considerao
as necessidades das partes interessadas)
Levando-se em conta restries de desenvolvimento e
recursos disponveis
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 12


Qual a diferena entre engenharia de
software e cincia da computao?

A cincia da computao dedica-se teoria e aos


fundamentos
Engenharia de software dedica-se aos aspectos
prticos de desenvolvimento e de entrega de software
O que vs. Como
Teorias de cincia da computao so ainda
insuficientes para atuar como uma base completa
para a engenharia de software (diferente de, por
exemplo, fsica e engenharia eltrica)
Em outras palavras: no h receitas prontas!
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 13


Qual a diferena entre engenharia de
software e engenharia de sistemas?
Engenharia de sistemas:
Mais ampla
Muita nfase em aspectos de hardware e infra-estrutura
Abstrao do hardware
Organizao fsica das partes do sistema
Aspectos de comunicao
Engloba a engenharia do software
Os engenheiros de sistema esto envolvidos em
diversas atividades da engenharia de software
Projeto da arquitetura
Elicitao e especificao de requisitos
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 14


O que processo de software?
Um conjunto estruturado de atividades, prticas,
artefatos e ferramentas necessrios para o
desenvolvimento de um sistema de software
Especificao
Projeto
Validao
Evoluo
Exemplos: Processo Unificado (RUP), Programao
Extrema, UML Components

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 15


O que processo de software?
Alguns elementos de um processo:
Modelos de sistema
Modelos grficos que podem/devem ser produzidos e as
notaes que devem ser empregadas
Restries aplicadas aos modelos de sistema
Recomendaes de boas prticas de projeto
Atividades que devem ser seguidas em determinada
ordem
s vezes tambm prescrevem ferramentas
Um processo adere a um ou mais modelos de
processo
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 16


O que um modelo de processo de
software?
Uma representao simplificada de um processo de
software, apresentado sob uma perspectiva especfica
Incluindo algumas atividades e sua organizao de alto nvel
Modelos gerais de processo
Cascata
Desenvolvimento iterativo
Engenharia de software baseada em componentes
Os modelos no so necessariamente mutuamente
excludentes!
Representaes de modelos de processo
Modelo de workflow seqncia de atividades
Modelo de fluxo de dados fluxo de informaes
Modelo de papel/ao quem faz o qu
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 17


Quais so os custos da engenharia de
software?
60% dos custos so custos de desenvolvimento
40% so custos de testes
Para software sob encomenda, os custos de evoluo
normalmente excedem os de desenvolvimento
Os custos variam dependendo do tipo de sistema que
est sendo desenvolvido e dos requisitos do sistema,
tais como desempenho e confiabilidade
A distribuio de custos depende do modelo de
desenvolvimento que usado
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 18


Distribuio de custos nas atividades

Figura 1.1
Distribuio de custos
nas atividades de
engenharia de
software

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 19


O que CASE
(Computer-Aided Software Engineering)

Sistemas de software que se destinam a fornecer


apoio automatizado para as atividades de
desenvolvimento de software
Sistemas CASE so usados freqentemente para
apoiar um mtodo especfico
Upper-CASE
Ferramentas para apoiar as atividades iniciais de
processo de requisitos e de projeto
Lower-CASE
Ferramentas para apoiar as atividades finais tais como
programao, debugging e teste
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 20


Quais so os atributos de um bom
software?
O software deve fornecer a funcionalidade e o desempenho
requeridos para o usurio e deve apresentar certas caractersticas
Facilidade de manuteno
Deve ser fcil e barato fazer com que o sistema, depois de implantado,
evolua para atender s necessidades dos clientes
Confiabilidade
O software deve funcionar conforme sua especificao
Eficincia
O software deve usar o mnimo de recursos e prover mxima
funcionalidade
Usabilidade
O software deve ser compreensvel e fcil de usar

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 21


Quais so os desafios-chave enfrentados
pela engenharia de software?
Heterogeneidade
Sistemas de software devem suportar diferentes plataformas de
hardware e ambientes de execuo
Entrega
O sistema deve ser entregue ao cliente no menor tempo
possvel, com o menor custo possvel
Confiana
O usurio deve poder justificadamente depositar sua confiana
no sistema
Escala
O sistema deve funcionar adequadamente mesmo quando um
grande nmero de usurios o est usando

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 22


Responsabilidade profissional e tica

A engenharia de software envolve responsabilidades


mais amplas do que simplesmente a aplicao de
habilidades tcnicas
Os engenheiros de software devem se comportar de
modo honesto e eticamente responsvel para serem
respeitados como profissionais
O comportamento tico mais do que simplesmente a
sustentao de leis

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 23


Questes de responsabilidade profissional
Confidencialidade
Os engenheiros de software devem normalmente
respeitar a confidencialidade de seus funcionrios ou
clientes, independentemente de ter ou no assinado
um acordo formal
Caso no aceitem essas condies, devem deixar isso
explcito para seus contratantes
Competncia
Os engenheiros no devem conscientemente aceitar
um trabalho que esteja fora de sua competncia

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 24


Questes de responsabilidade profissional

Direitos sobre propriedade intelectual


Desenvolvedores devem estar cientes das leis
locais que regem o uso de propriedade
intelectual, tais como patentes, direitos autorais,
etc.
Eles devem tomar cuidado para assegurar que a
propriedade intelectual dos funcionrios e
clientes seja protegida

2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 25


Dilemas ticos

Discordncia, em princpio, das polticas da


gerncia snior
Um funcionrio age de uma forma no tica e
libera um sistema de segurana crtico sem
finalizar o teste do sistema
Participao no desenvolvimento de sistemas
de armamentos militares ou de sistemas
nucleares
2007 by Pearson Education

Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 1 Slide 26