• Nenhum resultado encontrado

CICLO DE VIDA DE UM SISTEMA Ciclo de vida de software Processo de Software

N/A
N/A
Protected

Academic year: 2022

Share "CICLO DE VIDA DE UM SISTEMA Ciclo de vida de software Processo de Software"

Copied!
39
0
0

Texto

(1)

CICLO DE VIDA DE UM SISTEMA

Ciclo de vida de software Processo de Software

Ciclo de vida de um Sistema de Informação

O que é ciclo de vida ou vida útil?

Entende-se como sendo o tempo em que determinado produto ou objeto está em condições satisfatória de uso ou consumo.

Dependendo do item que estamos falando esse tempo

pode ser medido em números, como dias, horas, anos ou

outros, mas no caso de sistemas de informação ele é

medido por ciclos que podem variar bastante de caso

para caso.

(2)

O ciclo de vida de um sistema de informação é composto por:

Embora não existem medidores precisos para estabelecer em que ponto o sistema se encontra, é possível ter uma boa idéia se analisarmos os fatores:

Criação Evolução Decadência Morte.

Ciclo de vida de um Sistema de Informação

Criação

O sistema é criado com a utilização de um projeto que estabelece os objetivos que o sistema deverá alcançar. Toda a expectativa em relação ao sistema deve ser declarada no projeto. Essa criação envolve todo o processo de análise, refinamento de requisitos, declaração de projeto, documentação, desenvolvimento, testes, implantação e treinamento. É um período longo e trabalhoso.

Criação Evolução Decadência Morte.

(3)

Ciclo de vida de um Sistema de Informação

Evolução

Mudanças nas organizações, no mercado ou ações governamentais forçam os sistemas a evoluírem para atender as novas necessidades das empresas.

A mudança no ciclo de vida dos sistemas de informação de criação para evolução ocorre quando os sistemas começam a receber recursos que não estavam previsto no projeto original.

Criação Evolução Decadência Morte.

Ciclo de vida de um Sistema de Informação

Evolução

Essas mudanças ou evoluções como alguns chamam são benéficas quando bem implementadas e são necessárias em muitos casos para dar um impulso no sistema a fim de adequá-lo a novas realidades que vão surgindo. Novas leis, práticas de consumo, posicionamento da concorrência, entre outros fatores geralmente forçam mudanças nos sistemas a fim de adequá-lo à nova realidade.

Criação Evolução Decadência Morte.

(4)

Decadência

Um sistema de informação nem sempre consegue acompanhar as evoluções tecnológicas, organizacionais ou exigências de governos. Há situações em que se torna muito oneroso realizar adaptações nos sistemas para atender tais necessidades.

Com o tempo o sistema começa entrar em decadência, isto pode ser observado quando as necessidades do mercado começam a distanciar-se dos sistemas de informação.

Criação Evolução Decadência Morte.

Ciclo de vida de um Sistema de Informação

Morte

A morte de um sistema de informação nem sempre é declarada, mas ela ocorre quando o sistema já não atende mais as necessidades da empresa ou dos usuários. Há casos que a empresa mantém o sistema apenas para consulta de dados antigos ou para operações básicas que ainda sobrevivem.

Criação Evolução Decadência Morte.

(5)

Ciclo de vida de um Sistema de Informação

O ciclo de vida de um sistema passa por três estágios que são bastante distintos e determinados pelo analista.

Visão TOP

Concepção.

Estágio inicial que surge na primeira ideia da necessidade do sistema

Desenvolvimento

Engloba desenvolver e implantar o sistema.

Sua vida útil.

Engloba a manutenção do sistema até que a manutenção torne-se menos viável que a implantação de um novo sistema.

Cada uma dessas fases são distintas e permitem um desenvolvimento gradual e coordenado da construção de um sistema.

Ciclo de vida de um Sistema de Informação

(6)

Concepção do Sistema

Essa fase pode ser considerada como o embrião do sistema e requer que a alta administração da empresa esteja empenhada em resolver o problema existente, caso contrário, o nosso sistema não consegue sair do papel.

Nessa fase, o analista faz uma estimativa grosseira de custos, pois, como o processo, está na fase inicial, é impossível provisionar o custo do investimento.

É imprescindível que o analista defina com bastante clareza quais são os principais objetivos a serem atingidos com o seu projeto para que o sistema não pare por aqui.

Ciclo de vida de um SI

