SlideShare uma empresa Scribd logo
1 de 31
Os Cinco Níveis de Reuso
Do objetos aos frameworks na plataforma Java


        Alberto J Lemos (Dr. Spock)‫‏‬
           Senior Software Architect
             Instrutor Globalcode



                                       Globalcode – Open4Education
Palestrante

 > Bacharel e especialista em Física pela UFV e
   Unicamp;
 > Instrutor na Globalcode em Campinas e SP
   desde 2005;
 > Desenvolvedor de aplicações Web desde 96;
 > Desenvolvedor de aplicações Java desde 99;
 > Atuação como arquiteto de software;
 > Certificações Java: SCJP e SCWCD;
 > Palestrante em eventos nacionais e
   internacionais: JustJava, TDC e JavaOne.

                                      Globalcode – Open4Education
Objetivo



      “Apresentar alguns elementos da
      Orientação a Objetos usados no
  desenvolvimento de aplicações corporativas
      com Java promovendo o reuso e
             manutenibilidade”



                                 Globalcode – Open4Education
Agenda

 > Sobre algumas métricas de qualidade de
   software
 > As principais métricas para OO e Java
 > Os 5 níveis de uso na plataforma Java
 > Conclusões
 > Perguntas & Respostas



                                      Globalcode – Open4Education
Métricas de Qualidade de
Software

 Scalability        Maintainability    Reliability
 Availability       Extensibility      Manageability
 Performance        Mobility           Compatibility
 Usability          Connectivity       Testability
 Modularity         Interoperability   Security
 Toolability        Auditability       Reusability
 Commercial Support Cost               Productivity
 Team Skills        Accessibility      Sustainability


                                          Globalcode – Open4Education
Métricas relevantes para OO e
Java

 Scalability        Maintainability    Reliability
 Availability       Extensibility      Manageability
 Performance        Mobility           Compatibility
 Usability          Connectivity       Testability
 Modularity         Interoperability   Security
 Toolability        Auditability       Reusability
 Commercial Support Cost               Productivity
 Team Skills        Accessibility      Sustainability


                                          Globalcode – Open4Education
Os tipos de reuso




                    Globalcode – Open4Education
Os 5 níveis de reuso

            5
            5
             oo
                     Frameworks
                     Frameworks
            4
            4
             oo
                        Patterns
                        Patterns
            3
            3
             oo
                   Componentes
                   Componentes
             oo
            2
            2     Herança / /Polimorfismo
                  Herança Polimorfismo
             oo
            1
            1           Classes
                        Classes
                   Objetos
                   Objetos
           Características ++Comportamentos
            Características Comportamentos
                                              Globalcode – Open4Education
Objetos e Classes
 > Objeto = Entidade com características +
   comportamentos;
 > Classe = Descrição dos objetos com as mesmas
   características e os mesmos comportamentos;
 > No Java:
    > Template para criação de objetos;
    > Definição de tipos
      customizados.               Classes
                                  Classes
                                Objetos
                                Objetos
                        Características ++Comportamentos
                         Características Comportamentos
                                        Globalcode – Open4Education
Herança e Polimorfismo

 > Reuso de código.      Herança / /Polimorfismo
                         Herança Polimorfismo
 > Collections API




                                Globalcode – Open4Education
Herança e Polimorfismo

 > Reuso de código.
 > Collections API




                         Globalcode – Open4Education
Herança e Polimorfismo

 > Manutenibilidade de código.




                                 Globalcode – Open4Education
Herança e Polimorfismo

 > Manutenibilidade de código.




                                 Globalcode – Open4Education
Herança e Polimorfismo

 > Manutenibilidade de código.




                                 Globalcode – Open4Education
Herança e Polimorfismo

 > Manutenibilidade de código.




                                 Globalcode – Open4Education
Herança e Polimorfismo

 > Manutenibilidade de código.




                                 Globalcode – Open4Education
Componentes
 > Reuso de serviços              Componentes
                                   Componentes
 > Não são peças substituíveis
 > Exemplos de componentes:
   > Servlet/JSP → Web Server, HTTP, Threads,
     sessão, etc;
   > EJB → transação, segurança declarativa, pool,
     RMI/IIOP, etc;
   > JSF → modelo padrão de componentes
     visuais e eventos efetivo (c/ AJAX),
     validação de dados e conversão de tipos, etc.

                                     Globalcode – Open4Education
