Você está na página 1de 13

Cap t ulo 1

ENGENHARIA DE SOFTWARE CONCEITOS BSICOS


1. INTRODUO
Nos anos 40, quando se iniciou a evoluo dos sistemas computadorizados, grande
parte dos esforos, e conseqentes custos, era concentrada no desenvolvimento do
hardware, em razo, principalmente das limitaes e dificuldades encontradas na poca !
medida que a tecnologia de hardware foi sendo dominada, as preocupaes se voltaram,
no in"cio dos anos #0, para o desenvolvimento dos sistemas operacionais, onde surgiram
ento as primeiras realizaes destes sistemas, assim como das chamadas linguagens de
programao de alto n"vel, como $%&'&(N e )%*%+, e dos respectivos compiladores (
tend,ncia da poca foi de poupar cada vez mais o usu-rio de um computador de conhecer
profundamente as questes relacionadas ao funcionamento interno da m-quina,
permitindo que este pudesse concentrar seus esforos na resoluo dos pro.lemas
computacionais em lugar de preocupar/se com os pro.lemas relacionados ao
funcionamento do hardware
0- no in"cio dos anos 10, com o surgimento dos sistemas operacionais com
caracter"sticas de multiprogramao, a efici,ncia e utilidade dos sistemas computacionais
tiveram um consider-vel crescimento, para o que contri.u"ram tam.m, de forma .astante
significativa, as constantes quedas de preo do hardware
2ma conseq,ncia deste crescimento foi a necessidade, cada vez maior, de
desenvolver grandes sistemas de software em su.stituio aos pequenos programas
aplicativos utilizados at ento 3esta necessidade, surgiu um pro.lema nada trivial devido
4 falta de e5peri,ncia e 4 no adequao dos mtodos de desenvolvimento e5istentes para
pequenos programas, o que foi caracterizado, ainda na dcada de 10 como a 6crise do
software6, mas que, por outro lado, permitiu o nascimento do termo 67ngenharia de
8oftware6
(tualmente, apesar da constante queda dos preos dos equipamentos, o custo de
desenvolvimento de software no o.edece a esta mesma tend,ncia 9elo contr-rio,
corresponde a uma percentagem cada vez maior no custo glo.al de um sistema
informatizado ( principal razo para isto que a tecnologia de desenvolvimento de
software implica, ainda, em grande carga de tra.alho, os pro:etos de grandes sistemas de
software envolvendo em regra geral um grande n;mero de pessoas num prazo
relativamente longo de desenvolvimento % desenvolvimento destes sistemas realizado,
na maior parte das vezes, de forma 6ad/hoc6, conduzindo a freqentes desrespeitos de
cronogramas e acrscimos de custos de desenvolvimento
% o.:etivo deste curso apresentar propostas de solues 4s questes
relacionadas ao desenvolvimento de software, atravs da transfer,ncia dos principais
conceitos relativos 4 7ngenharia de 8oftware, particularmente no que diz respeito ao uso
de tcnicas, metodologias e ferramentas de desenvolvimento de software
< == <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
2. PRINCIPAIS ASPECTOS DO SOFTWARE
2.1. Software: defini!o e "ara"ter#$ti"a$
9ode/se definir o software, numa forma cl-ssica, como sendo> 6um conjunto de
instrues que, quando e5ecutadas, produzem a funo e o desempenho dese:ados,
estruturas de dados que permitam que as informaes relativas ao pro.lema a resolver
se:am manipuladas adequadamente e a documentao necess-ria para um melhor
entendimento da sua operao e uso6
7ntretanto, no conte5to da 7ngenharia de 8oftware, o software deve ser visto como
um produto a ser 6vendido6 ? importante dar esta ,nfase, diferenciando os 6programas6
que so conce.idos num conte5to mais restrito, onde o usu-rio ou 6cliente6 o pr@prio
autor No caso destes programas, a documentao associada pequena ou Ana maior
parte das vezesB ine5istente e a preocupao com a e5ist,ncia de erros de e5ecuo no
um fator maior, considerando que o principal usu-rio o pr@prio autor do programa, este
no ter- dificuldades, em princ"pio, na deteco e correo de um eventual 6.ug6 (lm do
aspecto da correo, outras .oas caracter"sticas no so tam.m o.:eto de preocupao
como a porta.ilidade, a fle5i.ilidade e a possi.ilidade de reutilizao
2m produto de software Aou software, como vamos chamar ao longo do cursoB,
por outro lado, sistematicamente destinado ao uso por pessoas outras que os seus
programadores %s eventuais usu-rios podem, ainda, ter formaes e e5peri,ncias
diferentes, o que significa que uma grande preocupao no que diz respeito ao
desenvolvimento do produto deve ser a sua interface, reforada com uma documentao
rica em informaes para que todos os recursos oferecidos possam ser e5plorados de
forma eficiente (inda, os produtos de software devem passar normalmente por uma
e5austiva .ateria de testes, dado que os usu-rios no estaro interessados Ae nem tero
capacidadeB de detectar e corrigir os eventuais erros de e5ecuo
&esumindo, um programa desenvolvido para resolver um dado pro.lema e um
produto de software destinado 4 resoluo do mesmo pro.lema so duas coisas
totalmente diferentes ? @.vio que o esforo e o conseqente custo associado ao
desenvolvimento de um produto sero muito superiores
3entro desta @tica, importante, para melhor caracterizar o significado de software,
importante levantar algumas particularidades do software, quando comparadas a outros
produtos, considerando que o software um elemento l@gico e no f"sico como a maioria
dos produtos>
o software concebido e desenvolvido como resultado de um trabalho de
engenharia e no manufaturado no sentido cl-ssicoC
o software no se desgasta, ou se:a, ao contr-rio da maioria dos produtos, o
software no se caracteriza por um aumento na possi.ilidade de falhas 4 medida
que o tempo passa Acomo acontece com a maioria dos produtos manufaturadosBC
a maioria dos produtos de software concebida inteiramente sob medida,
sem a utilizao de componentes pr/e5istentes
7m funo destas caracter"sticas diferenciais, o processo de desenvolvimento de
software pode desem.ocar um con:unto de pro.lemas, os quais tero influ,ncia direta na
qualidade do produto
'udo isto porque, desde os prim@rdios da computao, o desenvolvimento dos
programas Aou, a programaoB era visto como uma forma de arte, sem utilizao de
metodologias formais e sem qualquer preocupao com a documentao, entre outros
fatores importantes ( e5peri,ncia do programador era adquirida atravs de tentativa e
erro ( verdade que esta tend,ncia ainda se verifica )om o crescimento dos custos de
software Aem relao aos de hardwareB no custo total de um sistema computacional, o
< =D <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
processo de desenvolvimento de software tornou/se um item de fundamental importEncia
na produo de tais sistemas
( n"vel industrial, algumas questes que caracterizaram as preocupaes com o
processo de desenvolvimento de software foram>
por que o software demora tanto para ser conclu"doF
por que os custos de produo t,m sido to elevadosF
por que no poss"vel detectar todos os erros antes que o software se:a
entregue ao clienteF
por que to dif"cil medir o progresso durante o processo de desenvolvimento
de softwareF
7stas so algumas das questes que a Engenharia de Software pode a:udar a
resolver 7nquanto no respondemos definitivamente a estas questes, podemos levantar
alguns dos pro.lemas que as originam>
raramente, durante o desenvolvimento de um software, dedicado tempo para
coletar dados so.re o processo de desenvolvimento em s"C devido 4 pouca
quantidade deste tipo de informao, as tentativas em estimar a duraoGcusto
de produo de um software t,m conduzido a resultados .astante insatisfat@riosC
alm disso, a falta destas informaes impede uma avaliao eficiente das
tcnicas e metodologias empregadas no desenvolvimentoC
a insatisfao do cliente com o sistema 6conclu"do6 ocorre freqentemente,
devido, principalmente, ao fato de que os pro:etos de desenvolvimento so
.aseados em informaes vagas so.re as necessidades e dese:os do cliente
Apro.lema de comunicao entre cliente e fornecedorBC
a qualidade do software quase sempre suspeita, pro.lema resultante da pouca
ateno que foi dada, historicamente, 4s tcnicas de teste de software Aat
porque o conceito de qualidade de software algo relativamente recenteBC
o software e5istente normalmente muito dif"cil de manter em operao, o que
significa que o custo do software aca.a sendo incrementado significativamente
devido 4s atividades relacionadas 4 manutenoC isto um refle5o da pouca
importEncia dada 4 manuteni.ilidade no momento da concepo dos sistemas
2.2. Software: %ito$ e Rea&idade
? poss"vel apontar, como causas principais dos pro.lemas levantados na seo
anterior, tr,s principais pontos>
a falta de e5peri,ncia dos profissionais na conduo de pro:etos de softwareC
a falta de treinamento no que diz respeito ao uso de tcnicas e mtodos formais
para o desenvolvimento de softwareC
a Hcultura de programaoI que ainda difundida e facilmente aceita por
estudantes e profissionais de )i,ncias da )omputaoC
a incr"vel 6resist,ncia6 4s mudanas Aparticularmente, no que diz respeito ao uso
de novas tcnicas de desenvolvimento de softwareB que os profissionais
normalmente apresentam
7ntretanto, importante ressaltar e discutir os chamados 6mitos e realidades6 do
software, o que, de certo modo, e5plicam alguns dos pro.lemas de desenvolvimento de
software apresentados
< =J <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
2.2.1. Mit! "# G#$#%&i'(#%t
Mito 1. )S# ' #*+i,# "i!,-# "# +( ('%+'. $#,.#t "# ,'"$-#! # ,$&#"i(#%t! "#
"#!#%/./i(#%t "# !0t1'$#2 #%t3 ' #*+i,# #!t4 ',t' ' #%&'(i%5'$ 6#(
"#!#%/./i(#%t.)
Realidade 1. Ksto verdadeiramente no o suficiente preciso que a equipe aplique
efetivamente os conhecimentos apresentados no manual necess-rio que o que conste
no dado manual reflita a moderna pr-tica de desenvolvimento de software e que este se:a
e5austivo com relao a todos os pro.lemas de desenvolvimento que podero aparecer no
percurso
Mito 2. )A #*+i,# t#( 0#$$'(#%t'! "# "#!#%/./i(#%t "# !0t1'$# "# 7.ti(' 8#$'932 +('
/#: *+# #.#! "i!,-#( "# &(,+t'"$#! "# 7.ti(' 8#$'93.)
Realidade 2. 'er 4 sua disposio o ;ltimo modelo de computador Ase:a ele um mainframe,
estao de tra.alho ou 9)B pode ser .astante confort-vel para o desenvolvedor do
software, mas no oferece nenhuma garantia quanto 4 qualidade do software
desenvolvido Lais importante do que ter um hardware de ;ltima gerao ter ferramentas
para a automatizao do desenvolvimento de software Aas ferramentas )(87B
Mito . )S# "#!#%/./i(#%t " !0t1'$# #!ti/#$ 't$'!'"2 6'!t' '+(#%t'$ ' #*+i,# ,'$'
5%$'$ ,$': "# "#!#%/./i(#%t.)
Realidade . Ksto tam.m dificilmente vai ocorrer na realidade algum disse um dia que
6 acrescentar pessoas em um pro:eto atrasado vai torn-/lo ainda mais atrasado6 3e
fato, a introduo de novos profissionais numa equipe em fase de conduo de um pro:eto
vai requerer uma etapa de treinamento dos novos elementos da equipeC para isto, sero
utilizados elementos que esto envolvidos diretamente no desenvolvimento, o que vai,
conseqentemente, implicar em maiores atrasos no cronograma
2.2.2. Mit! " C.i#%t#
Mito !. )U(' "#!&$i93 6$#/# # 8#$'. "! $#*+i!it! " !0t1'$# ; !+0i&i#%t# ,'$' i%i&i'$
!#+ ,$<#t... ('i$#! "#t'.5#! ,"#( !#$ "#0i%i"! ,!t#$i$(#%t#.)
Realidade !. 7ste um dos pro.lemas que podem conduzir um pro:eto ao fracasso, o
cliente deve procurar definir o mais precisamente poss"vel todos os requisitos importantes
para o software> funes, desempenho, interfaces, restries de pro:eto e critrios de
validao so alguns dos pontos determinantes do sucesso de um pro:eto
Mito ". )O! $#*+i!it! "# ,$<#t (+"'( &%ti%+'(#%t# "+$'%t# !#+ "#!#%/./i(#%t2
('! i!t %3 $#,$#!#%t' +( ,$6.#('2 +(' /#: *+# !0t1'$# ; 0.#=>/#. # ,"#$4 !+,$t'$
0'&i.(#%t# '! '.t#$'9-#!.)
Realidade ". ? verdade que o software fle5"vel Apelo menos mais fle5"vel do que a
maioria dos produtos manufaturadosB 7ntretanto, no e5iste software, por mais fle5"vel
que suporte alteraes de requisitos significativas com adicional zero em relao ao custo
de desenvolvimento % fator de multiplicao nos custos de desenvolvimento do software
devido a alteraes nos requisitos cresce em funo do est-gio de evoluo do pro:eto,
como mostra a figura ==
< =4 <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
1 #
1." $ % #
%& $ 1&& #
'E()*)+,- 'ESE*.-/.)ME*0- M1*20E*+,-
3
2
S
0
-
(igura 1.1 4 Knflu,ncia das alteraes de requisitos no custo de um sistema
2.2.2. Mit! " P$0i!!i%'.
Mito %. "A,?! ' #"i93 " ,$8$'(' # ' !+' &.&'93 #( 0+%&i%'(#%t2 t$'6'.5 #!t4
t#$(i%'"."
Realidade %. % que ocorre na realidade completamente diferente disto 8egundo dados
o.tidos a partir de e5peri,ncias anteriores, #0 a M0N do esforo de desenvolvimento de um
software despendido ap@s a sua entrega ao cliente AmanutenoB
Mito 5. "E%*+'%t ,$8$'(' %3 #%t$'$ #( 0+%&i%'(#%t2 ; i(,!!>/#. '/'.i'$ ' !+'
*+'.i"'"#."
Realidade 5. Na realidade, a preocupao com a garantia do software deve fazer parte de
todas as etapas do desenvolvimento, sendo que, ao fim de cada uma destas etapas, os
documentos de pro:eto devem ser revisados o.servando critrios de qualidade
Mito 6. )O ,$"+t ' !#$ #%t$#8+# % 0i%'. " ,$<#t ; ,$8$'(' 0+%&i%'%".)
Realidade 6. % programa em funcionamento uma das componentes do softwarealm
do software, um .om pro:eto deve ser caracterizado pela produo de um con:unto
importante de documentos, os quais podem ser identificados com au5"lio da figura =D
'. PARADI(%AS DA EN(EN)ARIA DE SOFTWARE
'.1 Defini!o de En*en+aria de Software
%s pro.lemas apontados nas sees anteriores no sero, claro, resolvidos da
noite para o dia, mas reconhecer a e5ist,ncia dos pro.lemas e defini/los da forma mais
precisa e eficaz so, sem d;vida, um primeiro passo para a sua soluo
< =# <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
9lano 7specificao
de &equisitos
9ro:eto +istagem
9lano de
'estes
7struturas
de 3ados
9rograma
$uncionando
(igura 1.2 4 )omponentes do software
7m primeiro lugar, preciso estar ciente tam.m de que no e5iste uma
a.ordagem m-gica que se:a a melhor para a soluo destes pro.lemas, mas uma
com.inao de mtodos que se:am a.rangentes a todas as etapas do desenvolvimento de
um software
(lm disto, importante e dese:-vel que estes mtodos se:am suportados por um
con:unto de ferramentas que permita automatizar o desenrolar destas etapas, :untamente
com uma definio clara de critrios de qualidade e produtividade de software 8o estes
aspectos que caracterizam de maneira mais influente a disciplina de Engenharia de
Software
Na literatura, pode/se encontrar diversas definies da 7ngenharia de 8oftware>
)O #!t'6#.#&i(#%t # +! "# !?.i"! ,$i%&>,i! "# #%8#%5'$i' ,'$' *+# !# ,!!'
6t#$ #&%(i&'(#%t# +( !0t1'$# *+# !#<' &%0i4/#. # *+# 0+%&i%#
#0i&i#%t#(#%t# #( (4*+i%'! $#'i!) ON(2 1PQ
@A ',.i&'93 ,$4ti&' " &%5#&i(#%t &i#%t>0i& ,'$' ,$<#t # ' &%!t$+93
"# ,$8$'('! &(,+t'&i%'i! # ' "&+(#%t'93 %#&#!!4$i' A !+' ,#$'93
# ('%+t#%93.B O*oehm, M1Q
@A6$"'8#( !i!t#(4ti&' ,'$' "#!#%/./i(#%t2 ' ,#$'93 # ' ('%+t#%93
"# !0t1'$#B O(fnor, RJQ
@C%<+%t "# (;t"!2 t;&%i&'! # 0#$$'(#%t'! %#&#!!4$i'! A ,$"+93 "#
!0t1'$# "# *+'.i"'"# ,'$' t"'! '! #t','! " &i&. "# /i"' " ,$"+t.B
OSraTowiaT, R#Q
Num ponto de vista mais formal, a 7ngenharia de 8oftware pode ser definida como
sendo a aplicao da ci,ncia e da matem-tica atravs das quais os equipamentos
computacionais so colocados 4 disposio do homem por meio de programas,
procedimentos e documentao associada 3e modo mais o.:etivo, pode/se dizer que a
7ngenharia de 8oftware .usca prover a tecnologia necess-ria para produzir software de
alta qualidade a um .ai5o custo %s dois fatores motivadores so essencialmente a
qualidade e o custo ( qualidade de um produto de software um parEmetro cu:a
< =1 <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
quantificao no trivial, apesar dos esforos desenvolvidos nesta direo 9or outro
lado, o fator custo pode ser facilmente quantificado desde que os procedimentos de
conta.ilidade tenham sido corretamente efetuados
'.2. %ode&o$ de De$en,o&,i -ent o de $oftware
% resultado de um esforo de desenvolvimento deve resultar normalmente num
produto % processo de desen7ol7imento corresponde ao con:unto de atividades e um
ordenamento destas de modo a que o produto dese:ado se:a o.tido
2m modelo de desen7ol7imento corresponde a uma representao a.strata do
processo de desenvolvimento que vai, em geral, definir como as etapas relativas ao
desenvolvimento do software sero conduzidas e interrelacionadas para atingir o o.:etivo
do desenvolvimento que a o.teno de um produto de software de alta qualidade a um
custo relativamente .ai5o
(s sees que seguem vo descrever alguns dos modelos conhecidos e utilizados
em desenvolvimento de software
C.2.1. O M"#. D+#"' "E8+'
7ste o modelo mais simples de desenvolvimento de software, esta.elecendo uma
ordenao linear no que diz respeito 4 realizao das diferentes etapas )omo mostra a
figura =J, o ponto de partida do modelo uma etapa de Engenharia de Sistemas, onde o
o.:etivo ter uma viso glo.al do sistema como um todo Aincluindo hardware, software,
equipamentos e as pessoas envolvidasB como forma de definir precisamente o papel do
software neste conte5to 7m seguida, a etapa de 1n8lise de Requisitos vai permitir uma
clara definio dos requisitos de software, sendo que o resultado ser- utilizado como
refer,ncia para as etapas posteriores de 9rojeto, 3odificao, 0este e Manuteno
Operao e
Manuteno
Codificao
Projeto
Anlise de
Requisitos
Teste e
Integrao
Engenharia de
iste!as
(igura 1. 4 Klustrao do modelo Uueda dVWgua
% modelo Uueda dVWgua apresenta caracter"sticas interessantes, particularmente
em razo da definio de um ordenamento linear das etapas de desenvolvimento
9rimeiramente, como forma de identificar precisamente o fim de uma etapa e o in"cio da
< =M <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
seguinte, um mecanismo de certificao Aou revisoB implementado ao final de cada
etapaC isto feito normalmente atravs da aplicao de algum mtodo de validao ou
verificao, cu:o o.:etivo ser- garantir de que a sa"da de uma dada etapa coerente com a
sua entrada Aa qual :- a sa"da da etapa precedenteBKsto significa que ao final de cada
etapa realizada, deve e5istir um resultado Aou sa"daB a qual possa ser su.metida 4
atividade de certificao
7stas sa"das, o.tidas ao final de cada etapa, so vistas como produtos
intermedi-rios e apresentam/se, normalmente, na forma de documentos Adocumento de
especificao de requisitos, documento de pro:eto do sistema, etcB
%utra caracter"stica importante deste modelo que as sa"das de uma etapa so as
entradas da seguinte, o que significa que uma vez definidas, elas no devem, em hip@tese
alguma ser modificadas
3uas diretivas importantes que norteiam o desenvolvimento segundo o modelo
Uueda dVWgua, so>
todas as etapas definidas no modelo devem ser realizadas, isto porque, em
pro:etos de grande comple5idade, a realizao formal destas vai determinar o
sucesso ou no do desenvolvimentoC a realizao informal e impl"cita de algumas
destas etapas poderia ser feita apenas no caso de pro:etos de pequeno porteC
a ordenao das etapas na forma como foi apresentada deve ser rigorosamente
respeitadaC apesar de que esta diretiva poderia ser questionada, a ordenao
proposta pelo modelo, por ser a forma mais simples de desenvolver, tem sido
tam.m a mais adotada a n"vel de pro:etos de software
? importante lem.rar, tam.m que os resultados de um processo de
desenvolvimento de software no devem ser e5clusivamente o programa e5ecut-vel e a
documentao associada 75iste uma quantidade importante de resultados Aou produtos
intermedi-riosB os quais so importantes para o sucesso do desenvolvimento *aseados
nas etapas apresentadas na figura =J, poss"vel listar os resultados m"nimos esperados
de um processo de desenvolvimento .aseado neste modelo> 3ocumento de 7specificao
de &equisitos, 9ro:eto do 8istema, 9lano de 'este e &elat@rio de 'estes, )@digo $inal,
Lanuais de 2tilizao, &elat@rios de &evises
(pesar de ser um modelo .astante popular, pode/se apontar algumas limitaes
apresentadas por este modelo>
o modelo assume que os requisitos so inalterados ao longo do
desenvolvimentoC isto em .oa parte dos casos no verdadeira, uma vez que
nem todos os requisitos so completamente definidos na etapa de an-liseC
muitas vezes, a definio dos requisitos pode conduzir 4 definio do hardware
so.re o qual o sistema vai funcionarC dado que muitos pro:etos podem levar
diversos anos para serem conclu"dos, esta.elecer os requisitos em termos de
hardware um tanto temeroso, dadas as freqentes evolues no hardwareC
o modelo impe que todos os requisitos se:am completamente especificados
antes do prosseguimento das etapas seguintesC em alguns pro:etos, 4s vezes
mais interessante poder especificar completamente somente parte do sistema,
prosseguir com o desenvolvimento do sistema, e s@ ento encaminhar os
requisitos de outras partesC isto no previsto a n"vel do modeloC
as primeiras verses operacionais do software so o.tidas nas etapas mais
tardias do processo, o que na maioria das vezes inquieta o cliente, uma vez que
ele quer ter acesso r-pido ao seu produto
3e todo modo, pode vir a ser mais interessante a utilizao deste modelo para o
desenvolvimento de um dado sistema do que realizar um desenvolvimento de maneira
totalmente an-rquica e informal
< =R <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
C.2.2. P$tti,'93
% o.:etivo da 9rototipao um modelo de processo de desenvolvimento que
.usca contornar algumas das limitaes e5istentes no modelo Uueda dVWgua ( idia por
tr-s deste modelo eliminar a pol"tica de 6congelamento6 dos requisitos antes do pro:eto
do sistema ou da codificao
Ksto feito atravs da o.teno de um prot@tipo, com .ase no conhecimento dos
requisitos iniciais para o sistema % desenvolvimento deste prot@tipo feito o.edecendo 4
realizao das diferentes etapas :- mencionadas, a sa.er, a an-lise de requisitos, o
pro:eto, a codificao e os testes, sendo que no necessariamente estas etapas se:am
realizadas de modo muito e5pl"cito ou formal
7ste prot@tipo pode ser oferecido ao cliente em diferentes formas, a sa.er>
prot@tipo em papel ou modelo e5ecut-vel em 9) retratando a interface homem/
m-quina capacitando o cliente a compreender a forma de interao com o
softwareC
um prot@tipo de tra.alho que implemente um su.con:unto dos requisitos
indicadosC
um programa e5istente ApacoteB que permita representar todas ou parte das
funes dese:adas para o software a construir
)olocado 4 disposio do cliente, o prot@tipo vai a:ud-/lo a melhor compreender o
que ser- o sistema desenvolvido (lm disso, atravs da manipulao deste prot@tipo,
poss"vel validar ou reformular os requisitos para as etapas seguintes do sistema
7ste modelo, ilustrado na figura =4, apresenta algumas caracter"sticas
interessantes, tais como>
um modelo de desenvolvimento interessante para alguns sistemas de grande
porte os quais representem um certo grau de dificuldade para e5primir
rigorosamente os requisitosC
atravs da construo de um prot@tipo do sistema, poss"vel demonstrar a
realiza.ilidade do mesmoC
poss"vel o.ter uma verso, mesmo simplificada do que ser- o sistema, com um
pequeno investimento inicial
1n8lise de
Requisitos
9rojeto
3odificao
0este
9rojeto 3odificao 0este
1n8lise de
Requisitos
(igura 1.! 4 7squema de evoluo da prototipao
%s prot@tipos no so sistemas completos e dei5am, normalmente, a dese:ar em
alguns aspectos 2m destes aspectos normalmente a interface com o usu-rio %s
esforos de desenvolvimento so concentrados principalmente nos algoritmos que
implementem as principais funes associadas aos requisitos apresentados, a interface
< =P <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
sendo, a este n"vel parte suprflua do desenvolvimento, o que permite caracterizar esta
etapa por um custo relativamente .ai5o
9or outro lado, a e5peri,ncia adquirida no desenvolvimento do prot@tipo vai ser de
e5trema utilidade nas etapas posteriores do desenvolvimento do sistema real, permitindo
reduzir certamente o seu custo, resultando tam.m num sistema melhor conce.ido
C.2.C. D#!#%/./i(#%t It#$'ti/
7ste modelo tam.m foi conce.ido com .ase numa das limitaes do modelo
Uueda dVWgua e com.inar as vantagens deste modelo com as do modelo 9rototipao (
idia principal deste modelo, ilustrada na figura =#, a de que um sistema deve ser
desenvolvido de forma incremental, sendo que cada incremento vai adicionando ao
sistema novas capacidades funcionais, at a o.teno do sistema final, sendo que, a cada
passo realizado, modificaes podem ser introduzidas
2ma vantagem desta a.ordagem a facilidade em testar o sistema, uma vez que a
realizao de testes em cada n"vel de desenvolvimento , sem d;vida, mais f-cil do que
testar o sistema final (lm disso, como na 9rototipao, a o.teno de um sistema,
mesmo incompleto num dado n"vel, pode oferecer ao cliente interessantes informaes
que sirvam de su.s"dio para a melhor definio de futuros requisitos do sistema
No primeiro passo deste modelo uma implementao inicial do sistema o.tida, na
forma de um su.con:unto da soluo do pro.lema glo.al 7ste primeiro n"vel de sistema
deve contemplar os principais aspectos que se:am facilmente identific-veis no que diz
respeito ao pro.lema a ser resolvido
2m aspecto importante deste modelo a criao de uma lista de controle de
projeto, a qual deve apresentar todos os passos a serem realizados para a o.teno do
sistema final 7la vai servir tam.m para se medir, num dado n"vel, o quo distante se est-
da ;ltima iterao )ada iterao do modelo de 3esenvolvimento Kterativo consiste em
retirar um passo da lista de controle de pro:eto atravs da realizao de tr,s etapas> o
pro:eto, a implementao e a an-lise % processo avana, sendo que a cada etapa de
avaliao, um passo retirado da lista, at que a lista este:a completamente vazia ( lista
de controle de pro:eto gerencia todo o desenvolvimento, definindo quais tarefas devem ser
realizadas a cada iterao, sendo que as tarefas na lista podem representar, inclusive,
redefinies de componentes :- implementados, em razo de erros ou pro.lemas
detectados numa eventual etapa de an-lise
9rojeto
)mplementao
1n8lise
1
9rojeto
)mplementao
1n8lise
&
9rojeto
)mplementao
1n8lise
*
(igura 1." 4 % modelo 3esenvolvimento Kterativo
C.2.F. O M"#. E!,i$'.
7ste modelo, proposto em =PRR, sugere uma organizao das atividades em
espiral, a qual composta de diversos ciclos )omo mostrado na figura =1, a dimenso
vertical representa o custo acumulado na realizao das diversas etapasC a dimenso
angular representa o avano do desenvolvimento ao longo das etapas
< ==0 <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
)ada ciclo na espiral inicia com a identificao dos o.:etivos e as diferentes
alternativas para se atingir aqueles o.:etivos assim como as restries impostas % pr@5imo
passo no ciclo a avaliao das diferentes alternativas com .ase nos o.:etivos fi5ados, o
que vai permitir tam.m definir incertezas e riscos de cada alternativa No passo seguinte,
o desenvolvimento de estratgias permitindo resolver ou eliminar as incertezas levantadas
anteriormente, o que pode envolver atividades de prototipao, simulao, avaliao de
desempenho, etc $inalmente, o software desenvolvido e o plane:amento dos pr@5imos
passos realizado
( continuidade do processo de desenvolvimento definida como funo dos riscos
remanescentes, como por e5emplo, a deciso se os riscos relacionados ao desempenho
ou 4 interface so mais importantes do que aqueles relacionados ao desenvolvimento do
programa )om .ase nas decises tomadas, o pr@5imo passo pode ser o desenvolvimento
de um novo prot@tipo que elimine os riscos considerados
9or outro lado, caso os riscos de desenvolvimento de programa se:am considerados
os mais importantes e se o prot@tipo o.tido no passo corrente :- resolve .oa parte dos
riscos ligados a desempenho e interface, ento o pr@5imo passo pode ser simplesmente a
evoluo segundo o modelo Uueda dVWgua
)omo se pode ver, o elemento que conduz este processo essencialmente a
considerao so.re os riscos, o que permite, de certo modo, a adequao a qualquer
pol"tica de desenvolvimento A.aseada em especificao, .aseada em simulao, .aseada
em prot@tipo, etcB
Prot"tipo #
Conceito de
Operao
Plano de Requisitos
Plano de Ciclo
de $ida
Re%iso
Anlise
de Riscos
Anlise
de Riscos
Anlise
de Riscos
Prot"&
tipo '
Prot"&
tipo (
Prot"&
tipo
i!ula)es* !odelos* +++
Requisitos
de oft,are
Requisitos
$alidao dos
-esen%ol%i!ento
Plano de
Integrao e Testes
Plano de
ficao do Pro&
$alidao e $eri&
jeto
Projeto
do pro&
duto de
soft,are
Opera&
cional
Projeto
-etalha&
do
C"digo
Teste
de
uni&
dade
Inte&
grao
e teste
Teste
de acei&
tao
I!ple&
!enta&
o
Prximas etapas
do plano
Avalia alternativas,
identifica e resolve
riscos
Desenvolve e verifica
Produto do Prximo
Nvel
Determina objetivos
alternativas e restries
Anlise
de Riscos
CU!" ACU#U$AD"
A%AN&"
(igura 1.5 4 % modelo espiral
2ma caracter"stica importante deste modelo o fato de que cada ciclo encerrado
por uma atividade de reviso, onde todos os produtos do ciclo so avaliados, incluindo o
plano para o pr@5imo passo Aou cicloB Numa aplicao t"pica do modelo, pode/se imaginar
a realizao de um ciclo zero, onde se avalie a realiza.ilidade do pro:eto, o resultado
devendo ser a concluso de que ser- poss"vel implementar ou no o pro:eto de
desenvolvimento (s alternativas consideradas neste caso so de muito alto n"vel, como
< === <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
por e5emplo, se a organizao deve desenvolver o sistema ela pr@pria ou se deve
contratar o desenvolvimento :unto a uma empresa especializada
% modelo se adequa principalmente a sistemas que representem um alto risco de
investimento para o cliente
.. /ISO (ERA0 DA EN(EN)ARIA DE SOFTWARE
(nalisando os modelos apresentados na seo precedente, poss"vel o.servar
que, apesar de apresentar denominaes 4s vezes diferentes e de estarem associadas de
modo relativamente distinto, as etapas apresentadas so caracterizadas por atividades
similares
3e um modo geral, pode/se organizar o processo de desenvolvimento de um
software a partir de tr,s grandes fases> a fase de definio, a fase de desen7ol7imento e
a fase de manuteno as quais sero discutidas nas sees a.ai5o
..1. Fa$e de Defini!o
( fase de definio est- associada 4 determinao do que vai ser feito Nesta fase,
o profissional encarregado do desenvolvimento do software deve identificar as informaes
que devero ser manipuladas, as funes a serem processadas, qual o n"vel de
desempenho dese:ado, que interfaces devem ser oferecidas, as restries do pro:eto e os
critrios de validao Ksto ter- de ser feito no importando o modelo de desenvolvimento
adotado para o software e independente da tcnica utilizada pra faz,/lo
7sta fase caracterizada pela realizao de tr,s etapas espec"ficas>
a 1n8lise :ou 'efinio; do Sistema, a qual vai permitir determinar o papel de
cada elemento Ahardware, software, equipamentos, pessoasB no sistema, cu:o
o.:etivo determinar, como resultado principal, as funes atri.u"das ao
softwareC
o 9lanejamento do 9rojeto de Software, no qual, a partir da definio do
escopo do software, ser- feita uma an-lise de riscos e a definio dos recursos,
custos e a programao do processo de desenvolvimentoC
a 1n8lise de Requisitos, que vai permitir determinar o con:unto das funes a
serem realizadas assim como as principais estruturas de informao a serem
processadas
..2. Fa$e de De$en,o&,i -ent o
Nesta fase, ser- determinado como realizar as funes do software (spectos
como a arquitetura do software, as estruturas de dados, os procedimentos a serem
implementados, a forma como o pro:eto ser- transformado em linguagem de programao,
a gerao de c@digo e os procedimentos de teste devem ser encaminhados nesta fase
Normalmente, esta fase tam.m organizada em tr,s principais etapas>
o 9rojeto de Software, o qual traduz, num con:unto de representaes gr-ficas,
ta.ulares ou te5tuais, os requisitos do software definidos na fase anteriorC estas
representaes Adiversas tcnicas de representao podem ser adotadas num
mesmo pro:etoB permitiro definir, com um alto grau de a.strao, aspectos do
software como a arquitetura, os dados, l@gicas de comportamento AalgoritmosB e
caracter"sticas da interfaceC
a 3odificao, onde as representaes realizadas na etapa de pro:eto sero
mapeadas numa ou em v-rias linguagens de programao, a qual ser-
caracterizada por um con:unto de instrues e5ecut-veis no computadorC nesta
etapa, considera/se tam.m a gerao de c@digo de implementao, aquele
< ==D <
CAP. 1 ENGENHARIA DE SOFTWARE: CONCEITOS BSICOS PROF. VITRIO BRUNO MAZZOLA
o.tido a partir do uso de ferramentas Acompiladores, linTers, etcB e que ser-
e5ecutado pelo hardware do sistemaC
os 0estes de Software, onde o programa o.tido ser- su.metido a uma .ateria
de testes para verificar Ae corrigirB defeitos relativos 4s funes, l@gica de
e5ecuo, interfaces, etc
..'. Fa$e de %an1ten!o
( fase de manuteno, que se inicia a partir da entrega do software,
caracterizada pela realizao de alteraes de naturezas as mais diversas, se:a para
corrigir erros residuais da fase anterior, para incluir novas funes e5igidas pelo cliente, ou
para adaptar o software a novas configuraes de hardware
8endo assim, pode/se caracterizar esta fase pelas seguintes atividades>
a 3orreo ou Manuteno 3orreti7a, a qual consiste da atividade de correo
de erros o.servados durante a operao do sistemaC
a 1daptao ou Manuteno 1daptati7a, a qual realiza alteraes no software
para que ele possa ser e5ecutado so.re um novo am.iente A)92, arquitetura,
novos dispositivos de hardware, novo sistema operacional, etcBC
o Melhoramento (uncional ou Manuteno 9erfecti7a, onde so realizadas
alteraes para melhorar alguns aspectos do software, como por e5emplo, o seu
desempenho, a sua interface, a introduo de novas funes, etc
( manuteno do software envolve, normalmente, etapas de an-lise do sistema
e5istente Aentendimento do c@digo e dos documentos associadosB, teste das mudanas,
teste das partes :- e5istentes, o que a torna uma etapa comple5a e de alto custo
(lm disso, considerando a atual situao industrial, foi criado, mais recentemente,
o conceito de Engenharia Re7ersa, onde, atravs do uso das tcnicas e ferramentas da
7ngenharia de 8oftware, o software e5istente sofre uma 6reforma geral6, cu:o o.:etivo
aumentar a sua qualidade e atualiz-/lo com respeito 4s novas tecnologias de interface e de
hardware
< ==J <