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

Slides:



Advertisements
Apresentações semelhantes
APS I Análise e Projeto de Sistemas I
Advertisements

1 Avaliação da Qualidade para Engenharia de Requisitos Orientada a Agentes Emanuel Batista dos Santos 11/05/2007.
TMM: Práticas e Aplicações
Modelagem de Software Orientado a Objetos
Análise e Projeto de Sistemas I
CK 119: Engenharia de Software DC/CC/UFC © Rossana Andrade, Setembro CK119: Engenharia de Software Rossana Andrade Ph.D, SITE, University of Ottawa,
Arquitetura de Aplicações Web
Desenvolvimento Rápido de Aplicação(RAD)
Mapeamento dos processos de desenvolvimento
MÉTRICAS ASSOCIADAS AO DESENVOLVIMENTO DE
FDD.
Técnicas e Projeto de Sistemas
Theme: An Approach for Aspect-Oriented Analysis and Design
Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida.
Introdução a Desenvolvimento de Sistemas
IBM Rational Requirements Composer v2.0
APLICANDO O PROCESSO DIRIGIDO POR RESPONSABILIDADES PARA A CRIAÇÃO DE UM SUBFRAMEWORK PARA VALIDAÇÃO SINTÁTICA DE FÓRMULAS Autores: Rafael Hornung Simone.
Introdução a Desenvolvimento de Sistemas
XPRecife Madson Menezes Costa Ricardo de Oliveira Cavalcanti.
Aluna: Carolina Paloma Gasperoni
MÉTRICAS ASSOCIADAS AO DESENVOLVIMENTO DE
SWEBOK Guide to the Software Engineering Body of Knowledge Thayssa Rocha TAES 3 –
Fabrício Dias
fábrica de software conceitos, idéias e ilusões
Análise e Especificação de Requisitos © 2001 Jaelson CastroInformações Gerais 1 Análise e Especificação de Requisitos - IF119 Centro de Informática Jaelson.
SCRUM Processo de Desenvolvimento de Software
1 Mesa de Compras Apresentação Fábrica 16/06/2003.
Paradoxo da Internet Comentado por Joseph M. Newcomer In
1 PSP/TSP Definições e Questões Jones Albuquerque
DI-UFPE1 Sistemas CASE Visão Geral do Curso Alexandre M. L. de Vasconcelos.
© 2013 IBM Corporation Walter Farias – IBM Client Technical Professional DevOps Entrega contínua de inovação orientada à software.
CIGRÉ/BRASIL – COMITÊ NACIONAL BRASILEIRO CE-B5 – PROTEÇÃO E AUTOMAÇÃO SEMINÁRIO INTERNO DE 2005.
Ferramenta de Modelagem de Requisitos e Agentes (TAOM4e) Laís Xavier Prof.: Jaelson Castro.
Uma introdução ao SWEBOK
Melhoria de Processo de Engenharia de Requisitos Aliny Figueirêdo Meira Recife, 2008.
Citações indiretas Decidir é uma questão inerentemente árdua e particularmente difícil quando se refere às decisões organizacionais. Isso ocorre, segundo.
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projetos de Sistemas SUBSEQUENTE 1.
Engenharia de Software
Análise e Projeto de Sistemas © 2003 Jaelson CastroInformações Gerais 1 Análise e Projeto de Sistemas Centro de Informática Jaelson Castro
Modelagem Orientada a Objetos Especialização em Engenharia de Software PUCPR 1999.
Frameworks e Componentes Daniel Fernando Pavelec.
SCRUM Process Universidade Federal de Pernambuco Polyana Lima Olegário
Programação Pragmática Carla Maria Pinheiro. 05/11/2004 Tópicos Avançados Engenharia de Software 3 Agenda O que é Programação Pragmática? Programador.
Fábrica de software princípios, conceitos, e ilusões
Programa Nacional de Cooperação Acadêmica (PROCAD / CAPES) Desenvolvimento de Linhas de Produtos de Software usando Técnicas Orientadas a Aspectos REQUISITOS.
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.
Grupo de Estudos.Net Generics. Grupo de Estudos.Net OverView New Feature do.Net Framework 2.0 Conceito de tipo parametro Definir classe e métodos Generalização.
Ilda Manuela Martins Ferreira Sessão Controlo Tese 2º Semestre 2007/2008.
Um Modelo de Subcontratação de Desenvolvimento de Software
Uma Abordagem para o Estudo de Valor em Processos de Software: Aplicando VBSE ao EUP Gustavo Tibério
APS II Análise e Projeto de Sistemas de Informação II
Utilizando práticas do PMBOK para implantar o Scrum
PSDS com CMMI Nível 2 Dimitri de Almeida Malheiros Barbosa 27/03/2006.
Comunicação Assíncrona em Equipes Distribuídas: Requisitos e Meios Utilizados Cleyton Carvalho da Trindade Universidade Federal de.
Processo de Desenvolvimento baseado em MDA
Estudo Comparativo Entre Metodologias Ágeis e Tradicionais Aluno: Márcia Seabra Cabral Professor: Augusto Sampaio Disciplina: Tópicos Avançados em Engenharia.
Gerência de Processos Mestrado de Informática / UFPB Francilene Procópio Garcia, D.Sc. Chaos Report.
Luciana de Queiroz Leal Hermano Perrelli de Moura
Romeu de Andrade Guimarães 06/12/2008.

Métricas de Software Orientado a Aspectos Diego Martins – Turah Xavier –
1 Leila Mariz – Gerenciamento de Riscos com Agilidade Gerenciamento de Riscos com Agilidade Leila Mariz Orientador : Hermano Perrelli.
About Us iVenture Inc is a technology as well as comprehensive media company that facilitates businesses, institutes and individuals by providing simplified.
Uma Extensão do Fluxo de Análise e Projeto do RUP com suporte a Desenvolvimento Baseado em Componentes Eduardo Almeida
Agile Modeling Júlio Lins – Junho / 22 Agile Alliance Em 2001, reune-se um grupo de representantes das metodologias eXtreme Programming, SCRUM,
Joaquim Oliveira Grupo de Estudos em Processos 25/06/2002 Comparação entre Metodologias de Desenvolvimento.
Engenharia de Software Conceitos e elementos 1. Engenharia   Resolução de problemas através de soluções economicamente viáveis  Motivacão: Limitação.
LINHAS DE PRODUÇÃO DE SOFTWARE: Um modelo de organização de fábricas de software para reuso da Interface Humano-Computador Felipe Rustan Reis de Souza.
Data Warehousing & Business Intelligence PPGIA/BSI – DEINFO – UFRPE Ceça Moraes
Transcrição da apresentação:

Destacando Aspectos de Produtividade de Software em Feature Driven Development, Lean Software Development e Programação Pragmática Kleber Silva (khfts@cin.ufpe.br) 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 (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

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. Ganhos de produtividade tem sido bastante procurados pelas empresas. Há uma frenética busca pela bala de prata que possa matar o lobisomem que assusta as empresas que pode ser representado como complexidade, conformidade, alterabilidade.

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. O nosso trabalho teve por meta entao identificar pontos aspectos de produtividade de software na metodologioa FDD, LSD e PP. Um framework será sugerido.

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

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. Design 5. Build A list of features grouped into sets and subject areas A development plan Class owners Feature set owners A design package Completed client-value function add more content to object model

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.

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; 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 Eliminar o desperdício – É o mais importante aspecto do Lean, sobre o qual derivam todos os outros. Consiste em identificar e eliminar as atividades que não agreguem valor para o cliente. Potencializar a aprendizagem – Através de maior número de feedbacks, por isso implementa o conceito de iterações (full-cycle) pequenas e sincronizações/integraçoes (builds diarios, build semanais de integração) para verificar a tempo questões de integração. Set-Based Development implementa o conceito de comunicação através de constraints e não de choices. OU seja, as alternativas são apresentadas mais frisando-se suas limitações. Isto evita excessivo número de escolhas. Adiar o comportamento (Decidir o mais tarde possível) – Decidir mais quando o nível de aprendizagem esteja alto. Evitar se sobrecarregar de detalhes logo.

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 Medindo a produtividade – dependendo do que será medido, poderemos ter conclusões estranhas, por exemplo. Se medirmos a produtividade por linha de código, um programador menos experiente que escreva mais código do que seria necessário poderá ser considerado mais produtivo. Atividades com nível de ruído – atividades que não agregam valor ou que provocam quebras no fluxo do trabalho. Medidas tradicionais podem aumentar o turnover da empresa o que quase nunca é levado em conta. O quanto se perde quando um funcionário experiente é perdido não é quantificado.

Aspectos de Produtividade em FDD, LSD e PP Features Class Code Ownership Releases frequentes, builds regulares Gerência de Configuração Reportagem de Progresso Facilidade de Identificação de Gargalos Features – Conceito que indica pequenas funcoes que agreguem valor para o negócio do cliente. Class Code Ownership – Pode representar um problema de gargalo se na empresa houver um high turnover. Deve ser subsituido por uma abordagem mais hibrida, onde uma classe pode ter por exemplo dois desenvolvedores que tomem conta dela. Um principal e outro backup. Releases frequentes, builds regulares – Acelera o processo de aprendizagem Gerência de Configuração – Evita sérios gargalos provocados por erros de versão num ambiente onde exista muita concorrencia de edição de uma classe. Reportagem de Progresso – Através de visualização de graficos intuitivos e automaticamene gerados, a acao do gerente pode ser bem mais rápida e efetiva para evitar estouro de cronograma.

Aspectos de Produtividade em FDD, LSD e PP 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 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)

Aspectos de Produtividade em FDD, LSD e PP 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 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 Build or Implementation 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 Project Tracking 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