Componentes
 > Reuso de serviços
 > Não são peças substituíveis
 > Exemplos de componentes:
   > Servlet/JSP → Web Server, HTTP, Threads,
     sessão, etc;
   > EJB → transação, segurança declarativa, pool,
     RMI/IIOP;
   > JSF → modelo padrão de componentes
     visuais e eventos efetivo (c/ AJAX),
     validação de dados e conversão de tipos.

                                     Globalcode – Open4Education
Componentes
 > Reuso de serviços
 > Não são peças substituíveis
 > Exemplos de componentes:
   > Servlet/JSP → Web Server, HTTP, Threads,
     sessão, etc;
   > EJB → transação, segurança declarativa, pool,
     RMI/IIOP;
   > JSF → modelo padrão de componentes
     visuais e eventos efetivo (c/ AJAX),
     validação de dados e conversão de tipos.

                                     Globalcode – Open4Education
Patterns
 > Reuso de modelagem;
 > Soluções para problemas recorrentes;
 > Tipos: Código, projeto, análise e arquitetura
    > JavaBeans;
    > Design Patterns;
    > Analysis Patterns;
    > Architectural Patterns: MVC




                                         Globalcode – Open4Education
Exemplo Design Pattern
 > Composite




                         Globalcode – Open4Education
Exemplo Design Pattern
 > Composite: Java I/O API




                             Globalcode – Open4Education
Exemplo Design Pattern
 > Composite: Java I/O API

                             OOS    BOS          FOS

                  Java App         Stream                     Arquivo




                                            Globalcode – Open4Education
Exemplo Design Pattern
 > Composite: Java I/O API

                             OOS    BOS          FOS

                  Java App         Stream                     Arquivo




                                            Globalcode – Open4Education
Exemplo Design Pattern
 > Composite: Java Swing




                           Globalcode – Open4Education
Exemplo Design Pattern
 > Model-View-Controller (MVC)




                                 Globalcode – Open4Education
Frameworks
 >   Framework = Components + Patterns;
 >   IoC = Inversion of Control;
 >   Orientado a um domínio de problemas;
 >   Exemplos:
      > Persistência: Hibernate, TopLink, JPA
      > Integração: Spring, Seam
      > UI/RIA Web: JSF, Struts, GWT
      > Componentização: EJB no Java EE



                                         Globalcode – Open4Education
JSP ou XHTML?         ICEFaces?
                TopLink?
Richfaces?
             Swing? Facelets? Glassfish?
    Struts?
                Maven?     Desktop ou web?
  iBatis? Flex?
                    Spring ou Seam?    JSF?
JBossAS?
         EJB3?  Confuso?           JDBC?
Tobago? JDeveloper?              NetBeans?
                        Tomcat?
     GWT?     Ant?    JavaFx? Tomahawk?
Ajax? MDB?         WebSphere? Eclipse?
                               Globalcode – Open4Education
Conclusões
 > Reuso e manutenibilidade está no cerne da OO;
 > Reuso é uma questão de atitude;
 > Itens reusáveis devem ser bem documentados e
   ter um ou mais exemplos reais de como usá-los;
 > Framework é o ápice do reuso no Java;
 > There is no silver bullet!
 > O único caminho para tornar o reuso uma
   realidade é planejar;
 > OO, Java e frameworks exigem conhecimento,
   experiência e persistência para uso efetivo!

                                     Globalcode – Open4Education
Mais informações
 > Types of Reuse In Information Tecnology
   http://www.ambysoft.com/essays/typesOfReuse.html

 > A realistic look at Object-Oriented reuse
   http://www.drdobbs.com/architecture-and-design/184415594

 > Object-Oriented application Frameworks
   http://portal.acm.org/citation.cfm?id=262798

 > Frameworks = Components + Patterns
   http://portal.acm.org/citation.cfm?id=262799

 > Elements of Reusable Object-Oriented Software
   http://www.amazon.com/dp/0201633612

 > Analysis Patterns
   http://www.amazon.com/dp/0201895420
                                                  Globalcode – Open4Education
Perguntas & Respostas




                        Globalcode – Open4Education

Mais conteúdo relacionado

Mais procurados

Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02Franklin Matos Correia
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLAnnkatlover
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareCamilo de Melo
 
Filosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De SoftwareFilosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De SoftwareSérgio Luiz Jordão
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9wilsonguns
 
Engenharia Software Rup
Engenharia Software   RupEngenharia Software   Rup
Engenharia Software RupFelipe
 
Uma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareUma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareVinicius Garcia
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKMário Pravato Junior
 
