Engenharia Reversa de Código PHP

1,174 views
Skip to first unread message

Juliana Cindra

unread,
Apr 8, 2009, 6:01:05 PM4/8/09
to PHP Brasil, Lista PHP
Olá lista!

Sou nova aqui na lista, e gostaria de saber se alguém conhece alguma ferramenta CASE que faça a Engenharia Reversa de código PHP?

Preciso recuperar o modelo do domínio de um sistema aqui no serviço, ele usa o CakePHP como framework.

Desde já muito obrigada,

--
===========
  Juliana Cindra :)
=============

Laerte Mateus Rodrigues

unread,
Apr 8, 2009, 8:41:14 PM4/8/09
to list...@googlegroups.com
olha, não existe nenhuma ferrament deste tipo para php nao viu.
 
o projeto num tem documentação nao?

2009/4/8 Juliana Cindra <juci...@gmail.com>

Juliana Cindra

unread,
Apr 8, 2009, 8:55:42 PM4/8/09
to list...@googlegroups.com
Olá Laerte,

Eu faço parte de um núcleo de qualidade de software e precisava fazer a reversa deste sistema pra poder obter a documentação dele, pq não tem, mas andei pesquisando ferramenta pra isso e não consegui nada até agora..

A única coisa q ví foi um módulo do ArgoUML, o ArgoUML-PHP, que diz o seguinte no site da ferramenta:

Mission

This module is desgined to work with the ArgoUML modelling tool to some time in the future provide full roundtrip engineering of PHP code.

  • Generate PHP code from a UML model
  • Import PHP source and build a UML model based on the source
  • Reverse engineer assemblies??

Currently we have implemented PHP code generation and are working to improve this to be able to correctly generate all UML elements.

The module is written in Java simply because this is the language used for ArgoUML.


Só que eu não encontrei não achei mais nada sobre esse módulo..
Alguém sabe alguma coisa sobre ele? E realmente não tem nenhuma outra ferramenta que faça este trabalho mesmo não?

Desde já muito obrigada,

// Juliana

2009/4/8 Laerte Mateus Rodrigues <laer...@gmail.com>



--
===========
  Juliana Cindra
=============

Laerte Mateus Rodrigues

unread,
Apr 8, 2009, 9:19:48 PM4/8/09
to list...@googlegroups.com
mas tipo, ele sendo feito no CakePHP já é um bom sinal, pq nele nao tem como sair mto fora do padrão do próprio framework,
se vc conhece-lo bem, vc vai ver q tem como vc ir desdobrando o projeto aos poucos, ja passei por este tipo d situação, o conselho q lhe dou é pegar o projeto e "desmontando" ele vc msm, pq msm uma ferramenta q desdobre o código, nao vai fikar 100% bom.

Renato de Freitas Freire

unread,
Apr 9, 2009, 7:14:13 AM4/9/09
to list...@googlegroups.com
Vc quer uma ferramenta que pegue seu codigo fonte e gere diagramas uml?

Se for isso, parece que o pessoal conseguiu com um tal de Enterprise Architect

nao sei se eh bem o q vc precisa.. mas pesquisa aqui na lista sobre esse programa.. vi algo nao tem muito tempo...


--
Renato de Freitas Freire
ren...@morfer.org

Marcelo Araujo

unread,
Apr 9, 2009, 7:19:28 AM4/9/09
to list...@googlegroups.com
www.doxygen.org

2009/4/9 Renato de Freitas Freire <rena...@gmail.com>:
--
Marcelo Araujo
Zend Certified Engineer
http://www.crosi.com.br
+55 34 9144 1472

Arian Maykon (Dead_Thinker)

unread,
Apr 9, 2009, 6:11:40 PM4/9/09
to LISTA PHP
Olá, o Enterprise Architect faz a importação de classes PHP, creio que
é o que queres.
Mas é pago, já rolou uma discussão disso nessa lista se não me engano.

--
_________________________________________________
Arian Maykon de Araújo Diógenes

Fortaleza - Ceará - Brasil
Zend Framework Evangelist :D
Linux User #: 467310
Blog: http://arianmaykon.blogspot.com/
Contatos: http://meadiciona.com/dead_thinker


