Desenvolvimento Distribuído de Software

Slides:



Advertisements
Apresentações semelhantes
Boas Práticas Adotadas em um Projeto de Design de Testes – Um relato de experiência
Advertisements

Garantia da Qualidade Mário Eduardo.
Sistema Gerenciador de Ocorrências
Tópicos Motivação para teste Por que algumas empresas não testam
Gestão de Projetos Áreas de conhecimentos Integração
Desenvolvimento ágil: eXtreme Programming vs SCRUM Tiago Rodrigues de Mello CCO-230 – ENGENHARIA DE SOFTWARE / 2010.
CK 119: Engenharia de Software DC/CC/UFC © Rossana Andrade, Setembro CK119: Engenharia de Software Rossana Andrade Ph.D, SITE, University of Ottawa,
Reutilização de Software
um processo ágil de desenvolvimento de software
Guilherme Siqueira Simões
Gestão de Defeitos Vanilson Burégio.
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Metodologia Versão 2 FSRS.
FDD.
Gerenciamento de Requisitos com Casos de Uso
Alunos: Artulanez Souza Iony Melo
RUPinho Qualidade de Software
Gestão de Projetos.
Técnicas e Projeto de Sistemas
Engenharia de Software
Planejamento e Gerenciamento de Projetos
Visão Geral PRO.NET.
Projeto: Capacitação em GP
Gerenciamento do Escopo: principais conceitos
IEEE Std IEEE Melhores Práticas para Especificações de Requisitos de Software (ERS)
Gerenciamento da Integração
Engenharia de Software
Rapid Application Development (RAD)
Desenvolvimento Rápido de Aplicação (RAD)
Gerência de Configuração - GC
ANÁLISE E DESENVOLVIMENTO
PSBD II Projeto de Sistemas de Banco de Dados II
O Processo de desenvolvimento de software
Plano de Manutenção <RedMan>
Um Processo de Desenvolvimento de Software para Uso no Ambiente Acadêmico.
Engenharia de Software
Gestão de defeitos.
RUP - Cap. 4 – Processo Centrado na Arquitetura
Processo de Desenvolvimento de Software – PDS C Construção - PAS
Conceitos Básicos Introdução.
SCRUM Processo de Desenvolvimento de Software
Hukarz Open Source Process D01 Alan Kelon, Silvio Meira Recife, 01/12/2006.
Engenharia de Software
ADS – 5º Semestre Trabalho de Conclusão de Curso
Análise de um curso a distância que utilizou uma nova ferramenta de Courseware chamada Moodle Use este modelo para criar páginas da Web de intranet.
Gestão de projetos de Software GTI-16
Integração.
Metodologias Ágeis Para o Desenvolvimento de Software
Métodos Ágeis e Programação Extrema (XP)
Engenharia de Software
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína ANA PAULA LIMA.
Engenharia de Software
Distribuição de Software Alexandre Vasconcelos © Centro de Informática Universidade Federal de Pernambuco.
Capítulo 8: Implementando SAD orientado a grupo
Modelos de Processo de Software eXtreme Programming André DrummondRA Danilo BenzattiRA MO409 – Engenharia de Software Profa. Eliane Martins.
SISTEMA DE MONITORAMENTO DA TECNOLOGIA DA INFORMAÇÃO.
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína XP (EXTREME PROGRAMMING) Pós-Graduação em Engenharia de Software Metodologias.
Erton W. Vieira Metodologias Ágeis, Qualidade de Software e Design Centrado no usuário: Pontos de Interação Erton W. Vieira.
Sobre a Prime Control A Prime Control é um Centro de Excelência em Qualidade de Software. Nossa missão é desenvolver, aperfeiçoar e realizar serviços.
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
PSDS com CMMI Nível 2 Dimitri de Almeida Malheiros Barbosa 27/03/2006.
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
Estudo Comparativo Entre Metodologias Ágeis e Tradicionais Aluno: Márcia Seabra Cabral Professor: Augusto Sampaio Disciplina: Tópicos Avançados em Engenharia.
O uso de XP em uma Organização CMM 2 Renata Endriss
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Planejamento do Projeto Exemplo Curso Hands-on de Gestão de Projetos Eduardo Montes, PMP.
Solução sistêmica para apoiar os processos de fiscalização da Arsesp Agosto/2015 IX Congresso Brasileiro de Regulação.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

Desenvolvimento Distribuído de Software Em busca de uma METODOLOGIA Yuska Paola Costa Aguiar yuska@dsc.ufcg.edu.br www.dsc.ufcg.edu.br/~yuska Novembro de 2005

Roteiro Introdução Cenários Práticas Ferramentas Processo de Desenvolvimento Mensuração do Esforço Empenhado Conclusões Referências

Introdução Desenvolvimento Distribuído de Software (DDS) é uma realidade baseada em práticas e apoiada em ferramentas É possível adequar metodologias e processos existentes para a realidade do DDS? É mais prudente propor uma metodologia capaz de guiar o DDS a partir das características, das práticas e das ferramentas existentes? Em destaque as que open source necessita mas não tem. As demais são tradicionais e não fazem parte das características de desenvolvimento distribuído.