Estudo de Viabilidade

Essa fase tem por objetivo mostrar à alta administração da empresa se vale a pena ou não prosseguir o trabalho de solução do problema detectado, significando, portanto, demonstrar sucintamente se é conveniente continuar o projeto.

Trata-se de uma fase em que o analista tem de “vender” a sua ideia à empresa, e por isso a habilidade de tal profissional é de extrema importância. Para a construção de todo e qualquer sistema, a empresa terá de investir e logicamente buscará o retorno do investimento. Estudar a viabilidade significa apresentar alternativas para a empresa tomar importantes decisões.

(7)

Ciclo de vida de um SI

Estudo de Viabilidade

Esse estudo deve ser realizado pelo analista em conjunto com o usuário e a administração da empresa que sem vias de dúvidas, deverão estar emprenhados na solução do problema. A equipe de análise deverá apresentar um relatório detalhado, demonstrando custos e benefícios que suas alternativas trarão à empresa.

Ciclo de vida de um SI

Processo de Análise

Consiste em fazer um levantamento de dados e fatos para descobrir o que realmente precisa ser feito. É o conhecimento do problema pelo analista.

Nesta fase, o usuário vai discutir o seu problema diretamente com o pessoal de análise e ao mesmo tempo fazer uma avaliação do sistema existente.

A partir do momento que o analista conhece o problema do usuário, basta transformar as suas necessidades em especificações técnicas para continuar o seu trabalho.

Requisitos

Modelo lógico do sistema

Diagramação

(8)

Projeto e Projeto Detalhado

Durante a fase do projeto, o analista vai assimilando exatamente o que deve ser feito, começando a sair do lógico para o físico.

Essas alternativas precisam levar em conta, principalmente, os custos e benefícios que serão provocados pelo desenvolvimento e operação do novo sistema.

Ciclo de vida de um SI

Implementação

A fase de implementação é, na prática, a construção física do sistema proposto.

A partir das definições detalhadas dos programas, o programador passará a codificá-lo na linguagem de programação escolhida.

(9)

Ciclo de vida de um SI

Manutenção

A manutenção de um sistema é a operação permanente que consiste na correção de possíveis erros e na melhoria do seu desempenho.

Portanto, manutenção de sistemas significa apoio continuado ao usuário. Um sistema sem manutenção tem vida curta.

TUDO ISSO PARA EVITAR:

(10)

Ciclo de Vida de Desenvolvimento 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 propõe uma estratégia de desenvolvimento que pode ser aplicada a um determinado contexto de projeto de software.

• O processo de software

• Um conjunto estruturado de atividades necessárias para desenvolver um sistema de software.

• Existem vários processos de desenvolvimento de software diferentes mas todos envolvem:

especificação – definição do quê o sistema deve fazer;

projeto e implementação – definição da organização do sistema e implementação do sistema;

validação – checagem de que o sistema faz o que o cliente deseja;

evolução – evolução em resposta a mudanças nas necessidades do cliente.

• Um modelo de processo de desenvolvimento de software é uma representação abstrata de um processo. Ele apresenta uma descrição do processo de uma perspectiva em particular.

Ciclo de Vida de Software

(11)

• Alguns ciclos de vida mais conhecidos são:

 Ciclo de Vida Clássico (Cascata)

 Prototipação

 Modelo Espiral

 Descartável

 Desenvolvimento Iterativo (Iterativo Incremental)

 Evolutivo

 Incremental

Ciclo de Vida de Software

Ciclo de Vida de Software

Diferenças 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 documentação e no Modelo Espiral o enfoque é dado nos riscos;

Estratégia de desenvolvimento.

Define a disposição das atividades que deverão ser executadas para atingir um objetivo em um contexto de projeto de desenvolvimento de software. A disposição das atividades pode ser, por exemplo, linear (uma atividade após a outra. – Ex. Cascata) ou um conjunto de atividades é repetida várias vezes até atingir o seu objetivo) como nos modelos incrementais.

Outras estratégias podem envolver a disposição das atividades em paralelo, a prototipação ou reunir as características de modelos de ciclo de vida lineares e iterativos.

(12)

Para escolha de um Ciclo de Vida de Software:

Natureza do projeto e da aplicação

Métodos e ferramentas a serem usados ou disponíveis

Controles e produtos que precisam ser entregues

Prazos e recursos disponíveis

Ciclo de Vida de Software

