Engenharia de Software
OBJETIVOS (DA AULA)
• Revisão de Engenharia de Software
• Revisão de Qualidade de Software
• Processos de Desenvolvimento de Software
• Modelos de Processos
• Modelos Tradicionais
• Modelos Ágeis
• Manifesto Ágil e o Scrum
Princípios da Engenharia de
Software
Engenharia de Software
Disciplina da engenharia que se ocupa de todos os
aspectos da produção de software, desde os estágios
iniciais de especificação do sistema até a manutenção
desse sistema, depois que ele entrou em operação
(Sommerville, 2003)
Estudo e aplicação de uma abordagem
sistemática, disciplinada e quantificável para o
desenvolvimento, operação e manutenção de
software.(ISSO/IEC/IEEE – SWEBOK 3.0)
Princípios da Engenharia de
Software
E.S. possui 3 elementos fundamentais:
Metodologias
Ferramentas
Processos
Princípios da Engenharia de
Software
Fonte: Wikipedia
Processos de Desenvolvimento
de Software - PDS
Um processo de desenvolvimento de software (PDS) é um
conjunto de atividades, disciplinas e papéis que prescreve
práticas para se conceber, gerenciar, desenvolver, testar e
implantar um software
Conjunto ordenado de atividades e resultados associados
que tem como objetivo o desenvolvimento de um produto
de software (Sommerville 2003)
Visam abranger atividades de:
Especificação de Software
Desenvolvimento de Software
Validação de Software
Evolução de Software
Modelo Waterfall - Cascata
Modelo Waterfall - Cascata
As atividades são executadas uma após as outras
Exige alto domínio da aplicação a ser desenvolvida
Erros de qualquer origem só são encontrados nas
fases finais
Sistema é entregue no final do Projeto... E se estiver
tudo errado?
Modelo Iterativo incremental
Modelo Evolucionário -
Prototipação
Desenvolvimento Exploratório
Desenvolver sistema a partir de um protótipo
Explorar requisitos desconhecidos
Cliente próximo
Prototipação descartável
Protótipos a fim de compreender melhor o sistema
Objetivo de fazer experimentos
Não há um processo regular
Sistemas crescem desordenadamente
Ferramentas e técnicas especiais
Outros Modelos
Espiral
PDCA
Cada camada é uma iteração
Orientado a Reuso
Bibliotecas,Componentes
Formal
Definições formais + Transformações
Modelos Ágeis
2001
Signatários do Manifesto
Princípios Ágeis
 Nossa maior prioridade é satisfazer o cliente, através da entrega
adiantada e contínua de software de valor.
 Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento.
Processos ágeis se adequam a mudanças, para que o cliente possa tirar
vantagens competitivas.
 Entregar software funcionando com freqüencia, na escala de semanas
até meses, com preferência aos períodos mais curtos.
 Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em
conjunto e diáriamente, durante todo o curso do projeto.
 Construir projetos ao redor de indivíduos motivados. Dando a eles o
ambiente e suporte necessário, e confiar que farão seu trabalho.
Princípios Ágeis
 O Método mais eficiente e eficaz de transmitir informações para, e por
dentro de um time de desenvolvimento, é através de uma conversa cara
a cara.
 Software funcional é a medida primária de progresso.
 Processos ágeis promovem um ambiente sustentável. Os
patrocinadores, desenvolvedores e usuários, devem ser capazes de
manter indefinidamente, passos constantes.
 Contínua atenção à excelência técnica e bom design, aumenta a
agilidade.
 Simplicidade: a arte de maximizar a quantidade de trabalho que não
precisou ser feito.
 As melhores arquiteturas, requisitos e designs emergem de times auto-
organizáveis.
 Em intervalos regulares, o time reflete em como ficar mais efetivo,
então, se ajustam e otimizam seu comportamento de acordo
Scrum
http://www.desenvolvimentoagil.com.br/scrum
Scrum
É...
Framework de Gerência de Projetos Ágil
 Princípios e crenças Ágeis (Jim Highsmith - Signatário)
Processo de Desenvolvimento de Software
 atividades, disciplinas e papéis que prescreve práticas para se
conceber, gerenciar, desenvolver, testar e implantar um
software (sem ser prescritivo)
Não é...
A solução para seus problemas
Receita do sucesso
Bala de Prata
Scrum - Produto
Temas
Épicos
Features ou Histórias de Usuários (User Stories)
Eu como ... Desejo ser capaz de ... A fim de que ...
Backlog
Lista
 Features ou US
