Você está na página 1de 8

1.

MODELO DE OBJETO

2. LISTA
3. PLANEJAR POR FEATURE

Gerente de projeto, Arquiteto chefe- especialista no domínio, equipe de


modelagem/planejamento, equipe de funcionalidades\desenvolvedores.
1 - Introdução ao Feature Driven Development (FDD) na Engenharia de
Software
A Feature Driven Development (FDD) é uma abordagem importante na Engenharia de Software
que se concentra na entrega eficiente e organizada de funcionalidades específicas em um
sistema. Ela foi desenvolvida por Jeff De Luca e Peter Coad no final da década de 1990 e é
amplamente reconhecida como uma metodologia ágil de desenvolvimento de software. A FDD
se destaca por sua abordagem orientada a objetos e enfatiza a decomposição do sistema em
recursos menores e mais gerenciáveis, chamados de "features" (ou características).

A principal ideia por trás da FDD é que, ao dividir o desenvolvimento em pequenas


funcionalidades distintas, equipes de desenvolvimento podem melhorar a qualidade do
software, tornar o processo de desenvolvimento mais previsível e gerenciável, e fornecer valor
aos clientes de forma incremental. Cada "feature" é tratada como uma unidade independente,
desde a concepção até a implementação, permitindo que equipes trabalhem de forma
colaborativa e foquem em aspectos específicos do sistema.

Neste contexto, a FDD utiliza práticas de modelagem, design e planejamento detalhado para
definir as funcionalidades, suas interações e suas relações com outras partes do sistema. Ela
também incorpora princípios ágeis, como a iteração contínua e a priorização de recursos com
base no valor para o cliente. A FDD se destaca como uma abordagem que se adapta bem a
projetos complexos, fornecendo uma estrutura organizada para o desenvolvimento de
software, ao mesmo tempo em que permite a flexibilidade necessária para responder às
mudanças e necessidades do cliente.

Objetivos da Aula:
Compreender os princípios fundamentais do FDD.

Os princípios fundamentais do Feature Driven Development (FDD) são os alicerces sobre os


quais essa abordagem de desenvolvimento de software se baseia. Eles orientam a maneira
como as equipes de desenvolvimento implementam o FDD e alcançam seus objetivos. A seguir,
explicarei os principais princípios do FDD:

Divisão em Features (Características): No FDD, o sistema é decomposto em "features" ou


características funcionais menores e mais gerenciáveis. Cada feature representa uma
funcionalidade específica que pode ser projetada, desenvolvida e testada de forma
independente. Essa abordagem facilita a divisão do trabalho em tarefas menores e mais
gerenciáveis.

Modelagem de Domínio: Antes de começar o desenvolvimento, o FDD utiliza a modelagem de


domínio para entender completamente o contexto do sistema. Isso envolve a criação de
modelos de objetos que representam as classes e suas relações no sistema. A modelagem de
domínio é fundamental para identificar as features, suas dependências e os requisitos do
sistema.

Construção por Passos (Build by Feature): O FDD promove a ideia de construir o sistema por
meio de iterações ou "passos" que envolvem a implementação de cada feature. Em vez de
construir o sistema como um todo, as features são desenvolvidas e integradas
incrementalmente. Isso permite que o software seja entregue de maneira contínua e
funcionalidades importantes estejam disponíveis desde as fases iniciais do projeto.

Design e Inspeção de Features: Cada feature passa por um processo de design detalhado e
inspeção antes da implementação. Isso garante que a equipe de desenvolvimento tenha uma
compreensão clara dos requisitos da feature e do design necessário antes de começar a
escrever o código.

Padronização de Processos: O FDD promove a padronização dos processos de


desenvolvimento em toda a equipe. Isso inclui a padronização de convenções de
nomenclatura, práticas de codificação e métodos de documentação. Essa padronização torna o
desenvolvimento mais previsível e facilita a colaboração entre os membros da equipe.

Inspeções Regulares: As inspeções regulares são realizadas para garantir a qualidade do código
e do design. Essas inspeções envolvem revisões entre pares e revisões de código, o que ajuda a
identificar problemas precocemente e a manter a qualidade do software.

Relatórios de Progresso: O FDD enfatiza a geração de relatórios de progresso claros e


regulares. Isso permite que a equipe e os stakeholders acompanhem o andamento do projeto,
identifiquem possíveis desvios em relação ao cronograma e tomem ações corretivas conforme
necessário.

Propriedade das Features: Cada feature é atribuída a um membro da equipe que é responsável
por sua concepção, implementação e testes. Isso promove a responsabilidade individual e a
expertise em cada parte do sistema.

Esses princípios formam a base do FDD e são essenciais para o sucesso dessa abordagem de
desenvolvimento ágil. Eles proporcionam uma estrutura organizada para o projeto, ao mesmo
tempo em que permitem flexibilidade para acomodar mudanças e garantir a qualidade do
software entregue.

2. Benefícios e Desafios do FDD


Eficiência no desenvolvimento.

Alta qualidade do software.

Melhor comunicação entre as equipes.

Desafios do FDD

Requer uma equipe experiente.

A necessidade de um bom processo de modelagem.

Adaptação a mudanças no escopo.

Exercícios:
1 - Qual é o principal princípio do Feature Driven Development (FDD)?
a) Desenvolver o sistema em uma única iteração.
b) Dividir o sistema em features menores e mais gerenciáveis.
c) Usar modelos de domínio apenas no final do projeto.
d) Ignorar a padronização de processos.
Resposta correta: b) Dividir o sistema em features menores e mais
gerenciáveis.

2 - O que é a "construção por passos" no contexto do FDD?