Modelo Cascata

(13)

Ciclo de Vida de Software

Modelo Cascata

Ciclo de Vida Clássico (Cascata)

 Modelo mais antigo e o mais amplamente usado da engenharia de software.

 Modelado em função do ciclo da engenharia convencional.

 Requer uma abordagem sistemática, sequencial ao desenvolvimento de software.

Ciclo de Vida de Software

(14)

Modelo Cascata

A proposta do modelo Cascata consiste na execução das atividades de desenvolvimento de software em uma sequência ordenada de forma linear.

Desta forma, a passagem para determinada atividade exige como critério a finalização da atividade imediatamente anterior.

Fases do modelo cascata

• Existem fases identificadas e separadas no modelo cascata:

 Análise e definição de requisitos

 Projeto de sistema e software

 Implementação e teste de unidade

 Integração e teste de sistema

 Operação e manutenção

• O principal inconveniente do modelo cascata é a dificuldade de acomodação de mudanças depois que o processo já foi iniciado. Em princípio, uma fase precisa ser completada antes de se mover para a próxima fase.

Ciclo de Vida de Software

(15)

Problemas do modelo cascata

• Divisão inflexível do projeto em estágios distintos torna difícil responder às mudanças nos requisitos do cliente.

 Por isso esse modelo só é apropriado quando os requisitos são bem entendidos e as mudanças durante o processo de projeto serão limitadas.

 Poucos sistemas de negócio possuem requisitos estáveis.

• O modelo cascata é mais usado em projetos de engenharia de grandes sistemas onde o sistema é desenvolvido em vários locais.

 Nessas circunstâncias, a natureza do modelo cascata dirigida a planos ajuda a coordenar o trabalho.

Ciclo de Vida de Software

Problemas com Modelo Cascata

O mais antigo e amplamente usado.

Projetos reais raramente seguem o fluxo seqüencial que ele propõe. Ocorrem iterações que trazem problemas na aplicação do modelo.

É difícil para o cliente declarar todas as exigências explicitamente. É difícil acomodar as incertezas naturais que existem no começo de muitos projetos.

Ciclo de Vida de Software

(16)

Problemas com Modelo Cascata

O cliente deve ter paciência. Uma versão do software só estará disponível em um ponto tardio do cronograma. Um erro grosseiro, pode ser desastroso.

Desenvolvedores Ociosos.

Só é apropriado quando os requisitos são bem conhecidos.

Modelo - V

Na maioria das vezes os testes são realizados após a codificação, esta fase é considerada como crítica, pois muitas vezes o projeto está com entrega atrasada e orçamento ‘estourado’.

O Modelo-V preconiza que as atividades de testes devem iniciar desde o início do ciclo de vida do desenvolvimento do software começando com as revisões dos requisitos, inspeções/revisões de código até os testes de software.

Ciclo de Vida de Software

(17)

Modelo - V

Ciclo de Vida de Software

Modelo – V

A utilização deste modelo minimiza os custos da não qualidade do software e segundo a regra 10 de Myers quanto mais cedo um defeito for encontrado, menor será o custo para sua correção. Além disso:

- Os testes unitários podem remover entre 30% e 50% dos defeitos dos programas.

- Os testes de sistemas podem remover entre 30% e 50% dos defeitos remanescentes.

- Revisões de código podem reduzir entre 20 a 30% desses defeitos.

Ciclo de Vida de Software

(18)

Prototipação

Organizações de desenvolvimento de software utilizam protótipos na construção de software com diferentes propósitos:

O processo de prototipação consiste basicamente em diversos ciclos iterativos.

Um protótipo é construído a partir de requisitos iniciais. É realizada uma avaliação crítica do protótipo a qual considera os requisitos iniciais e requisitos que não foram mencionados inicialmente. Caso o protótipo não atenda aos requisitos pretendidos, novas iterações são realizadas produzindo novos protótipos. As iterações são finalizadas quando os requisitos forem atendidos.

Ciclo de Vida de Software

• Prototipação Inicio

Fim

Coleta e

Refinamento dos requisitos

Projeto Rápido

Construção do Protótipo Avaliação do

Protótipo pelo Cliente Refinamento

do Protótipo Engenharia do Produto

Decide

(19)

Ciclo de Vida de Software

• Prototipação

Existem diversos modelos de processo de desenvolvimento de software que empregam a prototipação em seus processos:

