25
Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva ([email protected]) Tópicos Avançados Em Engenharia de Software 3 Centro de Informática Universidade Federal de Pernambuco

Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva ([email protected])

Embed Size (px)

Citation preview

Page 1: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Destacando Aspectos de Produtividade de Software em

Feature Driven Development, Lean Software Development e Programação Pragmática

Kleber Silva([email protected])

Tópicos Avançados Em Engenharia de Software 3

Centro de InformáticaUniversidade Federal de Pernambuco

Page 2: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Agenda Introdução Motivação Overview

FDD, Lean Software Development (LSD) e Programação Pragmática (PP).

O Problema da Produtividade em Software Aspectos de Produtividade em FDD, LSD e PP Um Framework Simples Conclusão e Trabalhos Futuros Referências e Bibliografia

Page 3: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Introdução Em busca da bala de prata

Melhor Processo Melhor Pessoal What if analysis

Em dado momento, identificar ganhos de produtividade podem significar a sobrevivência da empresa.

Page 4: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Motivação Identificar pontos relacionados a

produtividade em FDD, LSD (metodologias agéis endereçam melhor o problema do cost of change) e PP

Sugerir um framework para unir os pontos fortes de cada metodologia para aumentar o nível de produtividade.

Page 5: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Overview Feature Driven Development (FDD) Lean Software Development (LSD) Programação Pragmática

Page 6: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Feature Driven Development

Object Model + Notes (more shape than

content)

1.Develop an Overall

Model

2. Build a Features List

3. Plan by Feature

4. Designby Feature

5. Buildby Feature

A list of features grouped into sets and subject areas

A development planClass owners

Feature set owners

A design package Completed client-value

function

add more content to object model

Page 7: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Lean Software Development Introdução

Originado do “Lean Thinking” da Toyota que surgiu da abordagem “Lean Manufactoring” em 1980;

Resulta de um trabalho de Mary e Tom Poppendieck para transferir as idéias “Lean” da área de manufatura para software;

Aos 7 princípios do Lean foram adicionadas 22 ferramentas para implementação em software.

Page 8: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Lean Software Development Princípios

Eliminar o desperdício; Potencializar a aprendizagem; Decidir o mais tarde possível; Entregar o mais rápido possível; Dar autonomia ao time

(descentralizar); Construir com integridade; Ver o todo.

Page 9: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Lean Software Development Ferramentas

Eliminar o desperdício; See Waste, Value Stream Mapping

Potencializar a aprendizagem; Feedback, Iterations, Synchronizations, Set-Based

Development Adiar o comprometimento (Decidir o mais

tarde possível); Options Thinking, Making Decisions, The Last

Responsible Moment Entregar o mais rápido possível;

Pull Systems, Queueing Theory, Cost of Delay

Page 10: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Lean Software Development Ferramentas (continuação)

Dar autonomia ao time (descentralizar); Self-Determination Motivation Leadership Expertise

Construir com integridade; Perceived Integrity Conceptual Integrity Refactoring Testing

Page 11: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Lean Software Development Ferramentas (continuação)

Ver o todo. Measurements Contracts

Page 12: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Programação Pragmática “You shouldn't be wedded to any particular

technology, but have a broad enough background and experience base to allow you to choose good solutions in particular situations. Your background stems from an understanding of the basic principles of computer science, and your experience comes from a wide range of practical projects. Theory and practice combine to make you strong.”, [Andrew Hunt 1999].

Page 13: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

O Problema da Produtividade em Software Medindo a produtividade; Eliminando atividades com nível de ruído; Medidas tradicionais para aumento de

produtividade, reduzem-na [Tom De Marco]: Pressão cronograma (mais horas); Mecanização do processo de desenvolvimento

do produto Comprometimento em termos de qualidade do

produto

Page 14: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Aspectos de Produtividade em FDD, LSD e PP FDD

Features Class Code Ownership Releases frequentes, builds regulares Gerência de Configuração Reportagem de Progresso

Facilidade de Identificação de Gargalos

Page 15: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Aspectos de Produtividade em FDD, LSD e PP LSD

Eliminar o desperdício Evitando atividades que não agreguem

valor para o cliente;

Features and Function usage. The Standish Group International 2002.

Page 16: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Aspectos de Produtividade em FDD, LSD e PP LSD

Potencializar Aprendizagem Feedback rápidos;

Decidir o mais tarde possível Decidir em cima de aprendizagem e não em

previsões. Entregar o mais rápido possível

Dá suporte a Decidir o mais tarde possível, pois só se pode decidir o mais tarde possível, se houver a garantia de entregar o mais cedo possível

Dar autonomia ao time (descentralizar)

Page 17: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Aspectos de Produtividade em FDD, LSD e PP LSD

Construir com integridade Princípios que levam a alta produtividade

foram aplicados Ver o todo

Não entrar em detalhes demais nas partes em detrimento do todo

Medidas individuais de performance devem ser evitadas

Page 18: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Aspectos de Produtividade em FDD, LSD e PP PP

Don´t Gather Requirements, Dig For Them – Elicitar não significa apenas amontoar requisitos e sim, conseguir extrair o entendimento do que está por detrás de cada afirmação do usuário.

