Sei sulla pagina 1di 71

Software e Engenharia de

Software
ENGENHARIA DE SOFTWARE - PRESSMAN

Renata Pontin de Mattos Fortes ICMC/USP

Software
1- INSTRUES
que quando executadas produzem a funo e o
desempenho desejados
2 - ESTRUTURAS DE DADOS
que possibilitam que os programas manipulem
adequadamente a informao
3 - DOCUMENTOS
que descrevem a operao e o uso dos
programas

Caractersticas do Software
1- desenvolvido ou projetado por engenharia,
no manufaturado no sentido clssico
2- no se desgasta mas se deteriora
3- a maioria feita sob medida em vez de ser
montada a partir de componentes existentes

Curva de falhas para o hardware

ndice
de
falhas

desgaste

mortalidade
infantil

tempo

Curva de falhas do software

mudana
ndice de
falhas

curva real
curva idealizada
tempo

Aplicaes do software
BSICO coleo de programas escritos para dar
apoio a outros programas

DE TEMPO REAL software que monitora, analisa e


controla eventos do mundo real

COMERCIAL sistemas de operaes comerciais e


tomadas de decises administrativas

CIENTFICO E DE ENGENHARIA caracterizado


por algoritmos de processamento de nmeros
6

Aplicaes do software
EMBUTIDO usado para controlar produtos e sistemas
para os mercados industriais e de consumo

DE COMPUTADOR PESSOAL envolve


processamento de textos, planilhas eletrnicas,
diverses, etc.

DE INTELIGNCIA ARTIFICIAL faz uso de algoritmos


no numricos para resolver problemas que no
sejam favorveis computao ou anlise direta
7

Evoluo do software
(1950 - 1965)
O hardware sofreu contnuas mudanas
O software era uma arte "secundria" para
a qual havia poucos mtodos sistemticos
O hardware era de propsito geral
O software era especfico para cada
aplicao
No havia documentao
8

Evoluo do software
(1965 - 1975)
Multiprogramao e sistemas multiusurios
Tcnicas interativas
Sistemas de tempo real
1a. gerao de SGBDs
Produto de sofwtare - software houses
Bibliotecas de Software
Cresce nro. de sistemas baseado em computador
Manuteno quase impossvel
..... CRISE DE SOFTWARE
9

Evoluo do software
(1975 - hoje)
Sistemas distribudos
Redes locais e globais
Uso generalizado de
microprocessadores - produtos
inteligentes
Hardware de baixo custo
Impacto de consumo
10

Evoluo do software
(Quarta era do software de computador)

Tecnologias orientadas o objetos


Sistemas especialistas e software de
inteligncia artificial usados na prtica

Software de rede neural artificial


Computao Paralela
11

crise de software
Refere-se a um conjunto de problemas
encontrados no desenvolvimento de software:
1- As estimativas de prazo e de custo freqentemente

so imprecisas
No dedicamos tempo para coletar dados sobre o
processo de desenvolvimento de software
Sem nenhuma indicao slida de produtividade, no
podemos avaliar com preciso a eficcia de novas
ferramentas, mtodos ou padres
12

crise de software
2- A produtividade das pessoas da rea de
software no tem acompanhado a demanda por
seus servios
Os projetos de desenvolvimento de software
normalmente so efetuados apenas com um vago
indcio das exigncias do cliente

13

crise de software
3- A qualidade de software s vezes menos que
adequada
S recentemente comeam a surgir conceitos
quantitativos slidos de garantia de qualidade de
software

4- O software existente muito difcil de manter


A tarefa de manuteno devora o oramento destinado
ao software
A facilidade de manuteno no foi enfatizada como um
critrio importante

14

crise de software

estimativas de prazo e de custo

produtividade das pessoas

qualidade de software

software difcil de manter

15

Causas dos problemas associados


crise de software
1- PRPRIO CARTER DO SOFTWARE
O software um elemento de sistema lgico e no
fsico. Conseqentemente o sucesso medido
pela qualidade de uma nica entidade e no pela
qualidade de muitas entidades manufaturadas

O software no se desgasta, mas se


deteriora
16

Causas dos problemas associados


crise de software
2- FALHAS DAS PESSOAS RESPONSVEIS
PELO DESENVOLVIMENTO DE SOFTWARE
Gerentes sem nenhum background em software
Os profissionais da rea de software tm
recebido pouco treinamento formal em novas
tcnicas para o desenvolvimento de software
Resistncia a mudanas.
17

Causas dos problemas associados

crise de software

3- M ITOS DO SOFTWARE
Propagaram desinformao e confuso
administrativos
cliente
profissional
18