Prototipação Rápida Descartável,

Prototipação Evolutiva

Iterativo Incremental,

Espiral.

Ciclo de Vida de Software

Prototipação

Problemas:

O cliente muitas vezes não aceita mais uma iteração, aquela versão mesmo incompleta já serve.

Não há necessidade de desenvolver uma versão final, modifica-se o protótipo.

desenvolvedor freqüentemente faz uma implementação comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo.

Solução:

Definir as regras do jogo logo no começo, o cliente deve

concordar que o protótipo seja construído para servir como

um mecanismo a fim de definir os requisitos

(20)

Prototipação de software

• Um protótipo é uma versão inicial de um sistema usada para demonstrar conceitos e testar opções de projeto.

• Um protótipo pode ser usado:

 No processo de engenharia de requisitos para ajudar na elicitação e validação de requisitos;

 Nos processos de projeto para explorar opções e desenvolver um projeto de interface de usuário;

 No processo de testes para executar testes fim-a-fim.

Benefícios da prototipação

• Melhoria do uso do software.

• Maior proximidade com as necessidades do usuário.

• Melhorias na qualidade do projeto.

• Maior manutenibilidade.

• Reduzir esforços de desenvolvimento.

Ciclo de Vida de Software

(21)

Desenvolvimento de protótipos

• Pode ser baseado em linguagens ou ferramentas de prototipagem rápida.

• Pode deixar a funcionalidade de fora do teste.

 A prototipação deve focar em áreas do produto que não são bem entendidas;

 A checagem de erros e recuperação podem não estar incluídas no protótipo;

 O foco deve ser em requisitos funcionais ao invés de não funcionais como por exemplo, a confiabilidade e a segurança.

Ciclo de Vida de Software

Descarte de protótipos

• Os protótipos devem ser descartados depois do desenvolvimento, pois não são uma boa base para um sistema em produção:

 Pode ser impossível ajustar o sistema para alcançar requisitos não funcionais;

 Geralmente os protótipos não possuem documentação;

 Geralmente a estrutura do protótipo é degradada por mudanças rápidas;

 Provavelmente o protótipo não irá alcançar os padrões normais de qualidade organizacional.

Ciclo de Vida de Software

(22)

Entrega incremental

• Ao invés de entregar o sistema em uma única entrega, o desenvolvimento e a entrega são distribuídos em incrementos, nos quais cada incremento entrega parte da funcionalidade necessária.

• Os requisitos do usuário são priorizados e os requisitos de mais alta prioridade são incluídos nos primeiros incrementos.

• Assim que o desenvolvimento de um incremento é iniciado os requisitos são congelados, mas os requisitos dos incrementos posteriores podem continuar a evoluir.

Desenvolvimento e entrega incremental

• Desenvolvimento incremental

 Desenvolve o sistema em incrementos e avalia cada incremento antes de proceder com o desenvolvimento do próximo incremento;

 Abordagem normalmente usada em métodos ágeis;

 Avaliação feita por representantes do usuário/cliente.

• Entrega incremental

 Implanta um incremento para uso do usuário-final;

 Avaliação mais realística sobre o uso prático do software;

 Difícil de implementar para sistemas substitutos devido aos incrementos possuírem menos funções do que o sistema que está sendo substituído.

Ciclo de Vida de Software

(23)

Ciclo de Vida de Software

• Prototipação - Descartável

Ciclo de Vida de Software

• Prototipação - Evolutivo

(24)

Incremental

Processo incremental

• O processo incremental corresponde à ideia de “ aumentar (alargar) pouco-a-pouco ” o âmbito do sistema.

• Ex.: Construção de uma condomínio que foi construído por sucessivos incrementos a partir de uma primeira casa com apenas duas divisões.

Ciclo de Vida de Software

(25)

Benefícios do desenvolvimento incremental

• O custo para acomodar mudanças nos requisitos do cliente é reduzido.

 A quantidade de análise e documentação que precisa ser feita é bem menor do que o necessária no modelo cascata.

• É mais fácil obter feedback do cliente sobre o trabalho de desenvolvimento que tem sido feito.

 Os clientes podem comentar demonstrações do software e ver quanto foi implementado.

• Possibilidade de mais rapidez na entrega e implantação de software útil para o cliente.

 Os clientes podem usar e obter ganhos do software mais cedo do que é possível no processo cascata.

Ciclo de Vida de Software

Problemas do desenvolvimento incremental

