sexta-feira, junho 16, 2006

Uma linguagem de padrões para automação de projetos de desenvolvimento ágil de software com ênfase na plataforma J2EE

Finalmente um artigo para falar sobre minha dissertação de mestrado! Já estou quase pronto para a qualificação, que será provavelmente em agosto de 2006. A defesa provavelmente será em janeiro ou fevereiro de 2007. Meu orientador é o Professor Doutor Mauro de Mesquita Spínola do departamento de Engenharia de Produção da Poli-USP.

Assim que qualificar, eu a colocarei no site Erudio.

Mas aí vai uma pequena dose! Ela também forneceu a base para um tutorial que submeti ao SEPG LA com o título: "Automação de fábricas de software e projetos de desenvolvimento de sistemas com ferramentas livres: Uma abordagem prática".

O título da dissertação é: "Uma linguagem de padrões para automação de projetos de desenvolvimento ágil de software com ênfase na plataforma J2EE"

RESUMO:

Estudos realizados em diversas partes do mundo mostram o grande número de projetos abandonados antes do término. Um estudo de 1995 mostrou que 32 por cento dos projetos norte-americanos de tecnologia da informação corporativos foram abandonados antes de completar, a um custo total estimado de 81 bilhões de dólares. De acordo com o Extreme Chaos Report (2001), 137.000 projetos nos Estados Unidos tiveram atraso ou ficaram acima do orçamento, enquanto outros 65.000 projetos falharam completamente.

Pode-se considerar também que as empresas que se destacam no negócio de software são as que possuem um processo de criação e inovação de produtos ágil e eficaz.

Novas técnicas e processos pautados no paradigma ágil surgiram com o objetivo de solucionar os problemas da complexidade do desenvolvimento de novos softwares e para fornecer agilidade no lançamento de novos sistemas e produtos. Além disso, o apoio de um ambiente automatizado para o desenvolvimento de software pode trazer melhorias para a agilidade e a qualidade do processo e do produto de software. Mesmo assim, percebe-se que poucas empresas que desenvolvem software e sistemas possuem um ambiente automatizado organizado e que apóie a agilidade.

Este trabalho exploratório tem como objetivo propor um conjunto de soluções específicas para a automação de ambientes colaborativos, com ênfase no desenvolvimento ágil de software e foco na plataforma J2EE. Para atender a esse objetivo utiliza-se o formato dos padrões (patterns) e da linguagem de padrões (pattern language), já estabelecidos como úteis para documentar soluções dentro da comunidade de desenvolvimento de software. Estes padrões trazem recomendações de ferramentas específicas para apoiar a automação de projetos J2EE.

A pesquisa bibliográfica dos padrões é complementada por um web survey e por um estudo de caso incorporado de casos múltiplos. O intuito dessas outras duas estratégias é fornecer dados para fundamentar a pesquisa bibliográfica e analisar questões de investigação levantadas em apoio ao problema central.

PALAVRAS-CHAVE:
Padrões, desenvolvimento ágil de software, rastreabilidade, ambientes colaborativos de desenvolvimento de software, ferramentas de apoio ao desenvolvimento de software, automação de fábricas e projetos de software, Java 2 Platform Enterprise Edition, J2EE,

OBJETIVOS:

Este trabalho tem como objetivo geral propor um conjunto de soluções específicas para a automação de ambientes colaborativos de projetos, com ênfase no desenvolvimento ágil de software e foco na plataforma J2EE (Java 2 Platform, Enterprise Edition). Para atender a esse objetivo utiliza-se o formato dos padrões e da linguagem de padrões, já estabelecidos como úteis para documentar soluções dentro da comunidade de desenvolvimento de software (APPLETON, 2000). Os padrões facilitam a descrição de melhores práticas e ferramentas para um determinado contexto contendo problemas comuns a uma comunidade de pessoas (ALUR et al, 2003).

