Anda di halaman 1dari 6

Prof.

Edson dos Santos Cordeiro

Tpico: Objetivo: Bibliog. Base: Bibliog. Compl.: Internet: INTRODUO

Introduo a Ciclo de Vida do Software Conhecer os principais conceitos relacionados a ciclo de vida do software. McCONNEL, Steve. Rapid development. Redmond, WA: Microsoft Press, 1996. Engenharia de Software. Ian Summerville. Addison- Wesley, 2003. Engenharia de Software. Roger S. Pressman. Makron Books. http://www.software-engineer.org (Engenharia de Software) Software Engine Institute (Instituto de Engenharia de Software)

Ciclos de vida do software descrevem como um software deve ser desenvolvido. Basicamente definem a ordem global das atividades envolvidas em um contexto de projeto de software e prope uma estratgia de desenvolvimento que pode ser aplicada a um determinado contexto de projeto de software. Ciclos de vida normalmente so vagos nas descries de detalhes das condies de incio e trmino de uma atividade, recursos utilizados, artefatos consumidos ou produzidos, papis desempenhados etc. Dentre os diversos ciclos de vida de software, pode-se citar: Code-and-Fix, Cascata, Espiral, Prototipao Evolutiva, Prototipao Incremental, Prototipao Descartvel, Refinamento Iterativo, Ciclo de Vida Progressivo, Desenvolvimento Incremental, Sashimi. Diferenas entre modelos de ciclo de vida Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam: Enfoque dado pelo modelo. Por exemplo, no Modelo Cascata o enfoque dado na documentao e no Modelo Espiral o enfoque dado nos riscos; Estratgia de desenvolvimento. Define a disposio das atividades que devero ser executadas para atingir um objetivo em um contexto de projeto de desenvolvimento de software. A disposio das atividades pode ser, por exemplo, linear (uma atividade aps a outra) como no ciclo de vida Cascata puro ou iterativa (um conjunto de atividades repetida vrias vezes at atingir o seu objetivo) como nos modelos incrementais. Outras estratgias podem envolver a disposio das atividades em paralelo, a prototipao ou reunir as caractersticas de modelos de ciclo de vida lineares e iterativos.

Modelo Cascata Puro A proposta do modelo Cascata Puro (Figura 1) consiste na execuo das atividades de desenvolvimento de software em uma seqncia ordenada. Desta forma, a passagem para determinada atividade exige como critrio a finalizao da atividade imediatamente anterior. As principais atividades do modelo so: requisitos de sistema, requisitos de software, anlise, projeto de programa, codificao, teste e operao.
Requisitos de sistema Requisitos de software Anlise Projeto do programa Implementao Teste Operao

Figura 1: Modelo de ciclo de vida Cascata


Ciclo de Vida do Desenvolvimento de Software

Prof. Edson dos Santos Cordeiro

O modelo Cascata recomendado para projetos nos quais h domnio dos requisitos do sistema que ser desenvolvido e quando o pessoal envolvido no projeto fraco tecnicamente devido a baixa complexidade do modelo. Alm disso, pode ser empregado para situaes nas quais h um bom conhecimento do domnio (por exemplo, um bom conhecimento sobre o tipo de software que ser desenvolvido) e das tecnologias que sero utilizadas para desenvolver o software (por exemplo, mtodos, tcnicas e ferramentas). No entanto, o modelo apresenta algumas desvantagens: 1. Prope uma seqncia entre etapas que no representa adequadamente um processo de desenvolvimento de software; 2. No oferece suporte adequado para mudanas que so percebidas durante o processo e que requerem modificaes em etapas anteriores (flexibilidade); 3. No oferece facilidades para acomodar tecnologias recentes como prototipao rpida e, 4. Fornece poucos recursos para otimizao de processo (detalhamento); Devido a essas desvantagens, a utilizao do modelo depende do contexto e pode resultar nas seguintes conseqncias: 1. Pode no permitir a viso real do processo em andamento; 2. O modelo cascata, analogamente, cria dois universos, um universo se refere ao processo em andamento e o outro universo se refere s mudanas que deveriam ser aplicadas ao produto, mas no as so pelo fato do modelo no incorporar em sua dinmica a reviso de etapas j concludas durante o seu andamento; 3. No possvel mensurar. O fato de normalmente no permitir uma viso real do processo tambm implica em uma viso irreal para a aplicao de mtricas. Atividades no concludas so rotuladas como concludas. Modelo Espiral O modelo Espiral (Figura 2), proposto por Barry Boehm, rene caractersticas dos modelos Cascata e Prototipao acrescentando ainda em sua base a anlise de riscos. Cada giro na espiral (iniciando a partir do centro e avanando para fora) representa uma nova fase do processo. Esse processo evolutivo permite que novas verses possam ser construdas progressivamente. Tipicamente, o modelo pode ser dividido em 3 ou 6 regies. PRESSMAN (vide referncias) apresenta o modelo divido em 6 regies: comunicao com o cliente, planejamento, anlise de riscos, engenharia, construo e evoluo e, avaliao do cliente. O nmero de tarefas por regies pode variar conforme o tamanho e complexidade do projeto. Desta forma, o modelo pode ser adaptado conforme as caractersticas do projeto.

