SlideShare uma empresa Scribd logo
1 de 52
Marcius Gomes Brandão
Orientadora: Prof. Dra. Mariela Inés Cortés
Co-orientação : Prof. Msc. Ênyo J. T. Gonçalves
Introdução
                      Mudanças são
                       inevitáveis                                          Softwares são
                                                                             complexos!
       Mudanças são                  Software não é
       consideradas                 construído, e sim
          fáceis                       desenhado




                        Trabalho                Desenvolvimento
                       repetitivo é              de Software é
                      automatizado                  pesquisa




                                                        Melhores práticas    Experiência em
                Requisitos são
                                                           não estão          tecnologia é
                 incompletos
                                                            maduras            incompleta




   Software é                    Software é             Tecnologia muda       Tecnologia é
   Complexo                       Abstrato                rapidamente            vasta

                                                                                              Stepanek,2005
Introdução
                                      50% do código e tempo
                                       de desenvolvimento




Maior complexidade
esta no domínio




                         70% do
                      código é de
                     infraestrutura
Motivação


 Para o Standish Group a adoção de
   uma infraestrutura de software
padrão (por exemplo, frameworks de
 desenvolvimento) possibilita que a
equipe de desenvolvimento possa se
 concentrar no domínio de negócio
       em vez de tecnologia
Objetivos
      Orientação a Objetos
        Completude Comportamental
        Boas práticas de programação
        Modelo flexível e fácil de manter
      Rápido ciclo de desenvolvimento
        Redução de prazos
        Redução de custos
      Redução de “Lines of Code”
        Menos erros
        Maior qualidade
        Menor custo de manutenção
Metodologia: Embasamento teórico
Domain-Driven Design   Applying Domain-
Eric Evans,            Driven Design and
Addison–Wesley,2004.   Patterns
                       Jimmy Nilsson,
                       Addison-Wesley,2006




    Naked Objects
 Richard Pawson and    About Face
  Robert Matthews,     Alan Cooper,
     Wiley 2002        Wiley Publishing 2007
Metodologia: Projetos Reais
Metodologia: Estudos de Caso
Metodologia : Artigos científicos


  “Naked Objects View
  Language”                         “Entities – A framework Based on Naked
                                    Objects for the Development of Transient
                                                Web applications”




   “Monitoramento e Controle de           “Domain-Driven Design
Projetos com e-Kanban e Burndown:        using Entities Framework”
     Um Relato de Experiência”
Referencial teórico



         Domain-
          Driven
          Design


                   Naked Objects
Naked Objects Architectural Pattern




 Arquitetura padrão em 4-camadas     Arquitetura com Naked Objects

O problema : quando os requisitos    Alterações no domínio se propagam
 mudam, geralmente temos que        automaticamente para a interface do
   propagar essas alterações        usuário e as camadas de persistência
manualmente para as outras três               (PAWSON,2008).
    camadas (LÄUFER,2008).
Princípios NOP

Completude comportamental

 Único ponto de definição :
      Domain Model

     UIs 100% geradas
     automaticamente

Implementação genérica de
        serviços
Domain-Driven Design (DDD)




“código que resolve problema de
   domínio não se mistura com
   código que resolve problema
   de software” NILSSON(2006).
Domain-Driven Design (DDD)
Comparativo dos frameworks
NOVL
                                                Layout Grid (Cooper2007) é um esquema em
 Linguagem de descrição de layout              grade que fornece uma estrutura uniforme e
                                                consistente para a criação de uma interface com
 baseada no layoutgrid                         vários níveis de complexidade visual.
 para personalização de UI
 utilizando texto simples
    no lugar de estruturas mais sofisticadas
     como SWING, CSS, XML, HTML, etc
 independente de tecnologia
 de rápido aprendizado e
 dispensa o uso de ferramentas
  visuais de edição de interfaces
NOVL : Definição formal
NOVL : Diagramas de sintaxe
NOVL : Recursos
Convenção                                      Usado para
property     Nome case-sensitive da propriedade do naked object ou do controlador.
 Action      Nome case-sensitive do método do naked object ou do controlador.
    ,        Separador de colunas.
    ;        Separador de linhas.
