26 outubro, 2014

Requisitos de Software

Requisitos de software

Trabalha com funcionalidades e qualidades que o software vai alcançar.

Tipos: 

Requisitos do usuário:
    Expresso em linguagem natural
    O que o usuário espera encontrar no sistema
 
Requisitos do sistema:
    Detalha as funções e restrições do sistema
     

Classificação dos requisitos:

    - Funcionais
    Especifica as funcionalidades do sistema
 
    - Não funcionais
    Restrições em cima dos funcionais
        Tipos: De produtos, Organizacionais e Externos e vários outros subtipos.
 
    - Domínio (negócio)
    Restrições que vêm do ambiente de negócio do sistema.
 

Documentação de requisitos 

Os requisitos devem ter completeza e consistência
Os requisitos devem ter IDs
Organizar os requisitos por alguma ordem
DEVE (obrigatório) e DEVERIA (desejável)
Evite sentenças muito longas
Evite conjunçoes como "ou", "e", etc.


A prática da engenharia de software


Roger Pressman define dois princípios que guiam a prática da engenharia de software:


  • Princípios que guiam o processo
  • Princípios que guiam a prática


Principios que guiam o processo

  • Seja ágil
  • Concnetre-se na qualidade em todas as etapas
  • Esteja pronto para adaptações
  • Monte uma equipe efetiva
  • Estabeleça mecanismos para comunicação e coordenação
  • Gerencie mudanças
  • Avalie riscos
  • Gere artefatos que forneçam valor para outros artefatos


Principios que guiam a prática



  • Divida e  consquiste
  • Compreenda o uso da abastração
  • Esforce-se por consistência
  • Foque na transferência de informação
  • Construa software que apresente modularidade efetiva
  • Padronize
  • Quando possível, represente o problema e sua solução sob perspectivas diferentes
  • Lembre-se de que alguém fará manutenção no software


01 outubro, 2014

Processo Ágil


Manifesto do Desenvolvimento de Software Ágil


  • Indivíduos e interação acima de processos e ferramentas;
  • Software em funcionamento acima de documentação abrangente;
  • Colaboração com o cliente acima de negociação de contratos;
  • Responder a mudanças acima de seguir um plano.

Agile é rápido nas mudanças e eficaz na comunicação com os envolvidos, faz entregas incrementais.
Segundo o gráfico, com agilidade a curva do custo a mudança é diminuido.

Princípios da Agilidade

  1. A maior prioridade é satisfazer o cliente por meio de entregas continuas;
  2. Acolha bem os pedidos de alterações no software;
  3. Entregue software em funcionamento frequentemente;
  4. Comercial e desenvolvedor trabalham juntos;
  5. Trabalhe em trono de indivíduos motivados;
  6. O método mais eficiente de transmitir informações para equipe é uma conversa aberta;
  7. O software em funcionamento é a principal medida de progresso;
  8. Os processos ágeis promovem desenvolvimento sustentável;
  9. Atenção contínua com a excelência técnica;
  10. Simplicidade;
  11. Os melhores projetos emergem de equipes auto-organizaveis;
  12. Regularmente a equipe faz uma auto-avaliação para ver como se tornar mais eficiente. 


Fatores Humanos

  • Competência
  • Foco comum
  • Colaboração
  • Habilidade na tomada de decisão
  • Habilidade de solução de problemas confusos
  • Confiança mútua e respeito
  • Auto-organização

Extreme Programming (XP) (Kent Beck)


Valores Básicos

  • Comunicação (tanto com o cliente quanto o time)
  • Simplicidade (fazer somente o necessário)
  • Feedback (deve ser constante)
  • Coragem (ou disciplina)
  • Respeito (pelo software e pela equipe)

Processo Ágil: XP


  • Planejamento
    • Começa com a criação das histórias dos usuários
    • Equipe avalia e estima o custo das histórias
    • Histórias são agrupadas em um incremento de software
    • Define-se uma data de entrega do incremento
    • O primeiro é referência para acelerar os demais incrementos
  • Desenho (Design)
    • Princípio KISS
    • Uso de cartões CRC
    • Grandes problemas são resolvidos com prototipação
    • Encoraja a refatoração
    • Recomenda os testes unitários antes de codificar
    • Encoraja a programação em par
  • Teste
    • Todos os testes unitários são executados diariamente
    • Testes de avaliação são definidos pelo cliente


Processo Ágil: Desenvolvimento de software adaptativo

  • Planejamento dirigindo a missão
  • Foco no desenvolvimento baseado em componentes
  • Uso de time-boxing (só trata um certo número de requisitos por vez)
  • Consideração explicita de riscos
  • Ênfase na colaboração para entendimento dos requisitos
  • Ênfase na "aprendizagem" durante o processo  

Processo Ágil: Método Dinâmico de Desenvolvimento de Sistemas (DSDM)

  • Promovido pelo consórcio DSDM
  • Similar ao XP e ASD em muitos aspectos

Processo Ágil: SCRUM

  • O trabalho do desenvolvimento é dividido em pacotes;
  • Testes e documentação são realizados e construídos a medida que o produto é construído
  • O trabalho ocorre em "sprints" derivados de um "backlog" de requisitos
  • As reuniões são curtas
  • "Demos" são entregues ao cliente no "time-box" alocado

Processo Ágil: Modelagem Ágil


  • Modelagem com um propósito
  • Uso de múltiplos modelos
  • Facilidade de manutenção dos modelos
  • Conteúdo é mais importante que a representação
  • Conhecimento de modelos e ferramentas para criá-los
  • Adaptações da abordagem de modelagem às características da equipe

Processo Ágil: Crystal

  • Permite adaptabilidade baseada nas características do problema
  • Ênfase na comunicação face a face
  • Sugere-se o uso de workshops de reflexão para revisão da forma de trabalho da equipe

Processo Ágil: Feature Driven Development (FDD)

  • Ênfase na definição de características (feauture)
    • Uma feature é uma "função" valorizada pelo cliente que pode ser implementada em duas semanas ou menos
  • Usa um template para criar uma lista de features e então, iniciar o planejamento
  • O design é a construção do FDD


Processo Ágil: Agile Unified Process (AUP)


  • Adota uma filosofia:
    • Serial para o que é amplo
    • Iterativa para o que é particular
  • Atividades
    • Modelagem
    • Implementação
    • Teste
    • Aplicação
    • Configuração e genreciamento de projeto
    • Gerenciamento do ambiente