Os objetivos específicos são:
• Determinar e descrever, em formato de linguagem de padrões, as práticas para automação de projetos para apoio a processos ágeis e ao atendimento de algumas condições de áreas de processo do CMMI.
• Propor um caminho incremental e estabelecer dependências entre padrões, para facilitar o planejamento de adoção da automação em uma organização. De acordo com Humphrey (1989), o plano de automação é essencial para gerar os resultados esperados pela automação do ambiente de engenharia de software.
• Indicar ferramentas específicas para elaborar um ambiente de automação para a plataforma J2EE, como forma de exemplificar os padrões. Preferencialmente as indicações são de ferramentas open source, gratuitas ou de baixo custo.
• Avaliar, de forma exploratória, o estado atual da automação em empresas brasileiras, analisar quais os atributos de um ambiente de desenvolvimento são considerados essenciais e sua importância para a melhoria do processo de desenvolvimento.


A1. SUMÀRIO DOS PADRÕES DE AUTOMAÇÃO PARA CONSTRUÇÃO E IMPLANTAÇÃO

Controle de Versões: Como compartilhar código entre desenvolvedores, realizar desenvolvimento paralelo e controlar alterações? Ferramenta de controle de versões

Automação do Build: Como reduzir o tempo do processo de geração de software e o número de erros neste processo? Ferramenta de automação de build

Automação da Instalação:Como reduzir o tempo do processo de implantação de software e o número de erros neste processo? Ferramenta de automação de instalação e implantação

Integração Contínua: Como realizar a integração freqüente do código gerado por diversos membros da equipe? Ferramenta de Integração Contínua

A2. SUMÀRIO DOS PADRÕES DE AUTOMAÇÃO PARA QUALIDADE DO PRODUTO

Automação de Testes Unitários: Como aumentar a confiabilidade do sistema e colocar a qualidade no processo de construção de código? Ferramenta de testes unitários

Automação de Testes de Aceitação: Como realizar testes regressivos em sistemas com longo ciclo de vida? Ferramenta de testes de aceitação automatizados

Automação de Métricas de Produto: Como garantir a qualidade interna do produto através de métricas? Ferramentas de geração automatizada de métricas

Revisão Colaborativa: Como manter os resultados de revisões centralizados? Ferramenta de revisão colaborativa

A3. SUMÀRIO DOS PADRÕES DE AUTOMAÇÃO PARA PLANEJAMENTO E COLABORAÇÃO

Gestão do Fluxo de Incidências: Como manter todos os itens de incidências de um projeto registrados e atualizados? Ferramenta de gestão de incidências

Gestão Colaborativa de Testes: Como organizar de forma centralizada o processo de testes? Ferramenta de gestão de testes

Rastreabilidade: Como realizar a rastreabilidade bidirecional sem o ônus de uma matriz de rastreabilidade gerada manualmente? Integração entre ferramentas

Planejamento Colaborativo: Como manter todo o planejamento colaborativo de um projeto? Ferramenta de planejamento colaborativo

Radiadores de Informação: Como disponibilizar diversas informações como relatórios de testes, de métricas e de planejamento? Ferramentas de portais, relatórios de ferramentas de automação de qualidade e das ferramentas de planejamento e colaboração

REFERÊNCIAS BIBLIOGRÁFICAS

AHERN, D; et al. CMMI SCAMPI Distilled. Boston:Addison-Wesley, 2005.

ALUR, D.; CRUPI, J.; MALKS, D. Core J2EE Patterns. 2nd Edition. California: Prentice Hall, 2003.

AGILE ALLIANCE. Agile Manifesto.

AMBLER, Scott. Modelagem Ágil: Práticas eficazes para a Programação Extrema e o Processo Unificado. São Paulo: Bookman Editora, 2004.

ANDERSON, D. et al. Declaration of Interdependence, Agile PM, 2005.

APPLETON, B. Patterns and Software: Essential Concepts and Terminology. Hillside.Net, 2000.

BABBIE, Earl. Métodos de Pesquisas de Survey. Belo Horizonte: Editora UFMG, 2005.

BECK, Kent. Extreme Programming Explained: Embrace Change. 2nd Edition. Boston: Addison-Wesley, 2004.

BELL, J.; LAMBROS, J.; NG, S. J2EE Open Source Toolkit: Building an Enterprise Plaform with Open Source Tools. Indianapolis: Wiley Publishing, 2003.

BERCZUK, S.; APPLETON, B. Software Configuration Management Patterns. Boston: Addison-Wesley, 2002.