:colspan     Colspan define quantas colunas o membro deve ocupar na grade
             (readonly) O membro sempre será exibido em modo de leitura (saída de dados)
    *
            incondicionalmente.
             (writeonly) O membro sempre será exibido em modo de edição (entrada de dados)
    #
            incondicionalmente.
             É um texto simples que será atribuído ao próximo elemento. No caso de um membro,
 'label'
            substitui o rótulo padrão.
   []        Define uma sub-grade.
   +         Indica que o componente deve ser apresentado inicialmente no modo expandido.
    -        Indica que o componente deve ser apresentado inicialmente no modo recolhido.
             Delimita uma sub-grade que será apresentada a partir dos membros do domínio de
  <...>
            uma coleção.
NOVL : Mestre-Detalhe
NOVL: Estudo de caso
Usando NOVL
Arquitetura
Plataforma de desenvolvimento
                     JEE5
                       Polimorfismo
                       JavaServer Faces
                       Java Persistence API
                       Bean Validation
                       Expression
                        Language
                       Reflexão
                       Annotations
Arquitetura
API Entities para UI
Infraestrutura para UI
BoundedControls
Filtragem
API Entities para persistência
public interface IRepository {
  void add(Object domain);
  int set(String domain, Object... parameters);
  void remove(Object domain);
  <T> T get(T domain);
  <T> T get(Class<T> domain, Object id);
  <T> List<T> get(String query, Object... parameters);
  <T> List<T> get(String query, int startIndex, int maxObjects, Object... params);
  long size(String query, Object... parameters);
  void persistAll();
  void clear();
}

public   class Repository {
Object   newInstance(Class entity)
  void   save(Object... entity)
  void   load(Object... entity)
  void   delete(Object... entity)
  List   query(String query, Object... parameters)
  List   query(String query, int start, int pageSize, Object... parameters)
   int   executeUpdate(String query, Object... parameters)
}
API Entities para segurança
Implementação da arquitetura
Criando o Domain Model
Prototipação
Implementação do Domain Model
    public class Order {
      private String number;
      private Customer customer;
      private Date orderDate;
      private int numberOfItems;
      private List<OrderLine> lines;
      private double totalAmount;
      private Status status;

     public Order() { . . .}

     public   void   addLine() { . . . }
     public   void   accept() { . . . }
     public   void   pay() { . . . }
     public   void   reject() { . . . }

     private boolean isOkAccordingToSize() { . . . }
     private boolean isOkAccordingToCreditLimit() { . . . }

     /* demais gets e sets omitidos */

     public enum Status {NewOrder,Accepted,Paid,Canceled;}
     }
Implementação do Domain Model
        @Entity
        public class Order implements Serializable {
          @Id @GeneratedValue
          private Integer id;

            @Column(length = 8, unique = true, nullable = false)
            @NotEmpty(message = "Enter the number of the Order")
            private String number;

            @ManyToOne(optional = false)
            @NotNull(message = "Enter the customer of the Order")
            private Customer customer;

            @Past @Temporal(TemporalType.DATE)
            private Date orderDate;

            @Column(precision = 4)
            @Min(value = 1, message = "Enter at least one line")
            private Integer numberOfItems = 0;

            @Valid
            @OneToMany(mappedBy = "order",
                        cascade = CascadeType.ALL,
                  orphanRemoval = true)
            private List<OrderLine> lines;

            @Column(precision = 8, scale = 2)
            private Double totalAmount;

            @NotNull
            @Enumerated(EnumType.STRING)
            private Status status;
        }