• O processo não é visível.

 Gerentes precisam de entregas regulares para medir o progresso.

 Se os sistemas são desenvolvidos de forma rápida, não é viável do ponto de vista do custo produzir documentação para refletir todas as versões do sistema.

• A estrutura do sistema tende a degradar conforme novos incrementos são adicionados.

 A menos que tempo e dinheiro sejam gastos na reconstrução para melhorar o software, as mudanças regulares tendem a corromper a estrutura do sistema. A incorporação posterior de mudanças no software se torna progressivamente mais difícil e cara.

Ciclo de Vida de Software

(26)

Vantagens da entrega incremental

• Os valores podem ser entregues ao cliente junto com cada incremento, e funções do sistema ficam disponíveis mais rapidamente.

• Primeiros incrementos agem como protótipos para ajudar a deduzir requisitos para incrementos posteriores.

• Menor risco de falha geral do projeto.

• Os serviços mais prioritários do sistema tendem a serem mais testados.

Problemas da entrega incremental

• A maioria dos sistemas requer um conjunto de funções básicas que são usadas por diferentes partes do sistema.

 Como os requisitos não são definidos em detalhes até que um incremento seja implementado, pode ser difícil identificar funções comuns que são necessárias a todos os incrementos.

• A essência dos processos iterativos é que a especificação seja desenvolvida em conjunto com o software.

 No entanto, essa pode entrar em conflito com o modelo de aquisição de muitas organizações, nos quais a especificação completa do sistema é parte do contrato de desenvolvimento do sistema.

Ciclo de Vida de Software

(27)

Processo Iterativo

• O Processo Iterativo corresponde à ideia de “ melhorar (ou refinar) pouco - a - pouco ” o sistema (iterações).

• Em cada iteração a equipe de desenvolvimento identifica e especifica os requisitos relevantes, cria um projeto utilizando a arquitetura escolhida como guia, implementa o projeto em componentes e verifica se esses componentes satisfazem os requisitos.

• Se uma iteração atinge os seus objetivos, o desenvolvimento prossegue com a próxima iteração, caso contrário a equipa deve rever as suas decisões e tentar uma nova abordagem.

Ciclo de Vida de Software

Processo Iterativo

• O âmbito do sistema não é alterado, mas os seus detalhes vão aumentando em iterações sucessivas. Um excelente exemplo de aplicação do processo iterativo encontra-se no trabalho artístico, em que o resultado final de uma obra sofre inúmeras iterações.

Ciclo de Vida de Software

(28)

Vantagens do Processo Iterativo

• Baseia-se fortemente na participação e uma boa comunicação entre desenvolvedores e usuários.

• A cada ciclo do sistema os usuários e cliente poderão utilizar o sistema diretamente, eles são os "testadores" no processo de desenvolvimento e eles estarão interagindo com o sistema durante o desenvolvimento;

• Os riscos podem ser melhor administrados por pequenos pedaços do sistema a serem desenvolvidos em pequenos espaços de tempo;

• Ao fim de cada iteração pode-se ter um feedback para ter noção de como está o projeto, mesmo se não estiver de acordo ainda há tempo para mudanças, com o modelo Cascata isso não é possível;

• Alterações nos requisitos podem ser rapidamente incorporada no processo de desenvolvimento.

Desvantagens do Processo Iterativo

• Durante o processo de desenvolvimento necessita-se adaptar e refinar o sistema, com isso pode ser que no final saia totalmente diferente da ideia original;

• Pode acontecer da continuação do sistema e a aparição de novos requisitos, esse sistema nunca irá terminar. Isso é chamado de aumento de escopo;

• Gerentes que estão acostumados com a forma linear do desenvolvimento de um software pode ter alguns problemas na hora de ir para uma forma mais flexível;

• Inexperiência com a forma de trabalhar do modelo Iterativo pode levar a problemas posteriores, por isso é necessário certo conhecimento para começar a usar esse modelo;

Ciclo de Vida de Software

(29)

Ciclo de Vida de Software

• Iterativo e Incremental.

Ciclo de Vida de Software

• Iterativo e Incremental.

O ciclo de vida iterativo e incremental pode ser visto como uma generalização da abordagem em cascata: o software é desenvolvimento em incrementos e cada incremento é desenvolvido em cascata

