Please enable JavaScript.
Coggle requires JavaScript to display documents.
Processo de Desenvolvimento de Software (Prototipação (Este protótipo pode…
Processo de Desenvolvimento de Software
Conjunto de atividades
Especificação
Projeto
Validação
Evolução
Modelo de Processo escolhido com base:
Na natureza do projeto e da aplicação;
Nos métodos e ferramentas a serem utilizados
Nos controles e produtos que precise ser entregues
Software desejado
Sequencial = Só haverá a junção das 3 partes no final
Incremental: Cada versão será adicionado uma das partes
Iterativo: Em cada versão terá todas as partes trabalhando juntas.
Processo do Software
Modelo Cascata(clássico)
Fases separadas e distintas de especificação e desenvolvimento
Um dos primeiros modelos(Royce,1970)
O desenvolvimento de um estágio deve terminar antes do próximo começar
Simples, mas não reflete, efetivamente, o modo como o código é desenvolvido
Derivado do mundo do hardware(linhas de montagens)
Engenharia de Sistemas
Análise
Projeto
Codificação
Teste
Manutenção
Engenharia de Sistemas
Software faz parte de um sistema maior;
Estabelecer os requisitos básicos para todos os elementos que envolvem o software, como hardware, pessoas, interface, dispositivos e bancos de dados.
Envolve a coleta dos requisitos em nível do sistema, com uma pequena quantidade de projeto e análise de alto nível.
Exige uma intensa comunicação entre cliente e analista
Faz parte da Analise de Sistema
Análise dos requisitos
Intensifica-se o processo de coleta dos requisitos;
Identificar as funções necessárias, o desempenho e interfaces exigidos.(funcionalidades e restrições)
Os requisitos para o sistema e para o software são documentados e revistos com o cliente
Produz a especificação dos requisitos
Faz parte da Analise de sistema
Projeto
Traduz os requisitos em um conjunto de representações que podem ser avaliados quando à qualidade
Estrutura de dados
Arquitetura do software
Detalhes Procedimentais
Caracterização da interface
É avaliado antes de começar a ser implementado
Junto com as etapas anteriores torna-se parte da documentação do sistema
Codificação
Projeto traduzido para a linguagem do computador(C++, Delphi, Java, PHP)
Se o projeto for executado detalhadamente, a codificação pode ser executada mecanicamente?
Testes
Concentra-se nos aspectos funcionais externos e lógicos internos do software
Garante que "todas as instruções tenham sido testadas
A entrada definida produz os resultados exigidos?
Manutenção
Software embutido nem sempre tem esta parte;
Provavelmente o software deverá sofrer mudanças depois de que for entregue ao cliente(correções, evoluções)
Tipos de manutenção
Corretiva: Diagnóstico e correção de erros
Adaptativa: Adaptação do software para acomodar mudanças em seu ambiente externo
Perfectiva: Exigência do cliente para acréscimos funcionais e de desempenho
Preventiva: Melhorar a confiabilidade e manutenibilidade futura(técnicas de engenharia reversa e reengenharia
Problemas
O mais antigo e amplamente usado
Projetos reais raramente seguem o fluxo sequencial que ele propõe. Ocorrem iterações que trazem problemas na aplicação do paradigma
É dificil para o cliente declarar todas as exigências explicitamente. É dificil acomodar as incertezas naturais que existem no começo de muitos projetos
O cliente deve ter paciência. Uma versão do software só estará disponivel em um ponto tardio do cronograma. Um erro crasso, pode ser desastroso.
Desenvolvedores ociosos
Só é apropriado quando os requisitos são bem conhecidos
Modelo em Espiral
Especificação e desenvolvimento são intercalados(SCRUM e RUP)
Modelo incremental
Este tipo de modelo combina elementos do modelo cascatas(aplicado repetidamente) com a filosofia iterativa de prototipação
Acrescenta mais uma atividade: Análise de risco
O objetivo é trabalhar junto do usuário para descobrir seus requisitos, de maneira incremental, até que o produto final seja obtido
O desenvolvimento começa com as partes do produto que são mais bem entendidas
A evolução acontece quando novas características são adicionadas à medida que são sugeridos pelo usuário.
A cada iteração é desenvolvido uma versão usável, não um protótipo
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
1 - Planejamento
Determinação dos objetivos, alternativas e restrições
Comunicação com os clientes
Definição de recursos
2 - Análise de Risco
Análise das alternativas e identificação/ resolução dos riscos
3 - Construção
Desenvolvimento do produto no nivel seguinte
Constroi protótipos ou versões mais avançadas do produto
Realiza testes, implantação, suporte
4 - Avaliação do Cliente
Obter o feedback do cliente baseado na avaliação da versão do software
São levantado as necessidades de mudança para o software
É uma abordagem realística para o desenvolvimento de software em grande escala
Usa uma abordagem que capacita o desenvolver e o cliente a atender e reagir aos riscos em cada etapa evolutiva
Pode ser difícil convencer os clientes qua uma abordagem "evolutiva" é controlável;
Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso
Prototipação
Apropriado quando?
O cliente definiu um conjunto de objetivos gerais para o software, mas não identificou requisitos de entrada, processamento e saída com detalhes;
Desenvolvedor não tem certeza da eficiência de um algoritmo, forma de interação homem/máquina
Permite o refinamento iterativo dos requisitos
A cada iteração é produzido um protótipo do software final
Este protótipo pode ser um:
Em papel, primeiras versões que permitem ao usuário ter uma visão abstrata do sistema
Incompleto, implementa algum subconjunto de funções exigidas
Final, um software que executa parte ou toda a função desejada, mas que tem outras características que serão melhoradas e ainda não pode ser disponibilizado
Coleta e refinamento dos requisitos(INICIO)
Projeto Rápido
Construção do protótipo
Avaliação do Protótipo pelo cliente
Refinamento do Protótipo(Decide)
Engenharia do produto(FIM)
Coleta e Refinamento dos Requisitos
Nesta etapa o desenvolvedor e o cliente devem definir os objetivos gerais do software(Protótipo)
Identificar quais requisitos são conhecidos e as áreas que necessitam de definição adicional
Análise de Sistema
Projeto Rápido
Representação dos aspectos do software que são visiveis ao usuario(abordagens de entrada e formatos de saída)
Construção do protóripo
Implementação rápida do projeto
Avaliação do protótipo
Cliente e desenvolvedor avaliam o protótipo
No caso de sugestão ou mudanças serão trabalhadas na próxima fase
Refinamento
São trabalhados os problemas encontrados na fase anterior. Ou seja, são refinados os requisitos
Neste ponto pode ocorrer, no caso de necessidade de alterações, um retorno na fase de projeto rápido para desenvolver um novo protótipo que incorpora as mudanças.
Construção do produto
Identificando todos os requisitos necessários, o protótipo pode ser descartado e a versão final do produto deve ser construido considerando os critérios de qualidade
Problemas
O cliente muitas vezes não aceita mais uma iteração, aquela versão incompleta já serve
Não há necessidade de desenvolver uma versão final, modifica-se o protótipo
Desenvolver frequentemente faz uma implementação comprometida(utilizando o que está disponível) com o objetivo de produzir rapidamente o protótipo.
Solução
Definir as regras do jogo logo no começo, o cliente deve concordar que o protótipo seja construido para servir como um mecanismo afim de definir os requisitos