Instanciando o Domain Model
Instanciando o Domain Model
Mapeamento Objeto-User Interface
Mapeamento Objeto-User Interface
                   @Views({
                    @View(
                        title="List of Orders",
                         name="ListOfOrders",
                      filters="customer, Ctrl.DAO.filter()",
                      members="number,orderDate,numberOfItems,totalAmount,status"
                       footer="Ctrl.DAO.scroll()",
                         rows=10,
                   namedQuery="From domain.Order order by number",
                        roles="LOGGED"),

                    @View(
                        title="Add Order",
                         name="AddOrder",
                      members="[Header[#number,#orderDate;#customer:2];     "
                             +" Lines[addLine();                            "
                             +"       lines<#product,#numberOfUnits,#price>; "
                             +"       *numberOfItems];                      "
                             +" accept()]                                   ",
                   namedQuery="Select new domain.Order()",
                        roles="Admin,SalesMan")
                         })
                   public class Order implements Serializable {
Contribuição geral
      Desenvolvimento focado no domínio
      UI robustas e consistentes
      Redução de “Lines of Code” redundantes
        Menos erros
        Maior qualidade
        Menor custo de manutenção
      Rápido ciclo de desenvolvimento
        Redução de prazos
        Redução de custos
Contribuições da NOVL
   Eliminação de uns dos principais limitadores do
    padrão Naked Objects
      UI personalizadas
   Não invalida o padrão
   Independência de tecnologia
   Uso SEM editores visuais de UI
   Ciclo de aprendizado reduzido
   Manutenção facilitada
   Despreocupação da implementação da UI
Contribuições do Entities
 Extensão do padrão Naked Objects
    UI customizáveis
    Múltiplas visões por objeto de domínio
    Aplicações soberanas e transientes
 Suporte a Domain-Driven Design
    Essência da OO : Completude comportamental
    Foco no domínio
    Domínio independente da tecnologia
Trabalhos futuros
                     Upgrade da NOVL
                     Relatórios
                     Módulo de Testes
                     Outras plataformas
Perguntas?




             “A simplicidade é o último
                  grau de sofisticação”
                    Leonardo da Vinci.

Mais conteúdo relacionado

Mais procurados

RSpec - Desenvolvimento Baseado em Teste
RSpec - Desenvolvimento Baseado em TesteRSpec - Desenvolvimento Baseado em Teste
RSpec - Desenvolvimento Baseado em TesteEduardo Mendes
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven DesignÍtalo Bandeira
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto AdapterMatheus Andrade
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Domain Driven Design PHP TDC2014
Domain Driven Design PHP TDC2014Domain Driven Design PHP TDC2014
Domain Driven Design PHP TDC2014Paulo Victor Gomes
 
Padrão de Projeto - Adapter
Padrão de Projeto - AdapterPadrão de Projeto - Adapter
Padrão de Projeto - AdapterJuliana Cindra
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrThiago Boufleuhr
 
Analise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UMLAnalise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UMLRildo (@rildosan) Santos
 
Seminário flyweight
Seminário flyweightSeminário flyweight
Seminário flyweightMateus Amaral
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Domain Driven Design com Python
Domain Driven Design com PythonDomain Driven Design com Python
Domain Driven Design com PythonFrederico Cabral
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: AdapterMessias Batista
 

Mais procurados (20)

Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Padrões de projeto
Padrões de projetoPadrões de projeto
Padrões de projeto
 
RSpec - Desenvolvimento Baseado em Teste
RSpec - Desenvolvimento Baseado em TesteRSpec - Desenvolvimento Baseado em Teste
RSpec - Desenvolvimento Baseado em Teste
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Domain Driven Design PHP TDC2014
Domain Driven Design PHP TDC2014Domain Driven Design PHP TDC2014
Domain Driven Design PHP TDC2014
 
Padrão de Projeto - Adapter
Padrão de Projeto - AdapterPadrão de Projeto - Adapter
Padrão de Projeto - Adapter
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Analise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UMLAnalise e Desenho Orientado a Objetos com UML
Analise e Desenho Orientado a Objetos com UML
 
Seminário flyweight
Seminário flyweightSeminário flyweight
Seminário flyweight
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Domain Driven Design com Python
Domain Driven Design com PythonDomain Driven Design com Python
Domain Driven Design com Python
 
Java 02
Java 02Java 02
Java 02
 
Design Patterns - Adapter e Decorator
Design Patterns - Adapter e DecoratorDesign Patterns - Adapter e Decorator
Design Patterns - Adapter e Decorator
 
DCI com PHP
DCI com PHPDCI com PHP
DCI com PHP
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: Adapter
 

Semelhante a Framework Entities - Apresentação da Defesa da Dissertacao

Semelhante a Framework Entities - Apresentação da Defesa da Dissertacao (20)

Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Framework Entities
Framework EntitiesFramework Entities
Framework Entities
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Entity Framework 4
Entity Framework 4Entity Framework 4
Entity Framework 4
 
Aula1
Aula1Aula1
Aula1
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
ORM e EF
ORM e EFORM e EF
ORM e EF
 
Palestra
PalestraPalestra
Palestra
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6
 
Uml
UmlUml
Uml
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 

Mais de Marcius Brandão

Framework Entities - Dissertação
Framework Entities - DissertaçãoFramework Entities - Dissertação
Framework Entities - DissertaçãoMarcius Brandão
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoftMarcius Brandão
 
Qualificação MACC- Entities
Qualificação MACC- EntitiesQualificação MACC- Entities
Qualificação MACC- EntitiesMarcius Brandão
 
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Marcius Brandão
 
NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012
NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012
NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012Marcius Brandão
 

Mais de Marcius Brandão (6)

Framework Entities - Dissertação
Framework Entities - DissertaçãoFramework Entities - Dissertação
Framework Entities - Dissertação
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoft
 
SBQS kanban e burndown
SBQS kanban e burndownSBQS kanban e burndown
SBQS kanban e burndown
 
Qualificação MACC- Entities
Qualificação MACC- EntitiesQualificação MACC- Entities
Qualificação MACC- Entities
 
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
 
NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012
NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012
NOVL - Naked Objects View Language - Apresentação InfoBrasil 2012
 

Último

Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxLuizHenriquedeAlmeid6
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxfabiolalopesmartins1
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Susana Stoffel
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 

Último (20)

Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptx
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 

Framework Entities - Apresentação da Defesa da Dissertacao

  • 1. Marcius Gomes Brandão Orientadora: Prof. Dra. Mariela Inés Cortés Co-orientação : Prof. Msc. Ênyo J. T. Gonçalves
  • 2.
  • 3. Introdução Mudanças são inevitáveis Softwares são complexos! Mudanças são Software não é consideradas construído, e sim fáceis desenhado Trabalho Desenvolvimento repetitivo é de Software é automatizado pesquisa Melhores práticas Experiência em Requisitos são não estão tecnologia é incompletos maduras incompleta Software é Software é Tecnologia muda Tecnologia é Complexo Abstrato rapidamente vasta Stepanek,2005
  • 4. Introdução 50% do código e tempo de desenvolvimento Maior complexidade esta no domínio 70% do código é de infraestrutura
  • 5. Motivação Para o Standish Group a adoção de uma infraestrutura de software padrão (por exemplo, frameworks de desenvolvimento) possibilita que a equipe de desenvolvimento possa se concentrar no domínio de negócio em vez de tecnologia
  • 6. Objetivos  Orientação a Objetos  Completude Comportamental  Boas práticas de programação  Modelo flexível e fácil de manter  Rápido ciclo de desenvolvimento  Redução de prazos  Redução de custos  Redução de “Lines of Code”  Menos erros  Maior qualidade  Menor custo de manutenção
  • 7. Metodologia: Embasamento teórico Domain-Driven Design Applying Domain- Eric Evans, Driven Design and Addison–Wesley,2004. Patterns Jimmy Nilsson, Addison-Wesley,2006 Naked Objects Richard Pawson and About Face Robert Matthews, Alan Cooper, Wiley 2002 Wiley Publishing 2007
  • 10. Metodologia : Artigos científicos “Naked Objects View Language” “Entities – A framework Based on Naked Objects for the Development of Transient Web applications” “Monitoramento e Controle de “Domain-Driven Design Projetos com e-Kanban e Burndown: using Entities Framework” Um Relato de Experiência”
  • 11.
  • 12. Referencial teórico Domain- Driven Design Naked Objects
  • 13. Naked Objects Architectural Pattern Arquitetura padrão em 4-camadas Arquitetura com Naked Objects O problema : quando os requisitos Alterações no domínio se propagam mudam, geralmente temos que automaticamente para a interface do propagar essas alterações usuário e as camadas de persistência manualmente para as outras três (PAWSON,2008). camadas (LÄUFER,2008).
  • 14. Princípios NOP Completude comportamental Único ponto de definição : Domain Model UIs 100% geradas automaticamente Implementação genérica de serviços
  • 15. Domain-Driven Design (DDD) “código que resolve problema de domínio não se mistura com código que resolve problema de software” NILSSON(2006).
  • 17.
  • 19.
  • 20. NOVL Layout Grid (Cooper2007) é um esquema em  Linguagem de descrição de layout grade que fornece uma estrutura uniforme e consistente para a criação de uma interface com  baseada no layoutgrid vários níveis de complexidade visual.  para personalização de UI  utilizando texto simples  no lugar de estruturas mais sofisticadas como SWING, CSS, XML, HTML, etc  independente de tecnologia  de rápido aprendizado e  dispensa o uso de ferramentas visuais de edição de interfaces
  • 22. NOVL : Diagramas de sintaxe
  • 23. NOVL : Recursos Convenção Usado para property Nome case-sensitive da propriedade do naked object ou do controlador. Action Nome case-sensitive do método do naked object ou do controlador. , Separador de colunas. ; Separador de linhas. :colspan Colspan define quantas colunas o membro deve ocupar na grade (readonly) O membro sempre será exibido em modo de leitura (saída de dados) * incondicionalmente. (writeonly) O membro sempre será exibido em modo de edição (entrada de dados) # incondicionalmente. É um texto simples que será atribuído ao próximo elemento. No caso de um membro, 'label' substitui o rótulo padrão. [] Define uma sub-grade. + Indica que o componente deve ser apresentado inicialmente no modo expandido. - Indica que o componente deve ser apresentado inicialmente no modo recolhido. Delimita uma sub-grade que será apresentada a partir dos membros do domínio de <...> uma coleção.
  • 27.
  • 29. Plataforma de desenvolvimento  JEE5  Polimorfismo  JavaServer Faces  Java Persistence API  Bean Validation  Expression Language  Reflexão  Annotations
  • 35. API Entities para persistência public interface IRepository { void add(Object domain); int set(String domain, Object... parameters); void remove(Object domain); <T> T get(T domain); <T> T get(Class<T> domain, Object id); <T> List<T> get(String query, Object... parameters); <T> List<T> get(String query, int startIndex, int maxObjects, Object... params); long size(String query, Object... parameters); void persistAll(); void clear(); } public class Repository { Object newInstance(Class entity) void save(Object... entity) void load(Object... entity) void delete(Object... entity) List query(String query, Object... parameters) List query(String query, int start, int pageSize, Object... parameters) int executeUpdate(String query, Object... parameters) }
  • 36. API Entities para segurança
  • 38.
  • 41. Implementação do Domain Model public class Order { private String number; private Customer customer; private Date orderDate; private int numberOfItems; private List<OrderLine> lines; private double totalAmount; private Status status; public Order() { . . .} public void addLine() { . . . } public void accept() { . . . } public void pay() { . . . } public void reject() { . . . } private boolean isOkAccordingToSize() { . . . } private boolean isOkAccordingToCreditLimit() { . . . } /* demais gets e sets omitidos */ public enum Status {NewOrder,Accepted,Paid,Canceled;} }
  • 42. Implementação do Domain Model @Entity public class Order implements Serializable { @Id @GeneratedValue private Integer id; @Column(length = 8, unique = true, nullable = false) @NotEmpty(message = "Enter the number of the Order") private String number; @ManyToOne(optional = false) @NotNull(message = "Enter the customer of the Order") private Customer customer; @Past @Temporal(TemporalType.DATE) private Date orderDate; @Column(precision = 4) @Min(value = 1, message = "Enter at least one line") private Integer numberOfItems = 0; @Valid @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true) private List<OrderLine> lines; @Column(precision = 8, scale = 2) private Double totalAmount; @NotNull @Enumerated(EnumType.STRING) private Status status; }
  • 46. Mapeamento Objeto-User Interface @Views({ @View( title="List of Orders", name="ListOfOrders", filters="customer, Ctrl.DAO.filter()", members="number,orderDate,numberOfItems,totalAmount,status" footer="Ctrl.DAO.scroll()", rows=10, namedQuery="From domain.Order order by number", roles="LOGGED"), @View( title="Add Order", name="AddOrder", members="[Header[#number,#orderDate;#customer:2]; " +" Lines[addLine(); " +" lines<#product,#numberOfUnits,#price>; " +" *numberOfItems]; " +" accept()] ", namedQuery="Select new domain.Order()", roles="Admin,SalesMan") }) public class Order implements Serializable {
  • 47.
  • 48. Contribuição geral  Desenvolvimento focado no domínio  UI robustas e consistentes  Redução de “Lines of Code” redundantes  Menos erros  Maior qualidade  Menor custo de manutenção  Rápido ciclo de desenvolvimento  Redução de prazos  Redução de custos
  • 49. Contribuições da NOVL  Eliminação de uns dos principais limitadores do padrão Naked Objects  UI personalizadas  Não invalida o padrão  Independência de tecnologia  Uso SEM editores visuais de UI  Ciclo de aprendizado reduzido  Manutenção facilitada  Despreocupação da implementação da UI
  • 50. Contribuições do Entities  Extensão do padrão Naked Objects  UI customizáveis  Múltiplas visões por objeto de domínio  Aplicações soberanas e transientes  Suporte a Domain-Driven Design  Essência da OO : Completude comportamental  Foco no domínio  Domínio independente da tecnologia
  • 51. Trabalhos futuros  Upgrade da NOVL  Relatórios  Módulo de Testes  Outras plataformas
  • 52. Perguntas? “A simplicidade é o último grau de sofisticação” Leonardo da Vinci.

Notas do Editor

  1. E elaboração de trabalhos científicos submetidos a conferencias e jornais e a elaboração desta dissertação (ler slide)Obs1: InfoBrasil 2012: selecionado para publicação na Revista Infobrasil na sua versão impressaObs2: ECOOP 2012 - aguardandoaceitação.
  2. é um padrão arquitetural onde, a partir dos objetos de negócio que modelam o domínio, são gerados as interfaces de usuários, a persistência e o gerenciamento desses objetos.
  3. (ler slide)
  4. O primeiro passo foi resolver a questão da personalização das UI com a criação da NOVL...
  5. Essa é a definição formal da NOVL na notação EBNF para ser utilizada pelos parses...
  6. E esses são os diagramas de sintaxe gerados a partir da definição formal da NOVL para serem utilizados pelos desenvolvedores.
  7. Interface típica de um framework NOPPodendo variar de acordo com o framework e tecnologia utilizados, a Figura 11 mostra um layouttípicamente empregado na maioria dos frameworks que programam o NOP. Qualquer exibição de outro nakedobject seguirá o mesmo modelo. Na tela na figura, gerada pelo NOF-MVC para o nakedobjectProduct, todas as propriedades são expostas verticalmente. A maioria dos frameworks permite a definição da ordem em que as propriedades são exibidas. As ações do nakedobject são expostas em um menu suspenso acima da grade principal, e as ações dos controladores abaixo. Interface personalizada usando NOVLA apresentação das mesmas informações pode ser personalizada usando a NOVL. Na Figura 12 é apresentada uma possível interface para Product. Observe que nesta visão as propriedades e ações são agrupadas por co-relação. Propriedades importantes para o usuário ficam em primeiro plano e as menos importantes em segundo plano ou ocultas.
  8. Agora veremos como desenvolver uma aplicação na abordagem DDD usando o Entities...