BOEHM, B; et al. Software Cost Estimation with COCOMO II. New Jersey: Prentice Hall PTR, 2000.

BOEHM, B.; TURNER, R. Balancing Agility and Discipline: A Guide for the Perplexed. Boston: Addison-Wesley, 2003.

BOOCH, G.; BROWN, A. Collaborative Development Environments. Advances in Computers, Vol. 59, Academic Press, 2003.

BLOOMBERG. Japan Stocks Fall, Led by Sony on Game Delay Report; Banks Drop, New York, 2006.

BRAMBLE, P.; et al. Patterns for Effective Use Cases. Boston:Addison-Wesley, 2002.

BROOKS, Frederick. The Mythical Man-Month: Essays on Software Engineering Anniversary Edition. 2nd Edition. Boston:Addison-Wesley, 1995.

CARNELL, J.; HARROP, R. Pro Jakarta Struts. 2nd Edition. Berkeley: Apress, 2004.

CHENG, Li-te; et al. Jazzing Up Eclipse with Collaborative Tools. Proceedings of the 2003 OOPSLA workshop on Eclipse technology Exchange. Pages 45-49. New York: ACM Press, 2003.

CLAVER, E.; GONZÁLEZ, R.; LLOPIS, J. An analysis of research in information systems (1981-1997). Estados Unidos: Information & Management 37 (págs. 181-195), 2000.

COAR, Ken. The Sun Never Sets on Distributed Development. ACM Queue. Vol. 1, No. 9, December/January 2003-2004.

COCKBURN, Alistair. Surviving Object-Oriented Projects. Boston: Addison-Wesley, 1998.

COCKBURN, Alistair. Agile Software Development. Boston: Addison-Wesley, 2001.

COCKBURN, Alistair. Crystal Clear: A Human-Powered Methodology for Small Teams. Boston: Addison-Wesley, 2004a.

COCKBURN, Alistair. What the Agile Toolbox Contains. 2004b.

COOPER, Robert. Winning at New Products: Accelerating the Process from Idea to Launch. 3rd Edition. New York: Basic Books, 2001.

COPLIEN, J.; HARRISON, N. Organizational Patterns of Agile Software Development. New Jersey: Prentice Hall, 2004.

CUSUMANO, Michael. The Business of Software. New York: Free Press, 2004.

DECARLO, Doug. Extreme Project Management. San Francisco: Jossey-Bass, 2004.

DEMARCO, T.; LISTER, T. Peopleware: Productive Projects and Teams. 2nd Edition. New York: Dorset House Publishing, 1999.

DESCHAMPS, J.; NAYAK, P. R. Product Juggernauts: How Companies Mobilize to Generate a Stream of Market Winners. Boston: Harvard Business School Press, 1995.

DOAR, Matthew. Practical Development Environments. California: O’Reilly Media, 2005.

EWUSI-MENSAH, KWEKU. Software Development Failures. Cambridge: MIT Press, 2003.

FERNANDES, A. A.; TEIXEIRA, D. S. Fábrica de Software: Implantação e Gestão de Operações. São Paulo: Editora Atlas, 2003.

FOGEL, Karl. Producing Open Source Software: How to Run a Successful software project. California: O’Reilly Media, 2005.

FOWLER, Martin. Analysis Patterns: Reusable Object Models. Boston: Addison-Wesley, 1997.

FOWLER, Martin. The New Methodology.

GABRIEL, RICHARD. Patterns of Software: Tales from the Software Community. Oxford: Oxford University Press, 1996.

GAMMA, E. et al. Design Patterns: Elements of Reusable Object-Oriented Software. Boston: Addison-Wesley, 1995.

GIL, Antonio Carlos. Como Elaborar Projetos de Pesquisa. 4ª. Edição. São Paulo: Editora Atlas, 2002.

HEFFNER, RANDY. .NET versus J2EE: Both Application Platforms are Long-Term Winners. Sumário Executivo. Forrester Research, 2004.

HIGHSMITH, James A., III. Adaptive Software Development: A Collaborative Approach to Managing Complex Systems. New York: Dorset House Publishing, 2000.

HIGHSMITH, Jim. Agile Software Development Ecosystems. Boston: Addison-Wesley, 2002.

