Apresentação do PowerPoint

Propaganda
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
Download