Mitos do software (ADMINISTRATIVOS)


Mito: J temos um manual repleto de padres e
procedimentos para a construo de software.
Isso no oferecer ao meu pessoal tudo o que
eles precisam saber?
Realidade: Ser que o manual usado?

Os profissionais sabem que ele existe?


Ele reflete a prtica moderna de
desenvolvimento de software? Ele completo?
19

Mitos do software (ADMINISTRATIVOS)


Mito: Meu pessoal tem ferramentas de
desenvolvimento de software de ltima
gerao; afinal lhes compramos os mais
novos computadores.
Realidade: preciso muito mais do que os

mais recentes computadores para se


fazer um desenvolvimento de software de
alta qualidade.
20

Mitos do software (ADMINISTRATIVOS)


Mito: Se ns estamos atrasados nos prazos,
podemos adicionar mais programadores e
tirar o atraso.
Realidade: O desenvolvimento de software no

um processo mecnico igual


manufatura. Acrescentar pessoas em um
projeto torna-o ainda mais atrasado.

Pessoas podem ser acrescentadas, mas


somente de uma forma planejada.

21

Mitos do software (CLIENTE)


Mito: Uma declarao geral dos objetivos
suficiente para se comear a escrever programas
- podemos preencher os detalhes mais tarde.
Realidade: Uma definio inicial ruim a principal

causa de fracassos dos esforos de


desenvolvimento de software. fundamental
uma descrio formal e detalhada do domnio
da informao, funo, desempenho, interfaces,
restries de projeto e critrios de validao.22

Mitos do software

(CLIENTE)

Mito: Os requisitos de projeto modificam-se


continuamente, mas as mudanas podem ser
facilmente acomodadas, porque o software
flexvel.
Realidade: Uma mudana, quando solicitada

tardiamente num projeto, pode ser maior do


que a ordem de magnitude mais dispendiosa da
mesma mudana solicitada nas fases iniciais.
23

magnitude das mudanas

FASES

DEFINIO
DESENVOLVIMENTO
MANUTENO

CUSTO DE MANUTENO

1x
1.5 - 6x
60 - 100x

24

Mitos do software (PROFISSIONAL)


Mito: Assim que escrevermos o programa e
o colocarmos em funcionamento nosso
trabalho estar completo.
Realidade: Os dados da indstria indicam

que entre 50 e 70% de todo esforo gasto


num programa sero despendidos depois
que ele for entregue pela primeira vez ao
cliente.
25

Mitos do software (PROFISSIONAL)


Mito: Enquanto no tiver o programa
"funcionando", eu no terei realmente
nenhuma maneira de avaliar sua qualidade.
Realidade: Um programa funcionando

somente uma parte de uma Configurao


de Software que inclui todos os itens de
informao produzidos durante a
construo e manuteno do software.
26

abrange um conjunto de trs elementos fundamentais:


Mtodos, Ferramentas e

Procedimentos
MTODOS:
MTODOS proporcionam os detalhes de como
fazer para construir o software
27

Engenharia de Software
Planejamento e estimativa de projeto
Anlise de requisitos de software e de
sistemas

Projeto da estrutura de dados


Algoritmo de processamento
Codificao
Teste
Manuteno
28

Engenharia de Software
FERRAMENTAS:
FERRAMENTAS do suporte automatizado aos
mtodos.
Existem

atualmente ferramentas para sustentar


cada um dos mtodos

Quando

as ferramentas so integradas
estabelecido um sistema de suporte ao
desenvolvimento de software chamado CASE Computer Aided Software Engineering
29

Engenharia de Software
PROCEDIMENTOS:
PROCEDIMENTOS constituem o elo de ligao
entre os mtodos e ferramentas
Seqncia em que os mtodos sero aplicados
Produtos que se exige que sejam entregues
Controles que ajudam assegurar a qualidade e
coordenar as alteraes
Marcos de referncia que possibilitam
administrar o progresso do software.
30

ENGENHARIA DE SOFTWARE

Conjunto de etapas que envolve MTODOS,


MTODOS
FERRAMENTAS e PROCEDIMENTOS.
PROCEDIMENTOS
Essas etapas so conhecidas como
componentes de CICLOS DE VIDA DE

SOFTWARE
Alguns ciclos de vida mais conhecidos so:
Ciclo de Vida Clssico,
Clssico Prototipao, Modelo
Espiral e Tcnicas de 4a Gerao
31

Para escolha de um Ciclo de Vida de software:

natureza

do projeto e da aplicao

mtodos

e ferramentas a serem usados

controles

