Sie sind auf Seite 1von 102

| 



  

 

i     
i 
O     
 
   
(quando libera o potencial embutido no hardware)
  


  

(quando ele atua como uma base para o controle do


computador - sistema operacional; para a
comunicação de informação - redes; para a criação e
controle de outros programas)
Ô 
   
3   
 i hardware sofreu contínuas mudanças
 i software era uma arte "secundária"
para a qual havia poucos métodos
sistemáticos
 i hardware era de propósito geral
 i software era específico para cada
aplicação
 Não havia documentação
Ô 
   
3   
 èultiprogramação e sistemas multiusuários

 Técnicas interativas

 Sistemas de tempo real

 1 geração de SGBDƍs
a

 Produto de software - software houses

 Bibliotecas de Software

 Cresce no de sistemas baseado em computador

 èanutenção quase impossível



O  |!"#

Ô 
   
3   $
 Sistemas distribuídos
 Redes locais e globais
 Uso generalizado de
microprocessadores - produtos
inteligentes
 Hardware de baixo custo
 Impacto de consumo
Ô 
   
3 


 
V
V VV
VV
 Tecnologias orientadas o objetos
 Sistemas especialistas e software de
inteligência artificial usados na prática
 Software de rede neural artificial
 Computação Paralela
 Internet

     
  
#       
 Î habilidade em construir software deixa a desejar em relação
ao potencial do hardware
 Î construção de software não é rápida o suficiente para
atender as necessidades do mercado
 Î sociedade depende cada vez mais de software confiável;
quando ele falha, podem ocorrer gastos enormes e desgaste
de muitos profissionais para arrumá-lo
 i esforço para construir software confiável e de qualidade é
muito grande
 i suporte aos programas existentes é apoiado por projetos
pobres e recursos inadequados
ü     

* $%    &      &  



   %       
 Porque é preciso tanto tempo para terminar os
programas?
 Porque os custos são tão altos?
 Porque não se consegue encontrar todos os erros antes
que o software seja liberado para os clientes?
 Porque existe uma dificuldade em medir o progresso à
medida que o software está sendo construido?
Î     
     
 
      Ô  
ü   
Ô 