Es2 modelo de processo de software
Es2 modelo de processo de softwareEs2 modelo de processo de software
Es2 modelo de processo de softwareluacal
 
Processo de Análise e Desenvolvimento de Software (PDS)
Processo de Análise e Desenvolvimento de Software (PDS)Processo de Análise e Desenvolvimento de Software (PDS)
Processo de Análise e Desenvolvimento de Software (PDS)Maicon Amarante
 
TCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesTCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesJuliano Tiago Rinaldi
 

Mais procurados (20)

Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02
 
Rup e metodos ágies
Rup e metodos ágiesRup e metodos ágies
Rup e metodos ágies
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SL
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de Software
 
Filosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De SoftwareFilosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De Software
 
Engenharia de Software - Pontos de função
Engenharia de Software - Pontos de funçãoEngenharia de Software - Pontos de função
Engenharia de Software - Pontos de função
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9
 
Engenharia Software Rup
Engenharia Software   RupEngenharia Software   Rup
Engenharia Software Rup
 
Aula1 introducao engsw
Aula1 introducao engswAula1 introducao engsw
Aula1 introducao engsw
 
Ferramentas case
Ferramentas caseFerramentas case
Ferramentas case
 
Uma Introdução a Engenharia de Software
Uma Introdução a Engenharia de SoftwareUma Introdução a Engenharia de Software
Uma Introdução a Engenharia de Software
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
Es2 modelo de processo de software
Es2 modelo de processo de softwareEs2 modelo de processo de software
Es2 modelo de processo de software
 
Processos de Software
Processos de SoftwareProcessos de Software
Processos de Software
 
Documentos de software
Documentos de softwareDocumentos de software
Documentos de software
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012
 
Processo de Análise e Desenvolvimento de Software (PDS)
Processo de Análise e Desenvolvimento de Software (PDS)Processo de Análise e Desenvolvimento de Software (PDS)
Processo de Análise e Desenvolvimento de Software (PDS)
 
Introducao swebok
Introducao swebokIntroducao swebok
Introducao swebok
 
TCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesTCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em Componentes
 

Semelhante a Os 5 Níveis de Reuso

TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDIRodrigo Cândido da Silva
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...Rafael Chiavegatto
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEERafael Nunes
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Dr. Spock
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA Rodrigo Cândido da Silva
 
TDC2016SP - Dicas para as provas de certificação Java Programmer
TDC2016SP - Dicas para as provas de certificação Java ProgrammerTDC2016SP - Dicas para as provas de certificação Java Programmer
TDC2016SP - Dicas para as provas de certificação Java Programmertdc-globalcode
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAYelken Heckman Ferreira Gonzales
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EEEder Magalhães
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoEder Magalhães
 
JSF 2 - Java "Super" Faces
JSF 2 - Java "Super" FacesJSF 2 - Java "Super" Faces
JSF 2 - Java "Super" FacesFilipe Portes
 
Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF Otávio Santana
 
Testes Funcionais em um ALM Open Source - TDC 2012 SP
Testes Funcionais em um ALM Open Source - TDC 2012 SPTestes Funcionais em um ALM Open Source - TDC 2012 SP
Testes Funcionais em um ALM Open Source - TDC 2012 SPElias Nogueira
 

Semelhante a Os 5 Níveis de Reuso (20)

TDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDITDC2010 - Turbinando sua Aplicação com CDI
TDC2010 - Turbinando sua Aplicação com CDI
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEE
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
TDC2016SP - Dicas para as provas de certificação Java Programmer
TDC2016SP - Dicas para as provas de certificação Java ProgrammerTDC2016SP - Dicas para as provas de certificação Java Programmer
TDC2016SP - Dicas para as provas de certificação Java Programmer
 
Java com Excelência
Java com ExcelênciaJava com Excelência
Java com Excelência
 
Spring Roo
Spring RooSpring Roo
Spring Roo
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EE
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
JSF 2 - Java "Super" Faces
JSF 2 - Java "Super" FacesJSF 2 - Java "Super" Faces
JSF 2 - Java "Super" Faces
 
ApresentaçãO De Java
ApresentaçãO De JavaApresentaçãO De Java
ApresentaçãO De Java
 
Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF
 
Testes Funcionais em um ALM Open Source - TDC 2012 SP
Testes Funcionais em um ALM Open Source - TDC 2012 SPTestes Funcionais em um ALM Open Source - TDC 2012 SP
Testes Funcionais em um ALM Open Source - TDC 2012 SP
 

