Globalização e capitalismo (1990-1999)
Anos anos 1990, a internet começou a transformar radicalmente o cenário dos projetos de software. O surgimento da web como uma plataforma global levou ao desenvolvimento de novos tipos de software, incluindo navegadores, servidores web e, eventualmente, aplicações web. A conectividade global proporcionada pela internet também possibilitou o surgimento de modelos de desenvolvimento colaborativo, como o software de código aberto, que permitiu que desenvolvedores de todo o mundo trabalhassem juntos em projetos de software.
- 1990: A Microsoft envia o Windows 3.0. Compatível com programas DOS, a primeira versão bem-sucedida do Windows finalmente ofereceu desempenho bom o suficiente para satisfazer os usuários de PC.
- O Photoshop é lançado. Criado pelos irmãos John e Thomas Knoll, o Photoshop era um programa de edição de imagens e o programa de software mais popular publicado pela Adobe Systems.
- No maior laboratório de física do mundo, o CERN na Suíça, o programador e físico inglês Tim Berners-Lee submete duas propostas para o que se tornará a Web, começando em março de 1989.
- 1990: Primeiros scripts de automação – Surgem ferramentas básicas de automação baseadas em scripts, como AutoIt, voltadas para tarefas repetitivas em sistemas operacionais.
- 1990: Quattro Pro – Lançado pela Borland, era conhecido por sua interface gráfica inovadora e funcionalidades avançadas.
- 1990: Notepad – Incluído no Windows 1.0, um editor de texto básico.
1991: RAD (Rapid Application Development)¶
O desenvolvimento rápido de aplicativos, geralmente abreviado como RAD, refere-se a uma metodologia de desenvolvimento de software adaptável e focada no desenvolvimento acelerado de aplicativos por meio de várias iterações e rodadas rápidas de feedback.
Começando com as ideias de Barry Boehm e outros, James Martin desenvolveu a abordagem de desenvolvimento rápido de aplicativos durante a década de 1980 na IBM e finalmente a formalizou publicando um livro em 1991, Rapid Application Development.
Essencialmente, Boehm e Martin viam o software como algo que poderia ser trabalhado continuamente e não como um recurso finito, o que levou à criação do RAD.
- Definir os requisitos do projeto: o foco não é obter uma lista detalhada de especificações de todos os envolvidos, mas sim definir os requisitos essenciais do projeto.
- Prototipagem: A essência do RAD é agir rapidamente, portanto, logo após a definição dos requisitos do projeto, a equipe de desenvolvimento começa a criar um protótipo que pode ser apresentado às partes interessadas e aos clientes.
- Ciclo de feedback: A equipe coleta feedback detalhado sobre todos os aspectos do produto e seus recursos, desde a funcionalidade até o design.
- Implementação: Após a incorporação do feedback e o aprimoramento do protótipo – já mais funcional e com a maioria dos recursos essenciais – a equipe se concentrará na implementação final do software.
Se a sua equipe é formada principalmente por desenvolvedores experientes que estão acostumados a trabalhar em projetos de ritmo acelerado, então o RAD pode ser uma boa opção. No entanto, para softwares mais complexos que demandam manuseio cuidadoso e um conhecimento técnico aprofundado, os ciclos de feedback dos usuários finais, que podem não possuir essas habilidades, tornam o RAD uma opção menos indicada.
Características: Ciclo de vida rápido, com protótipos e iteração contínua. Envolve um forte envolvimento do cliente durante o processo. Limitações: Pode ser difícil de aplicar em projetos grandes e complexos devido à falta de estrutura rígida.
- 1991: Linus Torvalds lança o kernel Linux;
- Pretty Good Privacy, ou PGP, um programa de criptografia de chave pública, é introduzido e usado para proteger textos, e-mails e arquivos.
- O Macintosh Portable da Apple encontra pouco sucesso no mercado e leva a um redesenho completo da linha de computadores portáteis da Apple.
- O navegador-editor GUI de Tim Berners-Lee de 1990 roda apenas em raros computadores NeXT.
- 1991: WinRunner – Desenvolvido pela Mercury Interactive, uma das primeiras ferramentas comerciais para automação de testes funcionais.
- 1992: O Joint Photographic Expert Group havia determinado um conjunto de regras para o que se tornou o formato jpeg (ou .jpg).
- Um protótipo de módulo de disco de estado sólido (SSD) é feito para avaliação pela IBM.
- 1993: Doom é lançado;
- O assistente digital pessoal Apple Newton. Apelidado de “Personal Digital Assistant” pelo presidente da Apple.
- FreeBSD, um sistema operacional completo semelhante ao Unix é lançado. Era a variante BSD (Berkeley Software Distribution) de código aberto mais amplamente usada.
- O Pentium é a quinta geração da linha 'x86' de microprocessadores da Intel, a base para o IBM PC e seus clones.
- O Microsoft Windows NT é lançado.
- Mosaic, o primeiro navegador suportado por uma grande instituição, inicia a Web na estrada do projeto de pesquisa ao sucesso de bilheteria.
- Os anúncios online marcam o início lento da Web comercial;
- O formato PDF foi desenvolvido pela Adobe Systems.
- 1993: Lotus 1-2-3 para Windows – Lançado para competir com o Excel, mas perdeu popularidade devido ao avanço das versões do Excel.
- 1993: WordPerfect (Windows) – Apesar de sua popularidade nos anos 80, perdeu espaço para o Microsoft Word.
- 1994: Quando o principal inventor da Web, Tim Berners-Lee, forma o World Wide Web Consortium (W3C) em 1994, a sede europeia é programada para o local de nascimento da Web, o CERN na Suíça, com a sede nos EUA no MIT em Boston.
- 1994: SilkTest – Ferramenta para automação de testes de interface gráfica.
1994: DSDM(Dynamic Systems Development Method)¶
O DSDM foi criado em 1994 como uma alternativa ao método de Desenvolvimento Rápido de Aplicações (RAD). O DSDM foi a primeira estrutura ágil a incorporar recursos de gerenciamento de projetos O DSDM não é um método tradicional, mas sim um framework de controles, com o objetivo de entregar soluções rapidamente. Define um processo e um conjunto de produtos, mantidos num nível alto para permitir a adaptação a qualquer ambiente técnico e de negócios. Não prescreve técnicas específicas, mas oferece caminhos sugeridos para implementações estruturadas e orientadas a objetos. É centrado nas pessoas, na compreensão das necessidades do negócio e na entrega de soluções que funcionam rapidamente e de forma económica.
Princípios Fundamentais do DSDM¶
- Envolvimento Ativo do Utilizador: A participação dos utilizadores é crucial para o sucesso do projeto.
- Empoderamento da Equipa: As equipas DSDM devem ter autonomia para tomar decisões.
- Entrega Frequente de Produtos: O foco é a entrega regular de produtos funcionais.
- Adequação ao Propósito do Negócio: A adequação aos objetivos de negócio é o critério essencial para a aceitação de entregas.
- Desenvolvimento Iterativo e Incremental: É necessário para chegar a uma solução de negócio precisa.
- Mudanças Reversíveis: Todas as mudanças durante o desenvolvimento são reversíveis.
- Requisitos de Alto Nível: Os requisitos são definidos numa fase inicial num nível mais abstrato.
- Testes Integrados: Os testes são incorporados ao longo de todo o ciclo de vida do projeto.
- Abordagem Colaborativa: É essencial a cooperação entre todas as partes interessadas.
Processo DSDM:¶
- Estudo de Viabilidade: Avalia se o DSDM é adequado para o projeto, considerando questões técnicas e organizacionais.
- O estudo de viabilidade avalia "se o DSDM é a melhor forma de construir o sistema."
- Estudo de Negócio: Define o problema a ser abordado, o impacto nos processos de negócios e o valor do projeto.
- Iteração do Modelo Funcional: Desenvolve protótipos funcionais, com foco na interação com o utilizador.
- Iteração de Design e Construção: Cria protótipos de design com base no modelo funcional.
- Implementação: Coloca o sistema em funcionamento e treina os utilizadores.
- Pós-Projeto: Avalia o projeto e realiza manutenção e melhorias contínuas.
Timeboxing:¶
- Os timeboxes são períodos de tempo fixos (normalmente 2-6 semanas) para entrega de incrementos.
- Os projetos são divididos em timeboxes aninhados para gerir a entrega.
- O conceito de timeboxing permite estimar melhor os recursos e o tempo necessário para alcançar os objetivos.
- A priorização dos requisitos é crucial. A abordagem MoSCoW (Must have, Should have, Could have, Won't have) ajuda a definir o que é essencial dentro do timebox. Se tudo a ser produzido num timebox é um 'must have', não há espaço para manobras se as coisas não correrem bem."
- Se um requisito "must have" surgir durante o desenvolvimento, é necessário fazer uma renegociação rápida de prioridades.
- "Os entregáveis de um timebox são testados e/ou revisados dentro do timebox, e não depois."
Prototipagem¶
- Os protótipos DSDM não são meramente demonstrações, são componentes parciais do sistema a ser desenvolvido.
- São construídos usando a plataforma de desenvolvimento e seguindo os padrões de qualidade.
- O objetivo da prototipagem é ter protótipos evolutivos, que vão se transformar no sistema final, não apenas protótipos a serem descartados.
- Os protótipos ajudam a colmatar as barreiras de linguagem entre desenvolvedores e utilizadores.
Funções e Pessoas¶
- As equipas DSDM são compostas por desenvolvedores e utilizadores trabalhando em conjunto, fomentando uma cultura de colaboração e sem culpas.
- Não há distinções entre as diferentes funções de TI. Todos os envolvidos no desenvolvimento são designados como 'Developers'. A função de "Tester" providencia testes independentes dos aspetos técnicos.
- A função "Ambassador User" garante a representação dos utilizadores. Existe também a função de "Advisor User", que engloba qualquer pessoa com interesse no projeto.
Qualidade:¶
- O DSDM busca software "bom o suficiente" para ser utilizado, com um nível aceitável de imperfeição.
- É possível desabilitar componentes com mau funcionamento e adiar a sua entrega, desde que não seja parte do requisito principal.
- As atividades de qualidade são integradas no processo de desenvolvimento, testando dentro do timebox, não depois.
- Gestão de Projetos:
- A gestão de projetos DSDM é baseada em timeboxes e na priorização de requisitos.
- Os riscos associados a estouros de tempo e custo são mitigados pelos princípios do DSDM.
- O progresso é monitorizado diariamente, focando na entrega de valor ao negócio.
O DSDM é um framework ágil que se concentra na entrega rápida de valor ao negócio. Ao aplicar os seus princípios, técnicas e processos, as equipas podem criar sistemas que satisfazem as necessidades dos utilizadores e que podem evoluir em conjunto com o negócio. A ênfase na colaboração, no envolvimento dos utilizadores e na entrega iterativa e incremental, permite que os projetos sejam bem-sucedidos num ambiente de constante mudança. A obra também destaca a importância da adaptação do método para diferentes contextos, como e-business ou ambientes offshore.
1995: SCRUM¶
O Scrum foi inserido pela primeira vez em um artigo publicado pela The Harvard Business Review,, em 1986. A obra foi realizada por Hirotaka Takeuchi e Ikujiro Nonaka, nomeado de "The New New Product Development Game", que traduzido para o português significa "O Novo Jogo de Desenvolvimento de Novos Produtos".
Essa metáfora de "novo jogo" utilizada pelos autores, foi com o intuito de descrever uma abordagem de desenvolvimento e de gerenciamento de projetos ou de produtos. Além disso, os autores utilizaram a estratégia baseado no jogo de Rugby.
O framework SCRUM foi desenvolvido por Ken Schwaber e Jeff Sutherland, fizeram a primeira co-apresentação do Scrum na conferência OOPSLA de 1995. Scrum junta conceitos de Lean, desenvolvimento iterativo e do estudo de Hirotaka Takeuchi e Ikujiro Nonaka.
Sendo o SCRUM um framework ágil focado em sprints (iterações curtas), trabalho em equipe e melhoria contínua. O trabalho é organizado em ciclos (sprints) e há uma forte ênfase na comunicação e entrega incremental de valor.
Requer forte comprometimento e maturidade da equipe, e pode ser desafiador para equipes novas ou com pouco conhecimento em práticas ágeis.
- 1995: Guerra dos navegadores II: Netscape vs. Microsoft
- 1995: Primavera Project Planner (P3) – Voltado para projetos complexos em grandes empresas.
- Homer Simpson animado por computador aparece em Os Simpsons;
- Java 1.0 é introduzido pela Sun Microsystems.
- JavaScript, uma linguagem de script baseada em objeto, é desenvolvida na Netscape Communications por Brendan Eich.
- O drone MQ-1 Predator é introduzido e colocado em ação pela Força Aérea dos Estados Unidos e pela Agência Central de Inteligência.
O objetivo é fornecer uma visão abrangente e prática de como aplicar o Scrum, abordando desde os fundamentos até as nuances de implementação em diferentes contextos. O Scrum não propõe um plano rígido, mas sim um ciclo de planejamento contínuo e ajustável.
- Planejamento da Release: Define o que os stakeholders podem esperar do projeto, como as equipes irão trabalhar juntas e o progresso esperado ao final de cada Sprint.
- Planejamento da Sprint: Detalha o trabalho a ser realizado durante a Sprint, com base nas prioridades do Product Backlog.
- Scrums Diários: Permitem ajustes diários no plano de trabalho, garantindo que a equipe esteja sempre alinhada.
- Adaptação Contínua: A flexibilidade é essencial. O "Practical Guide" enfatiza que o planejamento é indispensável, embora os planos possam mudar: "Ao me preparar para a batalha, sempre descobri que os planos são inúteis, mas o planejamento é indispensável." (Dwight D. Eisenhower)
- Pain-Gain Matrix, Análise de Valor Financeiro e AHP: Métodos para priorização de trabalho e tomada de decisões:
- Pain-Gain Matrix (Roger Burlton): Avalia o benefício para os stakeholders e a dor causada pelo método atual de trabalho, com diferentes pesos para opiniões de diferentes stakeholders.
- Análise de Valor Financeiro (Steve Tockey): Prioriza o investimento em software com base no valor financeiro, usando técnicas comuns a startups para demonstrar a viabilidade do plano de negócios.
- Analytic Hierarchy Process: Comparação de soluções com base em condições ponderadas, como número de clientes, tamanho do mercado potencial, riscos da tecnologia e impacto em outros produtos.
As Pessoas e os Papéis no Scrum:¶
O sucesso do Scrum depende fortemente das pessoas envolvidas e de suas interações.
- Autonomia da Equipe: O "Practical Guide" enfatiza a importância do team ownership, ou seja, a equipe ser dona do seu trabalho e comprometida com as estimativas que ela mesma gera.
- ScrumMaster como Líder Servidor: O "Scrum in Action" destaca as qualidades essenciais de um ScrumMaster: "Conhecimento teórico e prático profundo do Scrum, ótima capacidade de liderança servidora, fortes habilidades organizacionais, ótimas habilidades de comunicação, excelentes habilidades de apresentação, habilidades de resolução de conflitos, ótimas habilidades de desenvolvimento humano."
- Product Owner: O "Scrum in Action" detalha as responsabilidades do Product Owner, incluindo gerenciar as expectativas dos stakeholders, priorizar o backlog e manter uma visão clara do produto. Ter uma visão e conhecimento claros do produto, saber como coletar requisitos para o Product Backlog, tornar-se sempre disponível, saber como ser um bom organizador, saber como se comunicar melhor do que a pessoa média, saber que tudo se resume à liderança servidora.
- Tipos de Temperamento de Keirsey: O "Scrum in Action" menciona como a compreensão dos tipos de personalidade pode influenciar a dinâmica da equipe: Remontando a ideia de temperamento aos gregos antigos, David Keirsey desenvolveu uma teoria de temperamento moderna, que é composta por 16 tipos de temperamento, chamada Keirsey Temperament Sorter.
Implementação e Métodos Práticos¶
- Estimativa: O "Scrum in Action" detalha um método de estimativa baseado em critérios objetivos, considerando regras de negócio, número de entidades manipuladas e dimensões ambientais.Um processo de estimativa baseado em critérios objetivos.
- CUTFIT Rules: Consistente, Unambíguo, Testável, Viável, Independente, Rastreável.
- Reuniões: Técnicas para tornar as reuniões do Scrum mais eficazes, como reuniões de pré-planejamento, com foco na quebra de histórias de usuário.
- Visualização de Requisitos: Uma abordagem visual para coletar requisitos, usando a analogia de "árvore, galhos e folhas" (Product Backlog).
- Fatiamento Horizontal e Vertical: O "Scrum in Action" apresenta duas opções para o desenvolvimento de releases, por meio do fatiamento horizontal (criação da base para os elementos de dados) ou vertical (divisão por funcionalidades).
- A Importância dos Testes: Destaca a necessidade de testes automatizados, de regressão e de integração para garantir a qualidade do software.
Adaptação do Scrum¶
ScrumBut é uma expressão que se refere a uma abordagem do Scrum que omite ou modifica elementos ou regras do framework. A necessidade de adaptar o Scrum às particularidades de cada organização, evitando "ScrumButs" negativos.
- Adaptação Contextual: A importância de adaptar as práticas Scrum a diferentes dimensões, incluindo organização, infraestrutura, equipe, tecnologia, processo e negócio.
- "ScrumButs" Positivos: Adaptações positivas que ajudam a equipe a avançar apesar de restrições.
- "ScrumButs" Negativos: Adaptações inadequadas que servem como desculpas para não seguir os princípios do Scrum.Como adaptar o Scrum sem fazer "ScrumButs" negativos com desculpas.
O Scrum no Contexto da Empresa¶
O Scrum pode ser escalado e aplicado em grandes organizações, abordando temas como:
- Compromisso: O livro começa com uma reflexão sobre a importância do compromisso nas empresas e o perigo de compromissos sem conhecimento. Os negócios funcionam com base em compromissos. Quando você se compromete com outra pessoa, você deu sua palavra.
- "Humongous" e "Wingtip": Exemplos de empresas utilizando Scrum em diferentes níveis de maturidade.
- Backlog por Linha de Negócio: Organização do Product Backlog por linha de negócio, operação, atividade e tarefa.
- Analogia do Restaurante: O "The Enterprise and Scrum" utiliza a analogia de um restaurante para explicar como o Scrum funciona: Coma apenas aquilo que você tem fome; mantenha apenas o que você precisa. Isso resume o conceito de entrega iterativa, e somente aquilo que tem valor para o cliente.
- Entrega Iterativa de Valor: Os clientes comem o que têm fome - nada mais, nada menos. O foco está em entregar incrementos de valor funcional.
O sucesso do Scrum depende de um planejamento flexível, da autonomia da equipe, da liderança servidora, da adaptação contextual e, acima de tudo, do compromisso com a entrega contínua de valor. Ao aplicar os conceitos e técnicas apresentados, as organizações podem aumentar a eficiência, a qualidade e a satisfação de seus clientes e usuários.
1996: XP (Extreme Programming)¶
A agilidade é apresentada como uma resposta à necessidade de adaptabilidade em projetos de software.
- Simplicidade e Colaboração: A essência do XP é caracterizada pela simplicidade e pela colaboração intensa entre os membros da equipe e o cliente. A comunicação aberta e o feedback contínuo são elementos-chave.
- Definição: Uma metáfora do sistema é descrita como "uma história que todos – clientes, programadores e gerentes – podem contar sobre como o sistema funciona" (Beck, 2000). Ela serve como um vocabulário compartilhado para o projeto, ajudando a alinhar o entendimento de todos.
- Importância: A metáfora facilita a comunicação, o design e o desenvolvimento do sistema, fornecendo um contexto compreensível para todos os envolvidos.
- Testes de Cliente (Acceptance Tests): Os testes de cliente são "declarações não ambíguas do que se espera que o programa faça." Eles são cruciais para a confiança do cliente e servem como base para a melhoria dos testes de unidade. É enfatizado que "executar sem testes de aceitação é executar fora de controle."
- Testes de Programador (Unit Tests): Os testes de unidade são criados pelo desenvolvedor e focam em testar as partes menores do código. Ron Jeffries defende que esses testes devem ser nomeados "testes de programador" para refletir a sua responsabilidade.
- Propriedade dos Testes: Os clientes são considerados os "donos" dos testes de aceitação, e os desenvolvedores são os "donos" dos testes de unidade. Testes como Guia: Os testes não são apenas uma ferramenta de verificação; eles servem como um guia para o desenvolvimento, promovendo a coragem de fazer mudanças e refatorações.
- Automação: É discutida a importância da automação dos testes, especialmente os testes funcionais e de aceitação, para garantir um ciclo de feedback rápido.
Refatoração¶
- Objetivo: A refatoração é um processo contínuo para melhorar a estrutura interna do código sem alterar seu comportamento externo. Isso mantém o código limpo, flexível e mais fácil de manter.
- Refatoração de Testes: O livro também aborda a refatoração do código de teste. Testes que não falham quando modificados podem indicar que o teste é redundante ou que há um bug no código.
- Identificação de Necessidade: Métricas de qualidade de código, como o uso de ferramentas como JavaNCSS, podem ajudar a identificar áreas do código que precisam ser refatoradas.
O Papel do Cliente em XP¶
- Cliente On-Site: A presença constante do cliente na equipe é vital para a comunicação clara e para a definição contínua dos requisitos do sistema através de "user stories".
- Priorização e Valor de Negócio: O cliente prioriza as "user stories" a serem implementadas em cada iteração, baseando-se no valor de negócio, enquanto os desenvolvedores estimam o tempo necessário para a implementação.
- Requisitos de Feedback: O feedback do cliente é crucial para ajustar o curso do desenvolvimento e assegurar que o sistema atenda às necessidades.
Test Tester¶
- Função: O Jester é uma ferramenta para testar a eficácia dos testes unitários, introduzindo alterações no código e verificando se os testes falham. Se os testes não falham, indica que os testes são insuficientes ou que o código é redundante.
- Benefícios: Essa ferramenta ajuda a garantir que os testes cubram todos os aspectos do código e identifiquem áreas que necessitam de mais testes.
Holmes: Uma Ferramenta para Integração¶
- Arquitetura: Holmes é construído sobre uma arquitetura de quadro negro e invocação implícita, utilizando um espaço de tuplas Linda.
- Fontes de Informação: Incorpora cinco fontes principais de informação: definição de domínio, caracterização de domínio, escopo de domínio, modelagem de domínio e desenvolvimento de estrutura de domínio.
- Objetivo: O Holmes visa a auxiliar no mapeamento de requisitos para o design do sistema, o que facilita o processo de desenvolvimento.
XP e a Economia da Flexibilidade¶
- Mudança como Aliada: A filosofia do XP é abraçar a mudança e não combatê-la. O livro enfatiza que a mudança é inevitável e o XP é capaz de criar valor ao se adaptar a ela.
- Opções Reais: XP é apresentado como um processo orientado a opções. A flexibilidade proporcionada pelo XP permite que as empresas tomem decisões com base em novas informações, maximizando o valor do investimento.
- Valorização de Opções: O livro explora como a teoria de opções financeiras pode ser aplicada para avaliar os benefícios de adiar decisões e manter opções abertas.
- Modelo Black-Scholes: É usado o modelo Black-Scholes para exemplificar como o valor de uma opção pode ser calculado, ilustrando a importância de manter a flexibilidade em um ambiente de desenvolvimento ágil.
- YAGNI (You Aren't Gonna Need It - Você não vai precisar disso): O princípio YAGNI é analisado através da perspectiva da teoria de opções, mostrando como adiar a implementação de funcionalidades não essenciais pode criar valor ao reduzir os custos iniciais.
Desenvolvimento Baseado em Padrões de Análise (SAPs)¶
- SAPs e XP: Os padrões de análise (SAPs) são vistos como uma forma de estruturar o desenvolvimento em XP, permitindo que aspectos globais como distribuição, segurança e testabilidade sejam considerados.
- Modelos Conceituais: SAPs ajudam a criar modelos conceituais incrementais e garantem a aplicação de princípios de bom design.
Métricas e Avaliação¶
- GQM (Goal, Question, Metrics): É destacado o uso do método GQM para definir o que medir, focando nos objetivos, nas perguntas e nas métricas.
- Medição com Propósito: É ressaltado que não se deve ficar obcecado por métricas, mas sim usá-las para atingir objetivos específicos.
- Base de Dados de Defeitos: O uso de uma base de dados de defeitos como uma fonte de informações para medir a qualidade e comparar a eficácia de diferentes equipes é sugerido.
- Qualidade da Implementação: Métricas como tamanho do código, média de métodos por classe e complexidade ciclômática são usadas para avaliar a qualidade da implementação.
1997: Feature Driven Development (FDD)¶
Ele é apresentado como uma metodologia de desenvolvimento de software que divide projetos complexos em partes menores e gerenciáveis, chamadas "funcionalidades" ou "features". O FDD é descrito como um "abordagem sistemática e orientada ao cliente que transforma projetos complexos em uma série de marcos alcançáveis". O objetivo principal é entregar essas funcionalidades de forma incremental, com foco na melhoria contínua e na demonstração de progresso passo a passo.
Criado durante o projeto em Java para o “United Overseas Bank”, em Cingapura. Nascendo a partir da experiência de análise e modelagem orientadas por objetos de Peter Coad, e de gerenciamento de projetos de Jeff De Luca. Foi inicialmente publicada em 1999, no capítulo 6 do livro “Java Modeling in Color with UML”, de Peter Coad, Eric Lefebvre e Jeff De Luca.
O FDD possui um ciclo de vida curto e é mais indicado para sistemas que podem mudar de requisitos rapidamente; incorpora muitas das boas práticas de desenvolvimento já reconhecidas pela indústria em um conjunto coeso. Estas práticas todas são orientadas a funcionalidades, que é um conceito de valor do ponto de vista do cliente.
Principais Conceitos e Princípios do FDD¶
- Funciona como um guia para a equipe de desenvolvimento, gestores de produto e stakeholders, definindo o escopo do projeto.
- As funcionalidades são categorizadas e priorizadas, frequentemente usando técnicas como MoSCoW (Must-haves, Should-haves, Could-haves, e Wont-haves).
- Fornece um roteiro claro para o desenvolvimento e ajuda na alocação eficaz de recursos e agendamento.
Modelo Geral¶
- Refere-se ao design e arquitetura de alto nível de todo o sistema, definindo a estrutura, subsistemas, módulos e suas interações.
- O modelo evolui iterativamente conforme as funcionalidades são desenvolvidas.
- "Facilita um entendimento compartilhado da arquitetura do sistema entre os membros da equipe. Suporta o desenvolvimento eficiente de funcionalidades, fornecendo uma estrutura para a integração."
Equipes de Funcionalidades (Feature Teams)¶
- Equipes multifuncionais responsáveis pelo desenvolvimento de funcionalidades específicas, desde os requisitos até a implementação e teste.
- Promove a colaboração entre membros da equipe com diversas habilidades (desenvolvedores, testadores, designers).
- "Aprimora a responsabilidade e a propriedade de funcionalidades específicas."
- Programador Chefe: Lidera todos os aspetos técnicos do projeto.
- Gestor de Projeto: Lida com a comunicação, planeamento e cumprimento dos prazos.
- Arquiteto Chefe: Define a estrutura do software e as normas técnicas.
- Gestor de Desenvolvimento: Supervisiona os recursos e mantém um ambiente colaborativo.
- Responsável pela Classe: Garante que o código esteja de acordo com as funcionalidades.
- Especialista de Domínio: Garante que o software esteja alinhado com a indústria ou domínio pretendido.
Benefícios do FDD¶
- Acompanhamento de Performance e Correção de Bugs: Devido às mudanças regulares e adição de funcionalidades pequenas, os desenvolvedores podem acompanhar seu desempenho e corrigir bugs rapidamente.
- Satisfação do Cliente: As atualizações constantes e a entrega incremental de funcionalidades melhoram a satisfação do cliente.
- Escalabilidade e Documentação Detalhada: O FDD é particularmente benéfico para grandes equipes e clientes devido à documentação detalhada do trabalho realizado, facilitando a escalabilidade.
- Foco nas Necessidades do Usuário: A metodologia permite que as equipes trabalhem em dores específicas dos usuários e entreguem soluções rapidamente.
- Redução de Reuniões: A documentação detalhada e a organização do FDD reduzem o número de reuniões necessárias, economizando tempo.
- Entrega Rápida de Soluções: As equipes são capazes de trabalhar em pontos problemáticos específicos dos usuários e entregar soluções em um prazo de 2 a 10 dias.
Processo de Desenvolvimento do FDD¶
- Passo Zero - Walkthrough do Domínio: A equipe de desenvolvimento adquire conhecimentos sobre os negócios, objetivos e expectativas do cliente. "Os pontos problemáticos do cliente são apontados e isso ajuda a decidir as principais funcionalidades do produto."
- Desenvolver um Modelo Geral: Define-se o objetivo do desenvolvimento do software e os pontos problemáticos. As ideias são discutidas tendo em conta as preferências do público-alvo. "O modelo deve ser aberto de forma a manter o caminho aberto para outras oportunidades."
- Criação da Lista de Funcionalidades: Envolve identificar as necessidades do cliente e o valor comercial. "A criação da lista de funcionalidades envolve identificar as necessidades do cliente e o valor do negócio. Cada funcionalidade é especificada em termos de nome, descrição e dependências de outras funcionalidades, etc."
- Planejar por Funcionalidade: Os membros da equipe colaboram para criar um mapa do projeto, discutindo horas, recursos e prazos. "Todas as funcionalidades são divididas em várias pequenas tarefas e o número de horas, esforços e orçamento necessários são estimados."
- Design por Funcionalidade: O gestor do produto ou o programador-chefe supervisiona o processo e delega as tarefas às pessoas específicas. "Dessa forma, toda a equipe começa a trabalhar de forma iterativa e em conjunto para conceber as funcionalidades."
- Construir por Funcionalidade: Todas as equipes trabalham de forma interfuncional. São realizadas experiências e recolhidos feedback dos utilizadores para ter uma ideia das futuras iterações. "Todas estas etapas ajudam na construção de produtos que sejam escaláveis e adaptados às necessidades dos utilizadores."
Abordagem Centrada no Usuário vs. Abordagem Liderada pelo Usuário¶
Há uma abordagem centrada no usuário em vez de uma abordagem liderada pelo usuário.
- Crítica à Abordagem Liderada pelo Usuário: O artigo argumenta que, se um produto for construído exclusivamente com base nas opiniões dos usuários, ele pode não atender às suas necessidades reais. "Só porque os usuários lhe dizem o que querem, não significa que eles saibam realmente o que precisam."
- Defesa da Abordagem Centrada no Usuário: É defendido que se deve focar na identificação das necessidades subjacentes dos usuários e, em seguida, encontrar soluções. "Observar os seus utilizadores e como eles interagem com o seu produto" é essencial, de acordo com Benjamin Ramhofer. O artigo recomenda iniciar com pesquisa de mercado, observar os usuários e confirmar as necessidades através de protótipos e feedback do cliente.
Outsourcing para FDD¶
O outsourcing fornece acesso a talentos especializados e permite uma entrega mais rápida e econômica. Podemos concluir que o FDD é uma metodologia ágil eficaz para o desenvolvimento de software, focada na entrega de funcionalidades de forma sistemática e eficiente. Ela enfatiza a importância de um processo de desenvolvimento bem definido, melhoria contínua, design centrado no usuário e adaptabilidade.
- 1997: Deep Blue derrota Garry Kasparov
- Deep Blue da IBM derrota o campeão mundial de xadrez Garry Kasparov;
- Microsoft apresenta o Visual Studio.
- 1997: Artemis – Sistema focado em gerenciamento de projetos corporativos.
- 1997: JUnit – Framework de teste unitário para Java, criado por Kent Beck e Erich Gamma.
- 1998: Furby desperta frenesi de compras
- O iMac, uma linha de computadores de mesa Macintosh tudo-em-um, é lançado;
- 1998: Rational Robot – Ferramenta de automação de testes da IBM, integrada ao Rational Unified Process (RUP).
- 1999: Matrix foi lançado;
- A IBM lança o Microdrive em capacidades de 170 MB e 340 MB.
- Nvidia lança a GeForce 256;
- O Sony AIBO, o “Artificial Intelligence RoBOt”, o cão de estimação robótico;
- A Web móvel chega ao Japão
- WiFi, chega nas casas padrão de rede de rádio de curto alcance IEEE 802.11b é renomeado como “Wi-Fi” pela Wi-Fi Alliance.
- 1999: Gnumeric – Um software de planilha de código aberto desenvolvido como parte do projeto GNOME.
- 1999: AbiWord – Um editor de texto leve e de código aberto.