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

Os 5 Níveis de Reuso

  • 1.
    Os Cinco Níveisde Reuso Do objetos aos frameworks na plataforma Java Alberto J Lemos (Dr. Spock)‫‏‬ Senior Software Architect Instrutor Globalcode Globalcode – Open4Education
  • 2.
    Palestrante > Bacharele 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 > Sobrealgumas 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 Qualidadede 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 paraOO 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 dereuso Globalcode – Open4Education
  • 8.
    Os 5 níveisde 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 > Reusode 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 > Reusode 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 > Reusode 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 > Reusode 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 > Reusoe 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