HIGHSMITH, Jim. Agile Project Management. Boston: Addison-Wesley, 2004.

HIGHTOWER, R. et al. Professional Java Tools for Extreme Programming. Indianapolis: Wiley Publishing, 2004.

HUMPHREY, Watts. Managing the Software Process. Boston: Addison-Wesley, 1989.

LARMAN, Craig. Agile and Iterative Development: A Manager’s Guide. Boston: Addison-Wesley, 2004.

LEFFINGWELL, D.; MUIRHEAD, D. Tactical Management of Agile Development: Achieving Competitive Advantage, Colorado: Rally SDC, 2004.

MARCONI, M. A.; LAKATOS, E. M. Técnicas de Pesquisa. 5ª. Edição. São Paulo: Editora Atlas, 2002.

McCONNELL, Steve. Software Estimation: Demystifying the Black Art. Redmond: Microsoft Press, 2006.

McGRATH, Michael. Product Strategy for High-Technology Companies, 2nd Edition. New York: McGraw-Hill, 2001.

MCT. Qualidade e Produtividade no Setor de Software. Brasília: Ministério da Ciência e Tecnologia, 2001.

MESZAROS, G.; DOBLE, J. A Pattern Language for Pattern Writing. Hillside.Net, 2004.

ÖVERGAARD, G.; PALMKVIST, K. Use Cases Patterns and Blueprints. Boston: Addison-Wesley, 2004.

PALMER, S.; FELSING, J. A Practical Guide to Feature-Driven Development. New Jersey: Prentice-Hall 2002.

POPPENDIECK, M.; POPPENDIECK, T. Lean Software Development: An Agile Toolkit. Boston: Addison-Wesley, 2003.

PORTER, Michael. Estratégia Competitiva. 6a. Edição. Rio de Janeiro: Editora Campus, 1986.

PRESSMAN, Roger. Engenharia de Software. 6a. Edição. São Paulo: Editora McGraw-Hill, 2006.

PROJECT MANAGEMENT INSTITUTE. A Guide to the Project Management Body of Knowledge (PMBOK Guide). 3rd Edition. Newton Square: Project Management Institute, 2004.

REA, L. M.; Parker, R. A. Metodologia de Pesquisa. São Paulo: Editora Pioneira: 2000.

REINERTSEN, Donald. Managing the Design Factory: A Product Developer’s Toolkit. New York: Free Press, 1997.

RICHARDSON, Chris. POJOs in Action: Developing Enterprise Applications with Lightweight Frameworks. Greenwich: Manning Publications, 2006.

RICHARDSON, J.; GWALTNEY, W. Ship It! : A Practical Guide to Successful Software Projects. North Carolina:The Pragmatic Programmers LLC, 2005.

RISING, Linda. Patterns: A Way to Reuse Expertise. AG Communications Systems, 2001.

RÜPING, Andreas. Agile Documentation: A Pattern Guide to producing lightweight documents for software projects. West Sussex: John Wiley & Sons, 2003.

SCHWABER, K.; BEEDLE, M. Agile Software Development with SCRUM. New Jersey: Prentice Hall, 2002.

SCHWABER, Ken. Agile Project Management with SCRUM. Redmond: Microsoft Press, 2004.

SEVERINO, Antônio Joaquim. Metodologia do Trabalho Científico. 22ª. Edição. São Paulo: Cortez Editora, 2002.

SINGH, I. et al. Designing Enterprise Applications with the J2EE Platform. 2nd Edition. Boston: Addison-Wesley, 2002.

SMITH, P. G.; REINERTSEN, D. G. Developing Products in Half the Time. 2nd Edition. New York: John Wiley & Sons, 1998.

STANDISH. Extreme Chaos Report 2001. Standish Group.

SUN MICROSYSTEMS a. Java 2 Platform, Enterprise Edition(J2EE) Overview. Sun Microsystems, 2004.

SUN MICROSYSTEMS b. Authorized Licensees of the J2EE Platform. Sun Microsystems, 2004.

THE MIDDLEWARE COMPANY. J2EE Application Server Survey 2004. The Middleware Company, 2004.

THOMSETT, Rob. Radical Project Management. New Jersey: Prentice Hall, 2002.

