classgenerator - desenvolvendo aplicações em php com ... · “preciso de um framework e...
TRANSCRIPT
04:34:06 am
1
ClassGenerator - Desenvolvendo aplicações em PHP com qualidade e
eficiência.
Marcelio Leal
Porto Alegre, Abril, 2006
04:34:06 am
2
Apresentação
● Engenheiro de software do SEPRO● Graduado em C. da Computação● Mestrando em C. da Computação● Membro-Fundador do Grupo PHP Pai
d'Égua● Experiência com web/php desde 2001
04:34:06 am
3
Sumário
● Contexto● Objetivos● Como funciona● A ferramenta● O que vier por aí...
04:34:06 am
4
Contexto
● Desenvolvimento de Sistemas de Informação
● Utilização de Banco de Dados Relacionais
● Geração de Protótipos● Geradores de Artefatos● Automatização
04:34:06 am
5
Motivação
“Algumas das principais barreiras à flexibilidade corporativa são o tempo e o custo para desenvolver aplicações de negócio ou modificar as já existentes com qualidade e eficiência”, Cumins 2002
04:34:06 am
6
PHP
● Temos que manter as suas qualidades– Liberdade– Simplicidade
04:34:06 am
7
Dilemas
“Preciso de um sistema com qualidade e confiabilidade, mas o cliente quer resultados rápidos”
“Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente ou fortemente dependente de uma solução”
“Repito muitas operações padrões a cada vez que faço um sistema”
04:34:06 am
8
Problemas
● Custos do desenvolvimento(IDE,...)● Transição da fase de análise OO para a
fase de projeto(Abstração X Eficiência)● Mapeamento objeto-relacional(BDR
ainda é o padrão)● Reutilização dos artefatos e do
conhecimento (Sistemas legados, SQL, ...)
04:34:06 am
9
Solução/Objetivos
● Prover um padrão p/ mapeamento OR– Fácil, extensível, gerenciável, escalável e
produtiva● Prover geração de artefatos de
funcionalidades básicas– Cadastro, Alteração, Exclusão e Seleção– Sem código desorganizado e excessivo– Seguindo padrões e retirando o máximo de
informações contidas nos modelos
04:34:06 am
10
Solução/Objetivos
● Arquitetura● Documentação● Não deixar dependente da ferramenta● Reutilizar o conhecimento a partir de
mapeamentos
04:34:06 am
11
Class
● Ferramenta com o objetivo de automatizar o desenvolvimento de sistemas de informação
● Melhorando alguns aspectos do desenvolvimento de software, direta e indiretamente
● E utilizando o conhecimento adquirido para melhorar gradativamente o software gerado
04:34:06 am
12
Histórico● Padrão utilizado no SAAD, base do Class
● Versão 0.1 Lançada em Nov/Dez de 2001
– Marcelio L., Eduardo G., Leonardo G. e Prof. Affonso G.
● Versão 0.2 (ADODB) Lançada em Jun/Jul de 2002
– Adaptações na versão 0.1 (Eduardo Guerra)
● Versão 0.5 Lançado em Maio de 2003
– Código Refeito, Evolução, manutenção dos artefatos(ML)
● Versão 0.6 Lançado em Abril de 2004
– Código Refeito, evolução no Padrão (ML, Eloi Favero)
● Versão 1.0 TCC
– Evolução no Padrão (Marcelio, Rafael Marlos e Abstract)
04:34:06 am
13
A Ferramenta● Componentes
– Gerador de Artefatos– Framework– Gerador de Código
● O que faz– Geração de Artefatos a partir de um
modelo de mais alto-nível para automatizar o desenvolvimento de SI.
– Baseados em padrões reconhecidos pela comunidade de Engenheiros Web;
– Utiliza regras de mapeamento pra geração
04:34:06 am
14
Gerador de Artefatos
"Um artefato é qualquer item criado como parte da definição, manutenção ou utilização de um processo de software. Inclui entre outros, descrições de processo, planos, procedimentos, especificações, projeto detalhado, código, documentação para o usuário. Artefatos podem ou não ser entregues a um cliente ou usuário final”, Staa
04:34:06 am
15
O Processo
04:34:06 am
16
Outra visão
04:34:06 am
17
Metas
● Gerar e manter boa parte do sistema
● Estabelecer um padrão
● Transferir esforços para as atividades essenciais
● Diminuir a repetição de código
● Diminuir a incidência de erros
● Dividir bem as responsabilidades
● Melhorar a comunicação
● Utilizar o conhecimento adiquirido
● Deixar livre o desenvolvedor
04:34:06 am
18
Os Artefatos e a Arquitetura inicial/básica
04:34:06 am
19
Operações
● Inserção● Alteração● Exclusão● Seleção pela CP(PK)● Seleção de toda coleção de objetos
04:34:06 am
20
Mapeamento OR
● Manter os princípios da OO– Reusabilidade– Extensibilidade– Minimizando o impacto em performance*
● Utilizar os benefícios de um BDR● Tranparência nas operações no BDR● Utilizar padrões de projeto● Amenizar e facilitar a transição da fase
de análise para o projeto OO
04:34:06 am
21
Mapeamento OR
● Funcionamento– Cada tabela é transformada em uma
classe do tipo Básica;– Para cada classe básica criada são criadas
também:● Uma classe do tipo CadBD;● Uma classe do tipo Cad ;● Os métodos de acesso na classe Fachada.
04:34:06 am
22
Interfaces
04:34:06 am
23
Regras de Criação e Otimização
Categorias Validação Tipo Elemento HTML Limita caracteresstring não text simlong string não textArea simint int text simfloat não text simdate data text simtime hora text simyear int text simespecific type não text nãofile não file não
04:34:06 am
24
O Framework integrado● Camada de abstração do BD(ADODB)
● Controle, mecanismo de log e aviso de erros em tempo de execução (Erros de programação)
● Comunicação via e-mail
● Controle e fluxo de mensagens de apresentação para usuários
● Validação de interfaces JavaScript
● Controle de códigos e estados estáticos
● Funções extras de interface (Combos...)
● Estilos de interface (CSS)
● Todas funcionalidades podem ser substituidas por outros Frameworks
04:34:06 am
25
Conclusões
● Um bom aumento da velocidade de desenvolvimento
● Começar do simples/elegante● Padronização de arquitetura e código● Melhor comunicação em equipe● Liberdade pra criar, modificar e reutilizar● Diminuição ou isenção, dependendo do caso,
de teste nos artefatos gerados
04:34:06 am
26
Trabalhos futuros●Integração com outros ambientes, como o DBDesigner e o Umbrello;
●Adicionar formatos nos dados de entrada, como XML;
– Podendo ser sincronizado com os formatos acima citados
●Separar os arquivos de mapeamento, facilitando uma configuração personalizada destes mapeamentos.
●Gerar outros tipos de interface, incluindo XML e GTK;
●Adicionar inteligência computacional, na geração das interfaces;
●Adicionar regras customizáveis via interface
●V2 Abril/Maio
04:34:06 am
27
● groups.yahoo.com/group/phppaidegua● 190 membros● IV Echo PHP● ...● Primo/Irmão do Linux Pai d'égua●
● Pai d'Égua ==> Trilegal
04:34:06 am
28
Perguntas?
Marcelio Leal - [email protected]
●www.marcelioleal.net/classgenerator●www.marcelioleal.net●www.serpro.gov.br●groups.yahoo.com/phppaidegua●Abstract BI - (www.abstractbi.com)
Que a força esteja com vocês...