On 9 abr, 08:19, Marcelo Araujo <marcelosara...@gmail.com> wrote:
> www.doxygen.org
>
> 2009/4/9 Renato de Freitas Freire <renat...@gmail.com>:
>
>
>
> > Vc quer uma ferramenta que pegue seu codigo fonte e gere diagramas uml?
> > Se for isso, parece que o pessoal conseguiu com um tal de Enterprise
> > Architect
> > nao sei se eh bem o q vc precisa.. mas pesquisa aqui na lista sobre esse
> > programa.. vi algo nao tem muito tempo...
>
> > --
> > Renato de Freitas Freire
> > ren...@morfer.org
>
> > 2009/4/8 Laerte Mateus Rodrigues <laert...@gmail.com>
>
> >> mas tipo, ele sendo feito no CakePHP já é um bom sinal, pq nele nao tem
> >> como sair mto fora do padrão do próprio framework,
> >> se vc conhece-lo bem, vc vai ver q tem como vc ir desdobrando o projeto
> >> aos poucos, ja passei por este tipo d situação, o conselho q lhe dou é pegar
> >> o projeto e "desmontando" ele vc msm, pq msm uma ferramenta q desdobre o
> >> código, nao vai fikar 100% bom.
>
> >> 2009/4/8 Juliana Cindra <jucin...@gmail.com>
>
> >>> Olá Laerte,
>
> >>> Eu faço parte de um núcleo de qualidade de software e precisava fazer a
> >>> reversa deste sistema pra poder obter a documentação dele, pq não tem, mas
> >>> andei pesquisando ferramenta pra isso e não consegui nada até agora..
>
> >>> A única coisa q ví foi um módulo do ArgoUML, o ArgoUML-PHP, que diz o
> >>> seguinte no site da ferramenta:
>
> >>> Mission
>
> >>> This module is desgined to work with the ArgoUML modelling tool to some
> >>> time in the future provide full roundtrip engineering of PHP code.
>
> >>> Generate PHP code from a UML model
> >>> Import PHP source and build a UML model based on the source
> >>> Reverse engineer assemblies??
>
> >>> Currently we have implemented PHP code generation and are working to
> >>> improve this to be able to correctly generate all UML elements.
>
> >>> The module is written in Java simply because this is the language used
> >>> for ArgoUML.
>
> >>> Só que eu não encontrei não achei mais nada sobre esse módulo..
> >>> Alguém sabe alguma coisa sobre ele? E realmente não tem nenhuma outra
> >>> ferramenta que faça este trabalho mesmo não?
>
> >>> Desde já muito obrigada,
>
> >>> // Juliana
>
> >>> 2009/4/8 Laerte Mateus Rodrigues <laert...@gmail.com>
>
> >>>> olha, não existe nenhuma ferrament deste tipo para php nao viu.
>
> >>>> o projeto num tem documentação nao?
>
> >>>> 2009/4/8 Juliana Cindra <jucin...@gmail.com>
>
> >>>>> Olá lista!
>
> >>>>> Sou nova aqui na lista, e gostaria de saber se alguém conhece alguma
> >>>>> ferramenta CASE que faça a Engenharia Reversa de código PHP?
>
> >>>>> Preciso recuperar o modelo do domínio de um sistema aqui no serviço,
> >>>>> ele usa o CakePHP como framework.
>
> >>>>> Desde já muito obrigada,
>
> >>>>> --
> >>>>> ===========
> >>>>>   Juliana Cindra :)
> >>>>> =============
>
> >>> --
> >>> ===========
> >>>   Juliana Cindra
> >>> =============
>
> --
> Marcelo Araujo
> Zend Certified Engineerhttp://www.crosi.com.br
> +55 34 9144 1472

MEM

unread,
Apr 9, 2009, 6:20:22 PM4/9/09
to list...@googlegroups.com
Estou completamente perdido. Singleton, DAO, PDO, MVC, DI, Registry... que
loucura!!!

A ideia era ter uma classe que partilhasse a ligacao ao banco-de-dados por
todas as outras classes que necessitam de elaborar operações de
banco-de-dados.
Essas classes que usam ligação ao banco de dados, terão de, por vezes,
comunicar entre si. Por exemplo:

Tenho uma página "inserir_cao.php" nessa página vou ter uma dropdown que
diz: "Para que veterinário você quer introduzir o cão?", então, eu tenho que
ir a classe do veterinário, ir buscar os dados da tabela, e colocar na
pagina, introduzo as informacoes relativas as cão e, depois, será a classe
inserir cão que será responsável pela insercao.

Que estrutura utilizar neste caso?


Obrigado,
Márcio

Paulo Diovani

unread,
Apr 9, 2009, 6:28:04 PM4/9/09
to list...@googlegroups.com
Na empresa que trabalho usamos o EA, mas não acho que já tenhamos
usado as ferramentas de Reverse Enginering dele, o que fazemos é
utilizá-lo para documentação, apenas. E é pago, sim.