A abordagem incremental e iterativa somente é possível se existir um mecanismo para dividir os requisitos do sistema em partes, para que cada parte seja alocada a um ciclo de desenvolvimento. Essa alocação é realizada em função do grau de importância

(30)

Vantagens Iterativo e Incremental.

Redução dos riscos envolvendo custos a um único incremento. Se os desenvolvedores precisarem repetir a iteração, a organização perde somente o esforço mal direcionado de uma iteração, não o valor de um produto inteiro.

Redução do risco de lançar o projeto no mercado fora da data planejada.

Identificando os riscos numa fase inicial o esforço despendido para gerenciá- los ocorre cedo, quando as pessoas estão sob menos pressão do que numa fase final de projeto.

Aceleração do tempo de desenvolvimento do projeto como um todo, porque os desenvolvedores trabalham de maneira mais eficiente quando buscam resultados de escopo pequeno e claro.

Reconhecimento de uma realidade freqüentemente ignorada: as necessidades dos usuários e os requisitos correspondentes não podem ser totalmente definidos no início do processo. Eles são tipicamente refinados em sucessivas iterações. Este modelo de operação facilita a adaptação a mudanças de requisitos.

Ciclo de Vida de Software

Desvantagens Iterativo e Incremental.

Dificuldade de gerenciamento. Isso ocorre porque as fases de do ciclo podem estar ocorrendo de forma simultânea.

O usuário pode se entusiasmar excessivamente com a primeira versão do sistema e pensar que tal versão já corresponde ao sistema como um todo.

Como todo modelo esta sujeito a riscos de projeto:

O projeto pode não satisfazer aos requisitos do usuário.

A verba do projeto pode acabar.

O sistema de software pode não ser adaptável, manutenível ou extensível.

O sistema de software pode ser entregue ao usuário tarde demais.

(31)

Ciclo de Vida de Software

• Iterativo e Incremental.

Ex.: RUP – Rational Unified Process

Ciclo de Vida de Software

• Espiral

O modelo espiral possui uma abordagem mais realista para desenvolvimento de software em grande escala, 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.

Este tipo de modelo exige considerável experiência na

determinação de riscos e depende dessa experiência

para ter sucesso, pode ser difícil convencer os clientes

que uma abordagem evolutiva é controlável.

(32)

• Espiral

Fornece o potencial para desenvolvimento rápido de versões incrementais do software.

Nas primeiras iterações são desenvolvido versões que podem ser protótipos.

Nas iterações mais adiantadas são produzido versões incrementais mais completas e melhoradas.

Ciclo de Vida de Software

• Espiral

decisão de continuar ou não

na direção de um sistema concluído avaliação do

cliente engenharia

análise dos riscos planejamento

(33)

Ciclo de Vida de Software

• Espiral

Vantagens do Modelo Espiral

O 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.

Ciclo de Vida de Software

(34)

Desvantagens do Modelo Espiral