e produtos que precisam ser


entregues

32

Ciclo de Vida Clssico (Cascata)


modelo

mais antigo e o mais amplamente


usado da engenharia de software

modelado

em funo do ciclo da
engenharia convencional

requer

uma abordagem sistemtica,


seqencial ao desenvolvimento de
software
33

Cascata
Engenharia de
Sistemas
Anlise de
Requisitos
Projeto
Codificao
Testes
Manuteno

34

Atividades do Ciclo de Vida Clssico


1- ANLISE E ENGENHARIA DE
SISTEMAS
envolve a coleta de requisitos em nvel do
sistema, com uma pequena quantidade de
projeto e anlise de alto nvel
esta viso essencial quando o software
deve fazer interface com outros elementos
(hardware, pessoas e banco de dados)
35

Atividades do Ciclo de Vida Clssico


2- ANLISE DE REQUISITOS DE SOFTWARE
o processo de coleta dos requisitos intensificado
e concentrado especificamente no software
deve-se compreender o domnio da informao,
a funo, desempenho e interfaces exigidos
os requisitos (para o sistema e para o software)
so documentados e revistos com o cliente
36

Atividades do Ciclo de Vida Clssico


3- PROJETO
traduo dos requisitos do software para um
conjunto de representaes que podem ser avaliadas
quanto qualidade, antes que a codificao se inicie
se concentra em 4 atributos do programa:
Estrutura de Dados,
Arquitetura de Software,
Detalhes Procedimentais e
Caracterizao de Interfaces

37

Atividades do Ciclo de Vida Clssico


4- CODIFICAO
traduo das representaes do projeto para
uma linguagem artificial resultando em
instrues executveis pelo computador

38

Atividades do Ciclo de Vida Clssico


5- TESTES
Concentra-se:
nos aspectos lgicos internos do software,
garantindo que todas as instrues tenham sido
testadas
nos aspectos funcionais externos, para descobrir
erros e garantir que a entrada definida produza
resultados que concordem com os esperados.
39

Atividades do Ciclo de Vida Clssico


6- MANUTENO
provavelmente o software dever sofrer
mudanas depois que for entregue ao cliente
causas das mudanas: erros, adaptao do
software para acomodar mudanas em seu
ambiente externo e exigncia do cliente para
acrscimos funcionais e de desempenho
40

Problemas com o Ciclo de Vida Clssico

projetos reais raramente seguem o fluxo


seqencial que o modelo prope

logo no incio difcil estabelecer


explicitamente todos os requisitos. No
comeo dos projetos sempre existe uma
incerteza natural

o cliente deve ter pacincia. Uma verso


executvel do software s fica disponvel
numa etapa avanada do
desenvolvimento
41

Embora o Ciclo de Vida Clssico


tenha fragilidades, ele
significativamente melhor do que
uma abordagem casual ao
desenvolvimento de software
42

Prototipao

processo que possibilita que o desenvolvedor crie


um modelo do software que deve ser construdo.

idealmente, o modelo (prottipo)


prottipo serve como um
mecanismo para identificar os requisitos de
software.

apropriado para quando o cliente definiu um


conjunto de objetivos gerais para o software,
mas no identificou requisitos de entrada,
processamento e sada com detalhes.
43

Prototipao
incio
fim

construo
produto

obteno
dos
requisitos

projeto
rpido

construo
prottipo

refinamento
prottipo
avaliao
prottipo

44

Atividades da Prototipao
1- OBTENO DOS REQUISITOS: desenvolvedor e

cliente definem os objetivos gerais do software,


identificam quais requisitos so conhecidos e as
reas que necessitam de definies adicionais.
2- PROJETO RPIDO: representao dos aspectos

do software que so visveis ao usurio


(abordagens de entrada e formatos de sada)
45

Atividades da Prototipao
3- CONSTRUO PROTTIPO:

implementao do projeto rpido


4- AVALIAO DO PROTTIPO: cliente e

desenvolvedor avaliam o prottipo

46

Atividades da Prototipao
5- REFINAMENTO DOS REQUISITOS: cliente e

desenvolvedor refinam os requisitos do software


a ser desenvolvido. Ocorre neste ponto um
processo de iterao que pode conduzir a atividade 1
at que as necessidades do cliente sejam satisfeitas e
o desenvolvedor compreenda o que precisa ser feito.

6- CONSTRUO PRODUTO: identificados os

requisitos, o prottipo deve ser descartado e a


verso de produo deve ser construda
considerando os critrios de qualidade.
47

Problemas com a Prototipao


cliente no sabe que o software que ele v no considerou,

