terça-feira, 14 de julho de 2009

Modelagem de dados


Estanho... Mais ou menos, por ter sido eu que fiz com certeza é estranho, mas mesmo sendo eu que tenha feito tem uma explicação. Pois bem, no fim do ano passado tive de fazer meu primeiro TCC. E como um programador java, daqueles que toma café sem açúcar, pensei : "Vou usar o que o java tem de mais punk". Numa dessas vou fazer uma aplicação web e desktop, ao mesmo tempo. Mas conexão só via banco ia ser uma *&%$#, uma montueira de codigo ia se repetir, fora que eu acabaria temdo o dobro do trabalho pra fazer uma coisa só. Então o que fiz, usei uma das minhas paixões que é MVC. A real é que MVC era bem limitado pro que eu queria, afinal eu teria dus views, que intepretam os dados de maneiras diferentes, bem como não tinha uma camada de persistência, outra parada muito legal. Então pensei cá com meus botões, vou fazer minha própria modelagem de dados. E ai surgiu esse negócio doido ai. Dessa história modelo e controle tem comportamento padrão do MVC, persistencia é uma camada especifica da aplicação a qual vai tratar da recuperação e persistência dos objetos. Dependendo da implementação, ela acaba ficando um nivel acima do modelo, o que faz ter um ganho considerável na produtividade na programação das persistencias. De diferente temos a command que funciona diretamente na aplicação das regras de negócio da aplicação, e outros pontos de aplicação que não necessitam descer ao nível do controle para se obter a resposta esperada. Ao controle primário cabe a interpretação e conversão dos dados de cada view da aplicação. Ainda faz intrepretação dos dados que recebe do controle, e etabelecimento direto de comunicação com a command. As views, entradas e saídas do sistema.Mas grande (leia-se pequeno) cabeçudo como implementar essa poióca? Muito simples nobre jedi, aos que já trabalharam com EJB mais ainda. No EJB a aplicação se divide em três partes, a WEB (aplicação em si), a EAR (modulo de greação de ear's ohhhhhhhhhhhh), e aoutra que eu já esqueci. Enfim, nessa há duas partes, uma biblioteca que serve como Kernel, incorporado a outras duas partes uma web e a outra desktop.
o Kernel, é mais precisamente da command para baixo. A command por sua vez deve ter métodos que correspondam a todas as requisições necessárias a ambos controles primários. Quanto ao controle deve possuir métodos apenas de saída para as requisições oriundas da command e que teram uma saida direta que não precise de grandes interpretações como uma String ou algo simples assim, as demais saídas poderá responder apenas a command. Desse módulo deve se gerar um jar, ou importar o projeto para dentro dos outros (que no fim dá na mesma). Os outros projeto são assim um JABBA, gordos e pregiçosos que rebem tudo na mão e dão ordens. Recebem tudo do jar dentro do projeto e quaisquer informações que precisarem terão lá. A implementação dos mesmos não foge em nada do que qualquer iniciante em Java consiga fazer, tanto que ainda na primeira fase da faculdade dois de meus nobres colegas me auxiliaram (Tiago, o homem santo e Símon que não é conquistador, mas é traíra achando que é conquistador). Detalhe, para execução de tal projeto na estimativa de pontos por função, ele ficou em 6 meses, em quatro programadores 8 horas por dia. Pois bem, após um mês especificando o sistema (eu e meu nobre colega de TCC Stephan) nos sobrava um mês para implementar tudo. Com a ajuda de mais nossos outros dois colegas citados anteriormente, em um mês aos fins de semana (eu e Stephan ) 20 horas por dia, mais quatro horas diárias, e mais duas horas na aula da Carla, eu Tiago e Símon. Conseguimos construir toda a biblioteca, toda a parte desktop e o controle primário da web, faltando apenas a casca html. Provando a eficiência assim da minha modelagem de dados (e que nego desesperado pra se formar faz coisa). Bem para finalizar vou citar uma célebre frase de nosso amigo Maso, musa inspiradora desse blog:
"Eu não sou nerd não cara, procura na wikipédia o que quer dizer nerd."

6 comentários:

  1. pra que simplificar se pode complicar?
    não entendi o porque do Simón ser conquistador oO.

    =)

    ResponderExcluir
  2. Não tem idéia de como isso simplificou...
    O simon é conquistador de mulher que gosta de vara curta sabe (pelo menos ele tenta).

    ResponderExcluir
  3. ha, haha, hsuahusa, hsuahushahsuhauhsuhaushauhsuhaushuahushuahsuhaushuahushuahsuahsuahsuahsuahsuahsuahsuahsuahsuahsuahsuashuahsuahsua

    Simón: Fuuu...

    ResponderExcluir
  4. Legal me colocar entre os colaboradores do projeto, mas na verdade mesmo quase não fiz porcaria nenhuma, só escrevi algumas linhas...

    Ah sim, acho que o comedor (no mau sentido) de caprinos podia ficar quieto...

    ResponderExcluir
  5. Pelo menos eu como alguma coisa e ela ainda não pode falar mal da minha vara. De qualquer maneira valeu pelas poucas linhas que tu fez, sem elas meu sistema com certeza teria umas funções a menos, ou não.

    ResponderExcluir
  6. não era mais facil ter usado mvc pras duas views? =x

    é a base dos webservices. Persistencia é model, Controller é cola de capinha e Interface é uma capinha de celular nokia vagabunda que se troca de tempos em tempos.

    ResponderExcluir