You are on page 1of 23

Uma Introduo a

Engenharia de Software
Slides originais elaborados por Ian Sommerville
O autor permite o uso e a modicao dos slides
para ns didticos.

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

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
3

Definies
Disciplina gerencial e tecnolgica que lida
com a produo e manuteno
sistemtica de produtos de software
desenvolvidos dentro de estimativas de
custo e tempo
Multi-person construction of multi-version
software

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?
5

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?
6

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

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

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!

Qual a diferena entre engenharia de software e


engenharia de sistemas?

Engenharia de sistemas:
Mais ampla
Muita nfase em aspectos de hardware e infraestrutura
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
10

O que processo de software?


Um conjunto estruturado de atividades, prticas,
artefatos e ferramentas necessrios para o
desenvolvimento de um sistema de software
Especificao;
Desenvolvimento;
Validao;
Evoluo.

Exemplos: Processo Unificado (RUP), Programao


Extrema, UML Components
Diferente da definio do livro!!!
"processo", "modelo de processo", "mtodo" e
"metodologia"

11

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
12

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.

Dois 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.

13

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.
14

Distribuio de custos nas atividades

15

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.
16

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 de maneira que o usurio possa
depender dele. No caso de falha, no traz danos fsicos ou
econmicos

Eficincia
O software deve usar o mnimo de recursos e prover mxima
funcionalidade

Usabilidade
O software deve ser compreensvel e fcil de usar
17

Quais so os desafios-chave enfrentados pela


engenharia de software?
Heterogeneidade
Sistemas de software devem ser capaz de lidar com 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

18

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.
19

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 expicito
para seus contratantes

Competncia
Os engenheiros no devem conscientemente aceitar um
trabalho que esteja fora de sua competncia.

20

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.

21

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
22

Atividade paracasa

23

You might also like