durante o desenvolvimento, a qualidade global e a


manutenibilidade a longo prazo. No aceita bem a idia que a
verso final do software vai ser construda e "fora" a utilizao do
prottipo como produto final

desenvolvedor freqentemente faz uma implementao

comprometida (utilizando o que est disponvel) com o


objetivo de produzir rapidamente um prottipo. Depois de
um tempo ele familiariza com essas escolhas, e esquece que elas no so
apropriadas para o produto final.

48

ainda que possam ocorrer problemas, a


prototipao um ciclo de vida eficiente.

a chave definir-se as regras do jogo logo no


comeo.

o cliente e o desenvolvedor devem ambos


concordar que o prottipo seja construdo para servir
como um mecanismo a fim de definir os requisitos.
49

Ciclo de Vida em Espiral


engloba as melhores caractersticas do ciclo de vida
Clssico e da Prototipao, adicionando um novo
elemento: a Anlise de Risco
segue a abordagem de passos sistemticos do Ciclo de
Vida Clssico incorporando-os numa estrutura iterativa
que reflete mais realisticamente o mundo real
usa a Prototipao, em qualquer etapa da evoluo do
produto, como mecanismo de reduo de riscos
50

Espiral
planejamento

anlise dos
riscos
deciso de continuar ou no

avaliao
do cliente

na direo de um
sistema concludo
engenharia

51

Atividades do Ciclo de Vida em Espiral


1- PLANEJAMENTO: determinao dos objetivos,

alternativas e restries
2- ANLISE DE RISCO: anlise das alternativas e

identificao / resoluo dos riscos


3- CONSTRUO: desenvolvimento do produto no

nvel seguinte
4- AVALIAO DO CLIENTE: avaliao do produto e

planejamento das novas fases

52

Comentrios sobre o Ciclo de Vida em Espiral


, atualmente, a abordagem mais realstica para o

desenvolvimento de software em grande escala.

usa uma abordagem que capacita o desenvolvedor

e o cliente a entender e reagir aos riscos em cada


etapa evolutiva.

pode ser difcil convencer os clientes que uma

abordagem "evolutiva" controlvel

exige considervel experincia na determinao

de riscos e depende dessa experincia para ter


sucesso
53

Comentrios sobre o Ciclo de Vida em Espiral

o modelo relativamente novo e no tem


sido amplamente usado. Demorar muitos
anos at que a eficcia desse modelo possa
ser determinada com certeza absoluta.

54

Tcnicas de 4a Gerao
Concentra-se na capacidade de se especificar o
software a uma mquina em um nvel que esteja
prximo linguagem natural.
Engloba um conjunto de ferramentas de software que
possibilitam que:
o sistema seja especificado em uma linguagem
de alto nvel e
o cdigo fonte seja gerado automaticamente a
partir dessas especificaes
55

4a Gerao
Obteno dos
Requisitos

Estratgia do
Projeto

Implementao
usando 4GL

Testes

56

Ferramentas do ambiente de
desenvolvimento de software de 4 a Gerao
O ambiente de desenvolvimento de software que sustenta
o ciclo de vida de 4a gerao inclui as ferramentas:

linguagens no procedimentais para consulta de banco


de dados
gerao de relatrios
manipulao de dados
interao e definio de telas
gerao de cdigos
capacidade grfica de alto nvel
capacidade de planilhas eletrnicas

57

Atividades das Tcnicas de 4a Gerao


1- OBTENO DOS REQUISITOS: o cliente
descreve os requisitos os quais so traduzidos
para um prottipo operacional

o cliente pode estar inseguro quanto aos requisitos

o cliente pode ser incapaz de especificar as informaes


de um modo que uma ferramenta 4GL possa consumir

as 4GLs atuais no so sofisticadas suficientemente


para acomodar a verdadeira "linguagem natural"
58

Atividades das Tcnicas de 4a Gerao


2- ESTRATGIA DE "PROJETO": para pequenas
aplicaes possvel mover-se do passo de
Obteno dos Requisitos para o passo de
Implementao usando uma linguagem de
quarta gerao
Para grandes projetos necessrio desenvolver uma
estratgia de projeto. De outro modo ocorrero os mesmos
problemas encontrados quando se usa abordagem
convencional (baixa qualidade)
59

Atividades das Tcnicas de 4a Gerao


3- IMPLEMENTAO USANDO 4GL: os resultados
desejados so representados de modo que haja
gerao automtica de cdigo . Deve existir uma
estrutura de dados com informaes relevantes e que
seja acessvel pela 4GL
4- TESTE: o desenvolvedor deve efetuar testes e
desenvolver uma documentao significativa. O
software desenvolvido deve ser construdo de maneira
que a manuteno possa ser efetuada prontamente.
60

