Engenharia de Software

    Engenharia de software é uma área do conhecimento da computação voltada para a especificação, desenvolvimento e manutenção de sistemas de software aplicando tecnologias e práticas de gerência de projetos e outras disciplinas, objetivando organização, produtividade e qualidade.

    Friedrich Ludwig Bauer foi o primeiro a defini-la como sendo: "Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais". O próprio significado de engenharia já traz os conceitos de criação, construção, análise, desenvolvimento e manutenção.


   Segundo o SWEBOK (Corpo de Conhecimento da Engenharia de Software), versão 2004, as áreas de conhecimento da Engenharia de Software são:
  • Requisitos (Requirements) de Software
  • Projeto (Design) de Software
  • Construção (Construction) de Software
  • Teste (Testing) de Software
  • Manutenção (Maintenance) de software
  • Gerência de Configuração de Software
  • Gerência de Engenharia de Software
  • Processos de Engenharia de Software
  • Ferramentas e Métodos de Engenharia de Software
  • Qualidade (Quality) de Software

   Processo de software, ou processo de engenharia de software, é uma seqüência coerente de práticas que objetiva o desenvolvimento ou evolução de sistemas de software. Estas práticas englobam as atividades de especificação, projeto, implementação, testes e caracterizam-se pela interação de ferramentas, pessoas e métodos.
   Conforme visto, em projetos para celulares são mais usados os métodos ágeis.
   Então iremos falar sobre o SCRUM e o XP.

XP - eXtreme Programming

   Programação extrema (do inglês eXtreme Programming), ou simplesmente XP, é uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software.
   Os cinco valores fundamentais da metodologia XP são: comunicação, simplicidade, feedback, coragem e respeito. A partir desses valores, possui como princípios básicos: feedback rápido, presumir simplicidade, mudanças incrementais, abraçar mudanças e trabalho de qualidade.
   Dentre as variáveis de controle em projetos (custo, tempo, qualidade e escopo), há um foco explícito em escopo. Para isso, recomenda-se a priorização de funcionalidades que representem maior valor possível para o negócio. Desta forma, caso seja necessário a diminuição de escopo, as funcionalidades menos valiosas serão adiadas ou canceladas.
   A XP incentiva o controle da qualidade como variável do projeto, pois o pequeno ganho de curto prazo na produtividade, ao diminuir qualidade, não é compensado por perdas (ou até impedimentos) a médio e longo prazo.


SCRUM

   O Scrum é um processo de desenvolvimento iterativo e incremental para gerenciamento de projetos e desenvolvimento ágil de software.
   Scrum não é um processo prescribente, ou seja, ele não descreve o que fazer em cada situação. Ele é usado para trabalhos complexos nos quais é impossível predizer tudo o que irá ocorrer.
   Apesar de Scrum ter sido destinado para gerenciamento de projetos de software, ele pode ser utilizado em equipes de manutenção de software ou como uma abordagem geral de gerenciamento de projetos/programas.

SCRUM simplificado
   Muitas organizações têm sido resistentes às metodologias introduzidas em baixos níveis da organização.       Porém, a adaptabilidade do Scrum permite que ele seja introduzido de forma invisível ("stealth"), usando os três passos:
  • Agende uma demonstração do software com seu cliente em um mês a partir de agora;
  • Como equipe, tome um mês para deixar o software pronto para uma demo, com funcionalidades prontas, não simplesmente telas;
  • Na demonstração, obtenha feedback e use-o para guiar o seu próximo mês de trabalho de desenvolvimento

Características do SCRUM

  • Clientes se tornam parte da equipe de desenvolvimento (os clientes devem estar genuinamente interessados na saída);
  • Entregas frequentes e intermediárias de funcionalidades 100% desenvolvidas;
  • Planos frequentes de mitigação de riscos desenvolvidos pela equipe;
  • Discussões diárias de status com a equipe;
  • A discussão diária na qual cada membro da equipe responde às seguintes perguntas:
    • O que fiz desde ontem?
    • O que estou planejando fazer até amanhã?
    • Existe algo me impedindo de atingir minha meta?
  • Transparência no planejamento e desenvolvimento;
  • Reuniões frequentes com os stakeholders (todos os envolvidos no processo) para monitorar o progresso;
  • Problemas não são ignorados e ninguém é penalizado por reconhecer ou descrever qualquer problema não visto;
  • Locais e horas de trabalho devem ser energizadas, no sentido de que "trabalhar horas extras" não necessariamente significa "produzir mais".

Para maiores informações verifique os links na barra de links.