dostopicosabordadosnaareadeengenhariadesoftware.oslivrosdaserieforamescritos porprofessoresdoinstitutodecomputac~aodauniversidadeestadualdecampinas,que ensinamoutrabalhamnessaarea,emalgunscasosemparceriacomprofessoresdeoutras didaticos,emportugu^es,sobreessesassuntos.ademais,comosetratadeumaserie,existe universidadesbrasileiras.amotivac~aoparaaproduc~aodaserievemdacar^enciadetextos umcomprometimentoentreosvariosassuntosabordadospelosdiversostextos,deformaque AserieTtulosemEngenhariadeSoftwaretemporobjetivocobriragrandemaioria elessejamcomplementares.opublicoaqueaseriesedestinas~aoosalunosdegraduac~aoe pos-graduac~aoeprossionaisdaareadedesenvolvimentodeprodutosdesoftware. dadenosoutroslivros.otextoapresentaasprincipaisatividadesenvolvidasnaengenharia desoftware,utilizandoexemplospraticosparamostrarosdiferentesaspectosdoprocesso deconstruc~aodesoftware,desdeasuaconcepc~aoateasuainstalac~ao.olivroeindicadoespecialmenteparapessoascomformac~aoemcomputac~ao,massemconhecimentoda areaequedesejemadquirirumavis~aoampladosvariosassuntosenvolvidosemengenharia Oprimeirolivrofazumaintroduc~aoaosconceitosqueser~aotratadoscommaisprofundi- desoftware.deveservistocomopontodepartidaparaaescolhadetopicosespeccos paraaprofundamentoposterior.todososoutroslivrosdaserievisamintroduzirosconceitosbasicosutilizadosnaconstruc~aodeprodutosdesoftware,taiscomometodologiaspara abordagens:estruturada,orientadaaobjetos,orientadaadados,formalouorientadaasistemasinterativos,aplicadasacasosreais.odesenvolvimentoestruturadoeapresentadvidosnasatividadesdeconstruc~aodeprodutosdesoftware,utilizandoumadasseguintes taiscomodiagramadeuxodedados,diagramadeuxodeeventos,dicionariodedados atravesdeconceitosbasicosedeferramentasutilizadasnaanaliseeprojetoestruturados, ediagramadeestruturadesoftware.aespecicac~aodoprojetoapartirdaanaliseestru- Oslivrosquetratamdemetodologiasdedesenvolvimentodiscutemosconceitosenvol- desenvolvimentodesistemas,qualidadedesoftwareegerenciamentodeprojetos. notac~aoz,linguagemlargamenteempregadaemprojetosindustriais,assimcomoummate- daespecicac~aoconstruda.osfundamentosnecessariosparaumperfeitoentendimentoda raconstruc~aodeespecicac~oesquepossibilitemumavericac~aorigorosadaspropriedades turadaeaqualidadedoprojetos~aotambemdiscutidas.odesenvolvimentoorientadoa objetoseapresentadoatravesdaconstruc~aodomodelodeobjetos,diagramasdesequ^encia paraodesenvolvimentodesistemass~aodiscutidasatravesdaapresentac~aodetecnicaspa- demensagens,diagramasdecolaborac~aoentreobjetosecasosdeuso.abordagensformais
rialmaisavancadosobreela,s~aoapresentados.odesenvolvimentodesistemasvoltadoao nalinguagemsql.otextoincluimodelagem,projetologico,conceitosdenormalizac~ao,de projetodedadoseapresentadoatravesdebasesdedadosrelacionais,utilizandoexemplos integridadeedetransac~oes.odesenvolvimentodesistemasinterativoseapresentadoatraves dasquest~oesenvolvidasnastarefastpicasdaconstruc~aodeinterfaceshomem{computador (IHC).Alemdisso,umpanoramadasdiferentesabordagensparadesenvolvimentodeinterfaceseapresentadolosdequalidades~aoapresentadosapartirdosconceitosbasicosedorelacionamentoentreos processoedoproduto,atravesdemodelosetecnicasparagarantiadequalidade.osmode- seconcentramnoprodutoateatend^enciamaisatualdemodeloscentradosnaqualidadedo Cmmi,ISO9000:2000eISO15504.Astecnicasparagarantiadequalidades~aoabordadas modelos.s~aoanalisadososprincipaismodelosdequalidadedesoftware,desdeaquelesque Oslivrosvoltadosparaaqualidadedesoftwaredestinam-seadiscutiraqualidadedo processo.s~aotambemdiscutidososdesdobramentosmaisrecentesocorridosnosmodelos atravesdaaplicac~aodeprocedimentostaiscomoinspec~ao,passeioetestes,tantoparaa abordagemestruturadacomoparaaabordagemorientadaaobjetos.s~aotambemapresentadosaspectosreferentesamanutenc~aodesoftware,taiscomoprocessodemanutenc~ao, reengenhariadesoftwareeferramentascase. eanalisederisco,atividadesenvolvidasemprojetosdesoftware. organizac~aodeprojetos.alemdisso,ediscutidoopapeldasmetricasnatomadadedecis~ao sasmetricasuteisparaogerenciamentoesuautilizac~aonasestimativasdecusto,prazoena metricasparaasatividadesenvolvidasnager^enciadeprojetos.neles~aoapresentadasdiver- Olivrodedicadoaogerenciamentodeprojetosdesoftwarediscuteaimport^anciadas
Aomeupai,Hermnio,cujosolhosazuis iluminamomeucaminho. Ariadne Aomeuesposo,Ricardo,eaosmeuslhos, Rodrigo,JuliaeHeloisa. Thelma
Agradecimentos Cadapessoaquepassaemnossavidaeunica.Sempredeixa umpoucodesielevaumpoucodenos.haosquelevam muito,masn~aohaosquen~aodeixamnada.essaeamaior almasn~aoseencontramporacaso.charleschaplin responsabilidadedenossavida:provaevidentedequeduas Nossosagradecimentos: livro. aexecuc~aodestetrabalho. tendoassimcontribudoparaadeterminac~aodarelev^anciadosassuntosasertratados. AoInstitutodeComputac~ao,porterpropiciadoainfra-estruturaeoambientenecessarios Aosalunosdegraduac~aoepos-graduac~aoqueutilizaramasvers~oespreliminaresdotexto, Aoscolegasprofessoresquedealgumamaneiracontriburamparaaelaborac~aodestetrabalho;emespecialaArnaldoMandel,ArnaldoVieiraMoura,CecliaMaryFischerRubiracatte,RicardodeOliveiraAnidoeTomaszKowaltowski,cujasvaliosassugest~oes,tantoem relac~aoaformaquantoaoconteudodotexto,muitocontriburamparaoseuaprimoramento. AUniversidadeEstadualdeCampinas,porternanciadopartedapublicac~aodeste CidCarvalhodeSouza,ClaudiaMariaBauzerMedeiros,JorgeStol,PauloCesarCentodu-
Sumario 1Conceitosbasicos Apresentac~ao Listadeguras Prefacio 1.1Sistemasdesoftware...21 15 1.2Engenhariadesoftware...24 19 17 1.3Osprincpiosdaengenhariadesoftware...25 1.4Paradigmasdeengenhariadesoftware...28 1.3.1Formalidade...26 1.3.2Abstrac~ao...26 1.3.3Decomposic~ao...27 1.3.5Flexibilizac~ao...28 1.4.1Ciclodevidaclassico...29 1.3.4Generalizac~ao...27 1.4.2Oparadigmaevolutivo...34 2Extrac~aoderequisitos 1.6Comentariosnais...41 1.7Exerccio...41 1.5Engenhariadesoftwareinuenciandoesendoinuenciadaporoutrasareas 1.4.3Oparadigmaespiral...37 2.1Diculdadesnoprocessodeextrac~aoderequisitos...45 dentroeforadacomputac~ao...39 2.3Tecnicasparaextrac~aoeanalisederequisitos...50 2.2Participantesnaextrac~aoderequisitos...50 2.3.1Entrevistas...52 2.3.2Brainstorming...55 2.3.3PIECES...57 43 2.3.5Prototipagem...65 2.3.4JAD...59
3Modelosparaespecicac~aodesistemasdesoftware 2.4Comentariosnais...65 2.5Exerccios...66 3.2Modeloseprincpiosdaengenhariadesoftware...75 3.1Especicac~ao...70 3.1.4Qualidadeversusgraudeformalidadedaespecicac~ao...73 3.1.3Vericac~aoevalidac~aodaespecicac~ao...73 3.1.2Estagiosdaespecicac~ao...71 3.1.1Tiposdeespecicac~ao...70 69 3.3Modelosdomundoreal...77 3.2.1Umexemplo...77 3.3.1Omodelodefunc~ao...78 3.4Modelosdeprojeto...92 3.3.4Omodelodeobjetos...87 3.3.3Omodelocomportamental...84 3.3.2Omodelodedados...81 3.3.6Omodelodin^amico...91 3.3.5Omodeloformal...89 3.6Modelosdeplanejamentodoprojeto...98 3.5Modelosparatestedeprogramas...97 3.4.2Modelosparaprojetodetalhado...96 3.4.1Modelosparaprojetogeral...93 3.3.7Dicionariodedados...91 3.7Metodologias,metodoseferramentas...104 3.7.1Metodosestruturados...105 3.6.1Modelosdecusto...99 3.7.2Metodosorientadosaobjetos...106 3.6.2Modelosdeprogramac~aodeprojetos...101 4Planejamentodeprojetosdesoftware 3.8Comentariosnais...107 3.9Exerccios...108 3.7.3Metodosformais...107 4.2Estudodeviabilidade...116 4.1Objetivoserestric~oes...112 4.2.1Listadealternativas...117 4.2.2Estimativas...118 4.1.1Osrequisitosdousuario...113 4.1.2Declarac~aodeobjetivoserestric~oesdoprojeto...113 111 4.2.3Estimativadecusto...119 4.2.4Estimativadetempo...122
4.3Organizac~aodoprojeto...129 4.2.6Estimativadebenefcios...124 4.2.5Estimativaderecursos...122 4.2.7Analisederisco...124 4.2.8Analisedecusto{benefcio...125 5Considerac~oesnais 4.4Comentariosnais...133 4.5Exerccios...134 4.3.2Organizac~aodaequipe...130 4.3.3Programac~aodeprojeto...131 4.3.1Asatividadesdodesenvolvimento...130 Indiceremissivo Bibliograa 139 145 141
Listadeguras 1.1Ecossistemadeuminseto...22 1.2Oprocessodedesenvolvimentodesoftware...24 1.3Oscincopassosdociclodevidaclassico...29 1.4Desenvolvimentoexploratorio...35 1.5Prototipodescartavel...36 1.6Oparadigmaespiral...39 2.1Processodeextrac~aoderequisitos...44 3.2Astr^espercepc~oesdomundorealnumsistemadeconsultaabibliotecas...77 3.1Especicac~aooperacionaldatrajetoriadeumsatelite...71 2.2Formulariopararegistrodasquest~oes...64 3.4Decomposic~aodomodelofuncional...79 3.3Omodelodecontextodosistema...78 3.5DFDdosubsistemadeconsultaabibliotecasdeumauniversidade...81 3.7Exemplodediagramaentidade{relacionamento...83 3.6Abstrac~aodedados...82 3.8MERdosubsistemadeconsultaabibliotecasdauniversidade...84 3.10MEFparaosttulosdeumabiblioteca...86 3.9Modelodocomportamentodosistema...85 3.11Umexemplodetracodeeventosparaalocalizac~aodoexemplar...86 3.12Exemplosdegeneralizac~ao,agregac~aoeassociac~ao...88 3.13Diagramadeclassesdeobjetosparaosistemadebibliotecas...89 3.18Grafodeprogramadomodulovericadisponibilidade...99 3.19Curvadedistribuic~aodem~ao-de-obradeRayleigh...100 3.17Modelodeespecicac~aodomodulolocalizaexemplar...96 3.14Exemplodearquiteturabaseadaembasededadoscentralizada...94 3.15Exemplodeummodelodecontrolecentralizado...94 3.20Notac~aoparaodiagramaPert/CPM...102 3.16Omodelodaarquiteturademodulosdosubsistemadeconsultaabibliotecas95 3.22Exemplodomodelodiagramadebarras...104 3.21ExemplodomodeloPert/CPMdeumsistema...103 3.23DFDeMEFdeumsistemaquexaecancelaconv^enios...109
164.1Pert/CPMparaosistemadevendadesementes...133 4.2Diagramadebarrasparaosistemadevendadesementes...134 Introduc~aoaEngenhariadeSoftware
umaintroduc~aoaareaeseconcentranasatividadesexecutadasnoinciodoprocessodedesenvolvimento,fundamentaisparaosucessonaconstruc~aodoproduto.apartirdomomento emqueosprodutosdesoftwaresetornaramcomplexosequeasatividadesdoprocessode municac~aoadequada,sejaentreosmembrosdaequipenasvariasfasesdodesenvolvimento, EstelivroeoprimeirodeumaseriedeTtulosemEngenhariadeSoftware.Apresenta Prefacio porumaequipe,aobtenc~aodeinformac~oesprecisassobreoprodutoaserconstrudoeaco- desenvolvimentodeixaramdeseratribudasaumaunicapessoa,passandoaserexecutadas sejaentreosmembrosdaequipeeusuarios,passaramaseressenciaisparaqueasatividades envolvidasnaconstruc~aodeprodutosdesoftwaresejamexecutadasacontento.alemdisso, sendoasatividadesexecutadasparalelamente,asincronizac~aoeocontroledasatividades maneiraadequada.abstrac~oess~aoutilizadaspararepresentarasdiferentespropriedadesdo realizadaspelosdiversosmembrosdaequipepassaramaserachaveparaosucessodemuitos produtos.s~aotr^esasatividadesessenciaisaserexecutadasnoinciododesenvolvimento: sistemaatravesdenotac~oesformaisousemiformais.paraquehajacontrolesobreoprocesso dedesenvolvimento,envolvendovariaspessoasdeumaoumaisequipes,enecessarioplanejar extrac~aoderequisitos,representac~aoadequadadessesrequisitoseplanejamentodoprojeto. eacompanharasatividadesdoprojeto. vido.paraqueosrequisitosextradospossamserutilizados,elesdevemserrepresentadosde desenvolvedoreseusuarios,visandoaobtenc~aodascaractersticasdoprodutoaserdesenvol- Aextrac~aoderequisitoseumaatividadecomplexa,quesebaseianacomunicac~aoentre bibliograadisponvelnaareadeengenhariadesoftwarequetratedessesassuntosdemaneira integradaequesejaapropriadaaoensinointrodutoriodaengenhariadesoftware. fatodeque,alemdeseremessenciaisparaosucessonaconstruc~aodoproduto,n~aoexiste Amotivac~aoprincipalparaqueessesassuntosfacampartedestetextointrodutorioeo AriadneMariaBritoRizzoniCarvalho ThelmaCecliadosSantosChiossi Campinas,janeirode2001.
diadaspessoas,eemmuitassituac~oesofuncionamentocorretoouincorretodessessistemas podeseradiferencaentreavidaeamorte.espaconaves,aeronaves,trens,carros,reatoresnucleareseequipamentoshospitalaress~aoalgunsexemplosdeaplicac~oesextremamente correntista,imediatamentesechegaaconclus~aodequeossistemasdesoftwarequecontro- bancariadeumindivduodeveestarcorreta,podendoseracessadasomentepeloproprio Sistemasdesoftwaret^emdesempenhadoumpapelcadavezmaispreponderantenodia-a- Apresentac~ao crticas.quandosepensaqueumavi~aodeveaterrissardemaneirasegura,ouqueaconta lamessasaplicac~oesdevemsertotalmenteconaveis,istoe,devemcumprirseusrequisitos integralmente.entretanto,aconstruc~aodesistemasparacontrolartaisaplicac~oesecomplexa,poisdevelidarcomrequisitosintransigentes,restric~oesdeintegridadeeanecessidadedmac~oesrelevantesaaplicac~aoeaanalisedessasinformac~oesparadeterminac~aododomnio discrep^anciaentreoqueosistemaconstrudofazeoquedeveriafazer.aobtenc~aodasinfor- umvastoconhecimentosobreaaplicac~aoparaqueasinterac~oesesperadasentreosoftware eoambientepossamseradequadamentedescritas.quandoosrequisitosn~aos~aototalmen- doproblemas~aooprimeiropassoparasedeniroquedeveserconstrudo.hamuitosanos sistemasjaexistentesedosqueaindavir~aoaserconstrudos.n~aoexisteconsensosobre novasareasdeaplicac~aot^emsurgido,emaiorconabilidadeeprecis~aot^emsidoexigidasdos tem-sediscutidomaneirasdecontornaracomplexidadedosoftware,vistoqueacadadia tecompreendidos,registradosecomunicadosparaaequipededesenvolvimento,podehaver muitograndeemencontrarsoluc~oespararesolverasdiculdadesoriundasdaproprianaturezaabstratadosoftware,dasuacomplexidade,danecessidadedecumprirseusobjetivos edarapidezcomquepodesofreralterac~oes.aengenhariadesoftwareprop~oeaadoc~aoda qualamelhorpraticaparaodesenvolvimentodesistemasdesoftware,masexisteumesforco diculdadesnodesenvolvimentodesoftware,tornandomaisbemdenidoocaminhoaser termotersurgidopelaprimeiraveznadecadade60,essaeumaareaqueaindacarece dedenic~oesprecisaseconsensuais,alemdemetricasconaveisquepermitamavaliaro softwareproduzido.pretende-secomestelivrocontribuirparaadiminuic~aodoimpactodas noprocessodedesenvolvimentodosoftware. disciplinaparalidarcomessasdiculdades,tentandoreduziraomaximoainu^enciadelas percorridopelodesenvolvedordesoftwareparagerarsistemasquecumpramseusrequisitos ecujodesenvolvimentosejagerenciavel.nocontextododesenvolvimentodesoftware,os Estelivrofazumaintroduc~aoaosconceitosdaengenhariadesoftware.Apesardeo termosusuarioeclientepodemtersignicadosdiferentes.normalmenteotermoclientee
20 usadoparadescreveroindivduoquecontrataodesenvolvimentodoprodutodesoftware,eo termousuariodescreveoindivduoqueutilizaosoftware.muitasvezesusuarioeclientes~ao asetapasiniciaisdoprocessodedesenvolvimento,especialmenteaanaliseeespecicac~ao dosrequisitosdossistemasdesoftware.essaescolhan~aofoialeatoria,masbaseadanofato amesmapessoa.nestelivroessestermosser~aousadosindistintamente.otextoevoltado Introduc~aoaEngenhariadeSoftware desoftwareeconceituada,buscando-seassimidenticarosdiferentesnveisdeabstrac~ao quecaracterizamasatividadesenvolvidasnestadisciplina.tambems~aodenidosalguns cumpramseusrequisitosdemaneiraplenamentesatisfatoria.nocaptulo1aengenharia dequeasetapasiniciaiss~aocruciaisparaodesenvolvimentodesistemasdesoftwareque paradigmasdedesenvolvimentodesoftwaremaisconhecidoseutilizados.nocaptulo2e outrasdisciplinasdacomputac~aoecomoutrasareasforadela.tambems~aodescritosos apresentadooprocessodeextrac~aoderequisitos,juntamentecomastecnicasmaisutilizadas seguidas~aodescritososprincpiosdaengenhariadesoftwareeoseurelacionamentocom paraessanalidade.s~aotambemdescritososparticipantesdoprocessodeextrac~aoeas asambiguidadesquegeralmenteocorrememdiscuss~oessobreengenhariadesoftware.em conceitosbasicos,taiscomosistemas,produtoseprocessosdesoftware,visandominimizar edescreveosvariosmodelosutilizadosparaessanalidade.s~aodescritososestagiosda apresentadosmodelosparaprojeto,testeeplanejamento.ocaptulo4tratadoplanejamento especicac~ao,assimcomoonveldequalidaderequeridoparacadaumdeles.s~aotambem principaisdiculdadesenvolvidas.ocaptulo3tratadaespecicac~aodesistemasdesoftware deprojetosdesoftware,descreveosobjetivos,oestudodeviabilidadeeaorganizac~aodo projeto.nocaptulo5s~aofeitasalgumasconsiderac~oesnaisrelativasaosassuntostratados notexto.
Captulo1 Conceitosbasicos paraodesenvolvimentodesistemasdesoftware.paraqueesseobjetivosejaatingido,s~ao denidosoutrosconceitosimportantes,taiscomosistemas,software,produtoseprocessos desoftware. 1.1Sistemasdesoftware Estecaptulotemporobjetivodenirengenhariadesoftwareeexplicarasuaimport^ancia BrunoMaeo[MAF92]deneumsistemaemtermosgeraiscomo: juntodeelementosconcretosouabstratosentreosquaissepodeencontraralgumarelac~ao". Apalavrasistemaedenidanodicionariodalnguaportuguesa[FER86]como\umcon- Umconjunto,identicavelecoerente,deelementosqueinteragemcoesivamente,onde dentrodeseucontornoconceitual,t^ementreelesinterac~oesfortes,quandocomparadasas aut^onomaeidenticavel.oselementosqueconstituemosistema,istoe,aquelesqueest~ao partescomponentesdosistema.pode-setracarumafronteiraconceitualseparandoosistema dorestodouniversoetrataroqueestaemseuinteriorcomoumaentidaderelativamente Nessasduasdenic~oes,caevidenteanoc~aoderelac~aoestruturalquedeveexistirentreas cadaelementopodeserumsistema. exemplo,emumestudosobreecologia,pode-sedeniroecossistemadeumacertaespecie fronteiraconceitual,nessecaso,envolveriaoinseto(siologia,anatomia,habitosreprodutivos,ciclodevidaetc.),aarvore,afaunaquehabitaaarvoreeacaracterizac~aodohabitacasparaquepossamserdesprezadas,quandosedesejaconsiderarosistemaisolado.por constituintesdosistemaeosdemaiselementosdouniversodevemsersucientementefra- interac~oesentreesteseoselementosdorestodouniverso.asinterac~oesentreoselementos deinsetoquepassatodaasuavidaemumaunicaarvoredeumadeterminadaespecie.a daarvore(queincluiclima,solo,vegetac~aonavizinhancaetc.),comomostraafigura1.1.
22 Introduc~aoaEngenhariadeSoftware deveriaenvolverafauna,aora,aocupac~aohumananaorestaeemvoltadelaeautilizac~ao queossereshumanosfazemdaoresta,podendoinclusivechegaraaspectosatmosfericos. Figura1.1:Ecossistemadeuminseto. dosistemaqueinteragementresiparaatendernecessidadesespeccasdoambienteno humano.aescolhadeumafronteiraconceitualadequadaeumpassodecisivoparao^exitodo qualest~aoinseridos.existetambemapossibilidadedehaverumcomponente(sist^emico) Se,poroutrolado,oecossistemafosseaorestaAmaz^onica,ent~aoafronteiraconceitual Poranalogia,quandosetratadesistemasdesoftware,busca-seidenticarcomponentes Ilustração Jorge Stolfi processodeconcepc~aodosistema,poisadeterminac~aodessafronteirapermitiraaseparac~ao entreoscomponentespertencentesaosistema,cujasinformac~oesdevemserdetalhadamente seconsiderarumsistemadereservasdepassagemaereadeumadeterminadacompanhia. interac~aocomosistema. estudadas,eaquelespertencentesaoambienteexterno,quesot^eminteressequantoasua Paraexemplicaroconceitodefronteiraconceitualdeumsistemadesoftware,pode-
AriadneM.B.RizzoniCarvalhoeThelmaC.dosSantosChiossi Paraessesistema,afronteiraconceitualsoenglobariaapropriacompanhiaaereaeosdados sobrehoteis,locadorasdecarroseag^enciasdeturismo.sistemasdesoftwareentreguesao sobrev^oos(disponibilidade,reserva,cancelamentoetc.).se,poroutrolado,osistemade softwareinclussereservasdehotel,locac~aodecarros,ofertasdepacotestursticoseassim pordiante,afronteiraconceitualdeveriasermuitomaisabrangente,envolvendoinformac~oes 23 em:1)instruc~oes(programasdecomputador)que,quandoexecutadas,realizamasfunc~oese produtosdesoftware[som96]. encomendadosespecialmenteporumdeterminadocliente.oprodutodesoftwareconsiste vendidosnomercadoaqualquerpessoaquepossacompra-los;e(2)sistemasespeccos, usuariocomadocumentac~aoquedescrevecomoinstalareusarosistemas~aochamados Existemduascategoriasdeprodutosdesoftware:(1)sistemasgenericos,produzidose 3)documentosquedescrevemasoperac~oeseusodoproduto. 2)estruturasdedadosquepossibilitamasinstruc~oesmanipularasinformac~oesdeforma Sistemasdesoftwares~aoprodutoslogicos,n~aosuscetveisaosproblemasdomeioambiente.Nocomecodavidadeumsistema,haumaltondicedeerros,mas,amedidaque esseserross~aocorrigidos,ondiceseestabiliza[pre92].comaintroduc~aodemudancas, novastecnologiasdesoftwareehardware,ouaindaparaincluirnovosrequisitosdousuario, sejaparacorrigirerrosdescobertosaposaentregadoproduto,sejaparaadaptarosistemaa adequada; t^emodesempenhodesejados; sistemas.todavia,estasituac~aoestamudandorapidamente,comadisseminac~aodoconceitodesoftwarereutilizavel,queprivilegiaareutilizac~aodecomponentesdeprodutosde en~aomontadaapartirdecomponentesjaexistentes,poisn~aoexistemcatalogosdecompo- softwarejaexistentes[som96].umagrandevantagemdestetipodeabordagemeareduc~ao nentesdesoftware;epossvelcomprarprodutosdesoftware,massomentecomoumaunidade Amaioriadosprodutosdesoftwareeconstrudadeacordocomasnecessidadesdousuario novoserross~aotambemintroduzidos,eosoftwarecomecaasedeteriorar. completa,n~aocomocomponentesseparadosquepodemserutilizadosnaconfecc~aodenovos sistemas,eareduc~aodosriscosdedesenvolvimento,poisexistemenosincertezasobreos deserdesenvolvidoevalidado.outrasvantagensdessaabordagems~aooaumentonacon- abilidadedosistema,poisoscomponentesaserreutilizadosjaforamtestadosemoutros custosdereutilizac~aodesoftwaresecomparadosaoscustosdedesenvolvimento. doscustosdedesenvolvimentocomoumtodo,poisummenornumerodecomponentestera associadosaessasatividades,comoobjetivodeconstruiroprodutodesoftware.existemtr^esatividadesfundamentais,comunsatodososprocessosdeconstruc~aodesoftware, apresentadasnafigura1.2.s~aoelas: 1)desenvolvimento:asfuncionalidadeseasrestric~oesrelativasaoperacionalidadedo Oprocessodedesenvolvimentodesoftwareenvolveoconjuntodeatividadeseresultados produtos~aoespecicadas,eosoftwareeproduzidodeacordocomessasespecicac~oes;
242)validac~ao:oprodutodesoftwareevalidadoparagarantirqueelefacaexatamenteo 3)manutenc~ao:osoftwaresofrecorrec~oes,adaptac~oeseampliac~oesparacorrigirerros queousuariodeseja; Introduc~aoaEngenhariadeSoftware encontradosaposaentregadoproduto,atenderosnovosrequisitosdousuarioeincorporarmudancasnatecnologia.desenvolvimento cadaumadelaspodeserdetalhadaemvariospassosaserseguidosduranteodesenvolvimento.modelosdeprocessos(tambemchamadosparadigmasdedesenvolvimento)especicam emquedevemserexecutadas.produtosdesoftwarepodemserconstrudosutilizando-se asatividadesque,deacordocomomodelo,devemserexecutadas,assimcomoaordem Oprocessodedesenvolvimentodesoftwareecomplexoeenvolveinumerasatividades,e Figura1.2:Oprocessodedesenvolvimentodesoftware. paradeterminadostiposdeaplicac~ao,eaopc~aoporumdeterminadomodelodeveserfeita diferentesmodelosdeprocessos.noentanto,algunsmodeloss~aomaisadequadosqueoutros levando-seemconsiderac~aooprodutoaserdesenvolvido. 1.2Engenhariadesoftware Portanto,odesaoprimordialnasultimasduasdecadasfoiecontinuasendomelhorara excediamosprevistos,osoftwaren~aocumpriaosrequisitosestipuladoseassimpordiante. wareproduzidoaindadeixavammuitoadesejar:cronogramasn~aoeramcumpridos,custos zisseocustodeprocessamentoedearmazenamentodedados[pre92].duranteadecada umcustocadavezmenor.entretanto,tantooprocessodedesenvolvimentocomoosoft- de80,avancosnamicroeletr^onicaresultaramemumaumentodopodercomputacionala Duranteasdecadasde60e70,odesaoprimordialeradesenvolverhardwarequeredu- dizerqueaengenhariadesoftwaree: qualidadeereduzirocustodosoftwareproduzido,atravesdaintroduc~aodedisciplinano desenvolvimento,oqueeconhecidocomoengenhariadesoftware.dessaforma,pode-se Validação Manutenção
AriadneM.B.RizzoniCarvalhoeThelmaC.dosSantosChiossi desdeapercepc~aodoproblemaateomomentoemqueosistemadesenvolvido desenvolvimentoeaoprodutodesoftware. deixadeseroperacional,visandoresolverproblemasinerentesaoprocessode Umadisciplinaquereunemetodologias,metodoseferramentasaserutilizados, 25 formaqueoprocessod^eorigemaprodutosdealtaqualidade,produzidosmaisrapidamente eaumcustocadavezmenor.s~aomuitososproblemasasertratadospelaengenhariade dade,aaceitabilidade,aconabilidade,amanutenibilidade,asegurancaetc.porexemplo, devemserconsideradosparaquesetenhasucesso,porexemplo,acomplexidade,avisibili- software,poistantooprocessoquantooprodutodesoftwarepossuemvariosatributosque paraaespecicac~aodesistemasdecontroledetrafegoaereoeferroviario,aconabilidade Oobjetivodaengenhariadesoftwareeauxiliarnoprocessodeproduc~aodesoftware,de eumatributofundamental[ffo00].japarasistemasmaissimples,taiscomooscontroladoresembutidosemaparelhoseletrodomesticos,comolavadorasderoupaevideocassetes,o desoftware,atravesdemetodologias,queporsuavezseguemmetodosqueseutilizamde software.algunsmetodosfocalizamasfunc~oesdosistema;outrosseconcentramnosobjetos ferramentasautomatizadasparaenglobarasprincipaisatividadesdoprocessodeproduc~aode queopovoam;outros,ainda,baseiam-senoseventosqueocorremduranteofuncionamento dosistema. Aengenhariadesoftwareherdadaengenhariaoconceitodedisciplinanaproduc~ao desempenhoeoatributomaisimportanteaserconsiderado. 1.3Osprincpiosdaengenhariadesoftware alcancados. mentodesoftwaredevesernorteadoporessesprincpios,deformaqueseusobjetivossejam abstrataaspropriedadesdesejaveisparaosprocessoseprodutosdesoftware.odesenvolvi- Existemalgunsprincpiosdaengenhariadesoftwarequedescrevemdemaneiragerale fasededesenvolvimentodosoftware[gue91].essesprincpiossereferemtantoaoprocesso comoaoprodutonaledescrevemalgumaspropriedadesgeraisdosprocessoseprodutos. Oprocessocorretoajudaraaproduziroprodutocorreto,eoprodutoalmejadotambem afetaraaescolhadoprocessoaserutilizado.entretanto,essesprincpiosporsisosn~ao s~aosucientesparadirigirodesenvolvimentodesoftware.paraaplicaressesprincpiosna construc~aodesistemasdesoftware,odesenvolvedordeveestarequipadocomasmetodologias Existemvariosprincpiosimportantesegeraisquepodemseraplicadosdurantetodaa seguir. software.algunsdosprincpiosaserobservadosduranteodesenvolvimentos~aodescritosa escolhadasmetodologias,metodoseferramentasapropriadosparaodesenvolvimentode apropriadasecomosmetodoseasferramentasespeccosqueoajudar~aoaincorporaras propriedadesdesejadasaosprocessoseprodutos.alemdisso,osprincpiosdevemguiara
26 1.3.1Formalidade precisaeaseguira\inspirac~aodomomento"deumamaneiran~aoestruturada.atraves deumenfoqueformal,pode-seproduzirprodutosmaisconaveis,controlarseucustoeter Odesenvolvimentodesoftwareeumaatividadecriativae,comotal,tendeaserim- Introduc~aoaEngenhariadeSoftware melhora-laatravesdoaumentodaconancadodesenvolvedoremresultadoscriativos,uma maisconancanoseudesempenho.aformalidaden~aodeverestringiracriatividade,mas engenheirofosseprojetarumaembarcac~aoparaatravessardeumamargemparaaoutra odesenvolvedortemdesaberquandoecomos^e-lo.porexemplo,seatarefaatribudaao podeserformal,informalousemiformal.n~aohanecessidadedesersempreformal,mas deumriachocalmo,talvezumajangadafossesuciente.se,poroutrolado,atarefafosse Emcadapassoodesenvolvedorutilizaalgumametodologiaqueseguealgummetodo,que daengenharia,oprojetoacontececomoumasequ^enciadepassosdenidoscomprecis~ao. vezqueeless~aocriticamenteanalisadosaluzdeumaavaliac~aoformal.emtodoocampo cac~aomuitomaissosticada.finalmente,projetarumaembarcac~aoparafazerumaviagem oengenheiroteriadefazerumprojetocomespecicac~oesmaisprecisasparaumaembar- projetarumaembarcac~aoparanavegaratravesdeumriodeaguasturbulentas,nacerta capazdeentenderonveldeformalidadequedeveseratingido,dependendodadiculdade conceitualdatarefaaserexecutada.aspartesconsideradascrticaspodemnecessitarde transatl^anticademandariamaiorformalidadenaespecicac~aodoproduto. zadaspodemnecessitardemetodosmaissimples.tradicionalmente,oformalismoeusado umadescric~aoformaldesuasfunc~oes,enquantoaspartesmaisbementendidasepadroni- sintaxeesem^anticatotalmentedenidasequepodemserautomaticamentemanipulados somentenafasedeprogramac~ao,poisprogramass~aocomponentesformaisdosistema,com Omesmoacontecenaengenhariadesoftware.Odesenvolvedordesoftwaredeveser 1.3.2Abstrac~ao reutilizac~ao,portabilidadeeentendimentodosoftware. desenvolvimentodosoftware,eseusefeitosbenecospodemsersentidosnamanutenc~ao, peloscompiladores.entretanto,aformalidadepodeseraplicadadurantetodaafasede fen^omeno,ignorando-seosdetalhes.osdetalhesaserignoradosv~aodependerdoobjetivo daabstrac~ao.porexemplo,paraumtelefonesemo,umaabstrac~aoutilparaousuario seriaummanualcontendoadescric~aodosefeitosdeapertarosvariosbot~oes,oquepermitequeotelefoneentrenosvariosmodulosdefuncionalidadeereajadiferentementeas Abstrac~aoeoprocessodeidenticac~aodosaspectosimportantesdeumdeterminado funcionandoseriaummanualcontendoasinformac~oessobreacaixaquedeveseraberta sequ^enciasdecomandos.umaabstrac~aoutilparaapessoaocupadaemmanterotelefone abstrac~oesdamesmarealidade,cadaumafornecendoumavis~aodiferentedarealidadee parasubstituirapilha.outrasabstrac~oespodemserfeitasparaentenderofuncionamento dotelefoneeasatividadesnecessariasparaconserta-lo.portanto,podemexistirdiferentes servindoparadiferentesobjetivos.quandorequisitosdeumaaplicac~aos~aoanalisadose especicados,desenvolvedoresdesoftwareconstroemmodelosdaaplicac~aoproposta.esses
seconcentrenoproblemaaserresolvidoen~aonamaquina.osprogramas,porsisos,s~ao ecaracteresouomecanismodeenderecamentoutilizado.issopermitequeoprogramador escritosignorando-seosdetalhes,taiscomoonumerodebitsusadopararepresentarnumeros AriadneM.B.RizzoniCarvalhoeThelmaC.dosSantosChiossi modelospodemserexpressosdevariasformas,dependendodograudeformalidadedesejado. Aslinguagensdeprogramac~ao,porexemplo,fornecemcondic~oesparaqueprogramassejam 27 1.3.3Decomposic~ao abstrac~oesdasfuncionalidadesdosistema. ummedico-cirurgi~aoquedecideconcentrarsuasatividadescirurgicasnoperododamanh~a extraqueseriagastomudandodeumaatividadeparaoutra.nocasodosoftware,podeseseparar,porexemplo,atividadesrelativasaocontroledequalidadedoprocessoedo eseuatendimentoaospacientesnoperododatarde,reservandoassextas-feirasparaestudo essasatividadesdevariasformas,umadelasportempo.porexemplo,considereocasode eatualizac~ao.essaseparac~aopermiteoplanejamentodasatividadesediminuiotempo especcas,provavelmenteatribudasaespecialistasdediferentesareas.podem-seseparar Umadasmaneirasdelidarcomacomplexidadeesubdividiroprocessoematividades odemaneiracuidadosaeestruturada,deformaquegarantaseucorretismo,esoent~ao implementac~aoemanutenc~ao,ques~aoatividadesbastantecomplexas.alemdisso,cada produtodasatividadesdedesenvolvimento,como,porexemplo,especicac~aodoprojeto, passandoareestrutura-loparcialmente,deformaquemelhoresuaeci^encia. possivelmenteatribudasapessoasdiferentes,comdiferentesespecialidades.adecomposic~ao umadessasatividadespodeserdecomposta,levandonaturalmenteadivis~aodastarefas, aeci^enciaecorrec~aodeumdadoprodutodesoftwareseparadamente,primeiroprojetando- dasatividadeslevatambemaseparac~aodaspreocupac~oes.porexemplo,pode-selidarcom produtos,denidosdeacordocomosistemaqueestasendodesenvolvido.essadecomposic~ao doprodutotrazinumerasvantagens;porexemplo,permitequeatividadesdoprocessode desenvolvimentosejamexecutadasparalelamente.alemdisso,dadoqueoscomponentes haverapropagac~aodeerrosparaoutroscomponentes.adecomposic~aodoprodutopodeser s~aoindependentes,elespodemserreutilizadosporoutroscomponentesousistemas,en~ao feita,porexemplo,emtermosdosobjetosquepovoamosistema.nessecaso,oprodutosera Alemdadecomposic~aodoprocesso,tambemsepodedecomporoprodutoemsub- 1.3.4Generalizac~ao decompostoemcomponentesfuncionaisqueaceitamdadosdeentradaeostransformamem dadosdesada.oobjetivomaior,nosdoiscasos,ediminuiracomplexidade. decompostoemumconjuntodeobjetosquesecomunicam.umaoutramaneiradedecompor oprodutoeconsiderando-seasfunc~oesqueeledevedesempenhar.nessecaso,oprodutoe soluc~aoparaoproblematenhamaispotencialparaserreutilizada.tambempodeacontecer queatravesdageneralizac~aoodesenvolvedoracabeprojetandoumcomponentequeseja Oprincpiodageneralizac~aoeimportantepois,sendomaisgeral,ebempossvelquea
avaliarosproblemasdecustoeeci^enciaparapoderdecidirsevaleapenadesenvolver 28 utilizadoemmaisdeumpontodosistemadesoftwaredesenvolvido,emvezdetervarias emtermosdevelocidadedeexecuc~aooutempodedesenvolvimento.portanto,enecessario soluc~oesespecializadas.poroutrolado,umasoluc~aogeneralizadapodesermaiscustosa, umsistemageneralizadoemvezdeatenderaespecicac~aooriginal.porexemplo,supondo Introduc~aoaEngenhariadeSoftware maisgeraldefuncionalidadesfornecidasporumsistemadebiblioteca,comoemprestimos, codigoespecco.alemdecatalogaroslivrosdabiblioteca,deveserpossvelfazerbuscas baseadasnadisponibilidadedoslivros,porautor,porttulo,porpalavras-chaveetc.em apenasessasfuncionalidades,pode-seconsidera-lascomoumcasoespecialdeumconjunto vezdeespecicarumconjuntodefuncionalidadesparaoprodutodesoftware,envolvendo bibliotecapequena,emquecadalivrotemumnome,autor,editor,datadepublicac~aoeum quesejanecessariodesenvolverumsistemadesoftwareparacatalogaroslivrosdeuma devoluc~oes,aquisic~oesetc.essesistemamaisgeralatenderiaasnecessidadesdoproprietario dapequenabibliotecaepoderiainteressartambemabibliotecasdemedioporte,paraas quaisasoutrasfuncionalidadess~aorelevantes. 1.3.5Flexibilizac~ao tregueaousuario,oprodutopodesofreralterac~oes,sejaparaeliminarerrosquen~aotenham Oprodutosofreconstantesmudancas,poisemmuitoscasosaaplicac~aoedesenvolvidaenquantoseusrequisitosaindan~aoforamtotalmenteentendidos.Issoocorreporqueoprocesstac~oesdousuario,sejaparaadaptaroprodutodesoftwareasnovastecnologiasdehardware Oprincpiodaexibilizac~aodizrespeitotantoaoprocessocomoaoprodutodesoftware. sidodetectadosantesdaentrega,sejaparaevoluirnosentidodeatenderasnovassolici- dedesenvolvimentoacontecepassoapasso,demaneiraincremental.mesmodepoisdeen- presentesinicialmente. ambienteeafetadopelaintroduc~aodoproduto,eissogeranovosrequisitosquen~aoestavam esoftware.osprodutoss~aocomfrequ^enciainseridosemumaestruturaorganizacional,o controlaroprocessodedesenvolvimento.naproximasec~aoser~aovistostr^esdosparadigmas maisutilizadosnodesenvolvimentodesistemasdesoftware. emoutrossistemas,bemcomoasuaportabilidadeparadiferentessistemascomputacionais. queoprodutopossasermodicadocomfacilidade.oprocessodeveterexibilidadesucienteparapermitirquepartesoucomponentesdoprodutodesenvolvidopossamserutilizados Amdealcancaressesprincpios,aengenhariadesoftwarenecessitademecanismospara Oprincpiodaexibilizac~aoenecessarionoprocessodedesenvolvimentoparapermitir cessodedesenvolvimentodesistemasdesoftware;e(b)aodesenvolvedor:obterabasepara produzir,demaneiraeciente,softwarequesatisfacaosrequisitospreestabelecidos.osparadigmasespecicamalgumasatividadesquedevemserexecutadas,assimcomoaordemem 1.4Paradigmasdeengenhariadesoftware Paradigmass~aomodelosdeprocessoquepossibilitam:(a)aogerente:controlaropro-
processodedesenvolvimentodosoftware,e,devidoaimport^anciadesseprocesso,variosparadigmasjaforampropostos.oparadigmaeescolhidodeacordocomanaturezadoprojeto AriadneM.B.RizzoniCarvalhoeThelmaC.dosSantosChiossi quedevemserexecutadas.afunc~aodosparadigmasediminuirosproblemasencontradosno eprodutosintermediariosdesejados.aseguirser~aoapresentadostr^esdosparadigmasmais edoprodutoaserdesenvolvido,dosmetodoseferramentasaserutilizadosedoscontroles 29 utilizados.s~aoeles:ciclodevidaclassico,evolutivoeespiral. 1.4.1Ciclodevidaclassico umafaseseconstituinaentradadeoutra.devidoaformacomquesedaapassagemdeuma faseeestruturadacomoumconjuntodeatividadesquepodemserexecutadasporpessoasdiferentes,simultaneamente.compreendeasseguintesatividades,apresentadasnafigura1.3: etestedosistema;eoperac~aoemanutenc~ao.existeminumerasvariac~oesdesseparadig- Eumparadigmaqueutilizaummetodosistematicoesequencial,emqueoresultadode analiseeespecicac~aodosrequisitos;projeto;implementac~aoetesteunitario;integrac~ao faseparaoutra,emordemlinear,esseparadigmatambemeconhecidocomocascata.cada principaisdoparadigmaest~aorelacionadosasatividadesfundamentaisdedesenvolvimento. ma,dependendodanaturezadasatividadesedouxodecontroleentreelas.osestagios Análise e especificação de requisitos Projeto Implementação e simplesebementendidasdemandammenosformalidade;jaaplicac~oesmaioresemaiscomplexaspodemnecessitardeumamaiordecomposic~aodoprocessoparagarantirummelhor controleeobterosresultadosalmejados.porexemplo,odesenvolvimentodeumaaplicac~ao Aopc~aopeloparadigmaclassicovaidependerdacomplexidadedaaplicac~ao.Aplicac~oes Figura1.3:Oscincopassosdociclodevidaclassico. teste unitário Integração e teste sistema Operação e manutenção
n~aoexistir,sendonecessariosomenteofornecimentodemanuaistecnicos.outrosdetalhes software;alemdisso,afaseemqueosistemaentraemoperac~aodeveconterumafasede 30 aserutilizadaporusuariosn~aoespecialistaspodenecessitardeumafasenaqualummaterialespecialdetreinamentoeprojetadoedesenvolvidoparatornar-separteintegrantedo Introduc~aoaEngenhariadeSoftware treinamento.poroutrolado,seosusuariosforemespecialistas,afasedetreinamentopode Analiseeespecicac~aoderequisitos podemserfornecidosportelefoneouporumservicodeatendimentoaousuario. dosistema,osservicoseasmetasaseratingidas,assimcomoasrestric~oesaserrespeitadas. defuncionalidade,desempenho,facilidadedeuso,portabilidadeetc.odesenvolvedordeve denirquaisfunc~oesoprodutodesoftwaredeveradesempenhar,semdizercomoumacerta especicarquaisosrequisitosqueoprodutodesoftwaredeverapossuir,semespecicarcomo essesrequisitosser~aoobtidosatravesdoprojetoedaimplementac~ao.porexemplo,eledeve E,portanto,identicadaaqualidadedesejadaparaosistemaaserdesenvolvido,emtermos Duranteessafasedodesenvolvimento,s~aoidenticados,atravesdeconsultasaosusuarios e(2)deveserusadopelosdesenvolvedoresdesoftwareparaobterumprodutoquesatisfaca analisadoeconrmadopelousuarioparavericarseelesatisfaztodasassuasexpectativas; documentodeespecicac~aoderequisitos,comdoisobjetivos:(1)odocumentodeveser terliberdadeeresponsabilidadeparaescolheraestruturamaisadequada,assimcomopara fazeroutrasescolhasrelativasaimplementac~aodosoftware.oresultadodessafaseeum restringirodesenvolvedordesoftwarenasatividadesdeprojetoeimplementac~ao;eledeve estruturaoualgoritmopodemajudararealiza-las.osrequisitosespecicadosn~aodevem tanto,deveserinteligvel,preciso,completo,consistenteesemambiguidades.alemdisso, sistemasdesoftware.ascaractersticasdaespecicac~aopodemvariar,dependendodocontexto.porexemplo,precis~aopodesignicarformalidadeparaodesenvolvedordesoftware, Essedocumentovaiservirdeinstrumentodecomunicac~aoentremuitosindivduose,por- osrequisitos. deveserfacilmentemodicavel,poisdeveevoluirparaacomodaranaturezaevolutivados conciliarasnecessidadesdousuarioeasdodesenvolvedoretraduziraespecicac~aopara aindaqueespecicac~oesformaispossamserininteligveisparaousuario.umamaneirade eoplanodeprojeto,baseadonosrequisitosdoprodutoaserdesenvolvido. futuramentecomosistema.umoutroprodutodafasedeanaliseeespecicac~aoderequisitos umtextoemlnguanaturale,talvez,complementaressaespecicac~aocomumavers~aopreliminardomanualdousuario,quedescrevaprecisamentecomoousuariodeverainteragivolvedordesoftwaredeveaplicarosprincpiosvistosnasec~ao1.3,especialmenteabstrac~ao, decomposic~aoegeneralizac~ao.osoftwareaserproduzidodeveserentendidoeent~aodescrito doconteudododocumentodeespecicac~aodosrequisitoseaseguinte: deveserdivididoempartes,quepossamseranalisadasseparadamente.umapossvellista emdiferentesnveisdeabstrac~ao,dosaspectosgeraisaosdetalhesnecessarios.oproduto Afasedeespecicac~aoderequisitostemtarefasmultiplase,paraatingi-las,odesen- {requisitosfuncionais:descrevemoqueoprodutodesoftwarefaz,usandonotac~oes informais,semiformais,formaisouumacombinac~aodelas;
AriadneM.B.RizzoniCarvalhoeThelmaC.dosSantosChiossi {requisitosn~aofuncionais:podemserclassicadosnascategoriasconabilidade(disponibilidade,integridade,seguranca),acuraciadosresultados,desempenho,problemabilidadeetc.; deinterfacehomem{computador,restric~oesfsicaseoperacionais,quest~oesdeporta- 31 {requisitosdedesenvolvimentoemanutenc~ao:incluemprocedimentosdecontrolede qualidade particularmenteprocedimentosdetestedosistema,prioridadesdas decompostoempartestrataveis,eoresultadoeumdocumentodeespecicac~aodoprojeto, Projeto quepossasertransformadaemumoumaisprogramasexecutaveis.nessafase,oprodutoe Oprojetodesoftwareenvolvearepresentac~aodasfunc~oesdosistemaemumaforma func~oesdesejadas,mudancasprovaveisnosprocedimentosdemanutenc~aodosistema quecontemadescric~aodaarquiteturadosoftware,istoe,oquecadapartedevefazere eoutros. descreveaestruturaemtermosderelac~oes(porexemplo,usa,ecompostode,herdade), paradiferenciarentreadecomposic~aologica(projetoemaltonvel)eadecomposic~aofsicado detalhado,masosignicadodessestermospodevariar.paraalguns,oprojetopreliminar enquantooprojetodetalhadotratadaespecicac~aodasinterfaces.outrosusamessestermos podeserdecompostoemsubcomponentes.ecomumdistinguirentreprojetopreliminare podeserfeitoatravesdenveisdeabstrac~ao.cadacomponenteidenticadoemalgumpasso arelac~aoentreaspartes.oprocessodedecomposic~aopodeaconteceriterativamentee/ou eumacolec~aodeprogramasimplementadosetestados.aimplementac~aotambempode estarsujeitaaospadr~oesdaorganizac~ao,quenessecasopodedenirocompletolayoutdos programaemunidadesdelinguagemdeprogramac~ao.outros,ainda,referem-seasprincipais programas,taiscomocabecalhosparacomentarios,convenc~aoparaautilizac~aodenomesde estruturasdedadoseaosalgoritmosparacadamodulo. Implementac~aoetesteunitario deprograma,emumadeterminadalinguagemdeprogramac~ao.oresultadodessafase variaveisesubprogramas,numeromaximodelinhasparacadacomponenteeoutrosaspectos queaorganizac~aoporventuraacharimportantes. Essaeafaseemqueoprojetodesoftwareetransformadoemumprograma,ouunidades relacionadaetambemexecutadanessafase.otestedasunidadeseaprincipalatividadede Ostestess~aofrequentementeobjetodepadronizac~oes,queincluemumadenic~aoprecisa deumplanoecriteriosdetestesaserseguidos,denic~aodocriteriodecompletude(istoe, controledequalidadeexecutadanessafase,queaindapodeincluirinspec~aodecodigopara vericarseosprogramasest~aodeacordocomospadr~oesdecodicac~ao,estilodeprogramac~ao quandoparardetestar)eogerenciamentodoscasosdeteste.adepurac~aoeumaatividade Otesteunitariotemporobjetivovericarsecadaunidadesatisfazsuasespecicac~oes. disciplinadaeoutrasqualidadesdosoftware,alemdacorrec~aofuncional(como,porexemplo, desempenho).
32 Integrac~aoetestedosistema pletoparagarantirquetodososseusrequisitossejamsatisfeitos.aintegrac~aoconsistena junc~aodasunidadesqueforamdesenvolvidasetestadasseparadamente.essafasenemsempreeconsideradaseparadamentedaimplementac~ao;desenvolvimentosincrementaispodem Osprogramasouunidadesdeprogramas~aointegradosetestadoscomoumsistemacom- Introduc~aoaEngenhariadeSoftware integraretestaroscomponentesamedidaqueelesforemsendodesenvolvidos.testesde efeita(porexemplo,ascendenteoudescendente)comonamaneiradeprojetarosdadosde umadelasjadeveratersidotestadaseparadamente.frequentementeisson~aoefeitode umasovez,masprogressivamente,emconjuntoscadavezmaiores,apartirdepequenos integrac~aoenvolvemtestesdassubpartesamedidaqueelasest~aosendointegradas,ecada subsistemas,atequeosistemainteirosejaconstrudo.nonal,s~aoexecutadostestesdo podesercolocadoemuso.padr~oespodemserusadostantonamaneiracomoaintegrac~ao sistema,e,umavezqueostestestenhamsidoexecutadosacontento,oprodutodesoftware emuso.aentregadosoftwarenormalmenteefeitaemdoisestagios.noprimeiro,aaplicac~aoedistribudaentreumgruposelecionadodeusuarios,paraexecutarumaexperi^encia aosusuarioseconsiste,basicamente,nacorrec~aodoserrosremanescentes,quen~aoforam ocial.amanutenc~aoeoconjuntodeatividadesexecutadasdepoisqueosistemaeentregue controlada,obterfeedbackdosusuariosefazeralterac~oes,senecessario,antesdaentrega descobertosnosestagiospreliminaresdociclodevida(manutenc~aocorretiva),adaptac~ao Normalmenteestaeafasemaislongadociclodevida.Osistemaeinstaladoecolocado testeedocumentaraatividadedeteste.depoisdetestado,oprodutodesoftwareeentregue Operac~aoemanutenc~ao aousuario. daaplicac~aoasmudancasdoambiente(manutenc~aoadaptativa),mudancasnosrequisitose Outrasatividades vidades,entretanto,s~aoexecutadasantesqueociclodevidatenhaincio;outras,durante todoociclodevida.entreessasatividadesest~ao:estudodeviabilidade,documentac~ao, adic~aodecaractersticasequalidadesaosoftware(manutenc~aoevolutiva). vericac~aoegerenciamento. Oparadigmaclassicoapresentaumavis~aodedesenvolvimentoemfases.Algumasati- {Estudodeviabilidade: solucionandooproblemaerrado.oconteudodoestudodeviabilidadevaidepender dotipodedesenvolvedoredotipodeprodutoaserdesenvolvido.oobjetivodessa Esseestagioecrticoparaosucessodorestodoprojeto,poisninguemquergastartempo faseeproduzirumdocumentodeestudodeviabilidadequeavalieoscustosebenefcios daaplicac~aoproposta.parafazerisso,primeiroenecessarioanalisaroproblema,pelo ousuario.portanto,oidealefazerumaanaliseprofundadoproblemaparaproduzir poder~aoseridenticadossoluc~oesalternativas,seuscustosepotenciaisbenefciospara menosemnvelglobal.quantomelhoroproblemaforentendido,maisfacilmente umestudodeviabilidadebemfundamentado.napratica,entretanto,oestudode
AriadneM.B.RizzoniCarvalhoeThelmaC.dosSantosChiossi viabilidadeefeitoemumcertolimitedetempoesobpress~ao.geralmente,oresultado desseestudoeumaofertaaousuariopotencial,e,comon~aosepodetercertezadequea e,paracadasoluc~ao,s~aoanalisadososcustosedatasdeentrega.portanto,nessa ofertaseraaceita,porraz~oesecon^omicasn~aoepossvelinvestirmuitosrecursosnessa etapa.aidenticac~aodesoluc~oesalternativasebaseadanessaanalisepreliminar, 33 faseefeitaumaespeciedesimulac~aodofuturoprocessodedesenvolvimento,daquale {Documentac~ao: eumdocumentoquedeveconterosseguintesitens:(a)adenic~aodoproblema;(b) e,seforesseocaso,qualopc~aodeveserescolhida.oresultadodoestudodeviabilidade soluc~oesalternativas,comosbenefciosesperados;e(c)asfontesnecessarias,custose possvelderivarinformac~oesqueajudemadecidirseodesenvolvimentovaivalerapena organizacionaisdenemaformaemqueelesdevemserentregues. deumafaseparaoutravaidependerdessesdocumentos,e,normalmente,ospadr~oes Osprodutosouresultadosdegrandepartedasfasess~aodocumentos;amudancaoun~ao datasdeentregaparacadasoluc~aoproposta. {Vericac~aoeValidac~ao: Emboratenhasidoditoqueavericac~aoeavalidac~aoocorrememduasfasesespeccas {Gerenciamento: (testeunitarioetestedosistema),elass~aorealizadasemvariasoutrasfases.em muitoscasos,s~aoexecutadascomoumprocessodecontroledequalidadeatravesde revis~oeseinspec~oes,comoobjetivodemonitoraraqualidadedoprodutoduranteo Ametaprincipaldogerenciamentoecontrolaroprocessodedesenvolvimento.Hatr^es desenvolvimentoen~aoaposaimplementac~ao.adescobertaeremoc~aodeerrosdevem serfeitasoquantoantesparaqueaentregadoprodutocomerrossejaevitada. aspectosaserconsideradosnogerenciamento.oprimeirodizrespeitoaadaptac~ao comoosprodutosouresultadosintermediariosv~aoserarmazenados,acessadosemodicados,comoasvers~oesdiferentesdosistemas~aoconstrudasequaisasautorizac~oes necessariasparaacessaroscomponentesdeentradaesadadobancodedadosdoproduto.finalmente,ogerenciamentotemdelidarcomtodososrecursosqueafetamo algunsprocedimentospodemsernecessariosparaalgunsprodutos,masexcessivamen- dociclodevidaaoprocesso,poiselen~aodevesert~aorgidoapontodeseraplicadoexatamentedamesmaformaatodososprodutos,indistintamente.porexemplotecarosparaaplicac~oesmaissimples.osegundoaspectoeadenic~aodepolticas: processodeproduc~aodesoftware,particularmentecomosrecursoshumanos. dedesenvolvimentodesoftware,sendoasprincipais: {oprocessodedesenvolvimentodesoftwaredevesersujeitoadisciplina,planejamento Oparadigmadociclodevidaclassicotrouxecontribuic~oesimportantesparaoprocesso egerenciamento;
34 cessodedesenvolvimentodesoftwaren~aoelinear,envolveumasequ^enciadeiterac~oesdas {aimplementac~aodoprodutodeveserpostergadaatequeosobjetivostenhamsido Existemvariosproblemascomoparadigmaclassico,sendoumdelesarigidez.Opro- completamenteentendidos. Introduc~aoaEngenhariadeSoftware queretornamasatividadesexecutadasanteriormente.oparadigmaclassico,comoproposto atividadesdedesenvolvimento.essasiterac~oesest~aorepresentadasnafigura1.3pelassetas inicialmente,n~aocontemplavaessavoltaasfasesanteriores.osresultadosdeumafaseeram \congelados"antesdesepassarparaaproximafase.dessaforma,oparadigmaassumiaque osrequisitoseasespecicac~oesdeprojetopodiamser\congelados"numestagiopreliminar originaispodemserdescobertos,assimcomoerrosdeprojetoedeimplementac~ao.novas ciclodevida,quandoosoftwareeinstaladoepostoemuso,erroseomiss~oesnosrequisitos asoutras.duranteafasedeprojeto,podemseridenticadosproblemascomosrequisitos; duranteaimplementac~ao,podemsurgirproblemascomoprojeto;duranteafasenaldo mudancas. dedesenvolvimento,quandooconhecimentosobreaaplicac~aopodeaindaestarsujeitoa funcionalidadestambempodemseridenticadas,emodicac~oespodemsetornarnecessarias. Parafazeressasmudancas,podesernecessariorepetiralgunsoutodososestagiosanteriores. Napratica,entretanto,todasessasfasessesobrep~oemeforneceminformac~oesumaspara desvioedesencorajado,poisvairepresentarumdesviodoplanooriginale,portanto,requerer processoprevisvelefacildemonitorar.osplanoss~aobaseadosnessalinearidade,equalquer umreplanejamento. desoftwareemumadataunica;todaaanaliseeexecutadaantesdoprojetoedaimplementac~ao,eaentregapodeocorrermuitotempodepois.quandosecometemerrosdeanalisee Todavia,ametadoparadigmaclassicocontinuasendotentaralinearidade,paramantero quandoiston~aoeidenticadoduranteasrevis~oes,oprodutopodeserentregueaousuario comerros,depoisdemuitotempoeesforcosteremsidogastos.alemdisso,comooprocesso dedesenvolvimentodesistemascomplexospodeserlongo,demandandotalvezanos,aaplicac~aopodeserentreguequandoasnecessidadesdousuariojativeremsidoalteradas,oque Finalmente,nesseparadigmatodooplanejamentoeorientadoparaaentregadoproduto processobastanteutilizado,especialmentequandoosrequisitosest~aobemclarosnoincio quetentamsanarosproblemasdociclodevidaclassico,especialmentenoquedizrespeito ao\congelamento"dosrequisitos. dodesenvolvimento.nasproximassec~oes,ser~aoapresentadosdoisparadigmasalternativos vairequerermudancasimediatasnaaplicac~ao. 1.4.2Oparadigmaevolutivo Apesardesuaslimitac~oes,oparadigmadociclodevidaclassicoaindaeummodelode atravesdemultiplasvers~oes,atequeoprodutodesoftwarealmejadotenhasidodesenvolvido. inicial,queesubmetidoaoscomentariosecrticasdousuario;oprodutovaisendorenado Oparadigmaevolutivoebaseadonodesenvolvimentoeimplementac~aodeumproduto
rapidofeedbackentreelas.oparadigmaevolutivopodeserdedoistipos: AriadneM.B.RizzoniCarvalhoeThelmaC.dosSantosChiossi Asatividadesdedesenvolvimentoevalidac~aos~aodesempenhadasparalelamente,comum 1)Desenvolvimentoexploratorio,emqueoobjetivodoprocessoetrabalharjuntodo usuarioparadescobrirseusrequisitos,demaneiraincremental,atequeoprodutonal 35 edifcil,oumesmoimpossvel,estabelerumaespecicac~aodetalhadadosrequisitos dosistemaapriori.afigura1.4,adaptadadesom96,apresentaasatividadesdo sejaobtido.odesenvolvimentocomecacomaspartesdoprodutoques~aomaisbementendidas,eaevoluc~aoacontecequandonovascaractersticass~aoadicionadasamedida ques~aosugeridaspelousuario.odesenvolvimentoexploratorioeimportantequando desenvolvimentoexploratorio.atividades paralelas 2)Prototipodescartavel,cujoobjetivoeentenderosrequisitosdousuarioe,consequentemente,obterumamelhordenic~aodosrequisitosdosistema.Oprototiposeconcentra Primeiramenteedesenvolvidaumavers~aoinicialdoproduto,queesubmetidaauma Figura1.4:Desenvolvimentoexploratorio. produtoalmejadotenhasidodesenvolvido. avaliac~aoinicialdousuario.essavers~aoerenada,gerandovariasvers~oes,atequeo consegueidenticardetalhesdeentrada,processamentoourequisitosdesada.outras envolveprojeto,implementac~aoeteste,masn~aodemaneiraformaloucompleta.muitasvezesousuariodeneumaseriedeobjetivosparaoprodutodesoftware,masn~ao emfazerexperimentoscomosrequisitosdousuarioquen~aoest~aobementendidose tac~aodeumsistemaoperacionalouaindasobreaformadainterac~aohomem{maquina. vezes,odesenvolvedorpodeestarincertosobreaeci^enciadeumalgoritmo,aadap- Nessassituac~oes,oprototipopodeseramelhoropc~ao.Eumprocessoquepossibilita aodesenvolvedorcriarummodelodosoftwarequeseraconstrudo.porumlado,o darouinovaroprototipo;poroutro,ousuariopoderelacionaroquev^enoprototipo desenvolvedorpodeperceberasreac~oesiniciaisdousuarioeobtersugest~oesparamu- Descrição Desenvolvimento Validação Versão inicial Versão intermediária Versão final