Use a Requirements Template – Serve para orientar a escrita, pois força não se esquecer de pré-condiçoes, pós-condiçoes, fluxos principais e alternativos e etc

Page 19: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Um Framework Simples Requirements

Don´t gather requirements, dig for them (PP)

Avoid non client-valued functions (LSD)

Use requirement templates (PP) Decide as late as possible: don´t take

a first-depth approach (LSD)

Page 20: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Um Framework Simples Analysis & Design

Domain object modeling (FDD approach) Build a features list (FDD) Plan By Feature (FDD) Design By Feature (FDD)

Build or Implementation Build By Feature (FDD) Regular Builds (FDD) Build Integrity In (LSD)

Refactoring (LSD e PP)

Page 21: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Um Framework Simples Tests

Build Integrity In Inspection (FDD e LSD);

Project Tracking Tools for project reporting (FDD)

Page 22: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Conclusão e Trabalhos Futuros Combinar os aspectos de FDD, LSD e PP

podem levar a ganhos de produtividade, entretanto, é necessária a participação de membros chave com bastante experiência

Criar uma instância desse framework e compará-la em termos de aspectos de produtividade com projetos similares que utilizem processos mais tradicionais, utilizando metodologias estabelecidas como pontos de função.

Page 23: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Conclusão e Trabalhos Futuros Desenvolver uma ferramenta

integrada para acompanhamento de projeto de forma automática(FDD)

Utilizar questionários para obter a opinião dos clientes, desenvolvedores e alta gerência sobre os ganhos de produtividade percebidos.

Page 24: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Referências e Bibliografia Palmer, S. R. and Felsing, J. M. (2002). A Practical Guide to Feature-Driven Development. Upper Saddle River, NJ,

Prentice-Hall http://www.nebulon.com/articles/fdd/latestprocesses.html, The Latest FDD Processes, Nebulon Pty Ltd. P. Abraharnsson, O. Salo, J. Ronkainen, and J. Warsta, Agile software development methods: Review and Analysis .

Espoo, Finland: Technical 252. Research Centre of Finland, VTT Publications 478, Available online: http://www.inf.vtt.fffpdf/publications/2002/P478.pdf

Christoph S. (2004), Lean Software Development, Institute Central Region 2004, Herrenberg, Germany. IBM Corporation

Cause, G. (2004). Delivering Real Business Value using FDD, IT Project Services Pty. Ltd. http://www.agilemodeling.com/essays/fdd.htm, Feature Driven Development (FDD) and Agile Modeling. Scott W.

Ambler Poppendieck, M. Lean Development & the Predictability Paradox, Poppendieck LLC, 2003. Available online:

http://www.poppendieck.com/pdfs/Predictability_Paradox.pdf Poppendieck, M. Lean Software Development, C++ Magazine Methodology Issue (Publication Fall 2003). Available

online: http://www.poppendieck.com/pdfs/Lean_Software_Development.pdf [Andrew Hunt 1999] A. Hunt, Thomas, D., The Pragmatic Programmer: Addison-Wesley, 2000 http://www.pragmaticprogrammer.com/courses/ppoverview.html, Briefings and Presentations: Pragmatic

Programming Overview P. Abrahamsson, J. Warsta, Mikko T. Siponen and J. Ronkainen. New Directions on Agile Methods: A Comparative

Analysis. Technical Research Centre of Finland, VTT Electronics Boehm/Turner, Balancing Agility and Discipline: A Guide for the Perplexed, Addison Wesley, Boston, 2003. Walt S. (1994). Understanding Software Productivity, University of Southern California, Los Angeles, USA.

Page 25: Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br)

Referências e Bibliografia Felsing M., The Hidden Cost of Application Development: Using Process as a Productivity Tool, Processexchange,

Inc., 2003. Available online: http://www.processexchange.com Coad P., Lefebyre E., De Luca, J. Java Modeling In Color With UML: Enterprise Components And Processes.

Prentice Hall. Mary P. and Tom P., Lean Software Development: An Agile Toolkit, Addison-Wesley Professional, 2003 J. Johnson, Features and Function Usage, Standish Group International, 2002. http://www.strategosinc.com/value_stream_mapping1.htm, Article & Guide to Value Stream Mapping (VSM) B. Boehm, Software Engineering Economics, Prentice Hall PTR, October 1981 Salo, O., Abrahamsson, P. Empirical Evaluation of Agile Software Development: The Controlled Case Study

Approach, VTT Technical Research Centre of Finland, Finland Ching, C., Making More Money: An Introduction to Agile Development, XPDay, November 2005. Available online:

http://www.clarkeching.com/2005/11/index.html DeMarco, T. and Lister, T. Peopleware: Productive Projects and Teams, 2nd Ed., Dorset House Publishing. Barry W. Boehm and Philip N. Papaccio, "Understanding and Controlling Software Costs," IEEE Transactions on

Software Engineering, October 1988. Jones, C. Measuring Programming Quality and Productivity, IBM Systems Journal, 1978. Capability Maturity Model Integration (CMMI) Overview, Software Engineering Institute, Carnegie Mellon.

Available online: http://www.sei.cmu.edu/cmmi/adoption/pdf/cmmi-overview05.pdf Clark, B.K. ; Quantifying the effects of process improvement on effort , IEEE Volume 17,  Issue 6,  Nov.-Dec. 2000