Uml?

[quote=AlexandreGama][quote]
Estava estudando ele, mas penso em utilizar isso nas minhas distribuições.
Até agora para sistemas simples a idéia tem funcionando.
[/quote]

[Desviando o tópico]

E por que voce faria isso??? Os Frameworks do mercado não estão atendendo às suas necessidades?
“As suas distribuições” você que dizer nos sistemas que você for desenvolver ou está desenvolvendo? Tem a possibilidade de outro programador colocar a mão nisso? Se sim, de verdade, aconselho fortemente que você repense isso!
Soluções caseiras são aberrações mal projetadas e que atrapalham a vida de qualquer programador. Em nenhum momento estou falando do seu Framework e sim da utilização dele em produção.

[/Desviando o tópico]

Porém, todavia, entretanto, se seu Framework corresponder em seus testes, não custa nada distribuir como Open Source e tentar juntar uma galera para ajudar…

Vai que cola… e mesmo que não dê certo, valeu a experiência.

Abs []

Abs![/quote]

[quote=adriano_si]Pessoas, não há o CERTO e o ERRADO nessa brincadeira de desenhar Sistemas.

Ambos modelos funcionam e é perfeitamente válido começar um Sistema a partir do modelo relacional.

O que o Alexandre está falando, é concentrado unicamente para Sistemas que querem apoiar-se na Orientação a Objetos para serem escaláveis, de fácil manutenção, livres de gambiarras, etc.

O que ele está tentando lhe mostrar é que começar a modelagem de um Sistema a partir de seu modelo relacional traz alguns perigos. Um dos pontos fortes na argumentação dele é que quando você modela um banco de dados relacional, você já está garantindo que seu sistema terá um Banco de Dados Relacional e que qualquer mudança desse paradigma pode ferrar com seu projeto lá na frente.

Esse exemplo não é meu, mas tenho uns amigos que começaram a modelagem de um Sistema há um tempo atrás e lá pelo 5º mês descobriram que o modelo reclacional ia ferrar com o que eles queria fazer. Tinham 2 opções;

1 - Inventar gambiarras relacionais que consertariam um problema e arranjariam outro;

2 - Pensar em uma alternativa ao modelo ER;

Depois de 1 ou 2 semanas de tentativas e algumas pogs, chegaram a conclusão que um banco Não Relacional seria a saída. Hoje o sistema está implementado no Voldemort;

Se você perceber, ficamos tão fechados nessa idéia de banco de dados relacionais que dificilmente conseguimos enxergar fora da caixa.

Outro perigo grande nessa abordagem é que Modelo OO !!!==== de Modelo ER.

Uma linha de uma tabela precisa de uma gambiarra de mapeamentos e Objetos Anêmicos para todos os lados pra poder ser representada em um Modelo OO.

Claro que para as argumentações acima você pode dizer que: “90% dos Sistemas hojes são resolvidos com modelos relacionais” e eu lhe respondo: “PERFEITO, você está certíssimo” e em nenhum momento posso contradizer tal afirmação.

Porém perceba que mesmo na afirmação acima temos algo que pode se tornar um grande problema. Seu usuário enxerga Software funcionando na cara dele e não banco de Dados. Com base nisso a preocupação do Alexandre é que se você monta seu banco de dados primeiro e fecha um Sistema em cima desse modelo, você corre o risco de 2 coisas:

1 - empacar algumas coisas na sua apresentação de dados por conta de tipos mal pensados;

2 - Quando as telas forem aparecendo e as manutenções também, o custo de mexer no BD aumenta consideravelmente, e o belo Modelo ER que foi pensado antes do designer da aplicação, começa a se comunicar com a mesma através da criação das malditas “FLAGS”, deixando o Sistema todo remendado e com regras confusas;

Com base nisso, respondo sua pergunta. Claro que é perfeitamente possível fazer um Sistema do 0, começando pelo modelo ER, em momento algum alguém discordou disso. O que estão tentando lhe dizer é que não é aconselhável e nem muito menos fácil, a menos que você queira sacrificar a manutenção.

Várias pessoas já desaconselham a prática, o que não quer dizer que a torne errada, mas é porque realmente já apanharam bastante com tal abordagem.

Resumindo, não é errado é só desaconselhável.

Abs []

[/quote]

Estou pensando no que falou.
1 - empacar algumas coisas na sua apresentação de dados por conta de tipos mal pensados;

A única forma séria de me prejudicar que vi, seria se uma má escolha de meu tipo de dado me obrigasse a desmanchar um relacionamento entre duas entidades.
Mas veja, o tipo de dado que uso para relacionar 2 entidades é sempre inteiro FK.
Como uma fala de escolha de tipo poderia me atrapalhar?
É possivel que esteja preso na caixa.
Preciso de um exemplo simples pra entender como isso pode ocorrer.