Mais de Dr. Spock

Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageDr. Spock
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Dr. Spock
 
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemEvitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemDr. Spock
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Dr. Spock
 
Workshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysWorkshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysDr. Spock
 
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6Dr. Spock
 
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6Dr. Spock
 
TDC2011: Spring Mobile
TDC2011: Spring MobileTDC2011: Spring Mobile
TDC2011: Spring MobileDr. Spock
 
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensTDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensDr. Spock
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseDr. Spock
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureDr. Spock
 
Spring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelSpring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelDr. Spock
 
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDesafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDr. Spock
 
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesPerformance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesDr. Spock
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDr. Spock
 
Computação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaComputação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaDr. Spock
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkDr. Spock
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineDr. Spock
 
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesSpring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesDr. Spock
 
Dicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDr. Spock
 

Mais de Dr. Spock (20)

Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific Language
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
 
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvemEvitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
 
Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2Novidades do JSF: Um tour completo no JSF 2.2
Novidades do JSF: Um tour completo no JSF 2.2
 
Workshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysWorkshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToys
 
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
 
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
 
TDC2011: Spring Mobile
TDC2011: Spring MobileTDC2011: Spring Mobile
TDC2011: Spring Mobile
 
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensTDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software Enterprise
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
Spring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelSpring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvel
 
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDesafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
 
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesPerformance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
Computação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaComputação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e Java
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do Framework
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App Engine
 
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesSpring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
 
Dicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSF
 