Vos sistemas de informação escritos há 20 anos,
depois de incontáveis alterações estão hoje de
uma forma que não permite manutenção (peq.
mudanças M falha do sistema)
Vaplicações de engenharia que geram dados de
projeto críticos, devido à idade e reparos, não
permitem que alguém entenda suas estruturas
internas
V sistemas embutidos que possuem
comportamentos inesperados, mas não podem se
tornar inoperantes pois não há nada para
substituí-los
[   

hoje o software é um negócio competitivo


os principais direcionadores que propiciarão
uma intensa competição na área de software
são: custo, adequação de prazo e qualidade
intensifica-se, portanto, uma rápida
movimentação dos desenvolvedores para
adotar práticas modernas de Engenharia de
Software

  '
quando executadas produzem a função e o
desempenho desejados
      O 
possibilitam que os programas manipulem
adequadamente a informação
(  O   
descrevem a operação e o uso dos programas
[   
 desenvolvido ou projetado por
engenharia, não manufaturado no sentido
clássico


não se desgasta mas se deteriora

(

a maioria é feita sob medida em vez de


ser montada a partir de componentes
existentes
[   
  



   !

 
!




[   
  

  

 
 



  
"


Î
   
#$ % j  j 
j  
&' ( ' ) *' Î        

 
% )' * % Î j     
    
% '+ (, % ' &'  j    
' +- ' + Î* Î
' ) #.( &  j 
   

   

&' % ) .(Î & * j     j 
' Î        
&' +(' -/+%Î   
 j   
Î * (   %  Î j 
   

j

    

[   
Refere-se a um conjunto de problemas
encontrados no desenvolvimento de
software
3    
   
   
  
)Não dedicamos tempo para coletar dados sobre o
processo de desenvolvimento de softwareš
)Sem nenhuma indicação sólida de produtividade,
não podemos avaliar com precisão a eficácia de
novas ferramentas, métodos ou padrõesš
[   
3  
 


 
  
  
   
 

    
)is projetos de desenvolvimento de
software normalmente são efetuados
apenas com um vago indício das
exigências do clienteš
[   
3  


        



Só recentemente começam a surgir conceitos
quantitativos sólidos de garantia de qualidade
de software
3   !  
"
 
Î tarefa de manutenção devora o orçamento
destinado ao software
Î facilidade de manutenção não foi enfatizada
como um critério importante
[   

V„  „ 
„„  a
a

V  „ „  J


J

VJ „„  „J


J

V  „ „„ a


a
[   
   
[   
 *     
i software é um elemento de sistema lógico e não
físico.
Conseqüentemente, o sucesso é medido pela
qualidade de uma única entidade e não pela
qualidade de muitas entidades manufaturadas

 


 %


 +++
[   
   
[   


 

 
  

 


 
Gerentes sem nenhum background em software
is profissionais da área de software têm
recebido pouco treinamento formal em novas
técnicas para o desenvolvimento de software
Resistência a mudanças
[   
   
[   

(     

propagaram desinformação e confusão


> V V
>
 
>  V

è  
(administrativos)
Já temos um manual repleto de padrões e
procedimentos para a construção de
software. Isso não oferecerá ao meu pessoal
tudo o que eles precisam saber?
Realidade:
Será que o manual é usado?
is profissionais sabem que ele existe?
Ele reflete a prática moderna de desenvolvimento de
software?
Ele é completo?
è   (administrativos)

èeu pessoal tem ferramentas de


desenvolvimento de software de última
geração; 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.
è   (administrativos)

Se nós estamos atrasados nos prazos,


podemos adicionar mais programadores e
tirar o atraso.

Realidade:
i desenvolvimento de software não é um processo
mecânico igual à manufatura.
Îcrescentar pessoas em um projeto torna-o ainda
mais atrasado. Pessoas podem ser acrescentadas,
mas somente de uma forma planejada.
è   (cliente)

Uma declaração geral dos objetivos é


suficiente para se começar a escrever
programas - podemos preencher os
detalhes mais tarde.
Realidade:
Uma definição inicial ruim é a principal causa de
fracassos dos esforços de desenvolvimento de
software.
É fundamental uma descrição formal e detalhada do
domínio da informação, função, desempenho,
interfaces, restrições de projeto e critérios de
validação.
è   (cliente)

is requisitos de projeto modificam-se


continuamente, mas as mudanças podem ser
facilmente acomodadas, porque o software é
flexível.

Realidade:
Uma mudança, quando solicitada tardiamente num
projeto, pode ser maior do que mais do que uma
ordem de magnitude mais dispendiosa do que a
mesma mudança solicitada nas fases iniciais.
   

|    


|  
 
  
  

è   (profissional)

Îssim que escrevermos o programa e o


colocarmos em funcionamento nosso
trabalho estará completo.

Realidade:
is dados da indústria indicam que entre 50 e
70% de todo esforço gasto num programa
serão despendidos depois que ele for entregue
pela primeira vez ao cliente.
è   (profissional)

Enquanto não tiver o programa


"funcionando", eu não terei realmente
nenhuma maneira de avaliar sua
qualidade.
Realidade:
Um programa funcionando é somente uma parte de uma
Configuração de Software que inclui todos os itens de
informação produzidos durante a construção e manutenção
do software.
  0 Ô 

&   ,    -
€ é um conjunto de atividades e resultados associados que
geram um produto de software


& 

  

 -
€ é uma disciplina da engenharia que se ocupa de todos os
aspectos da produção de software, desde os estágios iniciais de
especificação do sistema até a manutenção desse sistema,
depois que ele entrou em operação [SièèERVILLE]
€ o estabelecimento e uso de sólidos princípios da engenharia
para que se possa obter economicamente um software que seja
confiável e que funcione eficientemente em máquinas reais
[BÎUER]
ü 
  [

O 

            
          
             
     

              

[IEEE]
ü 
  [

  

 .
  /
  

@V V


     
@ VVV
ü 
  [

@V V


     
@ VVV

   
 V V VV  V  @ @V V
  V VV  V   
       V V V VV
VV V VV   @ V
ü 
  [

@V V


     
@ VVV

 V @V 
 V V  V V VVV     V    
    @ V V  V   
 !! @ 
"  #V V    $ %   
 V  VV   @  V VV   @ V
ü 
  [

@V V


     
@ VVV

   @V
 V  "  V@V    V#  
  &  " &     VV &   
V 
ü 
  [

@V V


     
@ VVV
   V V 
'    V V V  
((V V V V  
 V 

 !! V V @V V   V 
((  
 V  V )% )   %  @ V

  

 

Uma Visão Genérica: 3 Fases


€ Definição - Əo queƐ % V
€ Engenharia do Sistema
€ Planejamento do Projeto * )     +V V 
 "
€ Înálise de Requisitos
* + , 
 V - V
€ Desenvolvimento - ƏcomoƐ * VV V  VV
€ Projeto *  V  ) @V
€ Geração do Código *    VV 
' 
€ Teste
*  V  + VV
€ èanutenção * .
*  V  +
, 

  


 

€ | 
   

  %
  


 


 


 
€ # 


 
 

  

 
€ O   
 

 



%
 



€ 0 

%


 
& 


  
 

 0
€ |10 
 
 

i    
1 [   
1 [ 
Î   1
 77
 
[2  

 V  V V
V

@  
è 3  4 5  / V V 
Î   6
V # VV
 "  @ V&
Î     
VV   0V
i    
[2  
 77

1 [   


VV
V  
V@V V @ V(
Î   1
V  " &
[2      @ V
  #   
VV VVV(
è 3  4 5 
  
Î   6 @V 1V V 
"VVV V  
Î  VV 2  V   " 

i    

1 [   


Î  7
Î   1

[2  
VV VVV
@ V& V 

@V & (
è 3  4 5       
   
Î   6
@V 1V V
Î 
è
    

  
     V
V„  

  



è
   
  Ô  
[
  8
è
    

€ 


& %

 
 

  %


1 %

 




& 


1 
€ ,   

 
 

   

0 
  

  
€ # 
  


&  
& 
 


 
 

 
€
  
 

€ 
 0

 $




€  
  




0 

€  
  

   
& 



 
è
    

€ ibjetivos
€ Îuxiliar no processo de produção 8
  
 
3 " 
       " 
€ Î 7 
03  
3

3 
3

3  3 4
€  
7
€ 7 
       

    4
€ Î   
7      "3 
 3      
  9: 
 4
è
     

      @ V   


VV V      

  


    


9

 
 
 
è
     
i         V  @ 
2   

 


è
    

# 
2  

,  
i 2 
&3
4
i 2 

,  

i 2  #O

i 2  
     
i 

i 
i 2  

  
i O 
  
i 2 

2  
| 
i !

5 
è
 ;
5
Ciclo de Vida Clássico ou èodelo Cascata
O modelo mais antigo e o mais
amplamente usado da engenharia de
software
O modelado em função do ciclo da
engenharia convencional
O requer uma abordagem sistemática,
seqüencial ao desenvolvimento de
software
è
 ;
5

Ô   
   ! " 

# $  %  &  

 V  VV,  V   &


V V( @ V  V V
è
 ;
5
Ô   
  
# 
' 
$ 

% 

&  
(  

   V&   + 3 &4@V 1


Î   è
 ;
5
#674

6 6*##
O

! 2#
Ô    «     
  
   " 
 # 
# 
' 
$ 



 $  

 " 
% 
&   «   „ „ J  
(     „„„
„ 
„  „   
„„„   „
„  „ „ 
Î   è
 ;

5
#674
O
 ! 
O

Ô   
 |!"#
   « 
 

# 
'    
 
$   
  
%    
&   «
 %  
 

"
  # 
(  
#
  
  !&

«   3    
      


   
  
Î   è
 ;

5
,
!
«  

 

     $

Ô     '  
 
  
#   
   

#
' 
$     
  
%  «       (

&  
& )
O Ô 

8 
(  
O  


  

O 8 
,



O 


 
Î   è
 ;

5
 O|#9:
«  

  '
Ô   
 $    &&
  
#  * + 
 
' 
$ 
 ' !  
 

% 
&  
(  
Î   è
 ;

5
TESTES
[ %)
Ô   
   «    ,&
#   
  #
' 
$  & 
  
 
%   '  



&  
«    
(  
! #  
( 
   &   
 


 
 

  

    
-
Î   è
 ;

5
2#6! 69:
Ô   
  
«   
     

# 
     &  
' 
$ 
% 
« 
 
)
OO #   
&  
 
O O O
(  
     
 O    
  O O  
       
 V  .    V

V
i projetos reais raramente seguem o fluxo seqüencial que o modelo
propõe

i logo no início é difícil estabelecer explicitamente todos os requisitos.


No começo dos projetos sempre existe uma incerteza natural

i o cliente deve ter paciência. Uma versão executável do software só


fica disponível numa etapa avançada do desenvolvimento

i muitas vezes os desenvolvedores ficam ociosos desnecessariamente,


devido a estados bloqueadores (quando existem tarefas dependentes,
membros da equipe devem aguardar que outros terminem)
è
 ;
5
3 

Ô  
    
   
     
     
    
 V
i processo que possibilita que o desenvolvedor
crie um modelo do software que deve ser
construído.
i  * 
serve como
idealmente, o modelo 3 *
um mecanismo para identificar os requisitos
de software.
i apropriado para quando o cliente definiu um
conjunto de objetivos gerais para o software,
mas não identificou requisitos de entrada,
processamento e saída com detalhes.
 V

V   V5 
   6 

 
 6  
   
 V
 
@
 

 
   2
 

   


< <

 
 
<
% V V  V
i


 
@
 

 
 

 

desenvolvedor e
  
 
2 cliente definem os
  objetivos gerais do
software, identificam
  

< quais requisitos são
<
 
  conhecidos e as áreas
<
que necessitam de
definições adicionais

—$


% V V  V
 
@
[ 
—

 
 implementação rápida do
 
   2 projeto
 

   


<
<
 
 



—

< cliente e desenvolvedor
avaliam o protótipo
% V V  V
  


 

 ë
@
 
cliente e desenvolvedor
 refinam os requisitos do
 
   2
  software a ser desenvolvido.
icorre neste ponto um
  

<
processo de iteração que pode
<
 
  conduzir à 1a. atividade até
< que as necessidades do
cliente sejam satisfeitas e o
desenvolvedor compreenda o
que precisa ser feito.
% V V  V
 
@
 

[ 
—
  
 
2 identificados os requisitos, o
 
protótipo deve ser
  
descartado e a versão de

< < produção deve ser construída
 
 
<
considerando os critérios de
qualidade.
 V  V  V

i cliente não sabe que o software que ele vê


não considerou, durante o desenvolvimento,
a qualidade global e a manutenibilidade a
longo prazo. Não aceita bem a idéia de que a
versão final do software vai ser construída e
"força" a utilização do protótipo como
produto final.
 V  V  V

i desenvolvedor freqüentemente faz uma


implementação comprometida (utilizando o
que está disponível) com o objetivo de
produzir rapidamente um protótipo. Depois
de um tempo ele se familiariza com essas
escolhas, e esquece que elas não são
apropriadas para o produto final.
 V 3 

Î     


    V
Î  !"  
 V
#      
  $" %
       
  V
.  +%'
+V% V  '  
i É o modelo seqüencial linear mas que
enfatiza um desenvolvimento extremamente
rápido
i Î Əalta velocidadeƐ é conseguida através de
uma abordagem de construção baseada em
componentes
i Usado quando os requisitos são bem definidos
e o escopo do sistema é restrito
.  +%'
 
 
   V
 V  6 
 V  6   V
 6   V
 V
 V  V  V
 V   
 V
V V
 V    V V
   V V  
V V  @ V
V V
V V  
 @ V
 
 @ V

(78V
% V  .  +%'
. V 6  9
 V @0 @ V  V @, 
 6  6    VV VVV
 V     , 9
 V
 @ V     6  :
 V  @ V 
VV:
    VV@ V :
V V  VV V@ V V:
V V  V  V:

 
 @ V
% V  .  +%'
. V V 9
 V @0 @ V @ V@V 
 6  V  
@V  " 
 V " V    # 
 V VVV   V 6  ! 
 V  @ VV V  VV 2  V 
   VV "  @   
V V
V  V
V V
 
 @ V
% V  .  +%'

. V   9
 V  " V @  
 6 
V @ V VV    @0
 V @ V   # VV
 V  VV@  6  !
 V  VV V  ,  
     V   # VV
V V VV   " V
V V
 
 @ V
% V  .  +%'
V VV V 9
 V   +%'V   
 6 
 V VV !V 

 V V @ V@ V   V&
 V  V    V  2
 V  V     # !
   @V V V V VV 
V V  VV VVV @ V
V V
 
 @ V
% V  .  +%'

 V   @ V 9


 6    V    & V
 V
  "#@ V  V & 
 V      !  
      V
 V
V  @V   
  
0  VV
V V
V V
 
 @ V
.  +%'
V  V:

; V  ,    V   "


VV      VV

; V V V V     VVV  @ V


 VV V @  V   VV 
   

; VV V @    V VV VV V


   V &    VV VV @ V

 V   .  +%'
; VV  "  V# & V V & +%' 
  V @   VV V  /
VV  

; +%'       


       VV  V V V
 V  VVV VV    V
"V  2    VV

;     @  VV V   V


V V  &  " @VV#
; 
V V V  V
.     
   #
€ usado quando o deadline não é adequado para
o desenvolvimento do software; a data de
término não é realística
€ uma versão limitada pode ser introduzida para
atender à competitividade e pressões do
negócio
€ são liberados Əprodutos coreƐ
€ os detalhes e extensões ainda devem ser
definidos
€ Ex: editor de texto
.     
   #

: 

: Ô 

: è  [
:   
 [
.    V
€ combina elementos do èodelo Linear com a
filosofia da Prototipação
€ aplica seqüências lineares numa abordagem
de ƏsaltosƐ à medida que o tempo progride
€ Cada seqüência linear produz um
incremento do software (proc. de texto)
€ i processo se repete até que um produto
completo seja produzido
€ Difere da Prototipação pois a cada
incremento produz uma versão operacional
do software
.    V
Ô       !   
" 
  V
# $  %  &  
   

  V
   # $  %  &  
   

# $  %  &     V


  
   

$  &     
   # % 
V
 
  

.   V
iengloba a natureza iterativa da ,   com os
aspectos sistemáticos e controlados do 2 
4

ifornece o potencial para o desenvolvimento rápido


de versões incrementais do software

inas primeiras iterações a versão incremental pode


ser um modelo em papel ou um protótipo
inas iterações mais adiantadas são produzidas
versões incrementais mais completas e melhoradas
.   V


2 Î
    

[  
 [

Ô

Î 
   [
 [    
 
% V  .   V

2 Î
    

)  V     9
V@V V VV V V@ V [  
 V         [

Ô
V"V 9
V@V V VV@  &@ V 
    V @ V,  "
Î 
   [

%# + 9 [    
 
V@V V VV@VV V  
 
 V
VV9
V@V V VV  V V   V, VV V
)   +V 9
V@V V VV  &  V& VVV   V  # 0&  V 
V 
%VV    9
V@V V VV  @V 1   V V VVVV V  V  
@ V V V V@V VV V V V@V  VV 
.   V 3 

i ˜     %


       
i      
     
 
i %       
 & &˜  
i '  '(     
 '( 

.   V 3 

i a a a˜aa a a
 a
i a a
a
˜    


a aa


   a  

a
.  .  V
)   

iincorpora características de tecnologias irientadas


a ibjetos no èodelo Espiral

i a atividade de Engenharia começa com a


identificação de classes candidatas

i se a classe existe, ela será reutilizada


ise a classe não existe, ela será desenvolvida nos
moldes do paradigma de irientação a ibjetos
.  .  V
)   
 @ V 
   
VV

2 Î
    
  @
(
V    
[    V   V  V
 [
  V

0 V
 V  
 
  
V 
V  V
  2
Ô
[    
   
Î 
   [

  
V  
  2
.  '   
)   
ié representado como uma série de grandes
atividades técnicas, tarefas e seus estados
associados

iele define uma série de eventos que podem


disparar transições de um estado para outro, para
cada uma das atividades da engenharia de software

ié freqüentemente usado como um paradigma para


o desenvolvimento de aplicações Cliente/Servidor
ipode ser aplicado a todo tipo de desenvolvimento
de software e fornece uma visão exata de como está
o estado do projeto
.  '   
)   

% V%# 


  


 
    


    


"
.  .
 - V

€ Compreende um conjunto de atividades que determinam uma


especificação matemática para o software
€ Uma variante dessa abordagem é denominada Engenharia de
Software Cleanroon
€ Utilizando métodos formais eliminam-se muitos problemas
encontrados nos outros modelos, como p.ex., ambigüidade,
incompletitude e inconsistência, que podem ser corrigidas mais
facilmente de forma não ad hoc mas através de análise
matemática
€ Promete o desenvolvimento de software livre de defeitos
.  .
 - V 
3 

€ Îtualmente esse modelo consome muito


tempo e é muito caro
€ Como poucos desenvolvedores possuem o
background necessário para utilizá-lo, são
requeridos muitos cursos e treinamentos
€ É difícil usar tais modelos como meio de
comunicação com a maioria dos clientes

 V V V
Concentra-se na capacidade de se especificar o
software a uma máquina em um nível que esteja
próximo à linguagem natural.

Engloba um conjunto de ferramentas de software


que possibilitam que:
i o sistema seja especificado em uma linguagem
de alto nível e
i o código fonte seja gerado automaticamente a
partir dessas especificações

 V V V

i  


' 
Ô ) 
*$ +
"    
  ,-.
&  
   
  
    = 5
i ambiente de desenvolvimento de software que sustenta
o ciclo de vida de 4a geração inclui as ferramentas:
V a e  pred e
  p 
a
 de b de d 
V e   e ea
 
V  a  e  
V 
e   e ef   e
ea
V e   e  
V   e    e a
 ea
V   e e a a eae
 
% V V 
 V V
V
i  



 
&   o ' 
Ô ) 
*$ +
cliente descreve os "    
   ,-.
requisitos os quais são &  
traduzidos para um protótipo
operacional

i a   a   a a a  



a
i a 
 a  
     

 
a  
a a    ,-. a a

i  ,-. 
 a a a

  

 
 aa     
 /
 /
% V V 
 V V
V
i  

 

;, $ ; para ' 
pequenas aplicações é Ô ) 
*$ +
possível mover-se do passo "    
   ,-.
de 
 
&   &  
para o passo de 
usando uma 4  

5<

i    aa )  


a a  
 
aa O aa a a a aa a a a
 a a  a   a  a
a 


 
% V V 
 V V
V
i  
(


' 
Ô ) 
5 4os resultados *$ +
"    
desejados são representados    ,-.
&  
de modo que haja geração
automática de código . Deve
existir uma estrutura de
dados com informações
relevantes e que seja
acessível pela 4GL
% V V 
 V V
V
i  
5
 o desenvolvedor ' 
Ô ) 
deve efetuar testes e *$ +
"    
desenvolver uma    ,-.
&  
documentação
significativa. i software
desenvolvido deve ser
construído de maneira
que a manutenção possa
ser efetuada
prontamente.

 V V V
3 

PRiPiNENTES: redução dramática no tempo


de desenvolvimento do software (aumento
de produtividade)
iPiNENTES: as 4GL atuais não são mais
iPiNENTES
fáceis de usar do que as linguagens de
programação
i  
  
 



i 







 


5<




 

)  
Ô Ô Ô
Ô
a 

 aaa  

aa 
a a 
a 
˜a a
   a


rrrrr 
     
  

Das könnte Ihnen auch gefallen