Cenários [ANGIONI, SANNA, SORO-2005] Outsourcing Uma empresa contrata outra para desenvolver módulos ou partes do software Offshore Outsourcing: as empresas estão localizadas em países diferentes. Maior dificuldade devido as barreiras culturais, de idioma, de padrões... E-lancing [MALONE - 1998] Rede virtual de freelancer que trabalham juntos no desenvolvimento de um software. Quando o software é concluído a rede se dissolve e seus membros continuam a trabalhar independentemente Open Source Um time de desenvolvedores central é responsável por integrar as funcionalidades, partes do código desenvolvidas por outros programadores que estão geograficamente distribuídos e contribuindo “voluntariamente” para com o projeto Consideraremos Open Source!!!!!!

Práticas [ROBINS - 2005] Prover acesso imediato e universal Disponibilizar todos os artefatos atualizados (custo zero) Código da aplicação, projeto, bugs em aberto, responsabilidades dos desenvolvedores, cronograma, projeto arquitetural... Voluntários motivados Colaboradores geralmente são usuários Open Source Incluir necessidades particulares no software Prazer de ter sua contribuição aceita Necessitar de validação externa de suas habilidades... Encorajar a pluralidade de colaboradores Os colaboradores devem apoiar uns aos outros Crescimento da população Estímulo para a criação de novas funcionalidades

Práticas [ROBINS - 2005] Trabalhar em comunidade (Práticas) A fim de acumular bens de software Ambiente Colaborativos de Desenvolvimento (SourceForge e SourceCast) Seguir Padrões Validação do projeto Tomada de decisão de escopo Implantação do reuso Cultura de Reuso Contribui no gerenciamento do escopo Apresenta resultados mais rapidamente Evita duplicação de código

Práticas [ROBINS - 2005] Releases rápidos e freqüentes Revisão dos colegas Eliminação de defeitos de codificação Aumento na qualidade do código produzido Integração [JORGENSEN - 2005] Sua prática freqüente reduz a carga de trabalho Na maioria dos casos Open Source é uma atividade centralizada Centralização da Integração em um ambiente descentralizado. Existe uma contradição?

Integração [JORGENSEN - 2005] Integração Centralizada Sobrecarregar o executor da tarefa Demandar mais tempo para disponibilizar uma nova versão Desestimular o relato ou reparo de erros Integração Descentralizada É responsabilidade do programador integrar o código modificado Deve ser acompanhado por Testes e Revisão dos Colegas O código não tem dono, mas existe um responsável pela manutenção do mesmo no que diz respeito a fixar bugs encontrados por outros desenvolvedores e responder aos problemas reportados; Estimula os desenvolvedores

Ferramentas [ROBINS - 2005] Controle de Versão CVS, WinCVS, CVSWeb, TortoiseSVN Acesso universal - Releases freqüentes - Integração – Revisão dos colegas Suporte Técnico e Rastreamento de Erros Bugzilla, Scarab Releases freqüentes – Revisão dos colegas Lista de e-mails Comunicação Sites Web do projeto Acesso universal – Reuso

Ferramentas [ROBINS - 2005] HOWTOs, FAQs Orientada a objetivos Acesso universal – Comunicação Wiki, TWiki, SubWiki Atualização feita pelos usuários Exemplo de como organizar as informações Construção do Sistema Make, Automake, Autoconf, Ant, Tinderbox, gump, CruiseControl, XenoFarm, Maven Motiva os desenvolvedores

Ferramentas [ROBINS - 2005] Projeto e Geração de Código Torque, Castor, Hibernate XDoclet, vDoclet.JUnitDoclet, Doxygen Motiva os desenvolvedores Garantia de Segurança JUnit, PHPUnit, PyUnit, NUnit (testes) Lint, LCLint, Checkstyle, JCSC, JDepend, PyCheck, RATS, Flawfinder (erros de inicialização de variáveis, chamada a bibliotecas incorretas) Codestriker (revisão remota de código) Qualidade – Integração – Revisão dos colegas

Ferramentas [ROBINS - 2005] O que falta? Suporte para atividade tradicionais de: Gerenciamento de requisitos Gerenciamento de projeto Métricas Estimativas Cronograma Projeto de teste

Impacto da Utilização das Ferramentas [ROBINS - 2005] Ferramentas são gratuitas Mais membros do time de desenvolvimento estão aptos a acessar e contribuir com os artefatos durante todas as fases do desenvolvimento Todos os artefatos disponíveis e atualizados Redução de “retrabalho” Reuso Contribuição dos Stakeholders Acesso a informações atualizadas pode estimular a participação dos interessados

Impacto da Utilização das Ferramentas [ROBINS - 2005] Ferramentas suportam releases incrementais Os releases podem acontecer mais cedo e com maior freqüência Diminuição da sobrecarga dos desenvolvedores Aumento da produção e da satisfação dos desenvolvedores O suporte a revisão dos colegas Aumenta a qualidade do produto Diminui o retrabalho Erros são encontrados precocemente

