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
Agenda



Introdução
Motivação
Overview






FDD, Lean Software Development
Programação Pragmática (PP).
(LSD)
e
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
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.
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.
Overview



Feature Driven Development (FDD)
Lean Software Development (LSD)
Programação Pragmática
Feature Driven Development
1.Develop
an Overall
Model
Object Model +
Notes (more
shape than
content)
2. Build a
Features List
A list of features
grouped into sets
and subject areas
3. Plan
by Feature
A development plan
Class owners
Feature set owners
add more content to object
model
4. Design
by Feature
5. Build
by Feature
A design package
Completed
client-value
function
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
ferramentas para implementação em software.
22
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.
Lean Software Development

Ferramentas

Eliminar o desperdício;


Potencializar a aprendizagem;


Feedback, Iterations,
Development
Synchronizations,
Set-Based
Adiar o comprometimento (Decidir o mais tarde
possível);


See Waste, Value Stream Mapping
Options Thinking,
Responsible Moment
Making
Decisions,
Entregar o mais rápido possível;

Pull Systems, Queueing Theory, Cost of Delay
The
Last
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
Lean Software Development

Ferramentas (continuação)

Ver o todo.


Measurements
Contracts
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].
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
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
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.
Aspectos de Produtividade em
FDD, LSD e PP

LSD

Potencializar Aprendizagem


Decidir o mais tarde possível


Decidir em cima de aprendizagem e não em previsões.
Entregar o mais rápido possível


Feedback rápidos;
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)
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
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
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)
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)
Um Framework Simples

Tests

Build Integrity In


Inspection (FDD e LSD);
Project Tracking

Tools for project reporting (FDD)
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.
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.
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.
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
Download

TAES3_aspectos_produtividade_FDD_LSD_PP