SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS PLANO DE TRABALHO E PROJETO BÁSICO PARA CONTRATAÇÃO DO CURSO JAVA AVANÇADO PLANO DE TRABALHO 1. OBJETO O objeto é contratar pessoa jurídica especializada para ministrar oCurso JAVA AVANÇADO, com o objetivo de capacitar os servidores do CTI - Centro de Tecnologia da Informação na utilização desta linguagem e ferramentas para desenvolvimento e manutenção de sistemas WEB. 2. JUSTIFICATIVA - O PORQUÊ DO CURSO Atualização tecnológica para acompanhar os padrões atuais de desenvolvimento de sistemasWEB. 3. DO CURSO E QUANTIDADE DE SERVIDORES O Curso JAVAAVANÇADOé destinado a 20 servidores daUFU, sendo15 Analistas de TI lotados no CTI – Centro de Tecnologia da Informação, e outros 5 servidores lotados na PROGRAD, DIRPS E DIRPL, a ser ministrado na sala de treinamentosdo CTI – Campus Umuarama, com carga horária de 72 horas, distribuídos em dois encontros semanais, preferencialmente no turno da manhã, para facilitar a participação de todos os servidores, sem prejuízo das atividades diárias. 4. RESULTADO PREVISTO Aperfeiçoamento de conhecimentos em JAVA, da equipe CTI,para que mais servidores possam participar de projetos de desenvolvimento de sistemas de gestão utilizando essa ferramenta. 5. PERFIL DA DESPESA Estima-se um custo médio de R$906,67 por participante, no custo total médio de R$ 18.133, 33 (dezoito mil cento e trinta e três reais e trinta e três centavos) para 20 participantes, sem reajuste. SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS PROJETO BÁSICO 1. INTRODUÇÃO Este Projeto Básico visa à contratação de empresa especializada para ministrar o Curso JAVAAVANÇADO. A contratação deverá ocorrer com pessoa jurídica. 2. DETALHAMENTO DOS SERVIÇOS 2.1 – Perfil: Da Empresa: Empresa com experiência em consultorias e/ou treinamentos. Empresa capaz de oferecer cursos “in company”, com conteúdo programático adequado às necessidades da UFU, ajustando-o ao nosso perfil e finalidades desejadas. Empresa que tenha disponibilidade de oferecer o curso nos horários e com carga horária diária estipulada neste projeto. Do Facilitador: Graduação em sistema de informação, ciência da computação ou engenharia da computação. Experiência de mercado e docência com um total de 5 anos. Certificações: -Sun Certified Enterprise Architect ou Oracle Certified Master, Java EE 6 Enterprise Architect -Sun Certified Java Programmer ou Oracle Certified Professional, Java SE 6 Programmer -Sun Certified Web Component Developer ou Oracle Certified Professional, Java EE 5 Web Component Developer -Sun Certified Business Component Developer ou Oracle Certified Professional, Java EE 6 Business Component Developer -Sun Certified Developer for Java Web Services ou Oracle Certified Expert, Java EE 6 Web Services Developer Observação: É necessária a comprovação de todos os requisitos acima (perfil da empresa e do facilitador). SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 2.2 - Local do Curso e data de realização Treinamento presencial nas dependências da UFU - Sala de treinamentos do CTICentro de Tecnologia da Informação –Bloco 2Y - Campus Umuarama,com carga horária de 72 horas, distribuídos em dois encontros semanais, durante horário compreendido entre 8:00 e 17:30 horas, com preferência pelo turno da manhã, para turma de no máximo 20 pessoas. O curso deverá ser oferecido no 2º semestre de 2013. O Curso será dividido em dois módulos, a data de início de cada módulo deverá ser acordada entre a coordenação do curso e o instrutor, podendo haver intervalo entre os módulos. A versão do Spring framework utilizada será a 2.5.6.SEC02, podendo ser alterada com avisoprévio ao instrutor ( 1 mês antes do início do curso). Todos os exercícios aplicados durante o treinamento devem levar em consideração como exemploa arquitetura dos sistemas já existentes na Universidade que será apresentada ao instrutor noprimeiro dia de aula. Os tópicos estão divididos em 3 níveis de profundidade: 1 – O tema deve ser apresentado por completo, com o foco na apresentação, se houverapresentação de exercícios deve ser de forma mais sucinta. 2 – O tema deve ser apresentado por completo, com o foco na apresentação e demonstrações, osexercícios devem ser simples e feitos em horário do curso. 3 – O tema deve ser apresentado por completo, com foco na apresentação e nos exercícios, osexercícios devem ser completos, mostrando pontos onde podem ocorrer problemas e se possívelmais de uma forma de implementar a solução. Todas as dúvidas nestes temas devem ser sanadas. 2.3 -Do curso e seu conteúdo: 2.3.1. Conteúdo Programático: JAVA AVANÇADO MÓDULO 1: SPRING 2.5.6 (carga horária = 40 horas) Injeção de dependências e Inversão de Controle (1) 1. Dependências e o alto acoplamento 2. Injeção de dependências SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 3. Inversão de controle e o princípio de hollywood Spring Framework (1) 1. O que é? 2. Arquitetura do Spring 3. SPRING x EJB 3.1 4. Diferenças entre as versões do Spring Framework 2.5.6, 3.0.5 e 3.2.2 5. Introdução aos beans do Spring 6. Configurando o Spring 7. Iniciando o container 8. Injetando as Dependências: por construtor e por setter 9. Exercícios: Projeto com Spring IoC 10. Exercícios: Injeção com Setter e Tipos Básicos 11. Exercícios: Valores Literais 12. Exercícios: FactoryBean 13. Introdução ao Spring Data. 14. Quais bancos são compatíveis com Spring Data 15. Como adicionar Spring Data no sistema 16. Exercícios: Criando um projeto utilizando Spring Data. Suporte para JDBC (2) 1. Conceitos chave do JDBC 2. Como usar o DriverManager e as Connections 3. Como usar e otimizar os PreparedStatements 4. CallableStatements 5. Outros conceitos de JDBC 6. Conceitos do suporte para o acesso a dados do Spring 7. Suporte para o acesso a dados com o JDBC 8. JdbcTemplate 9. JdbcTemplate.execute 10. JdbcTemplate.query e similares 11. JdbcTemplate.update 12. JdbcTemplate.batchUpdate 13. Subclasses de RdbmsOperation 14. SqlUpdate 15. BatchSqlUpdate SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 16. SqlCall e StoredProcedure 17. SqlQuery e suas subclasses 18. JdbcTemplate ou RdbmsOperation? 19. Objetos binários grandes 20. JdbcDaoSupport 21. JDBC simples do Spring 22. SimpleJdbcTemplate 23. SimpleJdbcCall 24. SimpleJdbcInsert 25. SimpleJdbcDaoSupport Gerenciamento de transações (2) 1. Camada de abstração de transações do Spring 2. Análise das propriedades das transações 3. Interface TransactionDefinition 4. Interface TransactionStatus 5. Implementações de PlatformTransactionManager 6. Amostra de gerenciamento de transações 7. Código não transacional 8. Gerenciamento programático de transações 9. Como usar a classe TransactionTemplate 10. Resumo do gerenciamento programático de transações 11. Gerenciamento declarativo de transações 12. UsodoTransactionProxyFactoryBean 13. Marcatx:annotation driven 14. Anotação @Transactional 15. Resumo do gerenciamento de transações baseado em anotações 16. Marca tx:advice 17. Como trabalhar com transações em cima de múltiplos recursos transacionais 18. Como implementar sua própria sincronização de transações Integrando Spring, Hibernate e tecnologias de Persistência (2) 1. Introdução - Onde o Spring pode ajudar ao usar o Hibernate 2. Configurando o Hibernate no Spring 3. ProdutoHibernateDAO 4. @Repository SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 5. Exercícios 6. @Qualifier 7. Exercícios 8. Não quero escolher um objeto, quero um padrão! 9. Exercícios 10. Transações co 12. Controle de Session com o Spring 13. Exercícios 14. Exercícios - Alterar Produtos 15. Exercício: Remoção de produtos 16. Aumentando nosso domínio 17. Entitidade 18. Exercícios 19. Mostrando as movimentações na tela 20. Exercícios 21. Lidando com LazyInitializationException 22. Solução Open Session in View 23. Exercícios 24. Transações Avançadas 25. Para saber mais: HibernateTemplate e outros Templates 26. Exercícios opcionais - Datasource e JdbcTemplate Testes com o Spring (2) 1. Teste de unidade 2. Como implementar testes de unidade 3. Executar testes de unidade na camada web 4. Testes de integração 5. AbstractSpringContextTests 6. AbstractDependencyInjectionSpringContextTests 7. AbstractTransactionalSpringContextTests 8. AbstractAnnotationAwareTransactionalTests 9. @Repeat 10. @Timed 11. @Rollback 12. @NotTransactional SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 13. @ExpectedException 14. @DirtiesContext 15. @IfProfileValue e @ProfileValueSourceConfiguration 16. JNDI 17. JNDI e os testes transacionais 18. Estrutura TestContext do Spring 19. Contexto da aplicação e DI com Estrutura TestContext 20. Injeção de dependências com a Estrutura TestContext 21. Transações na Estrutura TestContext 22. @TransactionConfiguration 23. @BeforeTransaction e @AfterTransaction 24. Classes de suporte 25. Cobertura dos testes Spring Security (1) 1. Introduçãoao Spring Security 2. Exercícios - Configurando o Spring Security 3. Access ControlList 4. Exercícios - Criando as classes de Domínio 5. Interfaces de Acesso 6. Exercícios - Suporte a Acesso de Dados 7. Login 8. Exercícios - Logando no Sistema 9. Outras formas de adicionar segurança ao Spring. 10. Principais formas de ataques ao Spring. 11. Principais vulnerabilidades do Spring. Tunning de desempenho do Spring (3) 1. Desempenho versus responsividade 2. Explorar as questões de desempenho de aplicações empresariais 3. Medir o desempenho de aplicações Java EE 4. Descobrir o que medir 5. Determinar os conjuntos de dados necessários 6. Melhorar a camada de acesso a dados 7. Melhorar o desempenho da seleção de dados 8. Melhorar as operações de inserção e atualização de dados SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 9. Melhorar o gerenciamento de transações 10. Controlar o desempenho de chamadas remotas 11. Entender o desempenho das visualizações 12. Uso de cache 13. Teste de desempenho 14. Monitorar o desempenho e o estado geral da aplicação 15. Mais recursos sobre a afinação do desempenho 16. Exercícios: Melhorando a forma de exercução de querys muito grandes no Spring 17. Exercícios: Utilizar cache em resultados de consultas evitando o retrabalho 18. Exercícios: Formas de evitar a abertura não necessária de conexão ao banco de dados 19. Técnicas de análise de desempenho em sistemas que utilizam Spring. MÓDULO 2: ARQUITETURA E DESIGN DE PROJETOS (carga horária = 32 horas) Arquitetura (1) 1.O que é Arquitetura? 2.Requisitos não funcionais 3.Cliente Servidor 4.p2p - PeertoPeer 5.Dividindo em camadas: tiers e layers 6.MVC - ModelViewController 7.Arquitetura contemporânea e o Cloud Requisitos arquiteturais (3) 1.Performance e testes de performance 2. Exercício: Como testar a performance de um sistema. 3.Escalabilidade e Disponibilidade (e testes). 4. Exercício: Implementando um sistema de alta escalabilidade e disponibilidade. 5.Confiabilidade 6.Extensibilidade e Manutenabilidade 7.Gerenciabilidade 8. Exercícios: Gerenciabilidade 9. Segurança 10. Principais formas de ataques e como prevenir. 11. Exercícios: Descobrindo vulnerabilidades e corrigindo-as. SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS Decisões arquiteturais (1) 1. Desenvolvimento Web MVC: Actions ou Componentes? 2. Ferramenta de mapeamento objeto relacional 3. Boas e más práticas com o Hibernate 4. Distribuição de objetos 5. ValueObject, Data TransferObject, SessionFaçade 6. Comunicação assíncrona 7. Mensagens e JMS 8. Exercícios: Mensagens assíncrona e o JMS Integração de sistemas na Web e REST (3) 1.Princípios de integração de sistemas na Web 2.SOA - Service Oriented Architecture 3.Web Services SOAP e WSDL 4.Exercícios: Criação de provedor e consumidor de serviços - WebServices SOAP 5.POX: PlainOld XML 6.Exercícios: Criação de provedor e consumidor de serviços - POX (PlainOld XML) 7.REST: arquitetura distribuída baseada em hipermídia 8. Segurança em REST. 9. Criação de perfis de autenticação e segurança em servidores REST. 10.Exercício: Criação de provedor de serviço e cliente consumidor. Carga horária total: 72 horas. 2.3.2 Metodologia O Curso JAVA AVANÇADO deve ser oferecido nas dependências da Universidade Federal de Uberlândia (CTI - BLOCO 2Y - Campus Umuarama), constando de aulas teóricas e práticas. O curso será oferecido duas vezes por semana, com carga horária diária de 04 horas, preferencialmente no turno da manhã e com data a ser definida após emissão do empenho, no 2º semestre de 2013. A empresa deve oferecer material didático para cada participante. SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 3. PRESTAÇÃO DE CONTAS / PAGAMENTOS. 3.1 O pagamento será efetuado no prazo de 8 (oito) dias úteis, contados da data de atestamento do documento fiscal, desde que atendida todas obrigações previstas no projeto básico, mediante crédito em conta corrente Bancária da LICITANTE VENCEDORA, através do Banco do Brasil S/A. 3.2 Conforme o disposto no item 8.8 da Instrução Normativa nº 5, de 21/07/95, do Ministério da Administração Federal e Reforma do Estado, o Agente da UNIVERSIDADE fará consulta junto ao SICAF (sistema de Cadastramento Unificado de Fornecedores), previamente à contratação e antes de cada pagamento a ser feito para a LICITANTE VENCEDORA, a qual deverá manter este o seu cadastro atualizado. 3.3 Considerar-se-á como último dia para pagamento, o de emissão da respectiva ordem bancária pelo SIAFI (Sistema de Administração Financeira do Governo Federal). 3.4 O atestamento será feito pelo Fiscal do contrato da contratação, que só o fará após a constatação do cumprimento das condições estabelecidas, ao final do Curso. 3.5 No pagamento serão observadas as retenções, de acordo com a legislação e normas vigentes. 3.6 A retenção do ISS (Imposto sobre Serviços) será feita para o município de Uberlândia, mesmo que a empresa tenha sua sede em outra localidade. 4. OBRIGAÇÕES DAS PARTES 4.1. Visando a execução dos serviços objeto deste Projeto, a Licitante Vencedora se compromete a: 4.1.1 É de responsabilidade da empresa: o pagamento do facilitador, fornecimento dos certificados, despesas com passagem e hospedagem do instrutor, materiais didáticos (apostila, exercícios). 4.1.2 zelar pela perfeita execução dos serviços, objeto deste Projeto; 4.1.3 manter durante a execução dos serviços, todas as condições de habilitação e qualificação exigidas na licitação; 4.1.4 não caucionar ou utilizar a presente contratação para qualquer operação financeira, sem prévia e expressa autorização da UNIVERSIDADE; SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE UBERLÂNDIA PRÓ-REITORIA DE RECURSOS HUMANOS 4.1.5 assumir todas as despesas relativas a pessoal e quaisquer outras oriundas, derivadas ou conexas com a contratação, ficando, ainda, para todos os efeitos legais, declaradas pela LICITANTE VENCEDORA a inexistência de qualquer vínculo empregatício entre seus empregados e/ou prepostos e a UNIVERSIDADE 4.2. Visando a execução dos serviços objeto deste Projeto, a Universidade se compromete a: 4.2.1 exercer a fiscalização dos serviços por servidores especialmente designados e nomeados por Portaria, que anotarão em registro próprio todas as ocorrências relacionadas com o mesmo na forma prevista na Lei nº 8.666/93; 4.2.2 prestar as informações e os esclarecimentos que venham a ser solicitados pela LICITANTE VENCEDORA; 4.2.3 efetuar o pagamento nas condições e preços pactuados. 4.2.4 Disponibilizar o espaço físico para realização do curso. 5. GESTÃO DO CONTRATO O contrato terá a sua gestão na Pró- Reitoria de Recursos Humanos, órgão responsável pela elaboração deste Projeto e manutenção e apoio as atividades administrativas na Universidade. A Pró-Reitora de Recursos Humanos será a gestora do contrato e, de acordo com a legislação nomeará fiscais para atuar na fiscalização do cumprimento das condições contratadas. Para dirimir quaisquer dúvidas quanto ao objeto da contratação, o contato deverá ser feito na Divisão de Capacitação de Pessoal/PROREH com Aidê G. A. Ferreira, pelo telefone 34.3291-8988 ou com Aline G. P. Ramos – Divisão de Sistemas - CTI, pelo telefone 34-3218-2030.