Figura 2: Ciclo de Vida Espiral

Ciclo de Vida do Desenvolvimento de Software

Prof. Edson dos Santos Cordeiro

A adoo do modelo Espiral proporciona algumas vantagens. Teoricamente, quanto mais tempo e recursos forem destinados, ou seja, quanto mais iteraes na espiral, menor sero os riscos sobre o projeto. Outra vantagem em relao a modelos seqenciais como o modelo Cascata, a execuo de atividades de verificao presentes ao final de cada iterao que permitem um melhor controle gerencial sobre o projeto. Uma desvantagem do modelo refere-se a situaes em que o projeto considerado simples e os riscos so modestos. Nesse contexto, muitos projetos no precisam da flexibilidade e gerenciamento de riscos proporcionados pelo modelo. Prototipao Organizaes de desenvolvimento de software utilizam prottipos na construo de software com diferentes propsitos: na construo de modelos, simulaes, implementaes parciais ou ainda para testar aspectos tcnicos de um sistema. A prototipao pode ser adotada como uma abordagem que compreenda todo o ciclo de vida de desenvolvimento de um software ou como um processo incorporado a um ciclo de vida (por exemplo, Modelo Espiral). O processo de prototipao (Figura 3) consiste basicamente em diversos ciclos iterativos. Um prottipo construdo a partir de requisitos iniciais. realizada uma avaliao crtica do prottipo a qual considera os requisitos iniciais e requisitos que no foram mencionados inicialmente. Caso o prottipo no atenda aos requisitos pretendidos, novas iteraes so realizadas produzindo novos prottipos. As iteraes so finalizadas quando os requisitos forem atendidos.

Prottipo inicial

Reviso do prottipo

Reviso/refinamento do prottipo
Figura 3: Processo de Prototipao

No

Atendido?

Sim

Objetivos atendidos

Existem diversos modelos de processo de desenvolvimento de software que empregam a prototipao em seus processos: Incremental Iterativo, Prototipao Rpida Descartvel, Prototipao Evolutiva e Espiral. Prototipao Incremental A Prototipao Incremental (Figura 4) tambm conhecida como Entrega por Estgio adota como estratgia o desenvolvimento por estgios. Normalmente os requisitos mais importantes so implementados primeiro e os demais so acrescentados em novas verses. O desenvolvimento ocorre gradualmente e, ao final de cada estgio, uma verso opervel produzida e incrementada nos demais estgios at a sua concluso final. A Prototipao Incremental pode oferecer diversas vantagens: reduo de riscos, maior visibilidade sobre o processo, problemas podem ser descobertos logo no incio, auxilia na estimativa de tempo do projeto entre outras. No entanto, o emprego desse modelo exige grande esforo na atualizao da documentao do usurio. Alm disso, o desenvolvimento por estgio requer que as dependncias entre os estgios sejam bem planejadas, pois um dos problemas comuns descobrir que o estgio 2 depende de componentes do estgio 4, por exemplo.

Ciclo de Vida do Desenvolvimento de Software

Prof. Edson dos Santos Cordeiro


Concepo do software Anlise de requisitos Projeto arquitetural Estgio 1: Projeto detalhado, implementao, depurao, teste e entrega

Estgio 2: Projeto detalhado, implementao, depurao, teste e entrega

Estgio 3: Projeto detalhado, implementao, depurao, teste e entrega

Figura 4: Modelo Prototipao Incremental Prototipao Evolutiva A Prototipao Evolutiva (Figura 5) basicamente inicia com a concepo do sistema e emprega diversos ciclos de re-projeto, re-implementao e re-avaliao at a aceitao final do software. Cada novo prottipo confirma, refina ou adiciona novos requisitos at atingir a totalidade de requisitos do sistema.

Concepo do software

Projeto e implementao do prottipo inicial

Refinamento do prottipo at sua aceitao

Concluso e entrega do prottipo

Figura 5: Modelo Prototipao Evolutiva O modelo pode ser adotado em contextos nos quais os requisitos so instveis ou desconhecidos ou, ainda, quando h a necessidade de se testar um algoritmo antes de sua adoo. Dentre as vantagens proporcionadas pelo modelo Prototipao Evolutiva, destaca-se menor taxa de defeitos pela melhor definio das especificaes do sistema, promove maior participao do cliente, permite maior visibilidade do progresso de desenvolvimento e possvel verificar a aceitao do sistema nos primeiros estgios do desenvolvimento. Por outro lado, o modelo pode agregar algumas desvantagens: pobre manutenibilidade provocada pela rapidez no desenvolvimento e/ou constantes mudanas na estrutura do prottipo, acrscimo de novas funcionalidades devido ao constante contato do cliente com o prottipo e, uso ineficiente do tempo destinado construo do prottipo. Diferentemente da Prototipao Incremental, o prottipo entregue ao finalizar o desenvolvimento. Alm disso, a Prototipao Incremental desenvolve partes do software que sero entregues medida que so finalizadas, no ocorrendo mudanas nas especificaes do projeto e, a maior parte dos requisitos deve ser conhecida logo no incio do projeto. Prototipao Rpida Descartvel O modelo Prototipao Rpida Descartvel (Figura 6Figura ) difere dos modelos Incremental e Evolutivo pelo fato de descartar o prottipo. No entanto, assemelha-se em alguns aspectos quanto a sua estratgia. O modelo inicia com a especificao de requisitos os quais subsidiam a construo de um prottipo. O prottipo avaliado pelo cliente e novas iteraes ocorrem at sua aceitao. Antes de ser descartado, o prottipo aprovado utilizado na especificao do sistema e alguns componentes podem ser utilizados na re-implementao da nova verso final. Aps a validao, o software entregue ao cliente.

