Oslivrosquetratamdemetodologiasdedesenvolvimentodiscutemosconceitosenvol-



Documentos relacionados
Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

SistemasdeArquivos Distribudos. Dissertac~aoApresentadaao FabioKon. AreadeConcentrac~ao:Ci^enciadaComputac~ao

Grupo 05 EAP e Dicionário Versão 3.0 2º Semestre Gestão de TI Unidade 903 Sul

Extração de Requisitos

PROCESSOS DE GERENCIAMENTO DE PROJETOS SEGUNDO O PMBOK. Faculdade PITÁGORAS Unidade Raja Prof. Valéria valeriapitagoras@gmail.

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0

Documento de Especificação de Requisitos de Software

Requisitos. Professor Gabriel Baptista ( gabriel.baptista@uninove.br ) ( )

INSTRUÇÃO DE SERVIÇO PARA ELABORAÇÃO DE PLANOS GERAIS DE PROJETOS DE SISTEMAS OU APLICATIVOS

Engenharia de Software I

ENG1000 Introdução à Engenharia

COMPRA DIRETA CONFIGURAÇÃO. Passo 01 Configurando o Tipo de Operação:

Projeto de Desenvolvimento de Software

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Tecnologia e Sistemas de Informações

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Sistemas de Informações Gerenciais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Diagrama de Caso de Uso e Diagrama de Sequência

Projeto de Sistemas I

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Engenharia de Software II

Dicionário da EAP - Software FarmaInfor

Engenharia de Requisitos

Sistemas de Informação

Engenharia de Software

Desenvolvimento de Soluções de e-business. Objetivos do Capítulo

21/04/2013. O uso de um software de gerenciamento de serviços de bibliotecas produz, no dia a dia, ocorrências das mais variadas naturezas:

As 10 Áreas da Engenharia de Software, Conforme o SWEBOK. Jorge H C Fernandes 2004

PLANEJAMENTO ESTRATÉGICO Prof. Mércio Rosa Júnior PRODUÇÃO 02 e 03 de Fevereiro de 2011

Apresentação, xix Prefácio à 8a edição, xxi Prefácio à 1a edição, xxiii. Parte I - Empresa e Sistemas, 1

Introdução Visão Geral Processos de gerenciamento de qualidade. Entradas Ferramentas e Técnicas Saídas

APLICAÇÃO PRÁTICA ENGENHARIA DE CUSTOS. Apresentação:

Scrum em Ação. Gerenciamento e Desenvolvimento Ágil de Projetos de Software. Andrew Pham Phuong-Van Pham. Novatec

Processo Unificado (RUP)

METODOLOGIA DE DESENVOLVIMENTO DE SOFTWARE DO MUSEU PARAENSE EMÍLIO GOELDI

REGISTRO DE PREÇOS Software GestãoW e Unidades de Serviço Técnico


Introdução. Sistemas Operacionais. Introdução. Roteiro (1 / 2) Por que Máquinas Virtuais Existem? Roteiro (2 / 2)

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática

ASP.NET MVC em Ação. Jeffrey Palermo Ben Scheirman Jimmy Bogard. Novatec. Prefácio de Phil Haack

Contingenciamento da Rede Corporativa PLANO DO PROJETO

Notas de Aula 02: Processos de Desenvolvimento de Software

Análise e Conc epç ão de Sist em as de Inform aç ão,qwurgxomrj(qj GH5HTXLVLWRV. Adaptado a partir de Gerald Kotonya and Ian Sommerville

Planejamento e Gerenciamento de Projeto de Software

Introdução 1 1. Enquadramento 5

Linguagem de Programação I

Guia BABOK 2.0 em Português. Projeto de Tradução. Visão Geral do Guia BABOK

Princípios da Engenharia de Software Aula 02. Prof.: Franklin M. Correia

FTIN Formação Técnica em Informática Módulo de Gestão Aplicada a TIC AULA 04. Prof. Fábio Diniz

CASE FCA/VLI: 24/09/2012

Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes

1. Desenvolver o software iterativamente. Um pouco de reflexão: Acabou aí? 31/08/2010

1) O QUE NÃO É BANCO DE DADOS?

Metodologia de Desenvolvimento de Sistemas

Visão Geral do RUP Rational Unified Process. Jorge Fernandes UFRN Junho de 2002

Diretor Gerente de Peças Gerente de Serviços. Responsável pela Qualidade Vendedor de Acessórios Consultor de Serviços

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL

Engenharia de Requisitos de Software. Visão Geral

desenvolvimento de SI

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Disciplina: Administração de Departamento de TI. Professor: Aldo Rocha. Aula I - 11/08/2011

Implementação de Lean Manufacturing na fábrica de geradores EFACEC Energia, S.A. Unidade de Servicing

Verificação é um processo para se determinar se os produtos, (executáveis ou

Termo de Abertura do Projeto TAP PJSETIN NOC Network Operation Center (Centro de Operação

Proposta de Projeto PPJ PPJSETIN Consultoria e Gestão de TI. Versão 1.0. Estado do Ceará Poder Judiciário Tribunal de Justiça

Artigo elaborado por C. Magno Xavier (M.Sc., PMP) Como criar uma WBS

UM GUIA DO CONHECIMENTO EM GERENCIAMENTO DE PROJETOS (GUIA PMBOK ) Quarta Edição

S IM O N S E N ASSOCIADOS ABEMD INDICADORES 2009

Professor: Curso: Disciplina:

Clientes gerentes Usuarios finais do sistema Clientes engenheiros Gerentes contratantes Arquitetos do sistema. Definicao de requisitos

ADMINISTRAÇÃO DE ATIVOS DE TI GERENCIAMENTO DE CONFIGURAÇÃO

FIESP - DECOMTEC INOVAÇÃO TECNOLÓGICA

Processo de Desenvolvimento de Software. Erika E Freire Miranda

Processos de Desenvolvimento de Software

Implementando e Remodelando a Função de Auditoria Interna no Setor Público

Metodologia de Gerenciamento de Projetos da Justiça Federal

ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO (AULA 03)

Introdução à Qualidade de Software. Profº Aldo Rocha

Levantamento, Análise e Gestão Requisitos. Aula 12

Áreas de Conhecimento de Gerenciamento de Projetos

Prof. Marcelo Machado Cunha

Gestão de Projetos Logísticos

Parceria de fato Ofertas de Fábricas Netweaver

NBR ISO DIRETRIZES PARA AUDITORIA AMBIENTAL- CRITÉRIOS DE QUALIFICAÇÃO PARA AUDITORES AMBIENTAIS

Sistemas de Informação: tipos e características

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

Proposta de Projeto PPJ PPJSETIN Licenças para Estações de Trabalho e Servidores de Rede. Versão 1.0

SIMPROS Experiência de implantação da norma ISO 9001:2000 a partir da utilização da ISO/IEC TR (SPICE) para Melhoria de Processos

1º Seminário de Melhores Práticas

Local para EAD de um Curso

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

ECS -ASSESSORIA E CONSULTORIA TÉCNICA. ISO 9001:2015 Tendências da nova revisão

Transcrição:

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