VIANNA, Ilca O. de Almeida. Metodologia do Trabalho Científico. São Paulo: E.P.U., 2001.

WYSOCKI, R. K.; MCGARY, R. Effective Project Management: Traditional, Adaptive, Extreme, 3rd Edition. Indianapolis: Wiley Publishing, 2003.

YIN, Robert K. Estudo de Caso: Planejamento e Métodos. 3ª. Edição. Porto Alegre: Editora Bookman, 2005.

ZIKMUND, William. Princípios da Pesquisa de Marketing. 2ª. Edição. São Paulo: Thomson, 2006.


REFERÊNCIAS CONSULTADAS

AMBLER, Scott. Don´t Enter the Matrix: What´s up with agile requirements traceability? Dr. Dobbs Journal, October 2005.

ANDERSON, David. Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results. New Jersey: Prentice Hall, 2004.

APPLETON, B.; et al. The Trouble with Tracing: Traceability Dissected. CM Crossroads, 2005.

BERCZUK, Steve. Pragmatic Software Configuration Management. IEEE Software, March/April 2003.

CANTOR, Murray. Software Leadership: A Guide to successful Software Development. Boston: Addison-Wesley, 2002.

COHN, Mike. Agile Estimating and Planning. Boston: Addison-Wesley, 2006.

CLARK, Mike. Pragmatic Project Automation. North Carolina:The Pragmatic Programmers LLC, 2004.

CUSUMANO, M.; SELBY, R. Os Segredos da Microsoft. São Paulo: Editora Ática, 1996.

CUSUMANO, M.; YOFFIE, D. Competing on Internet Time. New York: The Free Press, 1998.

DEMARCO, T.; LISTER, T. Waltzing with Bears: Managing Risk on Software Projects. New York: Dorset House Publishing, 2003.

FOWLER, Martin. Refactoring: Improving the Design of existing Code. Boston: Addison-Wesley, 2000.

FOWLER, M.; FOEMMEL, M. Continuous Integration, Martin Fowler, 2005.

GULZAR, Nadir. Practical J2EE Application Architecture. California: McGraw-Hill, 2003.

HUNT, A.; THOMAS, D. Pragmatic Unit Testing in Java with JUnit. North Carolina:The Pragmatic Programmers LLC, 2004.

JALOTE, Pankaj. Software Project Management in Practice, Boston: Addison-Wesley, 2003.

JONES, Capers. Produtividade no Desenvolvimento de Software. São Paulo: Editora Makron, 1991.

LEVINE, Harvey. Practical Project Management: Tips, Tactics, and Tools. New York: John Wiley & Sons, 2002.

MASON, Mike. Pragmatic Version Control using Subversion. North Carolina:The Pragmatic Programmers LLC, 2005.

McBREEN, Pete. Software Craftmanship: The New Imperative. Boston: Addison-Wesley, 2002.

McCONNELL, Steve. Rapid Development: Taming Wild Software Schedules. Redmond: Microsoft Press, 1996a.

McCONNELL, Steve. Daily Build and Smoke Test. IEEE Software, Vol. 13, No. 4, July 1996b.

McCONNELL, Steve. Code Complete. 2nd Edition. Redmond: Microsoft Press, 2004.

McGARRY, J.; et al. Practical Software Measurement: Objective Information for Decision Makers. Boston: Addison-Wesley, 2002.

MUGRIDGE, R.; CUNNINGHAM, W. Fit for Developing Software: Framework for Integrated Tests. New Jersey: Prentice Hall, 2005.

SCHUH, Peter. Integrating Agile Development in the Real World. Massachusetts: Charles River Media, 2005.

STUTZKE, Richard. Estimating Software-Intensive Systems. Boston: Addison-Wesley, 2005.

TATE, Kevin. Sustainable Software Development: An Agile Perspective. Boston: Addison-Wesley, 2005.

WALDEN, D.; et al. Kano’s Methods for Understanding Customer-Defined Quality. Center for Quality of Management Journal. Volume 2, Number 4, Fall 1993, Special Issue.

Marcadores: ,

0 Comentários:

Postar um comentário

Links para este artigo:

Criar um link

<< Home


Veja as Estatísticas