Processo de Desenvolvimento de
Software
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL
Curso de Sistemas de Informação
Dourados– MS - 03/02/15
1
Ementa
• Introdução
• Fases do desenvolvimento de software: • Análise • Projeto • Implementação • Testes • Implantação • Manutenção
• Modelos de Desenvolvimento de Software • Metodologias ágeis: SCRUM e XP
• Conceitos introdutórios de O.O. • Modelagem de Sistemas
• DFD
• UML: Diagramas de classe, objeto, atividades,
sequências, estados, casos de uso. Testes de Software
Bibliografia
- SOMMERVILLE, Engenharia de Software, 8. ed. São Paulo: Pearson, 2007.
- PRESSMAN, R. Engenharia de Software. São Paulo: Makron
Books, 1995.
- YOURDON, E. Análise Estruturada Moderna. Rio de Janeiro: Ed.
Campus, 1988
Bibliografia Complementar:
- BEZERRA, E. Princípios de Análise e Projetos de Sistemas com
UML. São Paulo: Campus, 2006.
- MOLINARI, L. Testes de Software. São Paulo: Editora Érica,
2003.
- RUMBAUGH, J. et al. Modelagem e Projetos Baseados em
Introdução
• A Engenharia de Software é um ramo da engenharia cujo foco é
o desenvolvimento dentro de custos adequados de sistemas de
software de alta qualidade;
• O conceito de Engenharia de Software foi inicialmente proposto
em 1968, em uma conferencia organizada para discutir o que foi então chamado “crise de software”. ;
Introdução – O que é um Software?
• Muitas pessoas associam software aos programas de
computador;
• Na verdade, essa é uma visão muito restritiva;
• Software não é apenas um programa, mas também todos os
dados de documentação e configuração associados, necessários para que o programa opere corretamente;
Introdução – O que é um Software?
• Os Engenheiros de Software estão envolvidos como
desenvolvimento de produtos de software.
• Existem 2 tipos fundamentais de produtos de software:
• Produtos genéricos: sistemas do tipo stand-alone, produzidos por
uma organização de desenvolvimento e vendidos no mercado para qualquer cliente disposto a comprá-los;
• Produtos sob encomenda (ou personalizados): sistemas
encomendados por um determinado cliente. O software é desenvolvido especialmente para aquele cliente.
Introdução – O que é Engenharia de
Software?
• A Engenharia de Software é uma disciplina da engenharia
relacionada com todos os aspectos da produção de software.
• Nesta definição, há duas fases importantes:
• Disciplina de Engenharia: os engenheiros fazem as coisas
funcionarem. Aplicam teorias, métodos e ferramentas onde for apropriado, mas eles os usam de forma seletiva e sempre procuram descobrir soluções para os problemas;
• Todos os aspectos da produção de software: a engenharia de
software não está relacionada apenas com os processos técnicos de desenvolvimento de software, mas também com atividades como o gerenciamento de projeto e desenvolvimento de ferramentas,
Fases de Desenvolvimento de um
Software
Fases de Desenvolvimento de um Software
• Cada programa tem suas fases de desenvolvimento;
• Não importa quão grande ou pequeno o programa é, ou
quantas pessoas estão trabalhando no projeto - todos os programas de percorrer os mesmos passos:
• Análise; • Projeto; • Implementação; • Testes; • Implantação; • Manutenção. 9
Fases de Desenvolvimento de um Software
•Análise;
•Projeto;
•Implementação;
•Testes;
•Implantação;
•Manutenção.
Fases de Desenvolvimento - Análise
• Nesta fase, os conceitos iniciais para a construção de um
software será levantado.
• As principais fases desta etapa são:
• Criar relatório inicial de investigação;
• Levantar requisitos funcionais e não funcionais; • Construir glossário (ao longo da fase).
Fases de Desenvolvimento - Análise
• Relatório Inicial:
• O relatório inicial de investigação conterá as informações
básicas sobre o solicitante do sistema;
• Também conterá uma visão geral do ambiente (domínio) onde
o sistema será futuramente implantado;
Fases de Desenvolvimento - Análise
•
Definição de Requisitos:
●
Um requisito descreve uma condição ou capacidade que
o sistema deve estar em conformidade [Unified
Process];
●
Pode ser derivado das necessidades dos usuários, ou
estabelecido em um contrato, padrão, especificação ou
outro documento imposto formalmente [IEEE];
Fases de Desenvolvimento - Análise
• Detalhamento do Levantamento de Requisitos:
Entendimento do que o usuário deseja;
O resultado é uma promessa para o cliente;
Fases de Desenvolvimento - Análise
• Levantamento de Requisitos:
• O principal objetivo desta fase é identificar, coletar e detalhar
os requisitos de software;
• Principais atividades:
• Identificar e aprovar o fornecedor de requisitos;
• Identificar e detalhar os Requisitos do Cliente – RC, Requisitos
Funcionais – RF e Não Funcionais – RNF;
• Manter comunicação contínua com o cliente;
• Validar internamente e externamente (com o cliente) os requisitos.
• Saídas:
• Documento de requisitos ou Documento de Visão ou Documentos
Fases de Desenvolvimento - Análise
• Deve-se levantar os requisitos não funcionais que deve
abranger:
• Facilidade de uso necessária; • Quem utilizará o produto;
• Hardware e software alvo para o produto; • Qualidade/robustez;
• Desempenho; • Segurança;
• Compatibilidade com outros produtos/versões e necessidades de
migração;
• Necessidades de internacionalização do produto; • Suporte;
• Preço da solução; • Aspectos legais;
• Integração com outros produtos; • etc.
Fases de Desenvolvimento - Análise
• Algumas formas de levantamento de Requisitos:
● Entrevistas;
● Análise de Documentos; ● Questionários.
Fases de Desenvolvimento - Análise
• Exemplo de Descrição de Requisitos:
Fases de Desenvolvimento - Análise
Fases de Desenvolvimento - Análise
• Exemplo de Descrição de Requisitos:
Fases de Desenvolvimento - Análise
• Exemplo de Descrição de Requisitos:
Fases de Desenvolvimento - Análise
• Detalhamento do Levantamento de Requisitos:
• Os Requisitos Funcionais de Sistema indicam ações e por isso
devem ser identificados no infinitivo:
• Manter, cadastrar ou inserir, cancelar, alterar, remover, sacar, gerar
relatório de controle de caixa, etc.
Fases de Desenvolvimento - Análise
• Documento de Requisitos:
• O documento de requisitos é a documentação oficial do que é
requerido dos desenvolvedores do sistema [SWEBOK];
• É refinado na medida que o desenvolvimento evolui:
● Inicialmente: deve definir O QUE o sistema deve fazer e não COMO; ● Posteriormente: pode trazer detalhes do COMO deve ser
implementado.
• É usado em todo o processo de desenvolvimento de software para
Fases de Desenvolvimento – modelo de Glossário
Fases de Desenvolvimento – modelo de Glossário
Atividades do Processo
Atividades do Processo – Engenharia de Requisitos
•
É o processo para compreender e definir quais serviços
são necessários e identificar as restrições de operação e
de desenvolvimento do sistema;
•
É um estágio particularmente crítico do processo de
software, pois os erros nesse estágio conduzem
inevitavelmente a problemas posteriores no projeto e
na implementação do sistema.
Atividades do Processo – Engenharia de Requisitos
Atividades do Processo – Engenharia de Requisitos
• Esse processo leva à produção de um documento de requisitos , que é a especificação do sistema;
• Os requisitos são geralmente apresentados em dois níveis de detalhes neste documento;
• Os usuários finais precisam de uma declaração de requisitos de alto nível, e os projetistas de sistema precisam de uma especificação de sistema mais detalhada.
Fases de Desenvolvimento de um Software
•Análise;
•Projeto;
•Implementação;
•Testes;
•Implantação;
•Manutenção.
31Fases de Desenvolvimento - Projeto
• Nesta fase faz-se a tradução dos requisitos do software para
um conjunto de representações gráficas que podem ser avaliadas quanto à qualidade, antes que a codificação se inicie;
• Se concentra em 4 atributos do programa:
• Estrutura de Dados;
• Arquitetura de Software; • Detalhes Procedimentais; • Caracterização de Interfaces.
Fases de Desenvolvimento - Projeto
Fases de Desenvolvimento - Projeto
Fases de Desenvolvimento - Projeto
Fases de Desenvolvimento - Projeto
•
Fases de Desenvolvimento - Projeto
Fases de Desenvolvimento - Projeto
•
Fases de Desenvolvimento - Projeto
Fases de Desenvolvimento - Projeto
•
Fases de Desenvolvimento - Projeto
Fases de Desenvolvimento - Projeto
•
Fases de Desenvolvimento - Projeto
Fases de Desenvolvimento de um Software
•Análise;
•Projeto;
•Implementação;
•Testes;
•Implantação;
•Manutenção.
45Fases de Desenvolvimento - Implementação
• Esta fase faz a tradução das representações gráficas do projeto
para uma linguagem “artificial” resultando em instruções executáveis pelo computador;
• Saídas:
• Código fonte, scripts de banco de dados, documentos de testes,
Fases de Desenvolvimento - Implementação
• No início desse fluxo, os desenvolvedores poderão buscar
componentes (funções) que foram utilizados em outro sistema;
• Ainda na fase de concepção, pode-se ter um protótipo de
funcionalidade como um produto final em primeira instância;
• No decorrer deste fluxo, procura-se ter um sistema executável, além
da implementação baseada nos artefatos criados no modelo de análise e projeto;
• O conceito de componentização deve ser sempre levado em
consideração, com o intuito de que estes segmentos de códigos possam ser aproveitados mais tarde por outros sistemas;
Fases de Desenvolvimento - Implementação
• Algumas questões importantes quanto à implementação de
software:
● Tratamento padronizado das mensagens geradas pelos
elementos da arquitetura;
● Mensagens armazenadas fora do código, em repositório de
mensagens;
● Problema de documentação (interface e códigos
desenvolvidos);
Fases de Desenvolvimento de um Software
•Análise;
•Projeto;
•Implementação;
•Testes;
•Implantação;
•Manutenção.
49Fases de Desenvolvimento - Testes
• Diversas atividades de testes são executadas a fim de se validar
o produto de software, testando cada funcionalidade de cada módulo, buscando, levando em consideração a especificação feita na fase de projeto;
• O principal resultado é o relatório de testes, que contém as
informações relevantes sobre erros encontrados no sistema, e seu comportamento em vários aspectos;
• Ao final dessa atividade, os diversos módulos do sistema são
Fases de Desenvolvimento de um Software
•Análise;
•Projeto;
•Implementação;
•Testes;
•Implantação;
•Manutenção.
51Fases de Desenvolvimento - Implantação
• A implantação compreende a instalação do software no
ambiente do usuário;
• Inclui os manuais do sistema, importação dos dados para o
novo sistema e treinamento dos usuários para o uso correto e adequado do sistema;
• Em alguns casos quando da existência de um software anterior,
também é realizada a migração de dados anteriores desse
Fases de Desenvolvimento - Implantação
• A implantação é o processo pelo qual o antigo sistema é desligado e o
novo é ativado. Pode incluir três abordagens de transição:
• Direta: o novo sistema substitui imediatamente o sistema antigo; • Conversão paralela: ambos os sistemas, o antigos e o novo são
operados por um ou dois meses até que seja evidente que não existam erros no sistema novo;
• Conversão escalonada: o novo sistema é instalado em uma parte
da organização como um ensaio inicial e depois, gradualmente, instalado em outros.
• Um dos aspectos mais importantes de conversão é o
desenvolvimento de um plano de treinamento para ensinar os usuários utilizarem o novo sistema e ajudar a gerenciar as mudanças provocadas pelo novo sistema.
Fases de Desenvolvimento de um Software
•Análise;
•Projeto;
•Implementação;
•Testes;
•Implantação;
•Manutenção.
Fases de Desenvolvimento - Manutenção
• Provavelmente o software deverá sofrer mudanças depois que
for entregue ao cliente
• Causas das mudanças:
• Erros, adaptação do software para acomodar mudanças em seu
ambiente externo e exigência do cliente para acréscimos funcionais e de desempenho.
• Todo bom software evoluí.
Fases de Desenvolvimento - Manutenção
• A equipe de analistas estabelece um plano de suporte ao
sistema;
• Este plano geralmente inclui uma revisão formal ou informal de
pós-implementação;
• Inclui também uma maneira sistemática para identificar as
Fases de Desenvolvimento - Manutenção
Modelos de Desenvolvimento de Software
Modelos de Desenvolvimento de um Software
• Hoje em dia nos deparamos com várias metodologias para o
desenvolvimento de um projeto;
• Estas metodologias formam o que chamamos de “modelos de
desenvolvimento de software”;
• É necessário o conhecimento deles para sabermos qual modelo
e em que situação ele poderá ser utilizado;
• Dentre vários modelos, os principais são:
• Modelo em Cascata;
• Modelo Baseado em Componentes; • Entrega Incremental;
Modelos de Desenvolvimento de um Software
• Modelo em Cascata;
• Modelo Baseado em Componentes.
• Entrega Incremental;
• Modelo em Espiral.
Modelos de Desenvolvimento - Cascata
• O modelo cascata (waterfall) tornou-se conhecido na década
de 70 e é referenciado na maioria dos livros de engenharia de
software ou manuais de padrões de software;
• Nele as atividades do processo de desenvolvimento são
estruturadas numa cascata onde a saída de uma é a entrada para a próxima (etapas bem definidas);
• As suas principais são:
• Análise e Definição de Requisitos; • Projeto de sistema de software; • Implementação;
• Teste;
Modelos de Desenvolvimento - Cascata
Modelos de Desenvolvimento - Cascata
• Análise e definição dos requisitos :
• Nesta etapa, estabelecem-se os requisitos do produto que se
deseja desenvolver, o que consiste usualmente nos serviços que se devem fornecer, limitações e objetivos do software;
• 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.
Modelos de Desenvolvimento - Cascata
• Projeto do sistema 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 procedurais 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 de codificação);
• Da mesma maneira que a análise dos requisitos, o projeto é
documentado e transforma-se em uma parte do software.
Dourados – MS - 01/09/14
Modelos de Desenvolvimento - Cascata
Modelos de Desenvolvimento - Cascata
• Implementação:
• 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;
• As unidades de código produzidas são testadas individualmente
antes de passar a etapa de integração e teste global.
Modelos de Desenvolvimento - Cascata
• Testes do Sistema (Verificação):
• 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
• Assegura que as entradas definidas produzam resultados reais
que coincidam com os requisitos especificados.
Modelos de Desenvolvimento - Cascata
• 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;
• Melhorias e correções podem ser consideradas como parte do
desenvolvimento.
Modelos de Desenvolvimento - Cascata
• OBSERVAÇÕES:
• Em princípio, o resultado de cada fase consiste de um ou mais
documentos aprovados (“assinados”). A fase seguinte não deve começar antes que a fase anterior tenha terminado;
• Na prática, esses estágios se sobrepõem e trocam informações
entre si;
• Durante o projeto, são identificados problemas com requisitos;
durante a codificação problemas de projeto e assim por diante;
• O processo de software não é um modelo linear simples,
envolve uma sequência de iterações das atividades de desenvolvimento.
Modelos de Desenvolvimento - Cascata
• As vantagens do modelo em cascata consistem na
documentação produzida em cada fase e sua aderência a outros modelos de processos de engenharia;
• Seu maior problema é a divisão inflexível do projeto em
estágios distintos;
• O modelo em cascata deve ser usado apenas quando os
requisitos forem bem compreendidos e houver pouca probabilidade de mudanças radicais durante o desenvolvimento do sistema.
Modelos de Desenvolvimento de um Software
• Modelo em Cascata;
• Modelo Baseado em Componentes;
• Entrega Incremental;
Modelos de Desenvolvimento – Baseado em Componentes
• Na maioria dos projetos, existe algum reuso de software;
• Geralmente ocorre de forma informal, quando as pessoas que
trabalham no projeto, conhecem os projetos ou os códigos similares aos necessários;
• Esse reuso informal ocorre independentemente do processo de
desenvolvimento usado;
• Com isso desenvolveu- se a Engenharia de Software baseada em
Componentes que tem se tornado cada vez mais utilizada.
Modelos de Desenvolvimento – Baseado em Componentes
• Componentes são considerados como “estando num nível
de abstração mais alto que do que objetos” e, como tal, não compartilham estado e comunicam-se por troca de mensagens contendo dados;
• No caso dos componentes "comerciais de prateleira", o
engenheiro de software sabe pouco ou nada sobre o funcionamento interno de um componente;
• Ao invés disso, ao engenheiro de software é dada apenas uma
interface externa bem-definida a partir da qual ele deve trabalhar;
• O nível de serviço é portanto crucial se quiser que a integração
Modelos de Desenvolvimento – Baseado em Componentes
• Estágios da Engenharia de Software Baseada em Componentes:
Especificação
dos Requisitos ComponentesAnálise dos dos RequisitosModificação
Projeto de sistema com
reuso
Desenvolvimen
to e Integração Validação de Sistema
Modelos de Desenvolvimento – Baseado em Componentes
• Análise de componentes: Dada uma especificação de requisitos,
é feita uma busca pelos componentes para implementar essa especificação. Geralmente, não existe uma correspondência exata e os componentes que podem ser usados fornecem apenas parte da funcionalidade necessária.
Especificação
dos Requisitos ComponentesAnálise dos dos RequisitosModificação
Projeto de sistema com
reuso
Modelos de Desenvolvimento – Baseado em Componentes
• Modificação de Requisitos: Durante este estágio, os requisitos
são analisados usando as informações sobre os componentes encontrados. Eles são modificados para refletir os componentes disponíveis. Quando as modificações são impossíveis, a atividade de análise de componentes pode ser novamente realizada para procurar soluções alternativas.
Especificação
dos Requisitos ComponentesAnálise dos dos RequisitosModificação
Projeto de sistema com
reuso
Desenvolvimen
to e Integração Validação de Sistema
Modelos de Desenvolvimento – Baseado em Componentes
• Projeto de sistema com reuso: Durante este estágio, o
framework do sistema é projetado ou um framework existente é
reusado. Os projetistas levam em consideração os componentes reusados, organizando o framework para eles. Pode ser necessário projetar algum software novo caso os componentes reusáveis não estejam disponíveis.
Especificação
dos Requisitos ComponentesAnálise dos dos RequisitosModificação
Projeto de sistema com
reuso
Modelos de Desenvolvimento – Baseado em Componentes
• Desenvolvimento e integração: O software que não pode ser
adquirido externamente é desenvolvido e os componentes e os sistemas COTS são integrados para criar um novo sistema. A integração de sistema, nesse modelo, pode ser parte do processo de desenvolvimento, em vez de ser uma atividade separada.
Especificação
dos Requisitos ComponentesAnálise dos dos RequisitosModificação
Projeto de sistema com
reuso
Desenvolviment
o e Integração Validação de Sistema
Modelos de Desenvolvimento – Baseado em Componentes
• Este tipo de desenvolvimento de software tem a vantagem óbvia
de reduzir a quantidade de software a ser desenvolvido e, dessa maneira, reduzir os custos e riscos;
• Leva geralmente a uma entrega mais rápida;
• Os compromissos com os requisitos são inevitáveis;
• Deve-se fazer a análise de requisitos para ver se os componentes
Modelos de Desenvolvimento de um Software
• Modelo em Cascata;
• Modelo Baseado em Componentes;
• Entrega Incremental;
• Modelo em Espiral.
Modelos de Desenvolvimento – Entrega Incremental
• A especificação, o projeto e a implementação do software são
divididos em uma série de incrementos desenvolvidos um de cada vez;
• A entrega incremental é uma abordagem que combina as
vantagens dos modelos cascata e evolucionário;
• Em um processo de desenvolvimento incremental, o cliente
identifica, em linhas gerais, os serviços a serem fornecidos pelo sistema;
Modelos de Desenvolvimento – Entrega Incremental
Definir os requisitos iniciais Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento de sistema Validarincremento incrementoIntegrar Validar sistema
Sistema Final Sistema Incompleto
Modelos de Desenvolvimento – Entrega Incremental
• Neste modelo, é identificado quais serviços são mais
importantes;
• Assim, um número de incrementos de entrega é definido, com
cada incremento fornecendo um subconjunto das funcionalidades do sistema. Definir os requisitos iniciais Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento de sistema Validar
incremento incrementoIntegrar Validar sistema
Sistema
Modelos de Desenvolvimento – Entrega Incremental
• A alocação de serviços aos incrementos depende da prioridade
de serviço, com os serviços de prioridade mais alta sendo entregues primeiro. Definir os requisitos iniciais Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento de sistema Validar
incremento incrementoIntegrar Validar sistema
Sistema Final
Modelos de Desenvolvimento – Entrega Incremental
• Após a identificação dos incrementos do sistema, os requisitos
dos serviços a serem entregues no primeiro incremento são definidos detalhadamente e ele é desenvolvido;
• Durante o desenvolvimento, pode ser realizada a análise dos
próximos requisitos para os incrementos posteriores, mas não são aceitas mudanças de requisitos para o incremento atual.
Definir os requisitos iniciais Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento de sistema Validar
incremento incrementoIntegrar Validar sistema
Sistema Final
Modelos de Desenvolvimento – Entrega Incremental
• Os serviços comuns podem ser implementados no início do
processo ou podem ser implementados de forma incremental, conforme a funcionalidade for exigida por um incremento.
Definir os requisitos iniciais Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento de sistema Validar
incremento incrementoIntegrar Validar sistema
Sistema Final Sistema Incompleto
Modelos de Desenvolvimento – Entrega Incremental
• Vantagens:
• Entregas parciais facilitam a identificação e correção de erros entre
os componentes do software;
• Necessidades não especificadas nas fases iniciais podem ser
desenvolvidas nos incrementos;
Modelos de Desenvolvimento – Entrega Incremental
• Vantagens:
• Os feedbacks de iterações anteriores podem ser usados nos próximos
incrementos;
• Os incrementos podem ser desenvolvidos por menos profissionais; • Entrega dos incrementos permite o cumprimento do prazo
especificado;
• Facilita a manutenção dos “módulos”.
Modelos de Desenvolvimento – Entrega Incremental
• Desvantagens:
• Número de iterações não pode ser definido no início do processo; • O fim do processo não pode ser previamente definido;
• Gerenciamento e manutenção do sistema completo podem se tornar
complexos;
• Gerenciamento do custo é mais complexo devido ao número de
Modelos de Desenvolvimento de um Software
• Modelo em Cascata;
• Modelo Baseado em Componentes;
• Entrega Incremental;
• Modelo em Espiral.
Modelos de Desenvolvimento - 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 em espiral assume que o processo de desenvolvimento
ocorre em ciclos, cada um contendo fases de avaliação e planeamento, onde a opção de abordagem para a próxima fase (ou ciclo) é determinada;
• Estas opções podem acomodar características de outros modelos.
Modelos de Desenvolvimento - Espiral
• 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;
• Este modelo possui 4 fases bem definidas:
• Primeira fase: Um ciclo se inicia com a determinação de
objetivos, alternativas e restrições, onde ocorre o comprometimento dos envolvidos e o estabelecimento de uma estratégia para alcançar os objetivos.
Modelos de Desenvolvimento - Espiral
• Segunda fase: 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;
• Terceira fase: ocorre o desenvolvimento do produto. Neste
quadrante pode-se considerar o modelo cascata;
• Quarta fase: o produto é avaliado e se prepara para iniciar um
novo ciclo.
Modelos de Desenvolvimento - Espiral
• Primeira fase: Um ciclo se inicia com a determinação de objetivos,
alternativas e restrições, onde ocorre o comprometimento dos envolvidos e o estabelecimento de uma estratégia para alcançar os objetivos;
Modelos de Desenvolvimento - Espiral
• Segunda fase: 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;
Modelos de Desenvolvimento - Espiral
• Terceira fase: ocorre o desenvolvimento do produto. Neste quadrante
Modelos de Desenvolvimento - Espiral
• Quarta fase: o produto é avaliado e se prepara para iniciar um novo
ciclo.
Modelos de Desenvolvimento - Espiral
• O modelo espiral pode ser considerado 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;
• 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.
Modelos de Desenvolvimento - Espiral
• Vantagens:
• 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.
Modelos de Desenvolvimento - Espiral
• Desvantagens:
• Pode ser difícil convencer grandes clientes (particularmente em
situações de contrato) de que a abordagem evolutiva é controlável;
• Exige considerável experiência na avaliação dos riscos e confia-se
nessa experiência para o sucesso. Se um grande risco não for descoberto, poderão ocorrer problemas;
• 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 partes do sistema a ser desenvolvido;
• O modelo pode levar ao desenvolvimento em paralelo de múltiplas
partes do projeto. 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.
Bibliografia
- SOMMERVILLE, Engenharia de Software, 8. ed. São Paulo: Pearson, 2007.
- PRESSMAN, R. Engenharia de Software. São Paulo: Makron
Books, 1995.
- YOURDON, E. Análise Estruturada Moderna. Rio de Janeiro: Ed.
Campus, 1988
Bibliografia Complementar:
- BEZERRA, E. Princípios de Análise e Projetos de Sistemas com
UML. São Paulo: Campus, 2006.
- MOLINARI, L. Testes de Software. São Paulo: Editora Érica,
2003.
- RUMBAUGH, J. et al. Modelagem e Projetos Baseados em