Pode ser difícil convencer grandes clientes ( particularmente 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 fia-se nessa experiência para o sucesso. Se um grande risco não for descoberto, poderão ocorrer problemas.

É 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 algumas facetas do sistema a desenvolver.

Desenvolvimento rápido de software

• Atualmente, a entrega e o desenvolvimento rápidos têm sido geralmente, o requisito mais importante nos sistemas de software:

 Os negócios operam com requisitos que mudam rapidamente e é praticamente impossível produzir um conjunto estável de requisitos de software.

 O software precisa evoluir rapidamente para refletir as necessidades de negócio em constante mudança.

Ciclo de Vida de Software

(35)

Desenvolvimento rápido de software

• Desenvolvimento rápido de software

 A especificação, o projeto e a implementação são intercaladas.

 O sistema desenvolvido como uma série de versões, com os stakeholders envolvidos na avaliação das versões.

 Geralmente as interfaces de usuário são desenvolvidas usando uma IDE e um conjunto de ferramentas gráficas.

Ciclo de Vida de Software

Métodos ágeis

• A insatisfação com o overhead que envolve os métodos de projeto de software dos anos de 1980 e 1990 levou a criação de métodos ágeis. Esses métodos:

 Têm foco no código ao invés de no projeto.

 São baseados em uma abordagem iterativa de desenvolvimento de software.

 São planejados para entregar rapidamente o software em funcionamento e evoluí-lo rapidamente para alcançar os requisitos em constante mudança.

• O objetivo dos métodos ágeis é reduzir o overhead nos processos de software (ex. limitando a documentação) e permitir uma resposta rápida aos requisitos

Ciclo de Vida de Software

(36)

Manifesto ágil

• Estamos descobrindo melhores formas de desenvolver softwares e ajudar outros a fazê-lo também. Através desse trabalho, valorizamos mais:

 Indivíduos e interações, ao invés de processos e ferramentas.

 Softwares que já funcionam ao invés de documentação abrangente.

 Colaboração do cliente ao invés de negociação contratual.

 Resposta a mudanças ao invés de seguir um plano.

• O que significa que existe valor nos itens a direita, mas que valorizamos mais os itens a esquerda.

Os princípios dos métodos ágeis

Ciclo de Vida de Software

(37)

Aplicabilidade dos métodos ágeis

• Desenvolvimento de produto, quando a empresa de software está desenvolvendo um produto pequeno ou médio para venda.

• Desenvolvimento de sistema personalizado dentro de uma organização, quando existe um compromisso claro do cliente em se envolver no processo de desenvolvimento e quando não existem muitas regras e regulamentos externos que afetam o software.

• Devido ao foco em equipes pequenas e fortemente integradas, existem problemas na escalabilidade de metodos ágeis em sistemas grandes.

Ciclo de Vida de Software

Problemas com métodos ágeis

• Pode ser difícil manter o interesse dos clientes que estão envolvidos no processo.

• Membros da equipe podem não ser adequados ao envolvimento intenso que caracteriza os métodos ágeis.

• Priorizar mudanças pode ser difícil onde existem múltiplos stakeholders.

• Manter a simplicidade requer trabalho extra.

• Os contratos podem ser um problema assim como em outras abordagens que

Ciclo de Vida de Software

(38)

Seleção de modelos de ciclo de vida

Qual o nível de compreensão do usuário e desenvolvedores em relação aos requisitos no início do projeto? É provável que a compreensão mude significativamente durante o desenvolvimento do projeto?

Qual o nível de compreensão dos desenvolvedores em relação a arquitetura do sistema? É provável que mudanças na arquitetura do sistema ocorram no meio do caminho?

Qual nível de confiança é necessário?

O quanto é necessário planejar e projetar durante o projeto prevendo mudanças em versões futuras?

Qual o nível de riscos implícitos no projeto?

Pode ser limitado em um cronograma?

É necessário habilidade para realizar correções no meio do projeto?

É necessário mostrar ao cliente o progresso durante o projeto?

É necessário demonstrar ao usuário aspetos gerenciais durante o projeto?

Ciclo de Vida de Software

Seleção de modelos de ciclo de vida

(39)

Ciclo de Vida de Software

Exercício 01

Q01 - Seleção de modelos de ciclo de vida

Pesquise sobre os processos e com base no questionário responder as perguntas do mesmo, tabular as respostas afim de identificar qual o processo que mais se adequa ao seu projeto.

____________________________________________________________

Ciclo de Vida de Software

Exercício 01

Q02- Temas Complementares / para pesquisa - Vantagens e Desvantagens

1. Modelo Constrói e Conserta / Caótico / Código Macarrone 2. RUP(Rational Unified Process)

3. Open UP

4. RAD (Rapid Application Development)

5. DBC - Desenvolvimento Baseado em Componentes 6. XP (Extreme Programming)

7. Programação em Pares

8. TDD

9. FDD

10. Metodologia Agile Crystal 11. Scrum

Referências

Documentos relacionados

No entanto, a disciplina ou indisciplina é um problema social que se torna um desafio diário para os envolvidos no âmbito escolar, pois alguns comportamentos não têm normas ou

• Gerar nos alunos de Análise e desenvolvimento de software a capacidade de analisa, documentar e especificar sistemas computacionais de informação.. Estes devem fazer uso

Faial, que parecia mesmo um lobo, abriu e fechou a boca várias vezes, mas não uivou (19).. No entanto, era evidente (20) que os cães também se

A análise mostrou a oportunidade de (i) adoção de uma estratégia de planejamento que reflita um modelo sustentável de desenvolvimento que inclua decisões sobre o futuro da Amazônia

The analysis found that there is an opportunity to (i) enact a planning strategy that reflects a sustainable development model and includes decisions about the future of the Amazon

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

A tabela 25 apresenta os resultados brutos desta avaliação em relação à característica busca e a tabela 26 exibe o resultado ponderado para esta característica.. A tabela 27