Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo

914 views

Published on

Palestra no Evento Just Java 2005

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
914
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo

  1. 1. Java no Setor Público:Produtividade, Flexibilidade e Baixo Custo Por justjava.org.br 16 a 18 de Junho – Anhembi – SP/SP Promoção e Realização Ébeli Riella, Alex Araujo, Alex Gouvêa e Fábio Petrillo
  2. 3. <ul><li>PROCEMPA – A Empresa </li></ul><ul><ul><li>Fundada em 1977 - Processamento de dados </li></ul></ul><ul><ul><li>Capital misto. Principal acionista PMPA </li></ul></ul><ul><ul><li>270 funcionários </li></ul></ul><ul><ul><li>Parque de 8.000 equipamentos </li></ul></ul><ul><ul><li>Desenvolve Sistemas para a Administração Pública Municipal </li></ul></ul><ul><ul><li>2001 implantou a Infovia - anel de 200 Km de fibras óticas - dados, voz e imagem em alta velocidade </li></ul></ul>
  3. 4. PROCEMPA – A Empresa
  4. 5. T/TSE - Estrutura Lógica Total de colaboradores: 130 Efetivos: 101 Estagiários: 29
  5. 6. <ul><ul><li>É a Fábrica de Software (FS) da PROCEMPA. </li></ul></ul><ul><ul><li>Recebe das outras supervisões as definições de NOVOS SISTEMAS a serem desenvolvidos, dentro da METODOLOGIA própria da empresa. </li></ul></ul><ul><ul><li>Dá assessoria às outras supervisões, sobre a metodologia, e ajuda na definição dos sistemas, para que eles possam ser desenvolvidos da melhor e mais rápida maneira. </li></ul></ul><ul><ul><li>Equipe </li></ul></ul><ul><ul><ul><li>21 colaboradores: </li></ul></ul></ul><ul><ul><ul><ul><ul><li>1 supervisor </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>4 analistas </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>8 programadores </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>8 estagiários </li></ul></ul></ul></ul></ul>T/DES – Desenvolvimento de Software
  6. 7. Java no Setor Público: Produtividade, Flexibilidade e Baixo Custo
  7. 8. Ambiente de Desenvolvimento - Histórico <ul><li>Necessidade: Metodologia de Desenvolvimento; </li></ul><ul><li>Requisitos: </li></ul><ul><ul><ul><li>Análise e codificação OO </li></ul></ul></ul><ul><ul><ul><li>Modelagem como forma de documentar os projetos </li></ul></ul></ul><ul><li> Solução: Java </li></ul><ul><ul><ul><li>Independência de plataforma </li></ul></ul></ul><ul><ul><ul><li>Independência de fornecedor </li></ul></ul></ul><ul><ul><ul><li>Menor custo de aquisição de software </li></ul></ul></ul><ul><ul><ul><li>Grande base de conhecimento disponível </li></ul></ul></ul><ul><ul><ul><li>Grande infraestrutura para aplicações corporativas já consolidada </li></ul></ul></ul>
  8. 9. Implementação <ul><ul><li>Capacitação da equipe </li></ul></ul><ul><ul><li>Revisão da Metodologia </li></ul></ul><ul><ul><li>Preparação do ambiente de desenvolvimento </li></ul></ul>
  9. 10. Consultoria Externa <ul><ul><li>Treinamentos à análise para utilização da nova metodologia </li></ul></ul><ul><ul><li>Treinamentos para utilização da nova plataforma tecnológica </li></ul></ul><ul><ul><li>Framework para a camada de negócio/persistência (solução pronta) </li></ul></ul><ul><ul><li>Elaboração do framework Procempa (apresentação) </li></ul></ul>
  10. 11. Infra-estrutura de Servidores <ul><li>Ambientes independentes para teste, homologação e produção </li></ul><ul><ul><ul><li>Servidor Web (Apache + Tomcat) </li></ul></ul></ul><ul><ul><ul><li>Servidor de Aplicação (JBoss) </li></ul></ul></ul><ul><ul><ul><li>Servidores de Banco de Dados (DB2, MySQL) </li></ul></ul></ul>
  11. 12. Estação de Trabalho <ul><ul><li>SuSE Linux 9.2 </li></ul></ul><ul><ul><li>Java Sun 1.5 </li></ul></ul><ul><ul><li>Eclipse 3.0.1 + plugins </li></ul></ul><ul><ul><li>Ant + Xdoclet </li></ul></ul><ul><ul><li>CVS </li></ul></ul><ul><ul><li>Tomcat 5.5 </li></ul></ul><ul><ul><li>JBoss 3.2.6 </li></ul></ul><ul><ul><li>JasperReports + iReport </li></ul></ul>
  12. 13. Arquitetura do Framework de Desenvolvimento
  13. 14. Arquitetura do Framework PROCEMPA Camada de Persistência Camada de Negócio Camada de Apresentação <ul><li>Hibernate </li></ul><ul><li>mapeamento objeto-relacional </li></ul><ul><li>custo </li></ul><ul><li>desempenho </li></ul><ul><li>facilidade na utilização </li></ul><ul><li>recursos sofisticados </li></ul><ul><li>herança de objetos persistentes (Value Objects) </li></ul><ul><li>pesquisas polimórficas </li></ul><ul><li>independência de banco </li></ul><ul><li>open source (permitiu correções na classe do dialeto de acesso ao IBM/DB2 </li></ul><ul><li>Framework de Persistência </li></ul><ul><li>Implementa uma camada sobre o Hibernate </li></ul><ul><li>Flexibilidade </li></ul><ul><ul><li>Web Container e/ou Aplication Server </li></ul></ul><ul><li>Solução EJB (Aplication Server) </li></ul><ul><ul><li>Um único Session Bean para toda a aplicação </li></ul></ul><ul><li>Uso de design patterns como Command, Abstract Factory e Façade </li></ul><ul><li>Interfaces e hierarquia de classes persistentes - DataObject </li></ul><ul><li>Objetos de Domínio (DomainObject) </li></ul><ul><li>Integração com classes persistentes ( DataObject ) </li></ul><ul><li>Encapsulamento do acesso à camada de persistência </li></ul><ul><li>Métodos com a implementação das regras de negócio </li></ul><ul><li>Reuso das regras </li></ul><ul><li>Integração com Ambientes Heterogêneos </li></ul><ul><li>Web Services </li></ul><ul><li>Aplicações legadas em diversos ambientes </li></ul><ul><ul><li>bancos relacionais e hierárquicos </li></ul></ul><ul><ul><li>arquivos VSAM </li></ul></ul><ul><ul><li>aplicações COM+ </li></ul></ul><ul><li>MVC Struts </li></ul><ul><li>Modelo = ActionForm </li></ul><ul><li>Visualização = JSP </li></ul><ul><li>Controle = Action </li></ul><ul><li>maior facilidade de ser estendido </li></ul><ul><li>maior disponibilidade de documentação </li></ul><ul><li>largamente utilizado no mercado </li></ul><ul><li>estabilidade </li></ul><ul><li>Taglibs Customizadas </li></ul><ul><li>padronização da interface de usuário </li></ul><ul><li>redução da complexidade de construção </li></ul><ul><li>incremento da produtividade </li></ul><ul><li>extensão das tags básicas Struts </li></ul><ul><li>integração ao workflow definido (pesquisa, edição, exclusão, relatório) </li></ul>
  14. 15. Framework Procempa <ul><li>Diagrama de Arquitetura da Solução </li></ul>Web Container (Apache/Tomcat) FW Persistência (cliente) JBOSS FW Persistência (servidor) (EJB Session Bean) Hibernate JDBC RDBMS Domain Objects (Regras de Negócio) Plain EJB Actions/Forms FW Procempa JSP Taglibs FW Procempa STRUTS Hibernate JDBC B R O W S E R DataObjects
  15. 16. Camada de Apresentação Extensão do Struts e Taglibs Customizadas para Obtenção de Produtividade e Padronização
  16. 17. Taglibs e Padronização de Interface MENU LISTA DE PESQUISA CRITÉRIOS DE PESQUISA PAGINAÇÃO COLUNAS
  17. 18. Taglibs e Padronização de Interface ABAS GRID DE FORMULÁRIO BARRA DE BOTÕES (TOOLBAR)
  18. 19. Taglibs e Padronização de Interface BARRA DE BOTÕES INTERNA DA ABA LISTA DE OBJETOS RELACIONADOS (FILHOS)
  19. 20. Framework – Camada de Apresentação – Taglibs <ul><ul><li>Integração com sistema de segurança </li></ul></ul><ul><ul><li>Criação padronizada de menus </li></ul></ul><ul><ul><li>Gerenciamento automático de lay-out (geração de formulários html) </li></ul></ul><ul><ul><li>Componentes de calendário, combos ligados a objetos persistentes, lista de pesquisa com critérios </li></ul></ul><ul><ul><li>Organização dos formulários de edição em abas (tabs) </li></ul></ul><ul><ul><li>Propagação hierárquica de permissões e inibição de campos de tela </li></ul></ul><ul><ul><li>Os JSPs não possuem código Java. Apenas marcações das taglibs. </li></ul></ul>
  20. 21. Taglibs - Exemplo < propesq :searchList hasCheckbox = &quot;false&quot; propertyId = &quot;id&quot; searchBoxPosition = &quot;top&quot; height = &quot;200&quot; > < propesq :searchBox width = &quot;50%&quot; > < proform :grid> < proform :textGrid label = &quot;Procurar&nbsp;por:&quot; property = &quot;criterio&quot; /> </ proform :grid> </ propesq :searchBox> < propesq :columnSearchList property = &quot;nome&quot; label = &quot;Nome&quot; width = &quot;70%&quot; linkable = &quot;true&quot; /> < propesq :columnSearchList property = &quot;setor&quot; label = &quot;Setor&quot; width = &quot;15%&quot; /> < propesq :columnSearchList property = &quot;ramal&quot; label = &quot;Ramal&quot; width = &quot;15%&quot; /> </ propesq :searchList>
  21. 22. Framework – Camada de Apresentação - Extensão Struts <ul><li>Actions e Forms Especializados </li></ul><ul><ul><ul><li>Action / Forms para Pesquisa, Edição, Exclusão e Impressão </li></ul></ul></ul><ul><ul><ul><li>Workflow definido nas classes ancestrais </li></ul></ul></ul><ul><ul><ul><li>Tratamento de exceções padronizado </li></ul></ul></ul><ul><ul><ul><li>Pouquíssimo código redundante </li></ul></ul></ul><ul><ul><ul><li>Facilidades de navegação já implementadas </li></ul></ul></ul><ul><ul><ul><li>Propiciam facilidade na geração de código </li></ul></ul></ul>
  22. 23. Avaliações Finais
  23. 24. Avaliação do Sucesso <ul><ul><li>Investimento Inicial </li></ul></ul><ul><ul><ul><li>Qualificação na tecnologia </li></ul></ul></ul><ul><ul><ul><li>Consultoria </li></ul></ul></ul><ul><ul><ul><li>Construção das diversas camadas do framework </li></ul></ul></ul><ul><ul><ul><li>Qualificação no framework </li></ul></ul></ul><ul><ul><li>Importante! </li></ul></ul><ul><ul><ul><li>Comprometimento dos níveis hierárquicos superiores </li></ul></ul></ul>
  24. 25. Avaliação do Sucesso <ul><ul><li>Evolução da Produtividade </li></ul></ul><ul><ul><li>Arquitetura de desenvolvimento padronizada - construção homogênea </li></ul></ul><ul><ul><ul><li>Struts estendido </li></ul></ul></ul><ul><ul><ul><li>Regras de negócios (DomainObjects) </li></ul></ul></ul><ul><ul><ul><li>Persistência (Hibernate) </li></ul></ul></ul><ul><ul><li>Padronização das especificações de casos de uso </li></ul></ul><ul><ul><li>Template de projeto para novas aplicações </li></ul></ul><ul><ul><li>Geração automática de código e mapeamentos </li></ul></ul><ul><ul><li>Uso do CVS </li></ul></ul><ul><ul><li>Eclipse </li></ul></ul>
  25. 26. Avaliação do Sucesso <ul><ul><li>Evolução da Produtividade </li></ul></ul><ul><ul><li>Conhecimento homogêneo no setor </li></ul></ul><ul><ul><li>Especialistas: </li></ul></ul><ul><ul><ul><li>Relatórios </li></ul></ul></ul><ul><ul><ul><li>Camada de Apresentação </li></ul></ul></ul><ul><ul><ul><li>Geração de Código </li></ul></ul></ul><ul><ul><ul><li>Hibernate </li></ul></ul></ul><ul><ul><ul><li>Web Services </li></ul></ul></ul>Estes especialistas são consultores internos que agilizam a solução dos problemas encontrados no desenvolvimento 
  26. 27. Avaliação do Sucesso <ul><li>Resultados (números) </li></ul><ul><li>Início: Dezembro de 2003 </li></ul><ul><li>Projetos: </li></ul><ul><ul><ul><ul><li>12 concluídos internamente </li></ul></ul></ul></ul><ul><ul><ul><ul><li>5 concluídos em parceria </li></ul></ul></ul></ul><ul><ul><ul><ul><li>2 em desenvolvimento interno </li></ul></ul></ul></ul><ul><li>Total: 19 projetos em 1,5 anos </li></ul>
  27. 28. Avaliação do Sucesso <ul><li>Evolução </li></ul><ul><ul><ul><li>Java 5 </li></ul></ul></ul><ul><ul><ul><li>EJB 3.0 </li></ul></ul></ul><ul><ul><ul><li>Orientação a aspectos </li></ul></ul></ul><ul><ul><ul><li>Solução para aplicações desktop </li></ul></ul></ul><ul><ul><ul><li>Utilização de clusters no Tomcat e JBoss </li></ul></ul></ul><ul><ul><ul><li>Avaliação do Spring </li></ul></ul></ul><ul><ul><ul><li>OpenLaszlo </li></ul></ul></ul>
  28. 29. Conclusão <ul><ul><li>Processo de melhoria contínua </li></ul></ul><ul><ul><li>A solução não está conclusa </li></ul></ul><ul><ul><li>Atende perfeitamente as necessidades do setor público </li></ul></ul><ul><ul><li>Intercâmbio de informações e experiências </li></ul></ul>
  29. 30. Éberli Cabistani Riella - [email_address] Alex de Araujo Silva - [email_address] Alex Gouvêa Vasconcelos - [email_address] Fábio dos Santos Petrillo - [email_address] Junho de 2005 Obrigado!

×