Melhores práticas em desenvolvimento PZP SERPRO Cláudio Jorge Severo Medeiro Maurício Victor Marques 29 de agosto de 2008 Objetivo Trocar experiências e informações sobre boas práticas no desenvolvimento em PZP 2 O que é o SERPRO • Maior provedor de soluções de TIC para o Governo Federal • Atende a 36 distintas Organizações de Governo – Ministério da Fazenda – Gabinete Civil – Presidência da República – Ministério da Educação 3 O tamanho do SERPRO 5 redes externas internacionais 118 redes externas nacionais 85.000 computadores conectados 230.000 usuários registrados 250.000 conexões internet simultâneas • Mais de 3 bilhões de transações/ano • • • • • 4 O que o SERPRO produz com PZP • Centenas de sítios e portais – Eventos • Sítio do Consegi – Comemorativos • Sítio comemorativo MF200 – Portais • Portais Consulares • Dezenas de produtos e sistemas • CaptchaField Acessível 5 Como o PZP veio para o SERPRO • Estudo (01/2002) • Benchmarking (03/2002) – IBM – Unisys – Oracle – Microsoft • Consulta Pública (05/2002) • IV Fisl em Porto Alegre (06/2003) • Internet Serpro Comdex (09/2003) 6 Da escuridão à luz • Copiar/Colar PloneSites • Reinventar rodas • PloneSites encadeados • Regras de negócio em PageTemplates • Custom 7 Da escuridão à luz • Copiar/Colar Produtos • Impor um modelo Relacional ao ZODB • Permissão por papéis e usuários • Excesso de novas classes 8 Da escuridão à luz • Produtos sem documentação adequada • Ajustes finos no custom • Skin misturada com código • Versionamento sem padrão 9 Da escuridão à luz: Boas Práticas • Construir pensando sempre no público-alvo (acessibilidade) • Seguir padrões web • Viabilizar a facilidade de gestão de conteúdo 10 Boas Práticas • As versões mais recentes de Python, Zope e Plone foram bem planejadas! • Será a solução? Depende de você! Boas Práticas = Experiência 11 11 Boas Práticas: Benefícios • Simplifica o desenvolvimento e a manutenção; • Facilidade de evoluir; • Acessibilidade; • Compatibilidade (navegadores futuros); • Carregamento e apresentação de página mais ágil; 12 12 Boas Pŕaticas: Escopo da Oficina • Desenvolvimento! • Versão de exemplo abordada: – Unified-Installer: • Python 2.4.4 • Zope 2.9.8 • Plone 2.5.5 • A maioria das boas práticas independem da versão do PZP. 13 Boas Práticas 1 • Trabalhar em comunidade! • Compartilhar o conhecimento. • python.org, zope.org, plone.org, tchezope.org 14 Exemplo - Boas Práticas 1 • Esta oficina! • Participar dos grupos de discussão: zope-pt: http://br.groups.yahoo.com/group/zope-pt 15 Boas Práticas 2 • Envolvimento, • Curiosidade, • Investigação! 16 Exemplo - Boas Práticas 2 Vamos verificar toda a estrutura de pastas do produto instalado: • Onde estão as bibliotecas do Python? • Onde está o Zope? • Onde estão as instâncias do Zope? • Onde está o Plone? 17 O produto: requisitos • O cliente deseja gerenciar os cursos que sua empresa oferece, as turmas e os alunos que participaram do curso. 18 O produto: requisitos • • • • • Manter Cursos; Manter Turmas; Manter Alunos; Associar o aluno as turmas; Exibir todas as turmas; 19 Boas Práticas 3 – Criar um módulo para cada funcionalidade. Ex: PloneCursos – Criar um produto para as peculiaridades do sítio ou sistema. Ex: EmpresaX 20 O produto: projeto PloneCurso 21 Boas Práticas 4 • ArchGenXML! – Diagrama UML => XMI + AGX = produto Plone. – Agilidade no desenvolvimento • ArgoUML, Poseidon, ObjectDomain 22 O produto: ferramentas de construção • ArgoUML (http://argouml.tigris.org) 23 O produto: ferramentas de construção • ArchGenXML (http://plone.org/products/archgenxml) 24 O produto: geração • Vamos gerar o produto: $ python ArchGenXML.py fonte destino 25 O produto: instalação • Vamos instalar o produto... ... e antes de iniciar o servidor... 26 Boas Práticas 5 • Antes de iniciar o servidor zope: – Desenvolver sempre em Debug mode (zope.conf) • Ferramentas via ZMI: – portal_javascripts – portal_css 27 Boas Práticas 6 • Trabalhar com o FileSystem: – Agilidade: use seu editor favorito ao invés da ZMI; – Desempenho: evitar a pasta custom; – Reaproveitamento: crie arquivos de configuração. Observe exemplos de outros produtos (boas práticas 2); 28 Exemplo – Boas Práticas 6 • Modificar as propriedades do portal: – Título – Email – Página Inicial – Slots • Criação da estrutura de pastas inicial • AppInstall.py x Profiles 29 Boas Práticas 7 • Atenção ao modificar os arquivos do plone: .metadata Exemplo: login_form + captcha 30 Boas Práticas 8 a – PEP 8 (Python Enhancements Proposals) a • Identação: 4 espaços; • Não misturar espaços e tabs; • Espaços em branco; a – Zope Coding Styles a • Classes iniciando com letras maiúsculas; • Atributos e métodos iniciando com minúsculas; Capitalize; 31 Boas Práticas 9 • Utilizar componentes do Zope3 através do Five (2+3); – Interfaces – ZCML (Zope Configuration Markup Language) – Adapters (Views) 32 Exemplo – Boas Práticas 9 • Criar um page_template que deverá exibir todas as turmas cadastradas. 33 Exemplo – Boas Práticas 9 • PloneCursos – browser • interfaces.py • configure.zcml • classes.py – skins • PloneCursos – listar_turmas.pt – configure.zcml 34 Péssimas Práticas • Regras de negócio em Page Templates; • Impor um modelo Relacional ao ZODB; • Proxy Roles; • getObject; • contentValues, objectValues; 35 Boas Práticas 10 • Gerenciamento do Código Fonte (CVS, SVN) • Testes 36 Produtos Recomendados • Doc Finder Tab (http://plone.org/products/docfindertab) 37 Produtos Recomendados • Clouseau (http://plone.org/products/clouseau) 38 Produtos Recomendados • Firebug (http://getfirebug.com/) 39 Referências • Padrões Brasil e-Gov – Versão 2.0. Ministério do Planejamento, Orçamento e Gestão. Secretaria de Logística e Tecnologia da Informação. www.governoeletronico.gov.br • Professional Plone Development - Martin Aspeli http://plone.org/documentation/books/professional-plone-development • Best Practices for Plone Development - Joel Burton http://plone.org/documentation/tutorial/best-practices 40 Referências • Worst Practices - Stefan Holek http://plone.org/documentation/manual/add-on-products-developer-manual/things-to-avoid • PEP8 - Style Guide for Python Code – Guido van Rossum, Barry Warsaw http://www.python.org/dev/peps/pep-0008/ • Zope 3 Coding Standards – Zope3 wiki http://wiki.zope.org/zope3/CodingStyle 41 Agradecimento Obrigado!!! • [email protected] • [email protected] 42