Processos de Software
Sistemas de Informação - SI
Processos de software
Atividades para especificar, projetar, implementar e testar sistemas de software.
Processos de software
Uma Visão Genérica: 3 FasesDefinição - “o que”
Engenharia do Sistema Planejamento do Projeto Análise de Requisitos Desenvolvimento - “como” Projeto Geração do Código Teste Manutenção
Processos de Software
Um processo de software é um método para desenvolver ou produzir software.
A pesquisa em processo de software lida com métodos e tecnologias estimativas, suporte e melhoria das atividades de desenvolvimento de software.
Definequem faz o que,quandoecomo.
Processos de software
O processo é o instrumento capaz de responder a qualquer momento: O que é feito? Produto
Como é feito? Passos Por quem é feito? Agente O que usa? Insumos O que produz? Resultados
Modelo de Processo de software
Estado Atual Definição do problema Integração da solução Desenvolvimento Técnico
Modelagem
Modelagem é uma técnica de engenharia aprovada e bem aceita modelos de arquitetura de casas e de grandes prédios
modelos matemáticos a fim de analisar os efeitos de ventos e tremores de terra --> causas
Modelos
Modelos
São construídos para permitir um melhor entendimento sobre o sistema que está sendo construído.
especificar a estrutura e comportamento
guia para construção do sistema
documentam as decisões tomadas
Objetivos da modelagem
Auxiliar no processo de produção: produtos de alta qualidade, produzidos mais rapidamente e a um custo cada vez menor.
Atributos: abstração, visibilidade, especificação, construção, confiabilidade,
manutenibilidade, segurança, documentação.
Modelos de processo de software
AbstraçãoMelhor entendimento e maior compreensão
Visualização
Visualização antecipada antes da implementação Visões complementares do software
Modelos de processo de software
EspecificaçãoDescrição precisa do que deve ser feito
Construção
Geração automática com ferramentas baseadas em modelos
Objetivos da modelagem
Possibilitam:
Ao gerente: controlar o processo de desenvolvimento de sistemas de software.
Ao desenvolvedor: obter a base para produzir, de maneira eficiente, software que
satisfaça os requisitos pré-estabelecidos.
Modelos de processo de software
Um conjunto de atividades fundamentais exigida para desenvolver um sistema de software Especificação. Projeto e implementação. Validação. Evolução.
Modelo x Processo
Um modelo é algo teórico, um conjunto de possíveis ações.
O processo deve determinar ações práticas a serem realizadas pela equipe como prazos definidos e métricas para se avaliar como elas estão sendo realizadas
Modelo x Processo
MODELO + PLANEJAMENTO = PROCESSO
Modelos de processo de software
-paradigmas
Uma estratégia de desenvolvimento que englobe processos, métodos e ferramentas, e as fases de desenvolvimento.
Modelo Sequencial Linear (ciclo de vida clássico)
Modelos Evolucionários Prototipação Incremental Espiral Métodos Ágeis
CASCATA
Modelo sequencial linear
(ciclo de vida clássico)
Método sequencial
O resultado de uma fase se constitui na entrada da outra.
Cada fase é estruturada como um conjunto de atividades que podem ser executadas por pessoas diferentes.
Modelo clássico
EVOLUCIONÁRIO
Modelo Evolucionário
Abordagem baseada na ideia de desenvolver uma implementação inicial, expor o resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas versões.
Modelo Evolucionário
As atividades de desenvolvimento e validação são desempenhadas paralelamente, com um rápido feedback entre elas.
Modelo Evolucionário
Trabalhar junto com o cliente, a fim de explorar seus requisitos e entregar um sistema final.
O desenvolvimento se inicia com as partes do sistema que são mais bem compreendidas.
Modelo Evolucionário
O sistema evolui com o acréscimo de novas características à medida que elas são propostas pelo cliente.
Importante quando é difícil, ou mesmo impossível, estabelecer uma especificação detalhada dos requisitos do sistema a priori.
Modelo Evolucionário
PROTOTIPAÇÃO
PROTOTIPAÇÃO
Processo no qual o desenvolvedor tem a capacidade de criar um modelo do software que será implementado. O modelo pode assumir uma das três formas:
Um modelo em papel que o usuário tenha a visão da interação homem-máquina e quantas interações ocorrerá.
Um protótipo de trabalho que implementa algumas funcionalidades exigidas pelo software.
Um programa existente que executa parte ou toda a função desejada, mas que tem outras características que serão melhoradas posteriormente
PROTÓTIPO
Um protótipo é uma versão inicial de um sistema de software, utilizada para mostrar conceitos, experimentar opções de projeto e, em geral, para conhecer mais sobre os problemas e suas possíveis soluções.
O desenvolvimento rápido de um protótipo é essencial para que os custos sejam controlados e os usuários possam fazer experiências com o protótipo no início do processo de software.
INCREMENTAL
INCREMENTAL
INCREMENTAL
CASCATA + PROTOTIPAÇÃOO desenvolvimento é dividido em etapas, denominadas “incrementos”, que produzirão incrementalmente o sistema, até a sua versão final.
Em cada incremento é realizado todo o ciclo do desenvolvimento de software, do planejamento aos testes do sistema já em funcionamento. Cada etapa produz um sistema totalmente funcional, apesar de ainda não cobrir todos os requisitos.
ESPIRAL
Determinação dos objetivos, alternativas e restrições; Análise de risco e prototipação;
Validação e verificação; Planejamento da fase seguinte.
Objetivo: criar um roteiro de atividades e etapas para que se alcance uma maturidade do processo evolutivo de desenvolvimento de sistemas complexos e obter, ao final, um produto em sua forma mais completa possível.
Modelo Espiral
Modelo Espiral
Desenvolvido para englobar as melhores características do ciclo de vida . São avaliados riscos explicitamente e são solucionados ao longo do processo. Processo é representado como uma espiral em lugar de ser representado como uma sequência de atividades.
Modelo Espiral
Cada loop na espiral representa uma fase do processo de software. Não existem fases fixas.
Engloba as melhores características do ciclo de vida Clássico como o da
Prototipação, adicionando um novo elemento: a ANÁLISE DOS RISCOS
Modelo Espiral: funcionamento
À medida que a volta na espiral acontece, versões mais completas do software vão sendo progressivamente construída.
Durante a primeira volta, são definidos objetivos, alternativas e restrições. Se a análise de risco indicar que há incerteza nos requisitos, a prototipação pode ser usada para auxiliar o desenvolvedor e o usuário.
O usuário avalia o produto e faz sugestões de modificações.
Desenvolvimento Rápido de Software
Métodos ágeis
Extreme Programming SCRUM
Desenvolvimento Rápido de Software
Devido à rápida mudança dos ambientes de negócio, os negócios devem responder às novas oportunidades e à competição.
Isso requer software e desenvolvimento rápido, e a entrega é, frequentemente, o requisito mais crítico para sistemas de software.
Métodos Ágeis
Movimento iniciado por programadores experientes e consultores em desenvolvimento de software.
Objetivo: satisfazer o cliente entregando, rapidamente e com frequência,
sistemas com algum valor.
Os métodos ágeis são, provavelmente, os mais adequados para sistemas de negócio de porte pequeno/médio.
XP
Novas versões podem ser compiladas várias vezes por dia. Os incrementos são entregues para os clientes a cada 2 semanas.
Todos os testes devem ser realizados para cada nova versão.
Os valores de XP
Comunicação Simplicidade Retorno (feedback) CoragemXP
Grupos de 2 a 10 programadores Projetos de 1 a 36 meses (calendário) De 1000 a 250 000 linhas de código Papéis:Scrum
SCRUM é uma metodologia (ou Framework de acordo com o criador Ken Schwaber) onde a espinha dorsal é que chamamos de Sprint.
Papeis no Scrum
Product Owner Representante do cliente Scrum Master lidera o time de desenvolvimentoScrum Team membros que formam o time de desenvolvedores, designers, consiste de 5 a 9 pessoas.
Sprint
SPRINT
Sprint Planning Meeting - Reunião onde Scrum Team e o Product Owner determinam quais funcionalidades e atividades serão realizadas no próximo Sprint.
Sprint Review - O ScrumTeam e o SCRUM Master apresentam ao Product Owner os resultados alcançados durante o sprint.
O que foi bom durante o Sprint? O que pode ser melhorado? As Lições aprendidas