28
04:34:06 am 1 ClassGenerator - Desenvolvendo aplicações em PHP com qualidade e eficiência. Marcelio Leal Porto Alegre, Abril, 2006

ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

Embed Size (px)

Citation preview

Page 1: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

1

ClassGenerator - Desenvolvendo aplicações em PHP com qualidade e

eficiência.

Marcelio Leal

Porto Alegre, Abril, 2006

Page 2: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 3: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

3

Sumário

● Contexto● Objetivos● Como funciona● A ferramenta● O que vier por aí...

Page 4: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 5: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 6: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

6

PHP

● Temos que manter as suas qualidades– Liberdade– Simplicidade

Page 7: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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”

Page 8: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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, ...)

Page 9: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 10: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

10

Solução/Objetivos

● Arquitetura● Documentação● Não deixar dependente da ferramenta● Reutilizar o conhecimento a partir de

mapeamentos

Page 11: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 12: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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)

Page 13: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 14: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 15: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

15

O Processo

Page 16: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

16

Outra visão

Page 17: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 18: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

18

Os Artefatos e a Arquitetura inicial/básica

Page 19: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 20: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 21: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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.

Page 22: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

04:34:06 am

22

Interfaces

Page 23: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 24: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 25: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 26: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 27: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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

Page 28: ClassGenerator - Desenvolvendo aplicações em PHP com ... · “Preciso de um framework e ferramentas de produtividade, mas preciso que o software não fique defasado rapidamente

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...