carlos eugênio p. da purificação ufba framework arquitetura do sistema e definição do escopo
TRANSCRIPT
Carlos Eugênio P. da Purificação
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
JSP/ServletJSP/ServletWeb ContainerWeb Container
TomcatTomcat
UFBA FrameworkUFBA FrameworkClasses básicas do Engeny Business FrameworkClasses básicas do Engeny Business Framework
Enterprise JavaBeanEnterprise JavaBeanContainer: JBossContainer: JBoss
DesignUML ToolDesignUML ToolArgoUML/PoseidonArgoUML/Poseidon
Java IDE Java IDE NetBeansNetBeans
Carlos Eugênio P. da Purificação
Arquitetura
JSP/ServletJSP/ServletContainerContainer
UFBA FrameworkUFBA FrameworkClasses básicas do Engeny FrameworkClasses básicas do Engeny Framework
EnterpriseEnterpriseJavaBeanJavaBeanContainerContainer
UFBA FRAMEWORKUFBA FRAMEWORK
Structs TemplatesStructs Templates
StructsStructs VelocityVelocity JAXP/JXPath/JAXBJAXP/JXPath/JAXB
IDEIDE Engeny TemplatesEngeny Templates
CactusCactus
Carlos Eugênio P. da Purificação
Arquitetura
Configuration FilesConfiguration Files(structs-config.xml)(structs-config.xml)
StructsStructsControllerController
ServletServletBrowserBrowser
ActionMappingsActionMappingsBeanBean
ActionActionBeanBean
JSP PagesJSP Pages
RequisiçãoHTTP
JavaBeanJavaBean
Resposta(PáginaHTML)
ActionFormActionFormBeanBean
Carlos Eugênio P. da Purificação
Arquitetura – Visão Modelos
UFBA FrameworkUFBA Framework
Modelos UMLModelos UMLClassesClassesBásicasBásicas
UseCasesModelo de ClassesDiagrama de Colaboração
Engeny UML HandlerEngeny UML Handler
VelocityVelocity
Engeny ClassEngeny Class TemplatesTemplates
Carlos Eugênio P. da Purificação
Arquitetura – Visão Nodes
UFBA FrameworkUFBA Framework
UFBA NodesUFBA NodesProjectProject
Use Cases relacionadostornam-se ActionsNodes
Application Nodes DesignerApplication Nodes Designer
Use CasesUse Cases
Carlos Eugênio P. da Purificação
Arquitetura – Visão Nodes
UFBA FrameworkUFBA Framework
ActionNodeActionNode
Nodes que representamuma página JSP
Application Nodes DesignerApplication Nodes Designer
JSPNodesJSPNodes
Nodes querepresentam umUseCase
ModelClassModelClassNodesNodes
Nodes que representamuma classe do modelode classes da aplicação
OutrosOutrosNodesNodes
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 FrameworkUFBA Framework
Engeny Engeny Business Business
FrameworkFrameworkApplicationApplicationBusinessBusinessClassesClasses
(Actions)(Actions)SessionFaçadeSessionFaçade
ApplicationApplicationEntityBeanEntityBean
ApplicationApplicationPersistencePersistence
BeanBean(JDO, DAO, ...)(JDO, DAO, ...)
DBMSDBMS
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;