Os 5 Níveis de Reuso

  • 1. Os Cinco Níveis de Reuso Do objetos aos frameworks na plataforma Java Alberto J Lemos (Dr. Spock)‫‏‬ Senior Software Architect Instrutor Globalcode Globalcode – Open4Education
  • 2. Palestrante > Bacharel e especialista em Física pela UFV e Unicamp; > Instrutor na Globalcode em Campinas e SP desde 2005; > Desenvolvedor de aplicações Web desde 96; > Desenvolvedor de aplicações Java desde 99; > Atuação como arquiteto de software; > Certificações Java: SCJP e SCWCD; > Palestrante em eventos nacionais e internacionais: JustJava, TDC e JavaOne. Globalcode – Open4Education
  • 3. Objetivo “Apresentar alguns elementos da Orientação a Objetos usados no desenvolvimento de aplicações corporativas com Java promovendo o reuso e manutenibilidade” Globalcode – Open4Education
  • 4. Agenda > Sobre algumas métricas de qualidade de software > As principais métricas para OO e Java > Os 5 níveis de uso na plataforma Java > Conclusões > Perguntas & Respostas Globalcode – Open4Education
  • 5. Métricas de Qualidade de Software Scalability Maintainability Reliability Availability Extensibility Manageability Performance Mobility Compatibility Usability Connectivity Testability Modularity Interoperability Security Toolability Auditability Reusability Commercial Support Cost Productivity Team Skills Accessibility Sustainability Globalcode – Open4Education
  • 6. Métricas relevantes para OO e Java Scalability Maintainability Reliability Availability Extensibility Manageability Performance Mobility Compatibility Usability Connectivity Testability Modularity Interoperability Security Toolability Auditability Reusability Commercial Support Cost Productivity Team Skills Accessibility Sustainability Globalcode – Open4Education
  • 7. Os tipos de reuso Globalcode – Open4Education
  • 8. Os 5 níveis de reuso 5 5 oo Frameworks Frameworks 4 4 oo Patterns Patterns 3 3 oo Componentes Componentes oo 2 2 Herança / /Polimorfismo Herança Polimorfismo oo 1 1 Classes Classes Objetos Objetos Características ++Comportamentos Características Comportamentos Globalcode – Open4Education
  • 9. Objetos e Classes > Objeto = Entidade com características + comportamentos; > Classe = Descrição dos objetos com as mesmas características e os mesmos comportamentos; > No Java: > Template para criação de objetos; > Definição de tipos customizados. Classes Classes Objetos Objetos Características ++Comportamentos Características Comportamentos Globalcode – Open4Education
  • 10. Herança e Polimorfismo > Reuso de código. Herança / /Polimorfismo Herança Polimorfismo > Collections API Globalcode – Open4Education
  • 11. Herança e Polimorfismo > Reuso de código. > Collections API Globalcode – Open4Education
  • 12. Herança e Polimorfismo > Manutenibilidade de código. Globalcode – Open4Education
  • 13. Herança e Polimorfismo > Manutenibilidade de código. Globalcode – Open4Education
  • 14. Herança e Polimorfismo > Manutenibilidade de código. Globalcode – Open4Education
  • 15. Herança e Polimorfismo > Manutenibilidade de código. Globalcode – Open4Education
  • 16. Herança e Polimorfismo > Manutenibilidade de código. Globalcode – Open4Education
  • 17. Componentes > Reuso de serviços Componentes Componentes > Não são peças substituíveis > Exemplos de componentes: > Servlet/JSP → Web Server, HTTP, Threads, sessão, etc; > EJB → transação, segurança declarativa, pool, RMI/IIOP, etc; > JSF → modelo padrão de componentes visuais e eventos efetivo (c/ AJAX), validação de dados e conversão de tipos, etc. Globalcode – Open4Education
  • 18. Componentes > Reuso de serviços > Não são peças substituíveis > Exemplos de componentes: > Servlet/JSP → Web Server, HTTP, Threads, sessão, etc; > EJB → transação, segurança declarativa, pool, RMI/IIOP; > JSF → modelo padrão de componentes visuais e eventos efetivo (c/ AJAX), validação de dados e conversão de tipos. Globalcode – Open4Education
  • 19. Componentes > Reuso de serviços > Não são peças substituíveis > Exemplos de componentes: > Servlet/JSP → Web Server, HTTP, Threads, sessão, etc; > EJB → transação, segurança declarativa, pool, RMI/IIOP; > JSF → modelo padrão de componentes visuais e eventos efetivo (c/ AJAX), validação de dados e conversão de tipos. Globalcode – Open4Education
  • 20. Patterns > Reuso de modelagem; > Soluções para problemas recorrentes; > Tipos: Código, projeto, análise e arquitetura > JavaBeans; > Design Patterns; > Analysis Patterns; > Architectural Patterns: MVC Globalcode – Open4Education
  • 21. Exemplo Design Pattern > Composite Globalcode – Open4Education
  • 22. Exemplo Design Pattern > Composite: Java I/O API Globalcode – Open4Education
  • 23. Exemplo Design Pattern > Composite: Java I/O API OOS BOS FOS Java App Stream Arquivo Globalcode – Open4Education
  • 24. Exemplo Design Pattern > Composite: Java I/O API OOS BOS FOS Java App Stream Arquivo Globalcode – Open4Education
  • 25. Exemplo Design Pattern > Composite: Java Swing Globalcode – Open4Education
  • 26. Exemplo Design Pattern > Model-View-Controller (MVC) Globalcode – Open4Education
  • 27. Frameworks > Framework = Components + Patterns; > IoC = Inversion of Control; > Orientado a um domínio de problemas; > Exemplos: > Persistência: Hibernate, TopLink, JPA > Integração: Spring, Seam > UI/RIA Web: JSF, Struts, GWT > Componentização: EJB no Java EE Globalcode – Open4Education
  • 28. JSP ou XHTML? ICEFaces? TopLink? Richfaces? Swing? Facelets? Glassfish? Struts? Maven? Desktop ou web? iBatis? Flex? Spring ou Seam? JSF? JBossAS? EJB3? Confuso? JDBC? Tobago? JDeveloper? NetBeans? Tomcat? GWT? Ant? JavaFx? Tomahawk? Ajax? MDB? WebSphere? Eclipse? Globalcode – Open4Education
  • 29. Conclusões > Reuso e manutenibilidade está no cerne da OO; > Reuso é uma questão de atitude; > Itens reusáveis devem ser bem documentados e ter um ou mais exemplos reais de como usá-los; > Framework é o ápice do reuso no Java; > There is no silver bullet! > O único caminho para tornar o reuso uma realidade é planejar; > OO, Java e frameworks exigem conhecimento, experiência e persistência para uso efetivo! Globalcode – Open4Education
  • 30. Mais informações > Types of Reuse In Information Tecnology http://www.ambysoft.com/essays/typesOfReuse.html > A realistic look at Object-Oriented reuse http://www.drdobbs.com/architecture-and-design/184415594 > Object-Oriented application Frameworks http://portal.acm.org/citation.cfm?id=262798 > Frameworks = Components + Patterns http://portal.acm.org/citation.cfm?id=262799 > Elements of Reusable Object-Oriented Software http://www.amazon.com/dp/0201633612 > Analysis Patterns http://www.amazon.com/dp/0201895420 Globalcode – Open4Education
  • 31. Perguntas & Respostas Globalcode – Open4Education