Extreme Programming (XP): Uma Metodologia Ágil para Desenvolvimento de Software

Classificado em Tecnologia

Escrito em em português com um tamanho de 23,18 KB

Extreme Programming - XP

Introdução:

E uma metodologia de desenvolvimento de software,vem ajudando a produzir softwares com qualidade ,produzidos em menos tempo e de forma mais economica.

Motivação:

Uma empresa norte americana Chamada: Standish Group, a 10 anos vem produzindo um relatório chamado The Chaos Report , pesquisou 280 mil projetos, e revelou que 72% deles falham devido aos fatores:

Consomem mais recursos que o orçado.
Consomem mais tempo que o estimado.
Não entregam o que foi ecombinado.
Todas as alternativas acima em conjunto.

Manifesto Agil:

Um grupo de de profissionais em uma estação de ski devidiram conversar sobre as falhas e sucesso no desenvolvimento de um software e colocaram varios ponto de sucesso em comum,e devidiram criar um manifesto ,chamado de manifesto agil ,o manifesto passou a ter varias abordagens de desenvolvimento,e alguns principios tais como:

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

O manifesto agil criado nos anos de 200 aborda varios uma seria de topico no desenvolvimento de software ,a mais conhecida delas éo Extreming Programming também conhecida como XP,e composto por um conjunto de praticas que giram em torno de varios processos.

Trabalhar com XP equivale a encarar o desenvolvimento de softwarr direntemente do que estamos acostumados ,trata-se de uma forma mais humana ,aonde desenvoldedores,clientes e demais interessados no projeto falham e acertam,a estrutura do xp procura ajuda o projeto a aproveitar o que as pessoas tem de melhor e solucionar as falhas com rapidez e segurança.

O XP prioriza as atividades da equipe permanentemente para evitar que trabalhos desnecessários sejam executados,Isso ajuda a poupar tempo, recursos e permite gerar maior valor para os clientes.Pois, mais importante que trabalhar muito e produzir muito, é produzir a coisa certa,aquilo que o cliente realmente identifica como sendo valioso para resolver seus problemas, fazendo isso de forma consistente, segura e rápida ao longo de todo o andamento do projeto.

Feedback:

projetos XP estabelecem formas de encurtar ao máximo a defasagem de tempo entre o momento em que uma ação é executada e o seu resultado é observado,desenvolvedores procuram entregar novas funcionalidades no menor prazo possível, para que o cliente compreenda rapidamente as conseqüências daquilo que pediu,Os clientes, por sua vez, procuram se manter próximos dos desenvolvedores para prover informações precisas sobre qualquer dúvida que eles tenham ao longo do desenvolvimento.

Comunicação: quem utiliza a o metodo xp tem que estar familiarizado com o dialogo presencial,e o termo mais importante na comunicação.

Simplicidade: O XP utiliza o conceito de simplicidade em inúmeros aspectos do projeto para assegurar que a equipe se concentre em fazer, primeiro, apenas aquilo que é claramente necessário e evite fazer o que poderia vir a ser necessário, mas ainda não se provou essencial.

Coragem: O que muda é a forma de lidar com ele. Equipes XP acreditam que errar é natural e quebrar o que vinha funcionando é acontece cedo ou tarde. É necessário ter coragem para lidar com esse risco, o que em XP se traduz em confiança nos seus mecanismos de proteção. As Práticas do XP são voltadas, entre outras coisas, para proteger o software de inúmeras formas.

Praticas:

Cliente Presente: Projetos com XP procuram contar com a presença do cliente, junto à equipe de desenvolvimento, tanto quanto possível. Isso não significa que ele tenha que estar 100% de seu tempo com os desenvolvedores, mas sim que deve procurar, no mínimo, visitá- los e dialogar com eles inúmeras vezes ao longo do projeto, com a maior freqüência possível.

Jogo do planejamento: Uma vez por semana os desenvolvedores se reunem com o cliente para priorizar um pequeno conjunto de funcionalidades e testa-las,terminando esse periodo que e chamado de iteraçãoo cliente tem a oportunidade de avaliar o que foi produzido,e avaliam o que deve ser mais produzido ao longo do projeto,essa reunião se da o nome de Jogo de planejamento O objetivo do jogo do planejamento é criar um plano para uma semana de trabalho, que seja capaz de gerar (através de funcionalidades) o máximo de valor possível para o negócio do cliente, naquela semana.