Ciclo de Vida do Desenvolvimento de Software

Prof. Edson dos Santos Cordeiro


Especificao inicial Construo prottipo Componentes reutilizveis Avaliao do prottipo Especificao do sistema

Desenvolvimento do software

Validao do sistema

Entrega do software

Figura 6: Modelo Prototipao Rpida Descartvel Dentre os diversos domnios de software, o Modelo Prototipao Rpida Descartvel pode ser aplicado em: domnios nos quais os requisitos de software so instveis ou existe a necessidade de certificar um conjunto de requisitos ou, ainda, em domnios nos quais os riscos podem prejudicar ou inviabilizar o projeto. Reduo de riscos, melhor compreenso dos requisitos do sistema e maior participao do cliente so algumas das vantagens que podem ser proporcionadas pelo modelo. Porm, existem alguns problemas que podem advir da utilizao desse modelo: testes insuficientes em requisitos importantes (por exemplo, relacionados a segurana e robustez); no implementao de requisitos importantes devido necessidade de implementar rapidamente um prottipo e, utilizao do prottipo como verso final. Seleo de modelos de ciclo de vida A escolha de um modelo de ciclo de vida deve considerar as caractersticas do contexto de projeto ao qual ser aplicado. Diferentes projetos de desenvolvimento possuem diferentes necessidades que devem orientar a seleo do ciclo de vida mais adequado. McCONNEL (1996, p. 154), considerando as diferenas entre projetos de desenvolvimento, apresenta diversas questes que devem ser respondidas ao selecionar um modelo de ciclo de vida: 1. Qual o nvel de compreenso do usurio e desenvolvedores em relao aos requisitos no incio do projeto? provvel que a compreenso mude significativamente durante o desenvolvimento do projeto? 2. Qual o nvel de compreenso dos desenvolvedores em relao a arquitetura do sistema? provvel que mudanas na arquitetura do sistema ocorram no meio do caminho? 3. Qual nvel de confiana necessrio? 4. O quanto necessrio planejar e projetar durante o projeto prevendo mudanas em verses futuras? 5. Qual o nvel de riscos implcitos no projeto? 6. Pode ser limitado em um cronograma? 7. necessrio habilidade para realizar correes no meio do projeto? 8. necessrio mostrar ao cliente o progresso durante o projeto? 9. necessrio demonstrar ao usurio aspetos gerenciais durante o projeto? Para auxiliar na resposta a essas questes, McConnel apresenta uma tabela na qual so apresentadas as vantagens e desvantagens de diversos modelos de ciclo de vida em relao s questes apresentadas acima. Outras questes foram includas e possuem igual importncia na escolha de um modelo de ciclo de vida para o projeto. O Quadro 1 apresentado nesse material no inclui todos os modelos de ciclo de vida abordados por McConnel. McConnel utiliza uma escala para classificar os modelos que varia entre deficiente, bom e excelente. Em alguns casos, o autor refina a classificao utilizando mais de um valor, por exemplo bom para excelente. Deve-se ressaltar ainda que, a seleo no se restringe somente pela considerao das vantagens oferecidas pelo modelo de ciclo de vida frente a um contexto de projeto de software, devem ser considerados outros aspectos como, por exemplo, a maneira como o ciclo de vida ser aplicado.

Ciclo de Vida do Desenvolvimento de Software

Prof. Edson dos Santos Cordeiro

Quadro 1: Modelos de ciclo de vida (vantagens e desvantagens) Capacidade do modelo Trabalha com a compreenso deficiente dos requisitos Trabalha com a compreenso deficiente da arquitetura Produz sistemas de alta confiana fcil modificar o sistema em verses futuras Gerencia riscos Pode ser limitado em um cronograma predefinido Permite correes no meio do projeto Possibilita ao cliente visibilidade do progresso Possibilita ao cliente visibilidade do progresso do gerenciamento Requer pouca gerncia ou experincia para uslo Cascata Puro Deficiente Deficiente Excelente Excelente Deficiente Bom Deficiente Deficiente Bom Bom Espiral Excelente Excelente Excelente Excelente Excelente Deficiente Bom Excelente Excelente Bom Prototipao Evolutiva Excelente Deficiente para bom Bom Excelente Bom Deficiente Excelente Excelente Bom Deficiente Prototipao Incremental Deficiente Deficiente Excelente Excelente Bom Bom Deficiente Bom Excelente Bom

Ciclo de Vida do Desenvolvimento de Software

Anda mungkin juga menyukai