Profª. Andrea Padovan Presidente Epitácio 2013 Ademir Kaique Claudio Xavier Pedro Augusto Ricardo L. Silva Modelos Cascata Modelo Espiral Modelo Incremental Modelo ........ MODELO CASCATA (Clássico) O Modelo Cascata é um modelo de desenvolvimento de software sequencial no qual o desenvolvimento é visto como um fluir constante para frente (como uma cascata) através de suas fases de análise de requisitos, projeto, implementação, testes (validação), i ntegração e manutenção de software; Também é conhecido por abordagem “top-down”, foi proposto por Royce em 1970; Até meados da década de 1980 foi o único modelo com aceitação quase que geral por parte dos desenvolvedores; Sua finalidade era a de estabelecer ordem no desenvolvimento de grandes produtos de software; O modelo cascata é um dos mais importantes modelos, e é referência para muitos outros modelos de desenvolvimento, servindo de base para nortear muitos projetos modernos. A versão original deste modelo foi melhorada e retocada ao longo do tempo e continua sendo muito utilizado hoje em dia; Nesse modelo as atividades do processo de desenvolvimento são estruturados em um cascata onde a saída de uma etapa é a entrada para a próxima etapa; Existem diversas variantes desse modelo proposta por pesquisadores e empresas desenvolvedoras e que podem ser adaptadas a diversos e diferentes tipos de software, Uma das principais características do Modelo Cascata é o seu fluxo linear e sequencial de cada uma das fases que compoem o processo de desenvolvimento, o que o torna, na maioria das vezes um processo “rígido” de desenvolvimento; Ou seja: “ A ideia principal que o dirige é que as diferentes etapas de desenvolvimento seguem uma sequência: a saída da primeira etapa “fluí” para a segunda etapa e a saída da segunda etapa “fluí” para a terceira e assim por diante. As atividades a executar são agrupadas em tarefas, executadas sequencialmente, de forma que uma tarefa só poderá ter início quando a anterior tiver terminado.” Principais atividades (fases) do Modelo Cascata 1 Definição de Requisitos; 2 Projeto de Software; 3 Implementação e Teste de Unidade; 4 Integração e Teste do Sistema; 5 Operação e Manutenção; 1 Definição de Requisitos Nesta etapa, estabelecem-se os requisitos do produto que se deseja desenvolver. Sendo isso estabelecido, os requisitos devem ser definidos de uma maneira apropriada para que sejam úteis na etapa seguinte. Esta etapa inclui também a documentação e o estudo da facilidade e da viabilidade do projeto com o fim de determinar o processo de início de desenvolvimento do projeto do sistema, pode ser vista como uma concepção de um produto de software e também como o início do seu ciclo de vida. 2 Projeto de Software O projeto do sistema é um processo de vários passos que se centraliza em quatro atributos diferentes do sistema: estrutura de dados, arquitetura do software, detalhes procedais e caracterização das interfaces. O processo de projeto representa os requisitos de uma forma que permita a codificação do produto (é uma prévia etapa decodificação). Da mesma maneira que a análise dos requisitos, o projeto é documentado e transforma-se em uma parte do software. 3 Implementação e Teste de Unidade Esta é a etapa em que são criados os programas. Se o projeto possui um nível de detalhe elevado, a etapa de codificação pode implementar-se automaticamente. A princípio, sugere-se incluir um teste unitário dos módulos nesta etapa; nesse caso, as unidades de código produzidas são testadas individualmente antes de passar a etapa de integração e teste global. 4 Integração e Teste do Sistema Concluída a codificação, começa a fase de teste do sistema. O processo de teste centraliza-se em dois pontos principais: as lógicas internas do software e as funcionalidades externas. Esta fase decide se foram solucionados erros de “comportamento” do software e assegura que as entradas definidas produzam resultados reais que coincidam com os requisitos especificados. 5 Operação e Manutenção Essa etapa consiste na correção de erros que não foram previamente detectados, em melhorias funcionais e de preferência e outros tipos de suporte. A etapa de manutenção à parte do ciclo de vida do produto de software e não pertence estritamente ao seu desenvolvimento. Melhorias e correções podem ser consideradas como parte do desenvolvimento. Principais Vantagens Torna o processo de desenvolvimento estruturado; Tem uma ordem sequencial de fases; Cada fase cai em cascata na próxima e cada fase deve estar terminada antes do início da seguinte; Todas as atividades identificadas nas fases do modelo são fundamentais e estão na ordem certa; Esta abordagem é atualmente a norma e provavelmente permanecerá por um tempo, mas temos o desenvolvimento agil chegando com muita força na maioria das empresas de grande porte; Principais Desvantagens Não fornece feedback entre as fases e não permite a atualização ou redefinição das fases anteriores; Não suporta modificações nos requisitos; Não prevê a manutenção; Não permite a reutilização; É excessivamente sincronizado; Se ocorrer um atraso todo o processo é afetado; Demora muito para ser entregue; MODELO ESPIRAL O modelo em espiral foi proposto por Boehm em 1988 como forma de integrar os diversos modelos existentes à época, eliminando suas dificuldades e explorando seus pontos fortes. Este modelo foi desenvolvido para abranger as melhores características tanto do ciclo de vida clássico como da prototipação, acrescentando, ao mesmo tempo, um novo elemento - a análise de riscos - que falta a esses paradigmas. O modelo espiral é, atualmente a abordagem mais realística para desenvolvimento de software em grande escala, e usa uma abordagem que capacita a empresa que presta o serviço, e o cliente a entender e reagir aos riscos em cada etapa evolutiva; O modelo original em espiral organiza o desenvolvimento como um processo iterativo em que vários conjuntos de quatro fases se sucedem até se obter o sistema final; Entretanto a integração não se dá através da simples incorporação de características dos modelos anteriores. O modelo em espiral assume que o processo de desenvolvimento ocorre em ciclos, cada um contendo fases de avaliação e planejamento, onde a opção de abordagem para a próxima fase (ou ciclo) é determinada. Estas opções podem acomodar características de outros modelos; Um ciclo se inicia com a determinação de objetivos, alternativas e restrições (primeira tarefa)onde ocorre o comprometimento dos envolvidos e o estabelecimento de uma estratégia para alcançar os objetivos; Na segunda tarefa, avaliação de alternativas, identificação e solução de riscos, executa-se uma análise de risco. Prototipação é uma boa ferramenta para tratar riscos. Se o risco for considerado inaceitável, pode parar o projeto; Na terceira tarefa ocorre o desenvolvimento do produto. Neste quadrante pode-se considerar o modelo cascata. Na quarta tarefa o produto é avaliado e se prepara para iniciar um novo ciclo. Variações do modelo espiral consideram entre três e seis tarefas ou setores da espiral, que podem ser: - comunicação com o cliente; - planeamento; - análise de risco; - engenharia; - construção e liberação; - avaliação do cliente. Vantagens Modelo em espiral permite que ao longo de cada iteração se obtenham versões do sistema cada vez mais completas, recorrendo à prototipagem para reduzir os riscos. Este tipo de modelo permite a abordagem do refinamento seguido pelo modelo em cascata, mas que incorpora um enquadramento iterativo que reflete, de uma forma bastante realística, o processo de desenvolvimento. Desvantagens Pode ser difícil convencer grandes clientes ( articularmente em situações de contrato) de que a abordagem evolutiva é controlável; A abordagem deste tipo de modelo exige considerável experiência na avaliação dos riscos e baseia-se nessa experiência para o sucesso. Se um grande risco não for descoberto, poderão ocorrer problemas; Este tipo de modelo é relativamente novo e não tem sido amplamente usado; Desvantagens É importante ter em conta que podem existir diferenças entre o protótipo e o sistema final. O protótipo pode não cumprir os requisitos de desempenho, pode ser incompleto, e pode refletir somente alguns aspectos do sistema a ser desenvolvido; O modelo em espiral pode levar ao desenvolvimento em paralelo de múltiplas partes do projeto, cada uma sendo abordada de modo diferenciado, por isso é necessário o uso de técnicas específicas para estimar e sincronizar cronogramas, bem como para determinar os indicadores de custo e progresso mais adequados; MODELO INCREMENTAL Barry Boehm sugeriu, tendo em vista as limitações da abordagem tradicional, que o desenvolvimento de sistemas de informação poderia ser administrado numa série de incrementos. Assim, poderia haver uma série de ciclos de vida tradicionais para cada incremento; O Modelo Incremental foi desenvolvido através da combinação entre os modelos linear e prototipação. O desenvolvimento é dividido em etapas, denominadas “incrementos”, que produzirão incrementalmente o sistema, até a sua versão final; Quando um Modelo Incremental é usado, o primeiro incremento frequentemente é chamado de núcleo do produto. Isto é, os requisitos básicos são satisfeitos, mas muitas características suplementares deixam de ser elaboradas. O núcleo do produto é usado pelo cliente e um plano é desenvolvido para o próximo incremento como resultado do uso e/ou avaliação. O Modelo de Processo Incremental, como a prototipagem e outras abordagens evolucionárias, é iterativo por natureza. O Modelo Incremental tem o objetivo de apresentar um produto operacional a cada incremento. O desenvolvimento incremental é particularmente útil quando não há mão-de-obra e/ou recursos técnicos disponíveis para a implementação completa, dentro do prazo comercial de entrega estabelecido para o projeto. Em cada incremento é realizado todo o ciclo do desenvolvimento de software, do planejamento aos testes do sistema já em funcionamento. Cada etapa produz um sistema totalmente funcional, apesar de ainda não cobrir todos os requisitos; O Modelo Incremental apresenta diversas vantagens para o desenvolvimento de um software, especialmente se os requisitos não estão claros inicialmente; Vantagens do Modelo Incremental As versões são fornecidos após cada iteração do modelo incremental; O Modelo Incremental inclui o uso do software pelo usuário para que as mudanças sejam feitas de acordo com o mesmo; Esse modelo não afeta o lado financeiro, porque ele prove o "core" do software que o cliente precisa, o que vai ajudar o cliente a manter o negócio da mesma forma, sem alterações no lado financeiro; Vantagens do Modelo Incremental É flexível e fácil de gerenciar processo mais administráveis e fazer um software melhor com uma melhor estrutura; Melhor gerenciamento de riscos, porque você pode confirmar o resultado com o cliente depois de cada versão do sistem e sempre verificar se estão fazendo o que está de acordo com o plano ou não, e corrigi-los na próxima versão do software; Os testes são simples; Desvantagens Cada fase de uma iteração é rígida e não se sobrepõem uns aos outros; Podem surgir problemas relativos à arquitetura do sistema, porque nem todos os requisitos estão reunidos na frente de todo o ciclo de vida do software; O modelo Incremental precisa ser relativamente pequeno; http://pt.wikipedia.org/wiki/Modelo_em_casc ata http://protocoloti.blogspot.com.br/2012/03 /os-modelos-de-desenvolvimento-de.html http://www.clipatecinformatica.com.br/2011 /02/modelo-espiral.html Falbo, Ricardo A., Integração de Conhecimento em um Ambiente Desenvolvimento de Software. Tese Doutorado, COPPE/UFRJ, Brasil, 1998. (on line) Rio de de de Janeiro, PRESSMAN, Roger S. Engenharia de Software, Sexta Edição. Editora MCGrawHill: Porto Alegre, 2010 http://engenhariadesoftwareuesb.blogspot.c om.br/2012/12/blog-post.html