Comentrios sobre as Tcnicas de 4a Gerao


PROPONENTES: reduo dramtica no tempo de
desenvolvimento do software (aumento de
produtividade)
OPONENTES:
OPONENTES as 4GL atuais no so mais fceis
de usar do que as linguagens de programao
o cdigo fonte produzido ineficiente
a manutenibilidade de sistemas usando tcnicas 4G
ainda questionvel
61

Mudana na natureza de
desenvolvimento de software
demanda
global
demanda por
software

aplicao de
tcnicas de 4a
Gerao
mtodos
convencionais
1970

1980

1990

2000

62

Combinao dos Mtodos de Ciclo de Vida


obteno dos requisitos
preliminares
anlise dos
requisitos

protomodelagem

projeto

protomodelagem
no. interao

tcnicas
4G

codificao
protomodelagem
no. interao

modelo espiral

tcnicas
4G
modelo espiral
no. interao

testes
sistema completo
manuteno

63

Engenharia de Software uma viso genrica


O processo de desenvolvimento de software
contm 3 fases genricas, independentes
do modelo de engenharia de software
escolhido:

DEFINIO,
DEFINIO
DESENVOLVIMENTO e
MANUTENO.
MANUTENO
64

Engenharia de Software uma viso genrica


FASE DE DEFINIO: o que ser desenvolvido.
Anlise do Sistema: define o papel de cada elemento num
sistema baseado em computador, atribuindo em ltima anlise, o
papel que o software desempenhar.

Planejamento do Projeto de Software: assim que o


escopo do software estabelecido, os riscos so analisados, os
recursos so alocados, os custos so estimados e, tarefas e
programao de trabalho definidas.

Anlise

de Requisitos:

o escopo definido para o software


proporciona uma direo, mas uma definio detalhada do
domnio da informao e da funo do software necessria antes
que o trabalho inicie.

65

Engenharia de Software uma viso genrica


DESENVOLVIMENTO: como o software vai ser desenvolvido.
Projeto de Software: traduz os requisitos do software num
conjunto de representaes (algumas grficas, outras tabulares ou
baseadas em linguagem) que descrevem a estrutura de dados, a
arquitetura do software, os procedimentos algoritmicos e as
caractersticas de interface.

Codificao: as representaes do projeto devem ser convertidas

numa linguagem artificial (a linguagem pode ser uma linguagem de


programao convencional ou uma linguagem no procedimental) que
resulte em instrues que possam ser executadas pelo computador.

Realizao de Testes do Software: logo que o software

implementado numa forma executvel por mquina, ele deve ser


testado para que se possa descobrir defeitos de funo, lgica e
implementao.

66

Engenharia de Software uma viso genrica


FASE DE MANUTENO: concentra-se nas
mudanas que ocorrero depois que o
software for liberado para uso operacional
Correo
Adaptao
Melhoramento Funcional

67

Engenharia de Software uma viso genrica


Correo: mesmo com as melhores atividades de
garantia de qualidade de software, provvel que o
cliente descubra defeitos no software. A manuteno
corretiva muda o software para corrigir defeitos.
Adaptao: com o passar do tempo, o ambiente
original (por exemplo a CPU, o sistema operacional e
perifricos) para o qual o software foi desenvolvido
provavelmente mudar. A manuteno adaptativa
muda o software para acomodar mudanas em seu
ambiente.
68

Engenharia de Software uma viso genrica

Melhoramento Funcional: a medida que o


software usado, o cliente/usurio
reconhecer funes adicionais que
oferecero benefcios. A manuteno
perfectiva estende o software para alm
de suas exigncias funcionais originais.

69

Engenharia de Software uma viso genrica


ATIVIDADES DE PROTEO as fases e etapas correlatas
descritas so complementadas por uma srie de atividades de
proteo.

Revises: efetuadas para garantir que a qualidade seja


mantida medida que cada etapa concluda.

Documentao: desenvolvida e controlada para garantir


que informaes completas sobre o software estejam
disponveis para uso posterior.

Controle das Mudanas: institudo de forma que as


mudanas possam ser aprovadas e acompanhadas.

70

Concluso
ENGENHARIA DE SOFTWARE

pode ser vista como uma abordagem


de desenvolvimento de software
elaborada com disciplina e mtodos
bem definidos.

.....a construo por mltiplas


pessoas de um software de
mltiplas verses [Parnas 1987]
71

Potrebbero piacerti anche