[Notes2-team] *como vamos funfar?*
Brought to you by:
andersonrb
|
From: Anderson R. B. <and...@po...> - 2003-07-20 03:54:58
|
Bom,
um tempo atr=E1s lancei uma pergunta na lista que era a seguinte:
*como vamos funcionar?*
Poucas respostas (uma?) apareceram na lista. Ent=E3o, acho que como=20
capit=E3o do barco
=E9 minha fun=E7=E3o propor algo. =C9 s=F3 uma proposta a ser=20
discutida-modificada-refeita-critica-etc.
Ent=E3o nada de votos (ainda). quero apenas vossas opini=F5es e id=E9ias.=
Vamo l=E1:
-
Penso que no momento a equipe n=E3o aguentaria um per=EDodo de 2-3 meses =
em=20
que fossemos fazer o design de todo o c=F3digo e que os usu=E1rios est=E3=
o=20
esperando ver algo funcionado logo,logo. Al=E9m disso, n=E3o tenho certez=
a=20
se vale realmente a pena fazer um design de TODO o c=F3digo, j=E1 que por=
=20
mais que tentemos nos ater aos planos, iremos modific=E1-los por v=E1rios=
=20
motivos: por que novas (e melhores) id=E9ias podem surgir a qualquer=20
momento; por que novas pessoas entrar=E3o na equipe e v=E3o querer coisas=
=20
que n=E3o estavam planejadas inicialmente; por que algumas das coisas=20
planejadas podem ser mais dif=EDceis de serem feitas do que esper=E1vamos=
;=20
etc. Tamb=E9m n=E3o acho que temos uma equipe suficientemente grande para=
=20
quebrar o c=F3digo em m=F3dulos que cada grupo de programadores=20
implementaria em separado - tamb=E9m por que n=E3o =E9 vantajoso que as=20
pessoas s=F3 conhe=E7am uma parte do c=F3digo... Acho que o mais indicado=
=20
seria funcionarmos da maneira que um programador solit=E1rio funcionaria:=
=20
ele primeiro implementaria o componente de edi=E7=E3o de textos, verifica=
ria=20
se ele funciona perfeitamente, jogaria ele num form e faria o primeiro=20
release (um pr=E9-pr=E9-alpha). Claro que neste caso n=E3o ser=EDamos um=20
programador, mas ser=EDamos sim um s=F3 grupo. O design de cada m=F3dulo=20
importante do c=F3digo (por exemplo, o componente de edi=E7=E3o) seria fe=
ito=20
imediatamente antes de come=E7ar a desenvolv=EA-lo. Modifica=E7=F5es pode=
riam=20
ser feitas no design se id=E9ias melhores fossem surgindo durante o=20
desenvolvimento. Ou seja, a minha id=E9ia =E9 de fazermos os m=F3dulos em=
=20
s=E9rie (um depois do outro, escritos pelo grupo) e n=E3o em paralelo (to=
dos=20
ao mesmo tempo, cada um escrito por parte do grupo).
Cada m=F3dulo seria a implementa=E7=E3o de uma nova feature. Poderiam ser=
=20
m=F3dulos o componente de edi=E7=E3o; o gerenciador de temas (que altera =
cores=20
e =EDcones da interface); o suporte a extens=F5es; a constru=E7=E3o da GU=
I=20
atrav=E9s de arquivos de configura=E7=E3o (toolbars e menus criados atrav=
=E9s de=20
arquivos XML); etc. Cada vez que um m=F3dulo estiver "pronto" ele=20
adicionado ao Notes e =E9 lan=E7ado ao p=FAblico. Assim v=E1rios e v=E1ri=
os=20
pr=E9-alphas seriam lan=E7ados, permitindo tanto que os usu=E1rios=20
verificassem que estamos trabalhando, que eles reportassem os bugs que=20
fossem encontrando nos m=F3dulos j=E1 "acabados" e que fossem dando suas=20
sugest=F5s para melhorias durante o desenvolvimento. Quem acompanha o=20
desenvolvimento de softwares livres sabe que =E9 mais ou menos assim que=20
as coisas funcionam - os desenvolvedores v=E3o adicionando features e=20
fazendo releases. Nada de genial at=E9 aqui ent=E3o. Al=E9m disso, propon=
ho=20
que cada um desses m=F3dulos (que na realidade ser=E3o conjuntos de class=
es=20
e componentes) possa funcionar sem muito c=F3digo extra. Por exemplo, o=20
componente de edi=E7=E3o deve poder descobrir sozinho onde ficam os arqui=
vos=20
de configura=E7=E3o que ele precisa e carregar as suas informa=E7=F5es de=
l=E1,=20
sem interven=E7=E3o de algum c=F3digo no form principal. Ou seja, os m=F3=
dulos=20
devem ser o mais independente poss=EDveis, devem funcionar sozinhos -=20
basta voc=EA criar um deles que o resto ele sabe fazer. Eu acho que o=20
quanto mais objeto orientado for o c=F3digo, mais f=E1cil ser=E1 mantermo=
s e=20
melhorarmos o Notes 2 no futuro.
Como seriam feitos os m=F3dulos? Eu sugeriria quebrarmos a constru=E7=E3o=
dos=20
m=F3dulos em micro-tarefas que ficariam sob responsabilidade sempre de=20
apenas uma pessoa. Digamos que temos que limpar o SynEdit de todo o=20
c=F3digo dele que faz a colora=E7=E3o de syntaxe (realmente teremos que f=
azer=20
isto). Dividimos as Units (que s=E3o muitas) do SynEdit entre os=20
desenvolvedores e cada um teria que limpar as Units pelas quais ficou=20
respons=E1vel em 1 ou 2 semanas. Ou seja, rapidamente ter=EDamos todo o=20
SynEdit pronto para mexermos nele. E, no meio deste processo, todos=20
acabariam j=E1 tendo uma familiariza=E7=E3o com ele - o que j=E1 ajudar=E1=
na=20
realiza=E7=E3o das pr=F3ximas tarefas! Assim, a cada 1,2 ou 3 semanas nos=
=20
encontrar=EDamos (chat, irc, icq, e-mail, etc.) e distribuir=EDamos as=20
micro-tarefas entre os programadores. O importante =E9 que todas as=20
micro-tarefas sejam curtas o suficiente para serem feitas pelo=20
programador respons=E1vel dentro do prazo. De quelaquer forma, seria=20
importante que no min=EDmo uma vez por semana o desenvolvedor atualizasse=
=20
o CVS com as mudan=E7as que ele fez e baixasse as modifica=E7=F5es feitas=
por=20
outros (poder=EDamos combinar um dia da semana em que todos teriam que=20
atualizar o CVS, se n=E3o o tiverem feito ainda).
Cada programador deveria testar o seu c=F3digo e ter certeza de que ele=20
funciona conforme a tarefa exige - e conforme o nosso planejamento. Cada=20
c=F3digo deve ser testado para ver se funciona perfeitamente em todas as=20
situa=E7=F5es. Por exemplo, um m=E9todo que serve para passar o conte=FAd=
o de um=20
arquivo para uma string deve ser testado com v=E1rios arquivos, de todos=20
os tamanhos, bin=E1rios e de texto, com arquivos localizados na rede e at=
=E9=20
com arquivos que n=E3o existem. O programador teria liberdade aqui para=20
implementar o que lhe foi pedido do modo que achar melhor - afinal este=20
=E9 um software livre, temos que nos divertir um pouco ao desenvolvermos=20
ele, n=E9?! Cada programador teria completa autonomia para modificar=20
c=F3digos que outros fizeram para que o c=F3digo novo e o c=F3digo antigo=
se=20
integrem perfeitamente. Todos os programadores teriam a responsabilidade=20
em tornar o c=F3digo do programa mais flex=EDvel e reus=E1vel, eliminar (=
ou=20
comentar) funcionalidades que n=E3o est=E3o sendo utilizadas e melhorar=20
designs obsoletos (obviamente a equipe dever=E1 ser consultada antes de=20
modifia=E7=F5es enormes). O desenvolvedor teria tamb=E9m a responsabilida=
de de=20
documentar cada tarefa que implementa (assim a documenta=E7=E3o do source=
do=20
notes estar=E1 sempre atualizada e novatos na equipe poder=E3o se integra=
r=20
mais rapidamente) e de, ao t=E9rmino da tarefa, enviar para a lista um=20
micro-relat=F3rio sobre o que ele implementou e que testes fez para=20
verificar se o c=F3digo funciona como deveria. (Quem sabe possamos usar=20
componentes de testagens como o DUnit ou o QTeste para automatizar as=20
nossas testagens...) Estes micro-relat=F3rios dever=E3o ser arquivados, p=
ois=20
provavelmente ser=E3o extremamente =FAteis ao encotrarmos bugs :)
N=E3o sei se voc=EAs conseguem imaginar isto ocorrendo. Conseguem? Eu=20
consigo. A id=E9ia =E9 basicamente que todos sempre saibam de tudo o que=20
est=E1 ocorrendo; que cada um sempre saiba o que tem que fazer e qual =E9=
o=20
prazo que deve observar; que existam coisas conclu=EDdas no programa (2=20
m=F3dulos prontos ao inv=E9s de todos os m=F3dulos rec=E9m iniciados) par=
a que=20
possam ir a p=FAblico - como deveria ser feito em qualquer software livre=
;=20
que as coisas sejam flex=EDveis o suficiente para podermos implementar as=
=20
id=E9ias que aparecem e jogar fora as que se mostrarem ruins; e que tudo=20
isto esteja documentando sempre, para facilitar a vida dos=20
rec=E9m-chegados e possibilitar que eles possam come=E7ar a contribuir=20
conosco o mais rapidamente poss=EDvel. =C9 um m=E9todo que mant=E9m todo =
mundo=20
sempre funcionando - sem precisar que eu fique chamando a aten=E7=E3o de=20
algu=E9m por n=E3o estar contibuindo (eu odeio ter que chamar a aten=E7=E3=
o de=20
qualquer um!). Al=E9m disso, a qualidade do software est=E1 sempre sendo=20
"medida" tanto atrav=E9s dos testes feitos por cada desenvolvedor quanto=20
pelos testes feitos pelos usu=E1rios nos pr=E9-releases.
*RESUMO:*
M=F3dulo 1
-=3DDesign do M=F3dulo 1=3D-
# Parte A
> Desenvolvedor 1: micro-tarefa 1;
> Desenvolvedor 2: micro-tarefa 2;
> Desenvolvedor 3: micro-tarefa 3;
> Desenvolvedor 4: micro-tarefa 4; etc.
# Parte B
> Desenvolvedor 1: micro-tarefa 5;
> Desenvolvedor 2: micro-tarefa 6;
> Desenvolvedor 3: micro-tarefa 7;
> Desenvolvedor 4: micro-tarefa 8; etc.
# Parte X, etc.
----------> Notes 2 Pr=E9-Alpha 1
M=F3dulo 2
-=3DDesign do M=F3dulo 2=3D-
# Parte A
> Desenvolvedor 1: micro-tarefa 9;
> Desenvolvedor 2: micro-tarefa 10;
> Desenvolvedor 3: micro-tarefa 11;
> Desenvolvedor 4: micro-tarefa 12; etc.
# Parte X, etc.
----------> Notes 2 Pr=E9-Alpha 2
M=F3dulo 3
-=3DDesign do M=F3dulo 3=3D-
# Parte X, etc...
--
Ab.
Anderson
|