Baixe o app para aproveitar ainda mais
Prévia do material em texto
MODELO DE MATURIDADE DE SOFTWARE Introdução Esta aula tem como tema central apresentar aos alunos os principais modelos de ciclo de vida utilizados no mercado, seus conceitos, características e aplicações. Os modelos de ciclo de vida de software surgiram pela necessidade de termos um conjunto de etapas a serem seguidas para que um este produto pudesse ser desenvolvido. Com um modelo bem definido e estabelecido, é mais fácil para que todos na organização possam seguir as mesmas etapas e saber em que fase se encontra o desenvolvimento do software. Objetivo: 1. Apresentar o conceito de ciclo de vida de software e alguns modelos, como: cascata, v, incremental, evolutivo, iterativo e incremental; 2. Discutir os modelos Rad, prototipação, espiral e Rup. Ciclo de vida de software por que precisamos utilizar um modelo de ciclo de vida para desenvolver software? Ciclo de vida de software Porque ele define: • A estrutura e a filosofia utilizadas obrigatoriamente em um processo de desenvolvimento de software; • As diferentes fases na existência deste produto; • Os princípios e diretrizes que guiarão a realização destas fases. Precisamos entender também que a adoção de um ciclo de vida não é suficiente para guiar e controlar um projeto de software na prática. Atenção As seguintes características devem ser levadas em consideração durante a vida de um produto de software: •Organização das atividades do processo; •Recursos humanos, hardware e software; •Procedimentos de operação; •Políticas de desenvolvimento e restrições; •Tipos de software. Ou seja, precisamos conhecer bem a equipe de desenvolvimento e entender quais são as suas habilidades e quais as ferramentas disponíveis na organização, dentre outras características. Ciclo de vida de software Um ciclo de vida possui algumas características básicas que são comuns a todos os modelos, tais como: • Descrever as principais fases do desenvolvimento; • Definir as principais atividades a serem realizadas durante cada uma das fases; • Especificar os produtos de cada uma das fases, além dos insumos necessários para o início delas; • Fornecer um framework sobre o qual as atividades necessárias podem ser mapeadas. Ciclo de vida de software Principais modelos de ciclo de vida de software Existem vários modelos de ciclo de vida disponíveis no mercado; entretanto, vamos discutir os principais modelos utilizados nas organizações, que são: • Cascata • V • Incremental • Evolutivo • Iterativo e incremental. Ciclo de vida de software Modelo cascata • Modelo mais antigo e o mais amplamente usado na engenharia de software • modelado em função do ciclo da engenharia convencional. • Também conhecido como modelo clássico ou sequencial linear. Abordagem: • Sistemática; • Sequencial. Ciclo de vida de software Modelo cascata Sendo adequado em situações nas quais os requisitos são bem entendidos, e o gerente do projeto confia na capacidade da equipe de desenvolver utilizando o processo. A ideia da cascata nasceu das etapas que possuem este formato, sendo executadas sequencialmente e podendo retornar a uma etapa anterior. Entretanto, o retorno a uma etapa anterior deve ser muito bem analisado quanto à sua viabilidade financeira e técnica. Ciclo de vida de software Atenção Esse modelo apresenta as seguintes vantagens: • A fase única de requisitos leva à especificação antes do projeto e ao projeto antes da codificação; • O uso de revisões ao fim de cada fase permite o envolvimento do usuário; • O modelo permite que se imponha umcontrole de configuração; • Cada passo serve como uma base aprovada e documentada para o passo seguinte. E possui as seguintes desvantagens: • O fluxo sequencial que o modelo propõe geralmente não é seguido em projetos reais; • Requisitos devem ser estabelecidos de maneira completa, correta e clara no início de um projeto; • Difícil avaliar o progresso verdadeiro do projeto durante as primeiras fases; • Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento; • Ao final do projeto, é necessário um grande esforço de integração e testes. Ciclo de vida de software Modelo V Assim como o modelo cascata, o modelo V é sequencial; isto significa que cada fase precisa ser completada antes que a próxima se inicie. Os testes são muito mais enfatizados nesse modelo do que no modelo cascata. Os procedimentos de teste são desenvolvidos desde cedo no ciclo de vida, antes da implementação. Ciclo de vida de software Modelo V Ciclo de vida de software Modelo incremental Neste modelo, as necessidades do usuário são segmentadas em uma série incremental de produtos. O processo se repete até que um produto completo seja produzido, e a segmentação das necessidades é realizada antes do desenvolvimento da primeira versão. A ideia desse modelo condiz com o propósito de aumentar pouco a pouco o software. O modelo incremental deve ser adotado quando os requisitos são conhecidos no início do desenvolvimento e há a necessidade de entrega de um produto funcional em pouco tempo. Deve notar que, a cada incremento, é produzida uma versão operacional do software. Ciclo de vida de software Modelo incremental Ciclo de vida de software Atenção Esse modelo apresenta as seguintes vantagens: • Menor custo e menos tempo são necessários para a entrega da primeira versão; • Riscos associados ao desenvolvimento de incrementos são menores devido ao seu tamanho reduzido; • Número de mudanças nos requisitos pode diminuir devido ao curto tempo de desenvolvimento da primeira versão. E possui as seguintes desvantagens: • Se os requisitos não são tão estáveis ou completos quanto se esperava, alguns incrementos podem ser retirados de uso e retrabalhados; • O gerenciamento de custo, cronograma e configuração são mais complexos. Modelo evolutivo Neste modelo, as versões parciais são desenvolvidas para atender aos requisitos conhecidos inicialmente. A primeira versão é usada para refinar os requisitos para uma segunda versão e, a partir do conhecimento sobre os requisitos obtido com o uso, continua-se o desenvolvimento, evoluindo o produto. Ciclo de vida de software Modelo evolutivo Esse modelo apresenta as seguintes vantagens: • É adequado quando os requisitos não podem ser completamente especificados no início do desenvolvimento; • O uso do sistema pode aumentar o conhecimento sobre o produto e, consequentemente, melhorar os requisitos. E possui as seguintes desvantagens: • Necessária uma forte gerência de custo, cronograma e configuração; • Usuários podem não entender a natureza da abordagem e se decepcionarem quando os resultados não são satisfatórios. Ciclo de vida de software O fundamento deste modelo é dividir o desenvolvimento do software em pequenos ciclos, considerando um pequeno conjunto de necessidades do cliente final para que estes ciclos sejam executados. Os ciclos dizem respeito a pequenos modelos cascatas que são executados para contemplar as necessidades do usuário. Dessa forma, precisamos dividir as necessidades dos clientes finais em partes e definir um grau de importância para cada uma delas. Ciclo de vida de software Modelo iterativo e incremental Modelos de ciclo de vida mais utilizados Nesta parte do curso, discutiremos mais alguns modelos de ciclo de vida que são muito utilizados no mercado, que são: RAD (Rapid Application Development), prototipação, espiral e RUP (Rational Unified Process). Ciclo de vida de software O modelo RAD (Rapid Application Development) é sequencial linear que enfatiza o desenvolvimento rápido de um software. Essa “alta velocidade” é conseguida através de uma abordagem de construção baseada em várias equipes que trabalham paralelamente enquanto o produto é dividido em módulos. Geralmente, um projeto de software que utiliza RAD tem duração de 60 a 90 dias. Ele pode ser utilizado quando os requisitos são bem definidose estão estabilizados, o escopo do sistema é restrito, e a aplicação pode ser modularizada. Ciclo de vida de software O modelo RAD Atenção Esse modelo apresenta as seguintes vantagens: • O ciclo de desenvolvimento é extremamente curto; • Maior distribuição de tarefas entre as equipes. E possui as seguintes desvantagens: • Requer recursos humanos suficientes para criar um número • adequado de equipes em projetos grandes e escaláveis; • Requer um comprometimento entre desenvolvedores e clientes; • Não é apropriado quando os riscos são grandes; • Não é apropriado quando o sistema precisa interagir com outros sistemas. Ciclo de vida de software O modelo RAD Um protótipo é uma versão preliminar do produto final, o software. É uma técnica que deve ser utilizada para explorar (elicitar) as necessidades do cliente final, principalmente quando eles são vagos ou indefinidos. Os usuários podem fazer experiências com o protótipo, conhecendo mais sobre o software que será disponibilizado futuramente. É uma versão inicial de um software que pode ser utilizado para determinar a viabilidade técnica, de custo e de cronograma de um projeto. Deve haver uma forte interação com o usuário para que as suas necessidades sejam rapidamente projetadas e implementadas na construção e validação do protótipo, de acordo com etapas descritas na figura seguinte. Ciclo de vida de software Prototipação Atenção Ele possui as seguintes vantagens: • Um protótipo deve ser submetido a uma avaliação, geralmente feita pelo cliente; • O fato de o cliente poder interagir com um protótipo ajuda a cristalizar suas necessidades funcionais e de desempenho; • Os desenvolvedores podem implementar os requisitos baseado no feedback do usuário. Ciclo de vida de software Prototipação Atenção E apresenta os seguintes riscos na sua utilização: • Clientes imaginam que a maior parte do trabalho já foi feita; • Protótipo pode crescer de maneira não planejada, tornando-se um incremento funcional; • Protótipo pode ter um desempenho melhor do que um incremento funcional, pois não implementa toda a funcionalidade, causando frustração aos clientes quando o sistema completo é entregue. Ciclo de vida de software Prototipação Modelo espiral Esse modelo possui as melhores características do ciclo de vida clássico e da prototipação, acrescentando um elemento muito importante: a análise de risco. Além disso, assume que o desenvolvimento acontece em ciclos e possui as seguintes fases: planejamento, análise de riscos, engenharia e avaliação. Um software passa repetidamente por essas fases em iterações (chamadas espirais nesse modelo). A cada passagem na espiral, é realizada a análise de risco para avaliar a continuidade ou não do desenvolvimento do software. Ciclo de vida de software Rational Unified Process (RUP) O RUP (Rational Unified Process) é um processo proprietário de engenharia de software desenvolvido pela Rational Software, atualmente subsidiária da IBM, e possui um framework de processo que pode ser adaptado e estendido. Ele usa o paradigma orientado a objetos, juntamente com a notação UML (Unified Modeling Language) para a documentação do software. MODELO DE MATURIDADE DE SOFTWARE Ciclo de vida de software Rational Unified Process (RUP) Esse modelo está organizado em disciplinas, nas quais são distribuídas tarefas e responsabilidades para que sejam gerados produtos de software de cada uma destas tarefas, conhecidas como artefatos de software. O ciclo de vida é dividido em fases sequenciais, as quais, por sua vez, são divididas em iterações, que são planejadas em número, duração e objetivos, como pode ser observado na figura. Ciclo de vida de software Rational Unified Process (RUP) Ciclo de vida de software As etapas do modelo são descritas abaixo: Concepção: Entender os requisitos gerais e determinar o escopo do esforço de desenvolvimento. Elaboração (Inicialização): Planejar as atividades e recursos necessários e especificar as características e projeto da arquitetura. Ciclo de vida de software Rational Unified Process (RUP) Construção: Construir o produto e evoluir a visão, arquitetura e planos até que o material esteja pronto para entrega. Transição: Garantir que o sistema tenha o nível correto de qualidade para atingir os objetivos, além de realizar correções, treinamento de usuários, ajustes e adição de elementos que estavam faltando. Posteriormente, o produto final é produzido e entregue. Ciclo de vida de software Rational Unified Process (RUP) Atenção Esse modelo possui as seguintes vantagens: • Permite e encoraja o feedback do usuário, elicitando os requisitos reais do sistema; • Inconsistências entre requisitos, projeto e implementação podem ser detectados rapidamente; • Divisão da carga de trabalho por todo o ciclo de vida; • Compartilhamento de lições aprendidas, melhorando continuamente o processo; • Evidências concretas do andamento do projeto podem ser oferecidas durante todo o ciclo de vida. Ciclo de vida de software Rational Unified Process (RUP) Exercícios de fixação Questão 1 Fonte: FUNRIO 2013 – MPOG Analista de Tecnologia da Informação Considere o seguinte problema encontrado em projetos de desenvolvimento de software: projetos reais raramente seguem um fluxo sequencial. Apesar de um modelo linear poder acomodar a iteração, ele o faz indiretamente. Como resultado, as modificações podem causar confusão à medida que a equipe de projeto prossegue. Esse é um dos problemas que são algumas vezes encontrados quando é aplicado o modelo de desenvolvimento: a) Em cascata b) Iterativo e incremental c) Iterativo d) Incremental e) Evolutivo MODELO DE MATURIDADE DE SOFTWARE Questão 2 Fonte: FCC 2013 – AL-RN Analista Legislativo – Analista de Sistemas O primeiro modelo de desenvolvimento de software a ser publicado foi derivado de processos mais gerais da engenharia de sistemas. Por causa do encadeamento entre uma fase e outra, esse processo é conhecido como modelo em cascata ou ciclo de vida de software. Dentre seus principais estágios, encontram-se a análise e definição de requisitos, o projeto de sistema e software e: a) Análise de recursos e software b) Desenvolvimento incremental c) Geração de relatórios de teste d) Pesquisa e testes e) Implementação e teste unitário MODELO DE MATURIDADE DE SOFTWARE Questão 3 Fonte: FUMARC 2012 – TJ-MG Oficial Judiciário – Assistente Técnico de Sistemas Em relação aos modelos de processos de software, pode-se dizer que os modelos incremental e evolucionário possuem características iterativas. Assinale a alternativa que melhor descreve um modelo de produção de software iterativo. a) Os incrementos de um software são entregues ao cliente de uma só vez. b) Um modelo de produção de software iterativo é composto pelas fases de análise de requisitos, projeto, implementação, testes (validação), integração e manutenção de software. c) A abordagem iterativa possibilita desenvolver um sistema de software de forma incremental, que permite ao desenvolvedor tirar vantagem daquilo que foi aprendido durante a fase inicial de desenvolvimento de uma versão do sistema. O aprendizado ocorre simultaneamente tanto para o desenvolvedor quanto para o usuário do sistema. d) Os incrementos de um software são entregues ao cliente somente duas vezes. e) Um modelo de produção de software iterativo é composto pelas fases de análise de requisitos, projeto e implementação. Questão 4 Em relação aos ciclos de vida do software, o desenvolvimento de sistemas por meio de ciclo de vida iterativos garante ao sistema: a) Atualização contínua b) Legalidade c) Segurança d) Legibilidade e) Utilização mínima de recursos Questão 5 Fonte: CESPE 2010 – Detran-ES – Analista de Sistemas Quando um aplicativo de software desenvolvido em uma organização atinge, no fim do seu ciclo de vida, a fase denominada aposentadoria, descontinuação ou fim devida, todos os dados por ele manipulados podem ser descartados. f) Verdadeiro g) Falso Questão 6 A prototipação representa uma técnica poderosa para o desenvolvimento de sistemas, mais especificamente do software. Sobre as funções desempenhadas por um protótipo, é correto afirmar que ele: a) Permite avaliar o desempenho geral da equipe de desenvolvimento de software. b) Não permite que sejam realizados testes, visando verificar o funcionamento do sistema final, ainda que sejam avaliações parciais. c) É inteiramente descartado, não sendo aproveitada nenhuma parte do código de software no sistema final entregue ao cliente. d) Não possibilita avaliar a qualidade do software produzido. e) Pode auxiliar na validação de requisitos do sistema, bem como propiciar a inserção de novos requisitos ainda não identificados. Questão 7 Fonte: FCC 2012 – TST – Analista Judiciário – Analista de Sistemas O ciclo de vida de um sistema especifica todas as fases de desenvolvimento, desde sua concepção até o processo de manutenção e declínio. No que diz respeito ao desenvolvimento de software, existem alguns processos conhecidos. Um destes processos, possui característica iterativa e incremental, inicia cada fase do projeto realizando um planejamento prévio, realiza a execução da fase, verifica o progresso e os resultados da fase (riscos, lições aprendidas) e incrementa novos objetivos para a fase seguinte, seguindo para a próxima iteração. O modelo de software em questão é o: a) Espiral b) Cascata c) Prototipação d) RAD e) Evolutivo Questão 8 Observe um modelo de ciclo de vida para desenvolvimento de sistemas. Nessa abordagem, o desenvolvimento do produto de software é dividido em ciclos, sendo identificadas, em cada ciclo, as fases de análise, projeto, implementação e testes. Esse modelo é conhecido como ciclo de vida: a) Por prototipação em cascata b) Por estágios em módulos c) Iterativo e incremental d) Evolutivo e procedural e) Iterativo e evolutivo Questão 9 Fonte: IADES 2010 – CFA Analista de Sistemas Para a engenharia de software, o modelo espiral foi desenvolvido acrescentando-se novos elementos às melhores características de outros modelos. Segundo o modelo espiral, a determinação dos objetivos, alternativas e restrições está relacionada à atividade de: a) Análise de risco b) Planejamento c) Engenharia d) Avaliação feita pelo cliente e) Feedback do cliente Questão 10 No que se refere aos modelos de desenvolvimento e ciclos de vida, julgue a afirmativa que se segue. No modelo iterativo, divide-se o desenvolvimento em iterações. A cada iteração, podem ser acrescentadas novas funcionalidades ao software. Uma iteração parte do estado no qual se encontravam os artefatos ao término da iteração anterior e resulta em um incremento. Uma iteração pode ter disciplinas como captura de requisitos, análise, projeto, implementação e teste. a) Verdadeiro b) Falso Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40
Compartilhar