Prévia do material em texto
Engenharia de Software e Gerencia de Projetos Engenharia de Software e Gerencia de Projetos 2Ciclo de Vida A engenharia de software define o ciclo de vida como a divisão do desenvolvimento em etapas. Cada etapa deve utilizar disciplina como atividade. Os ciclos de vida são aplicados para conduzir o desenvolvimento e gerar documentos na finalização de cada etapa. Os ciclos de vida são definidos na metodologia adotada pela empresa e seguem alguns modelos já utilizados no mercado, como: cascata, prototipagem, espiral e iterativo e incremental. ● Conhecer o conceito de ciclo de vida e os diversos paradigmas definidos para desenvolvimento de sistemas. Nesta aula serão abordados os seguintes tópicos: ● Conceito de ciclo de vida; ● Ciclo de vida em cascata; ● Ciclo de vida Prototipagem; ● Ciclo de vida em Espiral; ● Ciclo de vida Iterativo e incremental. Introdução Objetivo Tópicos Abordados Engenharia de Software e Gerencia de Projetos 3Ciclo de Vida Conceito de Ciclo de Vida Podemos ter modelos de ciclos de vida diferentes, mas a abordagem a ser utilizada é a mesma: o conhecimento do problema, representação conceitual da solução e a representação de como a solução será instalada no computador. As disciplinas são distribuídas pelos ciclos de vida. O ciclo de vida de desenvolvimento de um sistema ou software representa as etapas pelas quais se deve passar e quais os documentos que devem ser gerados desde o conhecimento do problema até a sua solução instalada num computador. A seguir serão apresentados 4 modelos de ciclos de vida: Engenharia de Software e Gerencia de Projetos 4Ciclo de Vida Ciclo de Vida em Cascata Características: ● As etapas são realizadas seqüencialmente; ● Documentos são gerados a cada etapa e servem de entrada para a fase seguinte. Uma etapa só inicia ao término da anterior; ● Vulnerável para mudança de requisitos, pois é preciso retornar com o projeto completo a avaliação dos impactos; ● Longa duração para gerar resultado ao usuário. Engenharia de Software e Gerencia de Projetos 5Ciclo de Vida Ciclo de Vida Prototipagem Características: O desenvolvimento rápido para validação com o usuário. As interfaces são elaboradas e procedimentos desenvolvidos sem refinamentos, o que causa re-trabalho ou implantações incompletas. Os protótipos normalmente são utilizados para situações de emergência, sistemas novos – requisitos indefinidos e/ou introduzir cultura do uso da tecnologia em uma organização. Os protótipos podem ser utilizados para experiência, entendidas as limitações. O uso de Protótipos apresenta problemas A visão que o usuário tem sobre um protótipo é de extrema importância, não considerando se o software que dá suporte a essas funções é frágil e difícil de manter; A construção é realizada de forma imediatista, ou seja, sem a visão completa das definições, podendo o usuário se acostumar com uma versão precária do sistema, convivendo com as deficiências. Quando estiver tratando de sistemas críticos deve-se ter cuidado em utilizar esse modelo. Importante Engenharia de Software e Gerencia de Projetos 6Ciclo de Vida Ciclo de Vida em Espiral Tentativa de união do ciclo tradicional com protótipos, visando o desenvolvimento em partes. Possui quatro atividades: planejamento, análise de riscos, engenharia e avaliação do usuário. ● No planejamento são definidos os objetivos, alternativas e restrições; ● Na análise de Risco é analisada a viabilidade de se construir e implementar o planejado; ● Na engenharia o software é construído; ● Na avaliação do Usuário procura-se a aprovação da parte desenvolvida. É um modelo realista, mas difícil de convencer a sua adoção; O controle torna-se difícil, pois sempre evolui e pode ser problemático se o centro da espiral não é o centro do sistema a ser desenvolvido. A análise de riscos deve ser bem elaborada; A adoção do modelo ficou prejudicada em função da falta de cultura e conhecimento na adoção. Altamente dependente da Tecnologia. Características: ● Desenvolvimento realizado em partes; ● Fácil para atender mudanças de requisitos, pois se a alteração afeta uma parte ainda não desenvolvida não tem repercussão e, se afetar uma parte já desenvolvida os procedimentos são independentes; ● Usuário consegue visualizar resultados antecipadamente; ● Caracteriza-se por repetir o ciclo de vida para cada iteração e ao final incrementar a produção com uma nova versão do software. Ciclo de Vida Iterativo e incremental Engenharia de Software e Gerencia de Projetos 7Ciclo de Vida Concepção Objetivos ● Definir necessidades reais dos patrocinadores; ● Delimitar claramente o escopo do projeto; ● Formular a arquitetura candidata; ● Levantamento de principais funcionalidades; ● A partir de um subconjunto chave de requisitos propor uma arquitetura; ● Planejamento: visão do projeto, estudo de viabilidade e análise de riscos; ● O patrocinador concorda com a realização de uma séria análise de projeto. Elaboração Objetivos ● Capturar quase todos use cases; ● Estabelecer uma arquitetura sólida para guiar as fases de construção e transição; ● Monitorar riscos e seu impacto no caso de negócio; ● Refinar plano de projeto. ● Planejamento: tarefas (por prioridade e risco de desenvolvimento) x divisão de responsabilidades x prazos individuais e duração de suas interações; ● montar equipe; ● modificar o ambiente de implementação; ● estabelecer critério de avaliação; ● Estender os requisitos e escolher Casos de Uso para participar da iteração; Engenharia de Software e Gerencia de Projetos 8Ciclo de Vida Construção Objetivos ● Completar as realizações dos use cases, projetar as classes e subsistemas, implementá-los como componentes, fazendo testes individuais ou em builds; ● O plano pode ser modificado por dois fatores: Gap possível entre elaboração e construção; e Finanças e cronograma podem ser alterados; ● Alocação de recursos - Aumento significativo de pessoas; ● Definição do critério de avaliação; ● 4 atividades principais em paralelo; ● 5 workflows principais; ● Planejar iterações; ● Business case (acompanhamento); ● Avaliação. Transição Objetivos ● Atingir a capacidade final de operação: ● Modificar o produto para “aliviar” problemas não detectados nas fases anteriores; ● Corrigir defeitos; ● Garantir que o produto está pronto para ser entregue ao usuário; ● Realizar treinamentos. Engenharia de Software e Gerencia de Projetos 9Ciclo de Vida Avaliação a Distância 1 - Escolha a alternativa CORRETA que define o ciclo Prototipagem. 3 - Quanto ao ciclo de vida Espiral, é CORRETO dizer: Respostas - 1 - E, 2 - (C. B. A. E. D e E). 3 C A - Ciclo que é fácil a mudanças de requisitos. B - Não devem ser utilizados como experiência. C - O desenvolvimento é realizado com exaustiva validação de requisitos. D - Representa o ciclo que gera softwares com vida útil prolongada. E - É um desenvolvimento rápido para validação com o usuário. A - É um ciclo difícil de ser utilizado. B - Sua proposta foi uma tentativa de união do ciclo tradicional com protótipos. C - Todas as alternativas são verdadeiras. D - É dependente de uma análise de riscos bem elaborada. E - É um ciclo altamente dependente da tecnologia. 2 - Relacione as opções identificando o produto gerado pelas fases do Ciclo de vida em cascata: A - Necessidade B - Arquitetura do Software C - Definição Lógica D - Código de Software E - Versão do Software F - Software Validado Análise Projeto Definição dos requisitos Implantação ImplementaçãoTeste Engenharia de Software e Gerencia de Projetos 10Ciclo de Vida 4 – Indique V para as sentenças verdadeiras e F para as sentenças falsas. 5 – Indique a seqüência numerada correta do preenchimento das 4 lacunas da direita, indicando o produto estabelecido como marco ao fim de cada fase no ciclo de vida iterativo e incremental. 5 – Associe as colunas. É correto dizer que os ciclos de vida prevêem os documentos que deverão ser gerados durante o desenvolvimento? As disciplinas utilizadas nos ciclos de vida de desenvolvimento de sistemas aplicam a mesma definição proposta na Engenharia de software. Respostas - 4 (V e V.). 5 (C. A. B e D), 6 - (B e A), 7 - A. A - Concepção B - Construção C - Elaboração D - Transição A - Qual o ciclo de vida que desenvolve e implanta o sistema em partes? B - Identifique o ciclo de vida que tem como característica o desenvolvimento completo, ou seja, uma etapa só é iniciada ao final da anterior. Arquitetura Escopo Operação Release Cascata Iterativo e incremental 7 - Como se define ciclo de vida ? A - Representa as etapas que o desenvolvimento de sistemas deve utilizar. B - Representa o desenvolvimento procedural de sistemas. C - Nenhuma das alternativas. D - Representa o desenvolvimento coordenado para atendimento das gerências. E - É a definição de métodos, técnicas e ferramentas para ordenar Engenharia de Software e Gerencia de Projetos 11Ciclo de Vida 8. Relacione as colunas e marque a alternativa correta: A - Concepção B - Elaboração C - Construção D - Transição Planejamento: tarefas (por prioridade e risco de desenvolvimento) x divisão de responsabilidades x prazos individuais e duração de suas interações; Completar as realizações dos use cases, projetar as classes e subsistemas, implementá-los como componentes, fazendo testes individuais ou em builds; Garantir que o produto está pronto para ser entregue ao usuário; Planejamento: visão do projeto, estudo de viabilidade e análise de riscos; Respostas - 8 (B, C, D e A) Engenharia de Software e Gerencia de Projetos 12Ciclo de Vida Atividade Complementar LARMAN, G. Utilizando UML e padrões: uma introdução à análise e ao projeto orientado a objetos. Bookman, Porto Alegre, 2000. “O ciclo de vida é iterativo porque o ciclo repete a cada iteração e incremental porque o sistema aumenta ao final de cada iteração aprovada”. Engenharia de Software e Gerencia de Projetos 13Ciclo de Vida Síntese Resumindo podemos destacar alguns conceitos: O ciclo de vida é utilizado no desenvolvimento de sistemas para conduzir as tarefas. Foram apresentados 4 modelos de ciclo de vida: cascata, prototipagem, espiral e iterativo e incremental. O ciclo de vida em cascata é realizado de forma seqüencial e é vulnerável a mudanças de requisitos. O ciclo de vida prototipagem possui o risco de gerar um sistema com imperfeições e definições incompletas. O ciclo de vida espiral requer dinanismo na implementação e experiência na definição. O ciclo de vida iterativo e incremental é realizado em partes, fácil para mudança de requisitos e disponibiliza produto ao usuário de forma antecipada, mas requer muita atenção gerencial. No ciclo de vida iterativo e incremental os marcos determinam o final de cada etapa. A etapa de concepção possui como marco o escopo do trabalho; a elaboração é determinada pela arquitetura; a construção define como marco a operação do software e a transição produz a nova versão (release). ● PRESSMAN, R.G. Engenharia de Software. Rio de Janeiro: McGraw-Hill, 2002. 935p. ● SOMMERVILLE, I.. Software Engineering, 8 ed.-São Paulo: Pearson Addison - Wesley, 2007. Bibliografia Recomendada