UFBA Framework Arquitetura do Sistema e definição do escopo Carlos Eugênio P. da Purificação Tópicos • Soluções • Arquitetura – – – – • • • • Framework Struts Visão Modelos Visão Refactoring Visão Nodes UFBA Framework Patterns Estratégia de Persistência Application Nodes Designer Conclusão Carlos Eugênio P. da Purificação Soluções • Modelagem – Ferramentas OpenSource ou Free como o ArgoUML e Poseidon Community Edition; – Pode ser utilizada qualquer ferramenta que utilize o padrão XMI. (Rational Rose) – Varredura de classes e refactoring com Design Patterns; • Desenvolvimento – Ferramenta: NetBeans; Carlos Eugênio P. da Purificação Soluções • Desenvolvimento (cont.) – – – – – – Utilização da arquitetura MVC Model 2; Utilização de Frameworks Web OpenSource Padrões de mercado como o Struts da Apache; Deployment automático e configurável; Desenvolvimento gráfico do workflow e nodes; Deployment automatizado; Carlos Eugênio P. da Purificação Soluções • Padrões de Projeto – Model View Controler Model 2 para Struts; – Data Access Objects, Bussiness Delegate, Adapter e Bridge Patterns para separação do Framework de Persistência (J2EE Beans ou um Oject-to-Relational Framework); – Session Façade para acesso aos Sessions Beans; – Data Transfer Object Pattern para transferência de informações entre as camadas; Carlos Eugênio P. da Purificação Soluções • Containers – OpenSource JBoss; – OpenSource TomCat; – Qualquer implementação padrão J2EE; • Apresentação – JSP Custom Tags; – Struts Tags; Carlos Eugênio P. da Purificação Soluções • Apresentação (cont): – Validator Framework para validações padrões: • • • • • • • Campos requeridos; Tipos de dados (byte, int, float,...); Tamanho mínimo ou máximo; Range; Regular Expressions; Datas; Cartões de Crédito; Carlos Eugênio P. da Purificação Soluções • Apresentação (cont.): – Suporte a internacionalização; – ResourceBundles para campos, links, imagens e mensagens; Carlos Eugênio P. da Purificação Arquitetura DesignUML Tool ArgoUML/Poseidon Java IDE NetBeans UFBA Framework Classes básicas do Engeny Business Framework Enterprise JavaBean Container: JBoss JSP/Servlet Web Container Tomcat Carlos Eugênio P. da Purificação Arquitetura UFBA FRAMEWORK Structs Templates IDE Engeny Templates UFBA Framework Classes básicas do Engeny Framework Structs Velocity Enterprise JavaBean Container JAXP/JXPath/JAXB Cactus JSP/Servlet Container Carlos Eugênio P. da Purificação Arquitetura Configuration Files (structs-config.xml) Requisição HTTP Browser ActionMappings Bean Structs Controller Servlet Resposta (Página HTML) Action Bean JSP Pages ActionForm Bean JavaBean Carlos Eugênio P. da Purificação Arquitetura – Visão Modelos Classes Básicas Modelos UML UseCases Modelo de Classes Diagrama de Colaboração Velocity UFBA Framework Engeny UML Handler Engeny Class Templates Carlos Eugênio P. da Purificação Arquitetura – Visão Nodes UFBA Nodes Project Use Cases Use Cases relacionados tornam-se ActionsNodes UFBA Framework Application Nodes Designer Carlos Eugênio P. da Purificação Arquitetura – Visão Nodes ActionNode Nodes que representam um UseCase Outros Nodes JSPNodes Nodes que representam uma página JSP ModelClass Nodes Nodes que representam uma classe do modelo de classes da aplicação UFBA Framework Application Nodes Designer Carlos Eugênio P. da Purificação UFBA Framework Patterns • Patterns – Os Design Patterns são bons para evitar erros clássicos de design de aplicações. – A seguir são apresentados os principais patterns utilizados pelo Framework. Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Data Access Object – Separa a aplicação da implementação utilizada para acessar dados persistentes, podendo a implementação variar (RDBMS, OODBMS, XML, etc); – Um objeto do tipo ValueObject é usado para transferir dados do(s) objeto(s) de regras de negócio – BusinessObject para o DataAccessObject (DAO); Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Data Access Object Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Data Access Object – No UFBA Framework é utilizado uma interface IApplicationService (onde Application é o nome da aplicação ou de um Action específico). Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Session Façade – Provê uma interface simples para os clientes acessarem os serviços da aplicação; – Menos objetos são vistos pelo cliente reduzindo a complexidade da aplicação; – Não expõe os objetos de negócio diretamente para o cliente permitido uma melhor separação de camadas; Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Session Façade – O UFBA Framework irá definir automaticamente uma interface e uma implementação básica para um Sessio Façade; – Os Use Cases com serviços relacionados no Application Nodes Designer irão gerar somente um Session Façade. (ex.: Depositar-Em-Conta, Sacar-Da-Conta, Ver-Saldo-Conta,etc.) Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Session Façade Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Transfer Object – Clientes de Entity Beans geralmente necessitam com uma chamada de informação mais de um atributo; – Cada chamada feita a um Entity Bean ou Session Bean geralmente é remota implicando em tráfego de rede e degradação de performance; – Os Data Transfer Objects encapsulam os dados que devem ser levados de uma camada a outra, fazendo com que o número de chamadas remota, de uma maneira geral, diminuam; Carlos Eugênio P. da Purificação UFBA Framework Patterns • Pattern: Transfer Object Carlos Eugênio P. da Purificação Estratégia de Persistência • Persistência – Pré-definidas: • Enterprise Java Beans – CMP ou BMP – Customizadas: • Pode-se escolher qualquer outro tipo de persistência, pois devido à utilização do Data Access Object Pattern, o detalhe do tipo escolhido não afeta a aplicação. Carlos Eugênio P. da Purificação Estratégia de Persistência • Persistência com Enterprise Java Beans – Interface exposta para a aplicação é limitada a Session Beans (Session Façade). – A implementação dos Session Beans acessa Entity Beans que utilizam persistência gerenciada pelo J2EE Container. – Como toda a aplicação só tem acesso aos Session Beans utilizando um Session Façade, a implementação de persistência pode mudar. Carlos Eugênio P. da Purificação Estratégia de Persistência UFBA Framework Application Business Classes (Actions) Engeny Business Framework SessionFaçade Application EntityBean Application Persistence Bean (JDO, DAO, ...) DBMS Carlos Eugênio P. da Purificação Application Nodes Designer • Permite a configuração de todos os detalhes da aplicação: – – – – – – – – JSPNodes ActionNodes ValidationFormNodes ValidatorNodes ValidationRulesNodes FieldNodes ModelClassNodes ModelAttributeNodes Carlos Eugênio P. da Purificação Application Nodes Designer • Não é necessário conhecer nenhum detalhe dos arquivos de configuração do struts, cactus, tomcat, jboss, etc. • Reconhecimento das classes e use cases do modelo UML. • Templates. Carlos Eugênio P. da Purificação Application Nodes Designer Carlos Eugênio P. da Purificação Conclusão • Framework que leva em consideração as melhores práticas do mercado; • Inclui ferramentas de produtividade e configuração; • Mantém o desenvolvimento direcionado; • Solução para o desenvolvimento Web com Java; Carlos Eugênio P. da Purificação