Produto
Sprint
Scrum - Papéis
Product Owner: Conhece o negócio, define histórias
Scrum Master: Lidera o time, protege de influências e
impedimentos
Time de Desenvolvimento: Estima, Projeta, Desenvolve –
Auto gerenciável/Multidisciplinar
Scrum - Papéis
A Gerência de Projeto é muito complexa pra ser feita por uma pessoa
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki
Cerimônias e Time boxes
Sprint – Iteração de tempo fixo – 2 a 4 semanas
Sprint Planning - Planejamento - 1h/semana
Daily Scrum – Acompanhamento - 15 min
Sprint Review – Entrega da Sprint – 1h/semana
Sprint Retrospective – Realinhamento – 1h/semana
Saiba mais...
http://www.agilemanifesto.org/iso/ptbr/
http://www.infoq.com/br/agile/
http://pt.slideshare.net/flaviosteffens/cinco-motivos-
para-voc-no-adotar-metodologias-geis-rafael-
prikladnicki-flvio-steffens-de-castro
http://www.desenvolvimentoagil.com.br/scrum/

Processos de Software - 101

  • 1.
  • 2.
    OBJETIVOS (DA AULA) •Revisão de Engenharia de Software • Revisão de Qualidade de Software • Processos de Desenvolvimento de Software • Modelos de Processos • Modelos Tradicionais • Modelos Ágeis • Manifesto Ágil e o Scrum
  • 3.
    Princípios da Engenhariade Software Engenharia de Software Disciplina da engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema, depois que ele entrou em operação (Sommerville, 2003) Estudo e aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software.(ISSO/IEC/IEEE – SWEBOK 3.0)
  • 4.
    Princípios da Engenhariade Software E.S. possui 3 elementos fundamentais: Metodologias Ferramentas Processos
  • 5.
    Princípios da Engenhariade Software Fonte: Wikipedia
  • 6.
    Processos de Desenvolvimento deSoftware - PDS Um processo de desenvolvimento de software (PDS) é um conjunto de atividades, disciplinas e papéis que prescreve práticas para se conceber, gerenciar, desenvolver, testar e implantar um software Conjunto ordenado de atividades e resultados associados que tem como objetivo o desenvolvimento de um produto de software (Sommerville 2003) Visam abranger atividades de: Especificação de Software Desenvolvimento de Software Validação de Software Evolução de Software
  • 7.
  • 8.
    Modelo Waterfall -Cascata As atividades são executadas uma após as outras Exige alto domínio da aplicação a ser desenvolvida Erros de qualquer origem só são encontrados nas fases finais Sistema é entregue no final do Projeto... E se estiver tudo errado?
  • 9.
  • 10.
    Modelo Evolucionário - Prototipação DesenvolvimentoExploratório Desenvolver sistema a partir de um protótipo Explorar requisitos desconhecidos Cliente próximo Prototipação descartável Protótipos a fim de compreender melhor o sistema Objetivo de fazer experimentos Não há um processo regular Sistemas crescem desordenadamente Ferramentas e técnicas especiais
  • 11.
    Outros Modelos Espiral PDCA Cada camadaé uma iteração Orientado a Reuso Bibliotecas,Componentes Formal Definições formais + Transformações
  • 12.
  • 13.
  • 14.
    Princípios Ágeis  Nossamaior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.  Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.  Entregar software funcionando com freqüencia, na escala de semanas até meses, com preferência aos períodos mais curtos.  Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diáriamente, durante todo o curso do projeto.  Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.
  • 15.
    Princípios Ágeis  OMétodo mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.  Software funcional é a medida primária de progresso.  Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes.  Contínua atenção à excelência técnica e bom design, aumenta a agilidade.  Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.  As melhores arquiteturas, requisitos e designs emergem de times auto- organizáveis.  Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo
  • 16.
  • 17.
    Scrum É... Framework de Gerênciade Projetos Ágil  Princípios e crenças Ágeis (Jim Highsmith - Signatário) Processo de Desenvolvimento de Software  atividades, disciplinas e papéis que prescreve práticas para se conceber, gerenciar, desenvolver, testar e implantar um software (sem ser prescritivo) Não é... A solução para seus problemas Receita do sucesso Bala de Prata
  • 18.
    Scrum - Produto Temas Épicos Featuresou Histórias de Usuários (User Stories) Eu como ... Desejo ser capaz de ... A fim de que ... Backlog Lista  Features ou US Produto Sprint
  • 19.
    Scrum - Papéis ProductOwner: Conhece o negócio, define histórias Scrum Master: Lidera o time, protege de influências e impedimentos Time de Desenvolvimento: Estima, Projeta, Desenvolve – Auto gerenciável/Multidisciplinar
  • 20.
    Scrum - Papéis AGerência de Projeto é muito complexa pra ser feita por uma pessoa Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki
  • 21.
    Cerimônias e Timeboxes Sprint – Iteração de tempo fixo – 2 a 4 semanas Sprint Planning - Planejamento - 1h/semana Daily Scrum – Acompanhamento - 15 min Sprint Review – Entrega da Sprint – 1h/semana Sprint Retrospective – Realinhamento – 1h/semana
  • 22.