a) Construir o software sem iterações.
b) Integrar todas as features simultaneamente.
c) Desenvolver cada feature incrementalmente.
d) Ignorar o design detalhado.
Resposta correta: c) Desenvolver cada feature incrementalmente.

3 - Qual é a importância da modelagem de domínio no FDD?


a) É irrelevante para o FDD.
b) Ajuda a entender o contexto do sistema e identificar features.
c) Substitui a necessidade de design detalhado.
d) É usada apenas para documentação.
Resposta correta: b) Ajuda a entender o contexto do sistema e identificar
features.

4 - Qual é o propósito das inspeções regulares no FDD?


a) Validar as features no ambiente de produção.
b) Identificar problemas precocemente no código e design.
c) Padronizar o processo de desenvolvimento.
d) Gerar relatórios de progresso.
Resposta correta: b) Identificar problemas precocemente no código e
design.

5 - Qual é a abordagem do FDD em relação à responsabilidade pelas


features?
a) Atribuir todas as features a um único desenvolvedor.
b) Não atribuir responsabilidades às features.
c) Atribuir cada feature a um membro da equipe responsável por sua
concepção, implementação e testes.
d) Delegar a responsabilidade das features aos stakeholders.
Resposta correta: c) Atribuir cada feature a um membro da equipe
responsável por sua concepção, implementação e testes.

Título da Aula: Introdução à Extreme Programming (XP) na Engenharia de


Software.
A Extreme Programming, ou XP, é uma metodologia ágil de desenvolvimento
de software que revolucionou a maneira como as equipes de engenharia de
software abordam o processo de criação de aplicações. Desde sua concepção
nos anos 90, a XP tem se destacado por sua abordagem única e altamente
colaborativa, focada na entrega de software de alta qualidade de forma rápida
e adaptativa.

A XP se baseia em uma série de princípios e práticas fundamentais que visam


aprimorar a eficiência e a eficácia do desenvolvimento de software. Ela enfatiza
a comunicação constante entre membros da equipe, a simplicidade na
resolução de problemas, a flexibilidade para se adaptar a mudanças e a
busca constante pela melhoria do processo. Tudo isso, com o objetivo de
entregar software que atenda às necessidades do cliente de forma precisa e
oportuna.

Este método ágil é caracterizado por práticas como desenvolvimento


orientado a testes, programação em pares, integração contínua e releases
frequentes de software. Cada um desses elementos contribui para a qualidade
do software, a satisfação do cliente e a capacidade de resposta às mudanças
nas demandas do mercado.
Nesta introdução à Extreme Programming na engenharia de software,
exploraremos os princípios, práticas e benefícios da XP, bem como sua
aplicação em projetos de desenvolvimento de software. Veremos como a XP se
destaca como uma abordagem adaptativa e colaborativa que tem
revolucionado a maneira como as equipes de desenvolvimento entregam valor
aos seus clientes e usuários finais. Além disso, discutiremos a relevância
contínua da XP no cenário atual de rápido avanço tecnológico e na busca por
soluções de software cada vez mais inovadoras e eficazes.

Objetivos da Aula:
 Compreender os princípios e valores fundamentais da XP.
 Explorar as práticas-chave da XP e como elas se aplicam ao
desenvolvimento de software.
 Discutir os benefícios e desafios da adoção da XP.

Apresentação dos valores fundamentais da XP:


 Comunicação
 Simplicidade
 Feedback
 Coragem

Práticas-Chave da XP
 Apresentação das práticas-chave da XP:
 Planejamento Semanal: Explicação de como as iterações curtas e
planejamento semanal mantêm o projeto flexível.
 Testes Automatizados: Discussão sobre a importância dos testes
automatizados para garantir a qualidade do código.
 Programação em Pares: Como a programação em pares promove a
colaboração e o compartilhamento de conhecimento.
 Integração Contínua: Explicação sobre como a integração contínua
ajuda a detectar problemas rapidamente.
 Refatoração: Como a refatoração melhora a manutenção do código

Benefícios da XP
 Exploração dos benefícios da XP, incluindo:
 Entrega mais rápida de software funcional.
 Maior qualidade do software.
 Maior envolvimento dos clientes.
 Adaptação eficaz a mudanças nos requisitos.

Desafios da XP
Discussão dos desafios comuns da adoção da XP, como resistência à mudança
e necessidade de comprometimento.

Exercícios:
Qual é um dos princípios-chave da Extreme Programming (XP)?
a) Documentação extensiva
b) Desenvolvimento em silos
c) Comunicação constante
d) Ignorar os testes
Resposta correta: c) Comunicação constante

Qual prática da XP envolve dois programadores trabalhando em conjunto em


um mesmo código?
a) Revisão de código
b) Desenvolvimento em par
c) Testes unitários
d) Programação solitária
Resposta correta: b) Desenvolvimento em par

Qual termo da XP refere-se à prática de criar testes automatizados antes de


escrever o código de produção?
a) Programação em par
b) Integração contínua
c) Modelagem de domínio
d) Desenvolvimento orientado a testes
Resposta correta: d) Desenvolvimento orientado a testes

Qual é o objetivo principal da integração contínua na XP?


a) Detectar e corrigir problemas de integração rapidamente
b) Evitar reuniões de equipe
c) Adiar o lançamento do software
d) Aumentar a carga de trabalho da equipe
Resposta correta: a) Detectar e corrigir problemas de integração rapidamente

Em que situação a XP é particularmente adequada?


a) Projetos de longo prazo sem mudanças
b) Projetos altamente regulamentados e burocráticos
c) Projetos que exigem adaptação constante a requisitos em evolução
d) Projetos com equipe de desenvolvimento isolada e sem interação com o
cliente
Resposta correta: c) Projetos que exigem adaptação constante a requisitos em
evolução

Você também pode gostar