Stand up Meeting: O stand up meeting é uma reunião rápida (em torno de 10 minutos) realizada no início de cada dia, onde os participantes normalmente ficam em pé (daí a origem do nome), cujo objetivo é atualizar todos os membros da equipe a respeito do que ocorreu no dia anterior e priorizar as atividades do dia que está começando.

Programação em par: O stand up meeting é uma reunião rápida (em torno de 10 minutos) realizada no início de cada dia, onde os participantes normalmente ficam em pé (daí a origem do nome), cujo objetivo é atualizar todos os membros da equipe a respeito do que ocorreu no dia anterior e priorizar as atividades do dia que está começando.

Desenvolvimento orientado a testes: O desenvoldedor conforme esta desenvolvendo o sistema vai testando o sistema em tempo.

Refatoração: A estrutura de qualquer sistema tende a se degradar ao longo do tempo, na medida em que novas funcionalidades são inseridas, alterações são feitas, erros são corrigidos e mais código é introduzido. Para evitar que a aplicação se transforme em uma casa suja, desorganizada e difícil de manter, equipes XP utilizam a prática de refatoração.

Codigo coletivo: Em um projeto XP, os pares se revezam, as pessoas se revezam na formação dos pares e todos têm acesso e autorização para editar qualquer parte do código da aplicação, a qualquer momento. Ou seja, a propriedade do código é coletiva e todos são igualmente responsáveis por todas as partes.

Design simples: O objetivo é criar a solução (Projeto) mais simples possível que seja suficiente para implementar as funcionalidades de cada iteração.

Metafora: Metáforas são usadas frequentemente durante o desenvolvimento de sistemas, na medida em que os desenvolvedores criam elementos dentro do computador para simular outros que existem regularmente fora dele, no mundo físico. A lixeira, a mesa de trabalho, janelas, pastas e outros itens que estamos habituados a encontrar no computador, simulam elementos do mundo físico e seus respectivos comportamentos. XP procura explorar ao máximo a utilização de metáforas, para que clientes e desenvolvedores sejam capazes de estabelecer um vocabulário apropriado para o projeto.

Ritmo Sustentavel: Projetos com XP respeitam isso e seguem a filosofia de que o mais importante não é trabalhar mais e sim trabalhar de forma mais inteligente, em um período de tempo semanal que as pessoas sejam capazes de sustentar sem ficarem esgotadas e sem prejudicarem o trabalho com o déficit de atenção decorrente da fadiga.

Integração continua: Projetos com XP respeitam isso e seguem a filosofia de que o mais importante não é trabalhar mais e sim trabalhar de forma mais inteligente, em um período de tempo semanal que as pessoas sejam capazes de sustentar sem ficarem esgotadas e sem prejudicarem o trabalho com o déficit de atenção decorrente da fadiga.

Releases Curtos: Com o objetivo de receber feedback rapidamente, não apenas da pessoa que atua como cliente junto à equipe de desenvolvimento, mas de toda a comunidade de usuários do sistema, projetos com XP procuram criar versões pequenas do software, contendo poucas funcionalidades novas, mas que sejam colocadas em produção com freqüência.

CMMI:

Modelo de maturidade: Descrevem as características de processos efetivos.

Niveis de maturidade: Inicial,Gerido,Definido,Quantitativamente gerado e otimizado.

Metas e pratcas especificas: Planejamento do projeto,Gestçao de requisitos,Gestão de coniguração,Gestão de qualidade e projeto do produto,medição e analise.

Spice: O SPICE é uma norma em elaboração conjunta pela ISO e pelo IEC. Ela constitui-se de um padrão para a avaliação do processo de software, visando determinar a capacitação de uma organização. A norma visa ainda orientar a organização para uma melhoria contínua do processo. Ela cobre todos os aspectos da Qualidade do Processo de Software e está sendo elaborada num esforço conjunto de cinco centros técnicos espalhados pelo mundo (EUA, Canadá/América Latina,Europa, Pacífico Norte e Pacífico Sul).

Este modelo é dividido em cinco grandes categorias de processo:

Cliente-Fornecedor, Engenharia, Suporte, Gerência e Organização.

