Modelagem e Padrões de Modelagem e Padrões de DesenvolvimentoDesenvolvimento
Marcio Garciablog.mangar.com.br
Quem? O que? Porque?Quem? O que? Porque?
Marcio Garcia (Marcio Garcia ([email protected]@mangar.com.br))
Programador! - Java Programador! - Java - SCJP, SCJWCD, SCBCD, SCEA I- SCJP, SCJWCD, SCBCD, SCEA I
• Programador! - Ruby on Rails, PythonProgramador! - Ruby on Rails, Python
• Ativista do movimento Ágil - Ativista do movimento Ágil - Certified Scrum MasterCertified Scrum Master
• http://blog.mangar.com.brhttp://blog.mangar.com.br
Commiter de projetos open sourceCommiter de projetos open source
• http://github.com/mangar/breshophttp://github.com/mangar/breshop
AgendaAgenda
• Parte 1 - Padrões de Desenvolvimento JavaParte 1 - Padrões de Desenvolvimento Java
• Parte 2 - Desenvolvimento Ágil de SoftwareParte 2 - Desenvolvimento Ágil de Software
Linguagens de Linguagens de ProgramaçãoProgramação• PascalPascal
C / C++C / C++
• Java ....... JEE, JSE, JMEJava ....... JEE, JSE, JME
• Ruby on RailsRuby on Rails
PythonPython
• ErlangErlang
Onde tudo começa.... JVMOnde tudo começa.... JVM
Frontend ServersFrontend ServersTomcat, Jetty, Pico...Tomcat, Jetty, Pico...
Backend ServersBackend ServersJBoss, Weblogic, WebSphereJBoss, Weblogic, WebSphere
BrowsersBrowsersIE, Firefox, Safari...IE, Firefox, Safari...
Java Virtual Machine - JVMJava Virtual Machine - JVMJSE - AWT / SwingJSE - AWT / Swing
Java - DivisõesJava - Divisões
• JSE - Java Standard EditionJSE - Java Standard Edition
Swing, AWT Swing, AWT
• JEE - Java Enterprise EditionJEE - Java Enterprise Edition
• Servlet, JSP, EJB (Entity, Stateless, Statefull)Servlet, JSP, EJB (Entity, Stateless, Statefull)
JME - Java Mobile EditionJME - Java Mobile Edition
• MIDP..........MIDP..........http://java.sun.comhttp://java.sun.com
Java Enterprise Edition - Java Enterprise Edition - JEEJEE
FrontendFrontend
Funcionalidades relacionadas a Funcionalidades relacionadas a apresentaçãoapresentação
Campos, layouts, telas, funções visuaisCampos, layouts, telas, funções visuaisLógica de visualizaçãoLógica de visualização
JEE - FrontendJEE - Frontend
• Frontend - Container WEBFrontend - Container WEB
JSP e ServletJSP e Servlet
• Padrões Padrões
• CSS, Javascript, DHTML, AjaxCSS, Javascript, DHTML, Ajax
Frameworks WEBFrameworks WEB
• Spring MVC, Struts, JSFSpring MVC, Struts, JSF
FrontendFrontend
Java Enterprise Edition - Java Enterprise Edition - JEEJEE
BackendBackend
Operações relacionadas a regras de Operações relacionadas a regras de negócionegócio
Ler e gravar informações no banco de Ler e gravar informações no banco de dados, dados,
Integração entre aplicativosIntegração entre aplicativosRegras geraisRegras gerais
JEE - BackendJEE - Backend
• Backend - Container EJBBackend - Container EJB
Controle TransacionalControle Transacional
• EJB3EJB3
• Stateless, Statefull, Entity BeansStateless, Statefull, Entity Beans
Frameworks BackendFrameworks Backend
• Spring IoC, JPA, WorkflowSpring IoC, JPA, Workflow
BackendBackend
Identifique-se!Identifique-se!
FrontendFrontend
BackendBackend
● JSP, Servlet, CSS, Javascript, DHTML, JSP, Servlet, CSS, Javascript, DHTML, Ajax, Spring MVC, Struts, JSFAjax, Spring MVC, Struts, JSF
● JTA, EJB, Stateless, Statefull, Entity Beans, JTA, EJB, Stateless, Statefull, Entity Beans, Spring IoC, JPA, WorkflowSpring IoC, JPA, Workflow
Design PatternsDesign Patterns
• Padrões de desenvolvimentoPadrões de desenvolvimento
Soluções para problemas conhecidosSoluções para problemas conhecidos
• Frameworks - MVC > StrutsFrameworks - MVC > Struts
Design Patterns - SingletonDesign Patterns - Singleton
new Classe()new Classe()
Memória - JVMMemória - JVMclasse classe classe classe classe classe
Out of Memory
Out of Memory
Exception
Exception
Design Patterns - SingletonDesign Patterns - Singleton
Classe.newInstace()Classe.newInstace()
Memória - JVMMemória - JVMclasse classe
Design PatternsDesign Patterns• Problema conhecido: Número excessivo Problema conhecido: Número excessivo
e desnecessário de instancias em e desnecessário de instancias em memória.memória.
Solução: Criar apenas uma instancia da Solução: Criar apenas uma instancia da classe em memória.classe em memória.
• Model View Controller (MVC) : Struts, Model View Controller (MVC) : Struts, JSFJSF
• BusinessDelegateBusinessDelegate
Session FaçadeSession Façade
Resumo - Parte 1Resumo - Parte 1
• Java Virtual MachineJava Virtual Machine
JSE, JEE, JMEJSE, JEE, JME
• JEEJEE
• Frontend - apresentaçãoFrontend - apresentação
Backend - regras de negóciosBackend - regras de negócios
• Design PatternsDesign Patterns
Use com moderaçãoUse com moderação
Modelo em Cascata - Modelo em Cascata - ProblemasProblemas
• Forma sequencial de seguir as etapasForma sequencial de seguir as etapas
InflexívelInflexível
• Não iterativaNão iterativa
Inadequado ao processo do mundo realInadequado ao processo do mundo real
Modelo Ágil - MetodologiasModelo Ágil - Metodologias
• Scrum - Ken SchwaberScrum - Ken Schwaber
XP - eXtreme Programming XP - eXtreme Programming
• LeanLean
• Kanban - ToyotaKanban - Toyota
• CrystalCrystal
Modelo Ágil - Scrum - PapéisModelo Ágil - Scrum - Papéis
Product OwnerProduct Owner
Scrum MasterScrum Master
TeamTeam
Modelo Ágil - BenefíciosModelo Ágil - Benefícios
• Software funcionandoSoftware funcionando
Desenvolvedores felizesDesenvolvedores felizes
• Cliente satisfeito com o produtoCliente satisfeito com o produto
Resumo - Parte 2Resumo - Parte 2
• Nova forma de desenvolver software Nova forma de desenvolver software
• Nova forma de contratar desenvolvedores de Nova forma de contratar desenvolvedores de softwaresoftware
• Nova forma de entregar softwareNova forma de entregar software
Obrigado !Obrigado !
Marcio GarciaMarcio [email protected]@mangar.com.br
http://blog.mangar.chttp://blog.mangar.com.brom.brTwitter: MangarAtUOTwitter: MangarAtUOLL