Académique Documents
Professionnel Documents
Culture Documents
1Estudante da LEIC
ei03023@fe.up.pt
2 Estudante da LEIC
ei01058@fe.up.pt
3 Estudante da LEIC
ei03026@fe.up.pt
4 Estudante da LEIC
ei03082@fe.up.pt
5 Estudante da LEIC
ei03005@fe.up.pt
Resumo.
Feature Driven Development(FDD) uma metodologia gil de desenvolvimento
de software. Esta metodologia permite desenvolver um sistema de forma rpida e
permite facilmente introduzir novas features (funcionalidades) a este. Uma nova
feature demora entre duas horas a duas semanas a ser concluda. O facto de no FDD
usar-se processos simples proporciona uma rpida exposio do projecto a novos
elementos que venham a fazer parte da equipa, assim como torna o trabalho menos
montono, uma vez que se esta sempre a iniciar/acabar um processo.
1.Metodologias geis
That is, while there is value in the items on the right, we value the items on the
left more.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward
Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron
Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff
Sutherland, Dave Thomas
Desenvolvimento iterativo
Modelo em cascata
Mtodos geis
Mtodos preditivos
Gestor do Projecto
O gestor do projecto quem trata das questes financeiras e administrativas do
projecto. ele que tem a ltima palavra sobre os objectivos, o pessoal e a
calendarizao do projecto. Cabe-lhe tambm assegurar as condies de trabalho
ptimas, para aumentar o rendimento e evitar as distraces.
Chefe de Design
O chefe de design responsvel por toda a arquitectura do projecto e d as sesses
de design, onde expe as suas decises s equipas.
Gestor de Desenvolvimento
O gestor de desenvolvimento lidera as actividades de desenvolvimento do cdigo
do dia-a-dia. responsvel por resolver os problemas de recursos ou conflitos entre a
equipa que venham surgindo. um papel bastante ligado aos de gestor do projecto e
pode ser executado pelo mesmo membro.
Programador Chefe
O programador chefe o responsvel por uma equipa pequena e pela diviso e
atribuio de trabalho entre os membros dela. Deve ser um programador experiente
pois cabe-lhe a escolha das features a implementar em cada iterao e as respectivas
classes e mtodos necessrios. Para este efeito deve colaborar com o chefe de design.
Vai ser ele tambm que faz o relatrio da actividade da equipa semanalmente e trata
dos problemas tcnicos e de recursos com os outros programadores chefe.
Dono de Classe
O dono de classe um membro de uma equipa sob o comando de um programador
chefe e est responsvel pela arquitectura, implementao, teste e documentao de
uma determinada classe. Em cada iterao far parte das equipas cujas features
envolvam a sua classe.
Especialista da rea
O especialista da rea algum que conhece o assunto sobre o qual a aplicao
actua. Est envolvido na deciso do preo do programa e ele que assegura que o
sistema seja competente dentro da rea, passando a quem desenvolve o programa os
conhecimentos necessrios. O especialista da rea pode ser um cliente, um analista de
negcio, um patrocinador ou um utilizador.
Gestor de Actividade
O gestor de actividade recebe os relatrios de actividade os vrios programadores
chefe e vai mantendo o gestor do projecto informado.
Guru da Linguagem
O guru da linguagem um papel importante quando se trabalho com linguagens
ou tecnologias novas. Ele responsvel por domin-las.
Engenheiro de Builds
O engenheiro de builds o responsvel por criar e manter o processo de build para
as vrias verses incluindo a documentao respectiva.
Administrador do Sistema
O administrador do sistema configura, gere e resolve problemas nos servidores e
redes usadas.
Tester
O Tester deve experimentar todos os casos de utilizao exaustivamente e
verificar se o sistema slido, resistente a erros e se preenche os requisitos do cliente.
Suporte
O trabalho de suporte consiste em converter a informao para o formato
necessrio a um novo sistema e a novas releases do programa.
Documentador
O documentador cria os manuais tcnicos e de utilizao.
Como tinha sido referido acima esta metodologia consiste em cinco processos
sequenciais sendo estes:
1. Develop an Overall Model (Trata-se de utilizar os requisitos e
funcionalidades pedidas pelo cliente e fazer o estudo destas de forma a fazer a
estrutura do sistema. Baseia-se no desenho do sistema);
2. Build by Features list (Constri uma lista de features detalhada e
ordenada por ordem hierrquica);
3. Plan By Feature (Trata-se de planear como devem ser
desenvolvidas as features);
4. Design by Feature (Analisa uma feature em particular e estuda-a de
forma a criar-se um detalhado diagrama sequencial, que ser os passos a seguir
para construir uma feature);
5. Build By Feature (Faz todas as alteraes necessrias para ser
possvel construir uma feature).
Em baixo esta uma descrio detalhada destes processos.
Este processo inicia-se quando o cliente est pronto para dar incio ao projecto.
Este tem de alguma forma uma lista de requerimentos, que podero estar ou no
anotados. O cliente indica quais os requisitos que quer ver compridos pelo sistema.
Cabe s equipas de desenvolvimento analisar o sistema anterior e verificar se todos os
requisitos foram especificados pelo cliente, sugerir novos requisitos e colocar todas as
questes que possam ainda no ter sido respondidas, ou que tenham sido esquecidas.
O cliente chega com os seus requisitos e apresenta-os ao desenvolvedores. Estes
em conjunto com os especialistas da rea e sobre a liderana de um modelador de
componentes e/ou de objectos experiente (chefe de design), trabalham em conjunto
neste processo.
Os especialistas da rea apresentam um guia inicial e prerio do sistema e do seu
contexto. Que em conjunto com os desenvolvedores criam a estrutura inicial do
sistema, que deve ser seguido desde o incio.
Depois de desenvolvido este esqueleto os especialistas da rea voltam a fazer o
guia inicial, sendo desta vez mais detalhado.
Entretanto sempre que os membros deste processo trabalham em conjunto em
pequenas equipas, ou seja, quando trabalham em reas mais especificas a determinado
grupo, e que a participao de outros membros seria desnecessria, os resultados
desse trabalho so adicionados ao modelo comum, que sofre os respectivos ajustes
para se manter sempre vivel ao longo de todo o processo.
Neste processo necessrio de compreender perfeitamente o que o cliente deseja,
e de o explicar a todo o grupo de trabalho. Para que todos saibam o que tenham de o
fazer e como o devem fazer. Este plano descrito mais detalhadamente nos processos
seguintes.
Para melhor compreender o sistema e para mais facilmente o explicar ao grupo
de trabalho, constri-se um relatrio de requisitos, assim como um diagrama de
classes, preferencialmente ordenado por ordem descendente de importncia, classes,
ligaes, mtodos e os atributos.
As classes e as ligaes so o contedo da estrutura do sistema. Os mtodos
expressam as funcionalidades e so o material para construir a lista de features a
desenvolver.
Tambm so tomadas notas acerca de diferentes modelos que poderiam ser
tomados como alternativas.
Em resumo:
Neste processo, entra a provisria lista de features desenvolvidas no processo
anterior e sai uma detalhada lista de features agrupada em maiores conjuntos de
features e conjuntos de features. Lista esta que ter de ser revista e aprovada pelo
desenvolvedor assim como pelo arquitecto chefe.
2.2.3.Plan by feature
Este processo ira ser repetido tantas vezes quantas o nmero de features a
desenvolver. Isto porque necessrio fazer o desenho da estrutura para cada feature.
Iremos analisar este processo com algum cuidado, isto porque apesar de o que ele
faz ser fcil de entender, este tem de analisar vrios documentos construdos noutros
processos, assim como trocar informao com outros AGENTES.
Comecemos ento a analisar este processo, o programador chefe comea por
identificar as classes que esto envolvidas nestas features. E contacta os respectivos
responsveis dessas classes, estes escrevem/actualizam a classe e os prottipos dos
mtodos que esta contm, actualizando o diagrama sequencial. Estes responsveis
incluem tipo de parmetros, tipo de valores retornados, excepes e mensagens
enviadas.
Dependendo da complexidade da feature o programador chefe poder consultar
os especialistas da rea para que estes lhe dem uma viso acerca da rea de domnio
que esta feature engloba, esta informao ser includa na construo do diagrama,
mas no far necessariamente parte da implementao. A equipa de programadores
poder tambm consultar documentos da lista de features ou de outro documento, de
forma a extrair informao detalhada acerca desta feature.
Depois de consultar todos os documentos que se ache necessrio para a
compreenso da feature, o programador consulta o diagrama sequencial construdo
num processo anterior, e com base em toda a informao recolhida este constri um
diagrama de sequncia detalhado e formal para esta feature. Este diagrama
adicionado ao projecto modelo.
A equipa de programadores toma nota de todas as alternativas, decises e notas
que achem relevantes.
Antes de dar por terminado este processo necessrio garantir que o
programador chefe assim como arquitecto chefe revejam e aprovem:
- O diagrama sequencial e o de classes actualizado;
- As classes e os mtodos actualizados;
- As notas de considerao da equipa de programadores;
- Os documentos de referncias de features, caso haja necessidade.
Caso todos estes documentos sejam aprovados passamos ao ltimo processo
Build By Feature.
Tal como no processo anterior, este processo ira ser repetido para cada feature,
pois todas as features tero de ser construdas.
Este processo comea por estudar a informao proveniente do processo anterior
e seguidamente comea a construo da feature. Nomeadamente comeam os
responsveis pelas classes associadas a esta feature a construir os mtodos que esta
feature ira necessitar. Estes responsveis iro tambm estender os testes de uso desta
classe assim como os testes unitrios da mesma.
A equipa de desenvolvimento desta feature inspecciona o cdigo, antes ou depois
de estruturados os testes unitrios.
Quando o cdigo implementado com sucesso e inspeccionado, o responsvel da
classe verifica a classe assim como as configuraes de manuteno do sistema.
Quando todas as classes referentes a esta feature forem verificadas, o programador
chefe indica que o cdigo para desenvolver esta feature esta disponivel. Esta alterao
registada na lista de features.
Para dar este processo como terminado o programador chefe devera rever e
aprovar:
- A implementao, inspeco e teste dos mtodos;
- Os testes unitrios para cada mtodo;
- A verificao das classes por parte dos seus responsveis;
- A promoo das features;
- A actualizao da lista de features realizada por si prprio.
2.3.Ferramentas de aplicaes
Aps um breve estudo das metodologias geis mais conhecidas, verificamos que
a que se assemelhava a FDD era eXtreme Programming (XP), sendo esta a mais
interessante de comparar. Vamos ento apresentar as semelhanas entre FDD e XP.
Tanto FDD como XP, foram desenhadas de modo a que as equipas possam
mostrar resultados mais rapidamente sem comprometer a qualidade. So processos
altamente iterativos e orientados a resultados. So ainda metodologias que acabam
com a separao entre os analistas, os desenhadores e implementadores. Estes novos
processos em conjunto com novas ferramentas, vo permitir que a analise, concepo,
cdigo, teste e desenvolvimento sejam feitos em simultneo. Quais so ento as
diferenas entre FDD e XP?
Modelo
Testes
Em FDD o teste das unidades garantido como uma parte da fase Build by
Feature. No esto definidos os mecanismos ou os nveis de formalidade para o teste
das unidades. Deixa-se ao cargo do programador chefe definir o que apropriado.
aceitvel usar tcnicas de teste de unidades de XP em FDD. Quando novas
builds so criadas regularmente ou at continuamente, faz sentido haver um maior
nmero de testes que possam ser usados. Em FDD, no se especificou isto, visto que a
tecnologia e os recursos diferem muito de projecto para projecto. Em muitos casos
muito difcil criar um grupo isolado de testes independentes que possam ser corridos
num intervalo de tempo razovel.
Referncias
Artigos sobre metodologias geis e outros mais especficos sobre FDDs, nomeadamente:
http://www.pcoad.com/download/bookpdfs/jmcuch06.pdf
http://www.inf.vtt.fi/pdf/publications/2002/P478.pdf
http://www.vtt.fi/ele/uutta/electra/agile.pdf
http://www.nebulon.com/articles/fdd/download/fddoverview.pdf
E ainda a consulta a pgina respectiva a esta metodologia:
http://www.featuredrivendevelopment.com/