Com toda certeza! E o Github está aí pra isso. Opa, e por sinal, Luiz Augusto Prado se puder/quiser disponibilizar isso no Github seria legal. =)

Mas o que eu quis dizer foi deixar um projeto (fatalmente será legado para alguém) com um framework caseiro para outros desenvolvedores, sem que este framework esteja maduro/conhecido/tenha apanhado/etc

Vale a pena a leitura: http://www.milfont.org/tech/2009/06/06/frameworks-caseiros-2-a-missao/

Abs!

[quote=AlexandreGama][quote]
Estava estudando ele, mas penso em utilizar isso nas minhas distribuições.
Até agora para sistemas simples a idéia tem funcionando.
[/quote]

[Desviando o tópico]

E por que voce faria isso??? Os Frameworks do mercado não estão atendendo às suas necessidades?
“As suas distribuições” você que dizer nos sistemas que você for desenvolver ou está desenvolvendo? Tem a possibilidade de outro programador colocar a mão nisso? Se sim, de verdade, aconselho fortemente que você repense isso!
Soluções caseiras são aberrações mal projetadas e que atrapalham a vida de qualquer programador. Em nenhum momento estou falando do seu Framework e sim da utilização dele em produção.

[/Desviando o tópico]

Abs![/quote]

Sim, eu sei que estou diante de algo que pra ser bom vai precisar de muita gente.
Eu não conseguirei fazer algo robusto como um JPA ou o Hibernate, que possui uma galera enorme ajudando.
A minha idéia é tentar criar algo simples de forma que o máximo de pessoas possam utilizar e entender sem ter que ficar anos estudando para entender todo um codigo.
As coisas evoluem e crescem em volume de dados rapidamente. Isso pra mim é outra variavel que coloco em consideração no desenvolvimento.

Desaconselho o framework em projetos em produção que envolvam outras equipes, mas a ideia em si é ótima, principalmente como estudo.
Se possível deixe no Github o projeto e a galera que se interessar vai querer ajudar com toda certeza =)

Abs!

[quote=AlexandreGama][quote]
Sim, eu sei que estou diante de algo que pra ser bom vai precisar de muita gente.
Eu não conseguirei fazer algo robusto como um JPA ou o Hibernate, que possui uma galera enorme ajudando.
A minha idéia é tentar criar algo simples de forma que o máximo de pessoas possam utilizar e entender sem ter que ficar anos estudando para entender todo um codigo.
As coisas evoluem e crescem em volume de dados rapidamente. Isso pra mim é outra variavel que coloco em consideração no desenvolvimento.
[/quote]

Desaconselho o framework em projetos em produção que envolvam outras equipes, mas a ideia em si é ótima, principalmente como estudo.
Se possível deixe no Github o projeto e a galera que se interessar vai querer ajudar com toda certeza =)

Abs![/quote]

Legal, tenho interessem formar uma equipe.
Quem tiver interesse em participar de uma equipe mande uma MP.

Uma das minhas metas é que o ORM possa ser estudado e compreendido por inteiro dentro do espaço de algumas horas.
Alguem acha que pode colocar outra meta importante?

Quem sabe se vc criar um tópico pra isso a galera participa =)

Abs!

Eu acho q não dá para ter uma posição radical a esse respeito.

Vc querer documentar tudo nos mínimos detalhes realmente é impossível, como o amigo acima falou, o código é uma coisa viva e “muda” constantemente.

No entanto, acho benéfico haver um punhado (uma pequena quantidade que seja) de diagramas, em especial de atividades e de sequência, descrevendo em um nível de abstração alto algumas regras de negócio complexas. Ele não precisa ir até o último dos detalhes, não tem que mostrar de onde o objeto Usuario vai obter um UsuarioDAO para consultar se o login/senha está correto (até porque os containers tipo Spring fazem isso de forma transparente).

Eu mesmo, quando vou modelar algo, eu parto sempre do diagrama de sequência. Ele é muito rico e é fácil vc definir rapidamente: este objeto fala com este, retorna para aquele e assim vai. Em uma imagem fácil de entender vc detalha a regra de negócio e os objetos que interagem nela (e o melhor, como interagem!). Estes dias estava tentando pensar em um módulo do sistema que estou fazendo e comecei a rascunhar diagramas de sequência. Primeiro diagrama: não, isto não está bom. Segundo: também não está. No terceiro que eu percebi que tinha um objeto apenas enchendo linguiça ali, fiz a 4ª versão sem aquele objeto e sorri: é isto que eu quero! Talvez gente + tarimbada do que eu (eu tenho pouca experiência com linguagens OO) enxergasse o problema logo na primeira olhada.

Ou seja, como ferramenta de modelagem, a UML é poderosa (sabendo usar!). Mas não desprezaria a possibilidade de incluir o diagrama que fiz na documentação, é bom eu ter uma referência de “como” eu cheguei naquela forma de conectar objetos :wink: