Atena Framework: Nova plataforma de desenvolvimento de sistemas do Ministério Público Federal

Atena é um framework para o desenvolvimento de sistemas web que integra produtos ‘opensource’ como Struts 2, Velocity, Ajax e Hibernate, facilitando seu uso e ampliando suas potencialidades. Entre seus recursos encontram-se:

  • Prototipação em Java com reutilização de código
  • Desenvolvimento por Página ou por “Caso de Uso”
  • Ajax integrado (sem APIs externas)
  • Repositórios de comandos EJB QL
  • EJB QL Estendida
  • E muito mais…

As distribuições do Atena estão disponíveis para download ‘free’ sob a licença Apache 2.0. Maiores informações podem ser obtidas pelo site http://atena.mpf.gov.br e http://sourceforge.net/projects/atena-framework

Obs: fiz algumas alterações nos posts para melhorar a compreensão de todos.

Olá

É interessante desde que ninguém por aí tenha a “brilhante” (*) idéia de engessar isto como aquela velha e tola ideía de “framework de referência” (**) como muitas consultorias de 3 letrinhas tentam fazer por aí.

Espero sinceramente que isto NÃO seja um “framework de referência” para ser usado em todos os projetos…

(*) é ironia mesmo

(**) eu concordo plenamente com o que foi dito na palestra do Paulo Silveira e Phillip Calçado no último JustJava sobre como é horrível a ideía de “framework de referência” (slide 50 do Bozo com a bomba na mão). No caso de empresas de Governo isto chega a ser até perigoso.

[]s
Luca

[quote=Luca] como é horrível a ideía de “framework de referência” . No caso de empresas de Governo isto chega a ser até perigoso.

[/quote]

Você não faz idéia o quanto isso está se tornando rotina.
Só o que tem hoje são esses frameworks de referência e pra você conseguir montar a arquitetura que atende sua solução sem usá-los é sempre um parto. Eles são tidos como algo sagrado. E são empurrados como A SOLUÇÃO.

Pior que em geral eles se baseiam em struts, ejb, tiles, muito xml, às vezes uma pitada de VOBO…

Eu não participei da justjava… mas fiquei curioso, entendi mais ou menos mas vou fazer a pergunta completa: O que são frameworks de referência e porque são ruins?

Valeu!

Olá

  1. Frameworks de referência são aqueles pacotes de tecnologias que mal ou bem deram certo em um projeto com determinadas características que o gerente quer seja adotado como padrão para todos os futuros projetos.

O gerente neste caso pensa igualzinho àquele prefeito de uma cidade da Virgínia/USA, que em 1800 e pouco, mandou fechar o departamento de patentes porque julgava que tudo que era necessário já tinha sido inventado.

  1. É ruim por 2 motivos:

a) Não existem 2 projetos iguais com as mesmas características, mesmo considerando os mesmos ramos de negócios. Exemplo: um sistema de controle de estoque e faturamento tem características diferentes de um sistema de CRM que acompanhará as vendas e o faturamento.

b) Mesmo que existissem 2 projetos iguais, o que há de novidade no mundo pode significar grandes melhorias no modo como uma mesma coisa foi feita no passado. É tolice engessar o modo de fazer as coisas.

O engessamento é ruim porque até mesmo uma nova versão do que já era usado às vezes é proíbida para não quebrar o tal framework de referência. Comparem as versões do Spring ou do Hibernate e vejam quantas novidades mudaram o jeito de fazer antigo.

Sempre que conhecerem uma empresa que adota o tal “framework de referência”, lembrem-se do prefeito da cidadezinha da Virgínia.

Acho que não deve ser o caso de quem postou a mensagem inicial mas no caso de empresas de Governo, adotar um “framework de referência” é perigoso porque pode atrelar futuras compras a um determinado grupo capaz de fornecer coisas com determinado perfil.

[]s
Luca

Oi Luca, valeu!

Agora uma dúvida, um framework o qual você está em todo projeto tendo a possibilidade de melhora-lo, mudar uma coisa ou outra, mas que vc usou ele apenas da idéia da concepção para não refazer a roda por exemplo na hora de abrir conexões, formulários, etc. vc usou ele como uma referência e mudou para aplicar a sua necessidade, é considerado um framework de referência ou apenas um que vc usou na concepção para não reinventar rodas?

Abs!

Olá

O erro não é definir um grupo de tecnologias para desenvolver um determinado projeto. Isto todo mundo deve fazer. O errado é fixar este grupo de tecnologias como algo que sirva para tudo no futuro.

[]s
Luca

Minhas considerações sobre o tema (com alterações):

O Atena Framework foi resultado do processo natural de desenvolvimento de sistemas do Ministério Público Federal, e de preocupações com reúso. Ele foi gerado para facilitar a criação de sistemas com as tecnologias utilizadas pelo MPF, incorporando funcionalidades que resolvem questões recorrentes em nosso processo de desenvolvimento (como disse o balancin, para não reinventar a roda).

Considero que ter um framework de referência (ou frameworks) é positivo em vários sentidos:

a) O framework oferece uma solução já amplamente testada
b) Os sistemas desenvolvidos terão códigos parecidos
c) Manutenção e documentação facilitada
d) Melhor aproveitamento de recursos para capacitação e treinamentos
e) Maior produtividade da equipe
f) Menor cursto de produção
e muitos outros…

No entanto, compreendo a preocupação do Luca de não engessar o processo de desenvolvimento nem a criatividade dos programadores. A intenção não é essa! Se o Atena não atender aos requisitos dos usuários, outra solução deverá ser pesquisada. Mas se atender, é melhor que seja desenvolvido com ele!

Além do mais, o Atena é um framework em constante evolução (já são 4 versões em 3 anos). Os feedbacks dos desenvolvedores são insumos para as novas versões. Assim, não existem amarras contra mudanças. Só nos preocupamos com mudanças muito radicais em curtos espaços de tempo.

E mais uma vez: O Atena não impõe qualquer limite às tecnologias adotadas, Struts 2, Velocity, EJB 3 e JPA. Ele apenas expande suas possibilidades!

[]s
Godoi

Poutz, só essa pretensão já deveria ser motivo suficiente pra abortar o projeto.

Veja, eu não costumo ter posturas muito radicais, mas quando se trata de fixar padrões a coisa é um pouco diferente. Eu acho que vocês simplesmente ignoraram a existência de qualquer desvantagem. E veja os pontos positivos: “maior”, “melhor”, “facilitada”. Deixe-me por isto em termos que qualquer leigo entenderia: chute.

Ao meu ver, o que está acontecendo é a clássica situação em que se tem um problema, gerado pelas pessoas: código pouco organizado, mal documentado, repetitivo. E se tenta usar um software (no caso, o framework) como solução. O resultado dessa mistura é bastante óbvio: dois problemas.

Se o código já é mal documentado, difícil de manter, se a produtividade é baixa ou os sistemas são pouco testados, a adição de mais um framework não vai ajudar, ainda mais um desenvolvido internamente. Simples assim.

Vale a pena a leitura (onde o Joel escreve “methodology”, podem ler “framework desenvolvido internamente” que o efeito é o mesmo).

[quote=joelonsofware]…so Youthful Programmer starts creating rules and procedures that are meant to make more consistent results. Over the years, the rule book grows and grows. Soon it’s a six-volume manual called The Methodology.

After a few dozen years, Youthful Programmer is now a Huge Incompetent IT Consultant with a capital-M-methodology and a lot of people who blindly obey the Methodology, even when it doesn’t seem to be working, because they have no bloody idea whatsoever what else to do, and they’re not really talented programmers – they’re just well-meaning Poli Sci majors who attended the six-week course.

http://www.joelonsoftware.com/articles/fog0000000024.html[/quote]

[]s
-bruno

Jonatas

Em breve farei parte do quadro de servidores do MPU (Técnico em Informática - SC). Tenho algumas dúvidas quanto ao Atena.

1 - Qual o objetivo de criar componentes dinamicamente (Pagina, TabelaPaginada, etc) se poderiam ter sido utilizadas tags dos Struts ou componentes do JSF ?
2 - O Atena já esta sendo utilizado pelo MPF ?
3 - Qual a vantagem de se utilizar Ajax sem API’s externas ? API’S internas podem evoluir menos que as externas !!!

Abraço,

Frederico

Jonatas,

O Framework será aberto para contribuições da comunidade ?

Primeiro o mais fácil: O Atena está disponível no sourceforge e encontra-se aberto à contribuições. Aliás, por favor, contribuam!

Consulte http://atena.mpf.gov.br e http://sourceforge.net/projects/atena-framework

Jonatas,

Os projetos Atena MPF e Atena SourceForge serão integrados ou serão desenvolvidos paralelamente ?

Atualmente as tarefas estão no Jira do MPF elas serão migradas para o SF ?

Os fontes estão disponíveis através de cvs ou svn ?

[]'s

Fred

Fre_d,

O projeto de ambos os sites é o mesmo. No site Atena MPF encontra-se a documentação e o controle de mudanças. No site Atena SourceForge, as distribuições.

Estamos preparando o ambiente para disponibilizar o CVS. Ele será hospedado no site Atena MPF por questões de velocidade de acesso e conveniência para o MPF.

Até lá, pode-se obter os fontes compactados no SourceForge.

[]s
Godoi

Caro bzanchet,

Veja bem: ter um framework de referência e estar limitado a ele são coisas bem diferentes!

Antes de mais nada, é preciso entender que o Atena foi concebido para resolver o problema do desenvolvimento de sistemas corporativos do Ministério Público Federal, ou seja, para uma situação bem específica. O projeto foi publicado porque acreditamos que os nossos problemas possam ser semelhantes aos de outras empresas e órgãos.

Mas isso não quer dizer que ele resolva a todos os problemas nem que seja aplicável a todas as empresas. Por exemplo, uma “software house” provavelmente teria que utilizar as mais recentes tecnologias do mercado ou aquelas solicitadas por clientes. Esse não é o caso do MPF!

No MPF, os sistemas corporativos possuem quase todos os mesmos requisitos não funcionais (podendo variar em escalabilidade). O desenvolvimento de sistemas não é a atividade-fim do órgão para justificar um alto investimento em produção. O corpo técnico não é grande o suficiente para manter equipes especialistas em nichos de tecnologia. Um desenvolvedor deve ser capaz de manter códigos criados por outros. Cada vez que se adota uma nova tecnologia, deve haver um processo nacional de capacitação das áreas de informática de todo o país. Etc.

Nossa meta nunca foi criar os mais modernos e tecnológicos sistemas de informação, mas criar sistemas eficientes de maneira produtiva. Por isso, o Atena é importante: ele aumenta a produtividade da equipe, reduz custos de capacitação, integra as equipes de informática, promove manutenibilidade, padroniza o código, etc.

Volto a dizer: isso não quer dizer que ele tenha que ser utilizado sempre! Depende do caso!

Longe de mim tentar te convencer, mas melhor que falar de teoria é falar de prática: nós já passamos por modelos de desenvolvimento “fuzzy”, onde cada sistema tem a cara (e as tecnologias) de quem o desenvolveu, sem documentação ou padronização, e sem que ninguém consiga dar suporte. Hoje, temos processos, tecnologias e ferramentas padronizadas, e posso garantir que estamos bem melhor!

Como diz o ditado: “a melhor solução é aquela que resolve”!

[]s
Godoi

Frederico, vamos lá:

O Atena possui uma camada de visão baseada no Velocity de tal forma que o desenvolvedor não precisa programar em HTML ou JavaScript. Assim, os códigos do Atena são puramente Java! Isso é interessante para evitar que se tenha que dominar diversas tecnologias, para uma maior padronização dos sistemas, para garantir a acessibilidade dos mesmos, para compatibilização dos códigos entre navegadores, etc.

Mas, existe uma razão maior: como você utiliza conceitos de orientação a objeto em páginas JSP ? Alguma vez você já estendeu uma página JSP ? Pois é, com o Atena, esses conceitos ganham sentido! É possível estender interfaces visuais, criar componentes de diversas granularidades, e se utilizar de abstrações como, por exemplo, de “Casos de Uso” (um componente que encapsula um conjunto de páginas e seus fluxos).

Por fim, a criação de novos componentes é muito simplificada, sem a necessidade de criação de tags nem descritores.

Sim, já o utilizamos em diversos projetos. Com a versão atual, dois projetos estão em processo de homologação e um em fase de desenvolvimento

A vantagem é que se pode tratar chamadas síncronas e assíncronas exatamente da mesma maneira! Além disso, a complexidade do Ajax é encapsulada pelos componentes visuais do Atena.

Com relação a evolução, a questão para nós não é a quantidade de recursos dessas API´s externas, mas como elas fazem o trabalho básico que precisamos. Além do mais, se uma determinada API for considerada essencial ao nosso processo de desenvolvimento, integramos ela!

[]s
Godoi

Jonatas,

Baixei os fontes e criei um projeto no Eclipse.

Ai vai algumas dicas:

Para facilitar a colaboração de interessatos disponibilize um projeto completo (fontes, libs, etc) ou como já comentei o cvs. Baixei os fontes e tive que ficar procurando as libs.

Vocês já utilizaram a ferramenta JDepend ou uma similar para verificar a dependência circular entre pacotes ?

Vou analizar melhor o projeto e se eu tiver mais dúvidas entro em contato.

[]'s

Fred

O CVS em breve estará disponibilizado. Note no SourceForge os projetos com extensão ZIP: eles contém os fontes já com as dependëncias (libs).

Estamos estudando a utilização do Maven para controlar as bibliotecas.

Vamos olhar o JDepend! Obrigado pela dica!

[]s
Godoi

Pra quem ja teve um tempinho pra olhar o codigo, como estao os testes unitarios/funcionais?

Baixei o arquivo atena4.zip duas vezes. Parece que está corrompido pois não consigo extrair os arquivos e ele só tem 2MB.