o SPICE define também os 6 níveis de capacitação de cada processo, que pode ser incompleto, executado, gerenciado, estabelecido, previsível e otimizado.

Iso 9000: o SPICE define também os 6 níveis de capacitação de cada processo, que pode ser incompleto, executado, gerenciado, estabelecido, previsível e otimizado.

Roger PRESSMAN define:

Software é:

• Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados;

Um dos aspectos de maior importância para o desenvolvimento de software de alta qualidade é a identificação das diferenças e das semelhanças entre produtos de software e produtos manufaturados. Há duas questões básicas:

1) Software é diferente?
2) O processo de desenvolvimento de software é diferente?

As atividades técnicas — análise e projeto, algoritmos, estruturação de dados, linguagens etc. — devem ser tratadas com métodos, técnicas e ferramentas específicos, mas a gerência do processo como um todo precisa se utilizar de conceitos e métodos idênticos aos de outras áreas: a definição de objetivos claros para a organização, o comprometimento da alta administração, o envolvimento e o preparo das pessoas, a sincronização de ações em uma mesma direção. As ferramentas para avaliação e controle gerencial também são as mesmas.

A melhoria de cada um dos processos pode ser obtida aplicando-se o ciclo Planeje /Faça / Verifique / Aja (PDCA — Plan / Do / Check / Act) também conhecido como ciclo de Deming. No nível operacional o PDCA constitui um método eficiente e direcionado para resolução dinâmica dos problemas.

A busca de alta qualidade em software tem sido realizada através de dois tratamentos principais:

Gerência do processo, que considera a necessidade de estabelecer um processo de qualidade para produzir produtos de qualidade,

Gerência do produto, que busca identificar as características tangíveis dos produtos a serem desenvolvidos, estabelecendo a partir delas diretrizes para o processo de desenvolvimento.

Qualidade de software:

A gerência do processo visa estabelecer uma infra-estrutura para suportar e guiar os

trabalhos dos diversos projetos de maneira uniforme. A gerência inclui:

• Definição do processo: estabelecer um padrão para implementação, avaliação e melhoria de cada tarefa;

• Execução do processo: definir os métodos e técnicas usadas para produzir produtos com qualidade;

• Coleta de dados e análise: tratar as medições realizadas dos produtos e processos de software, e o uso desses dados;

• Controle do processo: estabelecer mecanismos para certificar o desempenho do processo definido; monitorar e ajustar o processo onde melhorias forem necessárias.

Iso iec 9003: A ISO/IEC 9000-3 (Software and Systems Engineering — Guidelines for the Application of ISO 9001:2000 to Computer Software) é uma Norma da ISO que fornece um guia para organizações na aplicação da ISO 9001:2000 para aquisição, fornecimento, desenvolvimento, operação e manutenção de software de computador.

Interação Homem - Computador: A avaliação tem três objetivos principais: avaliar a extensão das funcionalidades do sistema, avaliar os efeitos da interface nos usuários (facilidade de aprendizagem, facilidade e eficiência de uso e efetivo suporte à tarefa) e identificar algum problema com o sistema.

Técnicas para Avaliação: Existem basicamente dois tipos de técnicas de avaliação: as analíticas e as empíricas. As analíticas dispensam a participação do usuário já nas empíricas, esses têm participação ativa.

Avaliação heurística: Esta técnica é similar à avaliação cognitiva. Os avaliadores estão livres para examinarem a interface a procura de problemas que violem critérios de uma lista de heurísticas de usabilidade.

Critérios Ergonômicos: A partir de uma base de recomendações ergonômicas examinadas exaustivamente, foi desenvolvido um conjunto de critérios ergonômicos. Esses critérios são divididos em oito critérios:

1 - A condução se define na gentileza (presteza) do sistema, na legibilidade das informações e telas, no feedback imediato das ações do usuário e no agrupamento e distinção entre itens nas telas.

2- A carga de trabalho se define na brevidade das apresentações (concisão) e das entradas (ações mínimas) e na densidade informacional das telas como um todo;

3-O controle explícito se define no caráter explícito das ações do usuário (ações explícitas) e no controle que ele tem sobre os processamentos (controle do usuário);

4- A adaptabilidade refere-se tanto as possibilidades de personalização do sistema que são oferecidas ao usuário (flexibilidade).

5- A gestão de erros refere-se tanto aos dispositivos de prevenção que possam ser efinidos nas interfaces (proteção contra erros).

Exploração Cognitiva: O seu objetivo é avaliar as condições ue o software oferece para que o usuário tenha um rápido aprendizado e como eles xecutarão as tarefas.

Exploração Heurística: A Exploração Heurística combina as vantagens de dois diferentes tipos de écnica de avaliação: Avaliação Heurística e Exploração Cognitiva. Esse método é ealizado em duas etapas. Os avaliadores são conduzidos por uma lista de tarefas, uma ista de questões e uma lista de heurísticas de usabilidade.

Ensaio de Interação: O ensaio de interação é um método empírico de avaliação que exige a articipação direta de usuários. Ele consiste de uma simulação do uso do sistema ealizado por usuários representativos, tentando fazer tarefas típicas, com o sistema a ser valiado.

Ferramentas baseadas em verificação por Checklist: O Checklist é uma ferramenta que auxilia a avaliação da usabilidade de sistemas nterativos. Ele se caracteriza pela verificação da conformidade da interface de um istema interativo por meio de recomendações ergonômicas contidas numa lista de verificação.

Norma ISO 9241: A norma ISO 9241 é uma norma internacional que trata do trabalho de escritório nformatizado. Ela tem a função de propiciar eficiência e conforto para os usuários de omputadores e é destinada a profissionais que possuem a função de garantir segurança a saúde dos mesmos.

Sistemas Espiões: Sistemas Espiões são ferramentas usadas para se realizar avaliação da usabilidade de interface de software, de maneira empírica, isto é, com a participação do usuário. Essas ferramentas são programas informatizados e possuem a característica de permanecerem residentes no computador do usuário, simultaneamente ao sistema que está sendo avaliado.

Normas de qualidade:

Qualidade de Produto de Software:
ISO/IEC 9126-1: Modelo de Qualidade;
ISO/IEC 9126-2: Métricas Externas;
ISO/IEC 9126-3: Métricas Internas; e
ISO/IEC 9126-4: Métricas de Qualidade em Uso.

Iso 9126: Qualidade dos Produtos de Software

O modelo de qualidade definido na ISO/IEC 9126-1 e utilizado como referência para o processo de avaliação da qualidade de produto de software, está subdividido em duas partes:
Modelo de qualidade para características externas e internas;
Modelo de qualidade para qualidade em uso.

Têm-se as seguintes características de qualidade:
Funcionalidade;
Confiabilidade;
Usabilidade;
Eficiência;
Manutenibilidade;
Portabilidade.

Reengenharia de Software:

Reorganizar e modificar os sistemas de software existentes para aumentar o seu ciclo de vida.

Objetivo:

Compreender por que a reengenharia é uma opção eficaz, em termos de custos, para a evolução do sistema de software.

Compreender as atividades, como engenharia reversa e reestruturação de programa, que podem estarenvolvidas no processo de reengenharia de software.

Compreender as diferenças entre reengenharia de software e de dados e por que a reengenharia é um processo dispendioso e demorado.

Reengenharia de sistema:

Reestruturar ou reescrever todo ou parte de um sistema legado sem alterar a sua funcionalidade.

Quando aplicar Reengenharia: Quando as mudanças de sistema estão confinadas a uma parte do sistema, então faz a reengenharia dessa a parte.

Vantagens da reengenharia:

Riscos Reduzidos: Existe um alto risco em desenvolver um software novo que seja essencial. Podem ser cometidos erros na especificação do sistema e ocorrer problemas de desenvolvimento.

Custos reduzidos: O custo da reengenharia é significativamente menor do que os custos de desenvolvimento de um novo software.

Reengenharia no processo de negocio: Se ocupa de reprojetar processos de negócios, a fim de reduzir o número de atividades redundantes e melhorar a eficiência do processo.

Atividades no processode Reengenharia:

Tradução Codigo Fonte
Engenharia reversa
Melhoria de estrutura do programa
Modularização de programa
Reengenharia de dados

Engenharia reversa: É o processo de analisar o software com o objetivo de recuperar seu projeto e sua especificação.

Entradas relacionadas: