Reuse in a Distributed Environment É possível aplicar APF em um Ambiente Ágil? Alcione Ramos, MSc, CFPS, PMP, CSD Cejana Maciel, MSc, Scrum Master, ITIL, COBIT
Ponto de função é coisa dos anos 70. É uma tentativa de prever as coisas e saber o custo real antes do tempo. Tem tudo a ver com Waterfall. Vai totalmente contra a filosofia Agile. 2
Agenda Motivação Análise de Pontos de Função Conceitos de um processo Ágil - Scrum User Stories ou Casos de Uso Recomendações 3
Motivação II Encontro Nacional do Software Público II Encontro Nacional de Qualidade de Software Governança de TI: desempenho e transformação de TI para atender demandas atuais e futuras do negócio da corporação (foco interno) e negócio do cliente (foco externo). Pressupõe a adoção de métricas que permitem avaliar o impacto da TI no desempenho de negócios Contratação de serviços de TI: um dos principais processos para a consolidação de uma boa governança de TI Instrução Normativa SLTI/MP 04 (IN-04): diretrizes e fases do processo de contratação de serviço de TI Art. 4º As contratações de que trata esta Instrução Normativa deverão ser precedidas de planejamento, elaborado em harmonia com o Plano Diretor de Tecnologia da Informação - PDTI, alinhado ao planejamento estratégico do órgão ou entidade. 4
Motivação A verdade sobre projetos de SW Processos Flexíveis ou Engessados? Tempo Custo Qualidade do produto final Funcionalidades com base no ROI Junção de Idéias Projeto bem-sucedido: Prazo Orçamento Atendendo aos requisitos 5
Motivação A verdade sobre projetos 24% CANCELADOS 45% ACIMA ORÇAMENTO 63% 63% FORA FORA DO DO PRAZO PRAZO [Standish Group, Chaos Report, 2009] 6
Motivação A verdade sobre projetos Somente 67% das funcionalidades são entregues! 57% dos So<wares são entregues sabendo- se dos defeitos [Standish Group, Chaos Report, 2009] 7
Motivação A verdade sobre projetos 8
Motivação A verdade sobre projetos [Standish Group, Chaos Report, 2009] 9
Resumindo... A comunicação entre as partes envolvidas nos projetos é muito fraca ; Clientes pedem sempre mais do que realmente precisam; Os projetos são caros e, ainda em sua maioria, não alcançam sucesso; Os conflitos existentes entre TI e negócios durante os projetos são muitos. Documentação fraca, sem expressar a realidade solicitada! 10
IN 04 Alguns conceitos Requisitos: conjunto de especificações necessárias para definir a Solução de Tecnologia da Informação a ser contratada; Critérios de aceitação: parâmetros objetivos e mensuráveis utilizados para verificar se um bem ou serviço recebido está em conformidade com os requisitos especificados; Gestão: conjunto de atividades superiores de planejamento, coordenação, supervisão e controle, relativas às Soluções de Tecnologia da Informação que visam a garantir o atendimento dos objetivos do órgão ou entidade. 11
Não se pode gerenciar aquilo que não se consegue medir [Tom de Marco, Controlling Software Projects: Management, Measurement, and Estimation, 1982] Consistência e previsibilidade ainda são desejáveis, mas elas nunca foram as coisas mais importantes. Nos últimos 40 anos, por exemplo, nós temos nos torturado pela nossa falta de habilidade de concluir um projeto no prazo e no orçamento. Mas isso nunca devia ter sido o objetivo supremo. O objetivo mais importante é a transformação, criar software que muda o mundo ou que transforma uma empresa ou como ela faz negócio. [Tom de Marco, Software Engineering: An Idea Whose Time Has Come and Gone?, 2009] 12
Análise de Pontos de Função (APF) Objetivos: Medir (ou estimar) as funcionalidades implementadas no software que o usuário solicita e recebe Medir (ou estimar) as funcionalidades impactadas pelos projetos de desenvolvimento e melhoria de software, independente da tecnologia/processo/metodologia utilizados para a implementação (baseando-se no projeto lógico/visão do usuário) Para atender a esses objetivos, o processo de contagem deve ser: Simples para minimizar o trabalho adicional do processo de medição Consistente entre projetos e organizações 13
Os Requisitos Funcionais do usuário podem incluir: Transferência de dados Exemplos: entrada de dados pelo cliente, envio de sinais de controle Transformação de dados Exemplos: calcular taxa de juros bancária, calcular temperatura média Armazenamento de dados Exemplos: armazenar pedido do cliente, registrar a temperatura do ambiente ao longo do tempo Recuperação de dados Exemplos: listar os funcionários atuais, recuperar a localização de uma aeronave 14
APF Alguns Conceitos Processo Elementar: menor unidade de atividade que é significativa para os usuários Arquivo Lógico: funcionalidade fornecida ao usuário para satisfazer seus requisitos de armazenamento de dados internos e externos Tipos de Função: Funções de Transação Funções de Dados Processos Elementares Arquivos Lógicos 15
Funcionalidades na APF 16
APF Alguns Conceitos 17
APF nos Ciclos de Vida do Software Contagem de Projeto de Novo Desenvolvimento Contagem de Projeto de Melhoria 18
Medição Um conjunto de observações que reduzem a incerteza onde o resultado é expresso como uma quantidade. [Douglas W. Hubband, How to Measure Anything] Precisão das estimativas ao longo do processo: Cone da Incerteza 19
Técnicas de Contagem do Tamanho Funcional Contagem Detalhada do IFPUG: complexidade das Funções (Baixa, Média, Alta) de acordo com a quantidade de elementos que possuem Contagem Estimada da NESMA: Funções de Dados Baixa complexidade Função de Transação Média complexidade 20
Conceitos de Scrum O que é Agilidade 21
O que é Scrum? Um processo iterativo e incremental para o gerenciamento de projetos de desenvolvimento de produtos (especialmente software); Mais um framework que uma metodologia; Mais Atitude que um processo. Cultura: ü Auto-Gerenciamento ü Time multidisciplinar ü Envolvimento do cliente ü Comprometimento ü Papéis ü Entregas frequentes ü Liderança efetiva ü Colaboração e respeito 22
Papéis do Scrum Gerente do Produto (Product Owner) Responsável por garan.r o ROI (Retorno de Inves.mento); Responsável por conhecer as necessidades do(s) cliente(s); Proxy em ambientes com mais de um cliente; Sempre A.vo. Gerente/Líder de Projeto(ScrumMaster) Responsável por remover os impedimentos do.me; Responsável por garan.r o uso de Scrum; Protege o.me de interferências externas. Time Definir metas das iterações; Pessoas Mo.vadas; Auto- gerenciamento, Auto- organizado; Produzir produto com qualidade e valor para o cliente. 23
Estrutura do Scrum Reunião de Planejamento Lista de Funcionalidades Parte I Parte II Visão Lista de Tarefas Retrospec.va Execução e Reunião Diária Produto 24
Artefatos do Scrum Lista de Funcionalidades Lista de Funcionalidades Selecionadas Lista de Tarefas Lista de Impedimentos 25
Scrum - Lista de Funcionalidades Documentos são excelentes artefatos para auxiliar a comunicação entre pessoas, mas não para subs.tuí- las. 26
Scrum User Stories INVEST Independente Negociável Valiosa para usuários e cliente Es.mável Small (pequena) Testável 27
User Stories Como um <PERFIL> eu posso/gostaria/devo <FUNCTION> para <VALOR AO NEGÓCIO> Como um INSTRUTOR eu devo APONTAR A PRESENÇA DE ACORDO COM O NOME DO ALUNO NA LISTA DE PRESENÇA DOS ALUNOS DO CURSO para MANTER AS INFORMAÇÕES DE PRESENÇA DO TREINAMENTO ATUALIZADAS Quem? O que? Por que? 28
Lista de Funcionalidades Prioridade Item Complexidade Sprint Entregue 1 Apresentar os detalhes do filme, como imagem, sinopse, trailer, elenco, ranking e reviews, para que o usuário possa ter uma noção de como é o filme 5 Sprint 1 X 2 Manter um cadastro do usuário, com dados de login, nome, endereço, telefone, email, preferências de filme e possibilitando o mesmo verificar a sua participação no site, como ranking e review dados 8 Sprint 2 3 Possibilidade de escolher um filme como favorito e gerenciar estes, afim de que o usuário possa receber recomendações de acordo com seus favoritos 3 Sprint 1 X 4 Escolher um usuário como amigo e gerenciar estes, para que o usuário possa compartilhar informações com os usuários desejados 3 Sprint 2 5 Poder manter review de filmes e comentar existentes de outros usuários a fim de que exista uma interação entre os usuários do site e troca de informações 3 Sprint 2 6 Obter recomendações de filmes, com base no ranking e preferências selecionadas pelo usuário, dessa forma o site proverá uma lista com possíveis filmes que o usuário poderá gostar mais, facilitando o uso diário por parte do usuário. 13 29
Prioridade na lista de funcionalidades Alta Prioridade Deve-se verificar o PRONTO de cada funcionalidade para a Sprint. Caso o PRONTO seja apenas parte do processo, poderá ser negociada a aplicação de um percentual que represente o valor agregado do que foi feito dentro do ciclo para a funcionalidade Cada Sprint implementa os requisitos de prioridade mais alta. Uma sprint ou grupo de sprints que forem entregues em produção juntas poderão ter diferentes abordagens para contagem de PF: primeira entrega projeto de desenvolvimento; entregas subseqüentes projeto de melhoria Requisitos podem ser repriorizados pelo Product Owner a qualquer momento. Se ocorrer dentro do período da realização do Sprint, deverá ser tratado como alteração de escopo com contagem de PF independente para o impacto sobre o já realizado Baixa Prioridade Requisitos podem ser removidos do Product Backlog pelo Product Owner a qualquer momento Copyright Scott Ambler, 2004 30
Lista de Funcionalidades Selecionadas 31
User Stories ou Casos de Uso Casos de Uso e Stories são técnicas para desenvolver o sistema pelo ponto de vista do Ator. Casos de Uso e Stories não são documentos técnicos. Casos de Uso e Stories são sucintos. Casos de Uso e Stories agregam valor de negócio. Casos de Uso e Stories são utilizados para gerenciar o projeto. Casos de Uso e Stories dividem o sistema funcionalmente. Casos de Uso e Stories podem ser estimados. Casos de Uso e Stories direcionam os testes. 32
Exemplo de User Stories Em uma Sprint constam as seguintes funcionalidades: Apresentar os Dvds mais vendidos Como um comprador, quero ver o nome, sinopse, imagem e preço dos Dvds mais vendidos para que eu possa comprar um ou vários destes. Listar por preço Como um comprador, quero listar os Dvds com nome, sinopse e preço classificados por preço, onde poderei ver o menor valor primeiro. Observação: todos os dados utilizados nessas funcionalidades são mantidos por funções no mesmo sistema já entregues em Sprints anteriores. 33
Contando User Stories Como um comprador, quero ver o nome, sinopse, imagem e preço dos Dvds mais vendidos para que eu possa comprar um ou vários destes. Funcionalidade de Saída Externa, pois trata-se de um relatório com a lógica de cálculo da quantidade de vendas DER = Nome, Sinopse, Imagem, Preço, Comando ALR = Filme (Nome, Sinopse, Imagem e Preço) Venda (Dvd, Identificador Venda) Resultado = 1 SE Simples = 4 PF de contribuição na Sprint que está sendo contada com a abordagem de Projeto de Melhoria 34
Ponto de função é coisa dos anos 70. É uma tentativa de prever as coisas e saber o custo real antes do tempo. Tem tudo a ver com Waterfall. Vai totalmente contra a filosofia Agile. 35
Recomendações Utilizar User Stories como complexidade inicial para levantamento da velocidade do time e escopo Especificar requisitos (de acordo com a cultura) de 2 formas: Antes das Sprints, como artefatos de entrada Utilizar Sprints Iniciais para as especificações e arquitetura, estas serão artefatos de entrada na lista de funcionalidades dos times de desenvolvimento 36
Fatores de Sucesso Aplicação da APF depende de Embasamento, mas independe do processo; Cultura determina o formato do artefato para contagem; Maturidade do Time; Usuário tem Informações e não Requisitos; Escrita Clara e Concisa, de acordo com as necessidades; Comunicação; Pró-Atividade; Negócio claro e definido; Cliente ou Representante do Cliente é essencial. 37
Dúvidas! alcionejc@yahoo.com.br cejanalobo@gmail.com 2011 2005 2004 2005 2006 2007 2008 2009 2010 2011 2012 38