No último post, eu falei sobre o uso de estimativas para o histórico e que isso não era trivial. De fato, a computação de médias sobre valores do histórico é algo que deve ser pensado com calma. Por exemplo, vamos supor que o sistema S1 teve o campo "Usuario.nome" mapeado para "Nome do usuário" e no sistema S2 esse campo foi mapeado para "Nome" simplesmente. No sistema S3, qual será o valor que o sistema de histórico deve sugerir para esse campo? Com uma média simples, o valor poderia ser 50% para cada e, na prática o sistema de histórico, nesse caso, não ajudaria nada.
Pois bem. Eu imagino que o sistema de histórico deve usar uma escala temporal ascendente de pesos para o cálculo. Como assim? É simples, as coisas que são mais recentes devem ter um peso maior. No caso acima, o valor inferido pelo sistema de histórico deveria ser o valor de S2, ou seja, em S3 a sugestão para "Usuario.nome" seria "Nome".
Mas qual o argumento para isso? O argumento é simples: evolução. Em outras palavras, considero que a cada novo desenvolvimento a equipe incorpora conhecimento ao sistema, de forma que as novas decisões são as mais consistentes. Nesse sentido, as decisões tomadas para o sistema S2 são mais relevantes que as tomadas para o sistema S1. Claro, existem aspectos que fogem ao escopo do problema (o sistema S3 pode ter sido construído com mais pressa e menos cuidado; a nova equipe de desenvolviemento tem menos experiência no negócio; estagiários foram contratados; etc, etc e etc.). Mas isso não tem como saber, a não ser que seja parâmetro de configuração e, nesse caso entramos no problema do grafo infinito de escolhas...Deixa pra lá.
A questão que surge aqui é a seguinte: Quais os pesos que devem ser aferidos para cada ponto no histórico? Pode ser uma escala linear, como "S1=x, S2=2x, S3=3x", uma escala com valores exponenciais, como "S1=x^1, S2=x^2, S3=x^3" ou alguma outra. Na prática, acho que a linear seria mais interessante e menos agressiva. Outra alternativa seria deixar isso na configuração, de forma que o desenvolvedor tenha liberdade de optar por qual escala utilizar e que pesos associar a cada ponto do histórico. Mais um tópico a ser estudado.
Pois bem. Eu imagino que o sistema de histórico deve usar uma escala temporal ascendente de pesos para o cálculo. Como assim? É simples, as coisas que são mais recentes devem ter um peso maior. No caso acima, o valor inferido pelo sistema de histórico deveria ser o valor de S2, ou seja, em S3 a sugestão para "Usuario.nome" seria "Nome".
Mas qual o argumento para isso? O argumento é simples: evolução. Em outras palavras, considero que a cada novo desenvolvimento a equipe incorpora conhecimento ao sistema, de forma que as novas decisões são as mais consistentes. Nesse sentido, as decisões tomadas para o sistema S2 são mais relevantes que as tomadas para o sistema S1. Claro, existem aspectos que fogem ao escopo do problema (o sistema S3 pode ter sido construído com mais pressa e menos cuidado; a nova equipe de desenvolviemento tem menos experiência no negócio; estagiários foram contratados; etc, etc e etc.). Mas isso não tem como saber, a não ser que seja parâmetro de configuração e, nesse caso entramos no problema do grafo infinito de escolhas...Deixa pra lá.
A questão que surge aqui é a seguinte: Quais os pesos que devem ser aferidos para cada ponto no histórico? Pode ser uma escala linear, como "S1=x, S2=2x, S3=3x", uma escala com valores exponenciais, como "S1=x^1, S2=x^2, S3=x^3" ou alguma outra. Na prática, acho que a linear seria mais interessante e menos agressiva. Outra alternativa seria deixar isso na configuração, de forma que o desenvolvedor tenha liberdade de optar por qual escala utilizar e que pesos associar a cada ponto do histórico. Mais um tópico a ser estudado.
0 comentários:
Postar um comentário