Ju, uma dica seria tu pegar uma boa IDE para PHP (recomendo Eclipse
PDT, ou seus "derivados"), assim você pode facilmente visualizar todas
as classes existentes no projeto e documentá-las facilmente, não vai
dar trabalho, mas com certeza vai levar tempo. Aliás, mesmo que você
utilize alguma ferramenta para Engenharia reversa, vai precisar checar
manualmente o fluxo de mensagens para gerar os relacionamentos entre
classes (falando de uml).

Se o prjeto for em CakePHP, fica ainda mais fácil, porque o que você
vai realmente precisar são as definições dos Models (se o projeto for
um "bom bolo", toda a lógica, ou a maior parte dela, deve estar nos
Models, e nestes mesmos tu pode verificar os relacionamentos.

2009/4/9 Arian Maykon (Dead_Thinker) <arian....@gmail.com>:
--
Paulo Diovani
pa...@diovani.com
+55 51 8146 5413
___________________
http://www.diovani.com

Edgar da Silva (Fly2k)

unread,
Apr 9, 2009, 6:28:38 PM4/9/09
to list...@googlegroups.com
Todos eles. Quer entender o pq?
Voc^sabe explicar o que significa cadaum e para que serve? E você
consegue explicar o que você entendeu de cada um?

2009/4/9 MEM <tal...@gmail.com>:
--
Abraços
Edgar Ferreira da Silva
Engenheiro de Software
Araras - SP
(19) 8110-0733
http://edgarfs.com.br
-----
Aprenda PHP, cole códigos, saiba das vagas de empregos:
http://www.manjaphp.com.br

Paulo Diovani

unread,
Apr 9, 2009, 6:31:18 PM4/9/09
to list...@googlegroups.com
Outra opção é o PHPDocumentor (http://www.phpdoc.org/), que pode gerar
a documentação da API do projeto para você também.

2009/4/9 Paulo Diovani <pa...@diovani.com>:

MEM

unread,
Apr 9, 2009, 6:47:56 PM4/9/09
to list...@googlegroups.com
Obrigado Edgar,

O que eu entendi e não entendi de cada um está aqui:
O singleton é uma patente que nos permite ter uma e só uma instancia de uma classe. Assim, uma classe de conexão faria sentido usar-se em singleton.
O DAO parece ser uma layer que nos permite separar a parte das operações do banco de dados, do resto da lógica do código php.
O PDO é uma quase data abstration layer que nos permite ligar ao banco de dados de modo mais eficiente e seguro sem, contudo, estar dependente de um modelo de banco de dados específico.
O MVC é uma dor de cabeça para entrar nele. Mas permite-nos separar o Modelo, da View do Controlo. A view pode estar ligada a templates de PHP, o model ao DAO, e o controlo é a confusão geral!! E fica pior quando entra um tal de router!

Eu não estou tentando criar uma estrutura de enterprise à primeira, estou tentando criar uma mini estrutura que me permita, no futuro, migrar para MVC mais complexo, melhor as estruturas etc...
mas por onde começar?

Márcio

Edgar da Silva (Fly2k)

unread,
Apr 9, 2009, 9:29:52 PM4/9/09
to list...@googlegroups.com
Então,

O seu problema é o MVC.

O Model, ou modelo, é onde definimos nossas regras de negócio. O
modelo usa o DAO para acesso ao banco de daddos. Muitas vezes algumas
pessoas até misturam o DAO com o Model numa mesma classe, o que não é
bom IMHO.
Imagina que você tem um Model de caixa de banco. E uma regra de
negócio é saidaDeDinheiro(valor) que retira um valor do caixa. Dentro
dessa regra tem a codificação pra checar se há dinheiro suficiente, se
não há ele faz uma requisição a outro caixa, ou ao fundo de reserva,
etc. Isso é um exemplo de uma regra de saidaDeDinheiro.
Um caixa também existe uma regra que chama pagarCheque() que verifica
se tem fundos, se pode ser pago, se o cheque é verdadeiro, etc. E
depois de todas as checagem ele chama o saidaDeDinheiro pra executar a
regra de negócio de retirada de dinheiro do caixa.

Os Controllers são os que recebem a informação, e vericam quais Model
precisam ser disparados, e quais as regras de negócio precisam ser
acessadas. Por exemplo, o controller banco recebe um cheque pra pagar,
então ele aciona o Model caixa e acessa o método pagarCheque().
Um outro controller, A Casa de Câmbio, também paga cheques. Como?
Usando o mesmo Model Caixa, e o método pagarCheque().

As views, são apenas para apresentação. Elas recebem o Model e retiram
informações dele.

Deu pra entender sobre MVC?

2009/4/9 MEM <tal...@gmail.com>:

MEM

unread,
Apr 9, 2009, 9:43:53 PM4/9/09
to list...@googlegroups.com
Deu para esclarecer umas cenas, aliás, até gostava de avançar para um modelo MVC, ainda que muito simples. O problema é que parece não ser compatível a simplicidade com MVC.
Eu sou novo em Programação e receio que avançar para MVC aumente a dificuldade de descobrir, quando ocorrem erros no meu código, onde está o problema.

O que acha?

Deverei criar uma MVC ainda que muito básica para perceber como tudo funciona?

Deverei escolher uma Framework simples e a partir dela perceber o MVC? Se sim, qual a Framework indicada para um iniciante?


Estava mais numa de seguir a primeira opção...


Obrigado,

Edgar da Silva (Fly2k)

unread,
Apr 9, 2009, 9:59:41 PM4/9/09
to list...@googlegroups.com
Não.

Sinceramente?

Se você já passou pela parte procedural do PHP, vá para a parte de OOP.

Mas não se preocupe com DAO, DI, Singleton. Se preocupe em pra que e
como trabalhar com orientação a objetos. Como funciona as abstracts,
as interfaces, os métodos mágicos. No máximo, eu aconselharia a
utilizar o pattern ValueObject.

Mas isso é para aprender, e depois você evolui para outros.

2009/4/9 MEM <tal...@gmail.com>:

MEM

unread,
Apr 9, 2009, 11:03:56 PM4/9/09
to list...@googlegroups.com
Edgar. 5 Estrelas! Obrigado pelos conselhos.

Um abraço,

Juliana Cindra

unread,
Apr 10, 2009, 9:01:39 AM4/10/09
to list...@googlegroups.com
Vlw Galera, vou dar uma estudada nas opções que vcs me deram, assim q eu tiver uma resposta eu mando pra vcs, pra ficarem por dentro tbm..

A propósito.. a minha busca por uma ferramenta CASE que faça este trabalho é pelo fato de agilizá-lo. O programa não tem documentação nenhuma, e eu não o conheço muito bem.. agora que o estou estudando para gerar sua documentação. Se conseguir uma ferramenta que faça este trabalho mesmo não ficando 100% já ajuda.

Se tiverem alguma outra dica ou informação eu agradeço. E muito obrigada pelas dicas que mandaram.

Juliana :)

2009/4/9 Paulo Diovani <pa...@diovani.com>

felipebastos

unread,
Apr 10, 2009, 3:33:00 PM4/10/09
to LISTA PHP
Enterprise Architect ..

Como parte do código está em um framework
talvez importando o framework .. consiga restaurar todo o modelo..
senão.. só restaurará parte dele ..

Juliana Cindra

unread,
Jun 8, 2009, 7:29:14 PM6/8/09
to list...@googlegroups.com
Olá Lista, tudo bem?

Estou enviando como havia combinado, um resultado da pesquisa que estava fazendo.
Durante as buscas por ferramentas CASE que fizesse a engenharia reversa de código php. Realizei alguns testes com 2 ferramentas (uma até citada aqui na lista por vcs), uma livre (BoUML) e outra de proprietária (Enterprise Architect), pra ver se atendia as necessidades do meu trabalho.

Segem os resultados abaixo:

i) BoUML (free):

    Link para download: http://bouml.free.fr/download.html

  - importação de código PHP realizada com sucesso;
  - apresentação de classes, atributos e métodos;
  - relacionamentos entre as classes;
 
  características da ferramenta:

    - funciona no sistema operacional Linux;
    - licença GPL;
    - pode ser instalado direto do repositório do ubuntu;
    - faz engenharia reversa de código PHP, Java, C++;
    - gera código PHP, Java, C++ e Idl;
    - importa xmi 2.1;
    - exporta xmi 1.2, 2.0 e 2.1;
    - exporta arquivos html;
    - não exporta os diagramas como imagem;



ii) Enterprise Architect (proprietário):

    Link para download: http://www.sparxsystems.com.au/products/ea/downloads.html

    Link para download versão trial: http://www.sparxsystems.com.au/products/ea/trial.html

  - importação de código PHP realizada com sucesso;
  - apresentação das classes, atributos e métodos;
  - relacionamentos entre as classes;
  - criação automática dos diagramas;

  características da ferramenta:

    - funciona no sistema operacional windows (mas pode funcionar em linux através de um emulador);
    - licença proprietária;
    - faz engenharia reversa de código PHP, Java, C++, Python, Delphi, entre outros;
    - exporta xmi 1.1 e 2.1;
    - exporta arquivos html;
    - exporta os diagramas como imagem;


Bom gente é isso.. 

A todos que ajudaram, muito obrigada :)

Juliana :)


2009/4/10 Juliana Cindra <juci...@gmail.com>
Contato Skype: julianacindra
Reply all
Reply to author
Forward
0 new messages