Processo de Desenvolvimento Metodologias tradicionais não dão suporte as características existentes no Desenvolvimento Distribuído de Software Algumas práticas apontam para um conjunto de aspectos a serem levados em consideração quando se tenta elaborar um processo de desenvolvimento de software adequado a essa realidade Processos Ágeis parecem ser mais adequados as características do Desenvolvimento Distribuído de Software

Processo de Desenvolvimento [ANGIONI, SANNA, SORO - 2005] Metodologias Ágeis X DDS Características Comuns: Mudança como regra Releases freqüentes Feedback contínuo Padrões de codificação Valorização da comunicação Propriedade coletiva de código Características Divergentes: Cliente “real” não existe (Open Source)

Processo de Desenvolvimento [ANGIONI, SANNA, SORO - 2005] MAAD (Methodology for Agile Distributed Development) Projeto Todos devem ter uma visão única Requisitos Descritos detalhadamente (Mapeamento requisito  código deve ser fácil) Tarefas As maiores devem ser quebradas em menores, e as menores agrupadas em maiores Desenvolvedores Escolhe com o que trabalhar (respeitando as prioridades estabelecidas) Devem estar informados sobre o que os outros desenvolvedores estão fazendo (Open Source?) Releases Constantes, flexíveis no conteúdo, mas rígidos na data de entrega (Open Source?) MAAD está sendo aplicada na universidade de Cagliari (Itália) no desenvolvimento de um portal Web e um CMS, integrado com a plataforma e-learning e ao banco de dados da universidade. 30 participantes, na maioria estudantes, estão aplicando a metodologia. Eles são desenvolvedores e futuros usuários do produto final. Os desenvolvedores estão trabalhando de maneira distribuída,

Processo de Desenvolvimento [ANGIONI, SANNA, SORO - 2005] Documentação Atualizada Disponível Enxuta Código Padrões de codificação Testes Refatoramento Integração contínua Feedback Do time de desenvolvimento Do cliente (Open Source)

Mensuração do Esforço Empenhado [DALLE, DAVID - 2005] Tentativa de encontrar um modelo de produção (matemático econômico) capaz de representar o esforço empenhado pelos desenvolvedores em um projeto onde o desenvolvimento acontece de forma distribuída Número de linhas adicionadas e removidas Correção de bugs Melhoria do código Módulos de baixo nível possuem mais valor Diversidade de funcionalidades possibilita combinações Maior confiabilidade em códigos mais “conhecido” pela comunidade O empenho depende da motivação dos colaboradores Um único colaborador contribuindo para o crescimento de vários projetos distintos A “alocação de pessoal” é mais probabilística do que determinística

Conclusões Questões presentes em metodologias ágeis não podem ser substituídas, com mesma eficiência, por “encontros virtuais” ou revisão dos amigos Stand-up Meeting Programação em Pares As características de Outsourcing, E-lancing e Open Source podem ser consideradas distantes quando se tenta traçar uma metodologia comum aos três cenários Presença do Cliente Gestão de Pessoal Os projetos oferecem características peculiares, fator que dificulta a consolidação de uma metodologia de apoio. O que é mais provável é a indicação de aspectos a considerar quando se fala de ambiente distribuído de software Comunicação Integração Contínua Releases Freqüentes Uso de Padrões

Referências [JORGENSEN - 2005] JORGENSEN, Niels. Incremental and decentralized Integration in FreeBSD. In: FELLER, Joseph, FITZGERALD, Brian, HISSAM, Scott A., LAKHANI, Karim R.. Perspectives on Free and Open source Software. Massachusets Institute of Tecnology, Library of Congress Cataloging-Publication Data, 2005. p. 227-243. [ROBBINS - 2005] ROBBINS, Jason. Adopting Open Source Software Engineering (OSSE) Pratices by Adopting OSSE Tools. In: FELLER, Joseph, FITZGERALD, Brian, HISSAM, Scott A., LAKHANI, Karim R.. Perspectives on Free and Open source Software. Massachusets Institute of Tecnology, Library of Congress Cataloging-Publication Data, 2005. p. 245-264. [DALLE, DAVID - 2005] DALLE, Jean-Michel, DAVID, Paul A.. Allocation of Software Development Resources in Open Source Procuction Mode. In: FELLER, Joseph, FITZGERALD, Brian, HISSAM, Scott A., LAKHANI, Karim R.. Perspectives on Free and Open source Software. Massachusets Institute of Tecnology, Library of Congress Cataloging-Publication Data, 2005. p. 297-227. [ANGIONI, SANNA, SORO - 2005] ANGIONI, Manuela, SANNA, Raffaella, SORO, Alessandro. Defining a Distributed Agile Methodology for na Open Source Scenario. Proceedings of the First International Conference on Open Source Systems, Genova, Julho de 2005. p. 209- 214. [MALONE - 1998] MALONE, Thomas W., LAUBACHER, Robert J.. The Dawn of e-lance Economy. Harvard Business Review, 1998. p. 145-152. Download em: http://www.hbsp.harvard.edu.