Python e MDA/MDD

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Python e MDA/MDD

"Cláudio Pires (Yahoo)"
Pessoal, alguém sabe de alguma pesquisa/projeto que tenha por objetivo o MDA, e que utilize Python?

E algum de vocês já teve experiências com isso, ou vêem perspectivas nessa "tecnologia"?
Parece promissora a geração de código executável através de um modelo UML, por exemplo? A gente ainda verá isso em nossas carreiras ou é coisa muito para o futuro? E como isso impactará em nosso dia-a-dia profissional? (bom, agora a coisa esta ficando meio off-topic... me desculpem, o principal para mim é a pergunta inicial).

Obrigado.

Reply | Threaded
Open this post in threaded view
|

Re: Python e MDA/MDD

Francisco Souza
>
> 2010/8/26 CP <[hidden email]>
>   Pessoal, alguém sabe de alguma pesquisa/projeto que tenha por objetivo o
> MDA, e que utilize Python?
>
> E algum de vocês já teve experiências com isso, ou vêem perspectivas nessa
> "tecnologia"?
> Parece promissora a geração de código executável através de um modelo UML,
> por exemplo? A gente ainda verá isso em nossas carreiras ou é coisa muito
> para o futuro? E como isso impactará em nosso dia-a-dia profissional? (bom,
> agora a coisa esta ficando meio off-topic... me desculpem, o principal para
> mim é a pergunta inicial).
>

Acho isso meio off-topic quando se fala de Python, mas tem a ver com a forma
como nós desenvolvemos software e a forma que as faculdades ensinam.

Utilizar UML para projetar software não é coisa do futuro, e nem sei se é
ultrapassada, a única coisa que sei é que é algo que não funciona, e as
faculdades ensinam como se fosse uma maravilha que o mercado não respeita.
Foi assim que eu aprendi: vejam, projetar software com 32 diagramas é a
maneira de construir software, mas vocês não vão encontrar isso no mercado.
O mercado não está errado, os acadêmicos estão.

Na minha mísera carreira, trabalhei em um software com um processo de
cascada engessado que envolvia criar seis diagramas. Prevemos (com uma bola
de cristal, talvez) que o software ficaria pronto em seis meses. Isso foi em
2008, e ainda hoje tem gente trabalhando no software que não teve nenhuma
release (eu, graças a Deus, saí do projeto).

O Bernardo Fontes fez um post bacana [1] sobre esse tema, onde ele divaga
sobre o uso de UML do jeito errado, na hora errada.

Agora, quanto à pergunta principal, sobre ferramentas MDA/MDD para Python,
lembro-me de ter pesquisado algumas uma época passada (quando saí do curso e
achava que a forma que eu aprendi era o máximo), mas agora não consigo me
recordar totalmente. Fazendo uma pesquisa rápida pelo Google, encontrei
algumas ferramentas como o pyswarm [2] e o PyUML [3], mas não testei
nenhuma.

[1]
http://www.bernardofontes.net/blog/desenvolvimento-orientado-a-diagramas/
[2] http://pyswarm.sourceforge.net/
[3] http://sourceforge.net/projects/eclipse-pyuml/

Abraços,
Francisco Souza
Software developer at Giran and also full time
Open source evangelist at full time

English: http://www.franciscosouza.net
Portuguese: http://www.franciscosouza.com.br
Twitter: @franciscosouza
+55 27 3026 0264


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Python e MDA/MDD

Fenrrir Rodrigo
In reply to this post by "Cláudio Pires (Yahoo)"
2010/8/26 CP <[hidden email]>

>
>
> Pessoal, alguém sabe de alguma pesquisa/projeto que tenha por objetivo o
> MDA, e que utilize Python?
>
O acceleo [1], uma ferramenta para transformação model-to-text suporta
geração de código python.


> E algum de vocês já teve experiências com isso, ou vêem perspectivas nessa
> "tecnologia"?
>
Eu tive a experiência de trabalhar com MDA de abril/2009 a abril/2010 em um
projeto de pesquisa na UFRN. O objetivo era refatorar o middleware Ginga e
produzir código através do MDA. No entanto, a linguagem de destino era C++.
Também cheguei a pagar uma disciplina de MDA na UFRN (mestrado).


> Parece promissora a geração de código executável através de um modelo UML,
> por exemplo?
>
Eu, particularmente, não acredito na abordagem MDA/MDD, muito menos com foco
em Python. No meu ponto de vista, MDA é útil apenas para gerar código
"burro". Produzir os esqueletos das classes, não muito mais que isso. Em
vários projetos com linguagens de tipagem estática você precisa realizar
muito código de forma "redundante", várias coisas você acaba fazendo de
forma repetida. Em linguagens dinâmicas isso não é tão necessário, a
metaprogramação e a flexibilidade da linguagem permitem resolver esses
problemas de forma mais elegante. Talvez um post meu ajude a clarear isso
[2]. Nesse post, da pra ver que o MDA poderia gerar todos os "proxies"
necessários a partir da interface, mas a resolução do problema com Python é
muito mais prática.

Outro ponto é que UML/MDD/MDA para gerar código python não fica legal pelo
fato da linguagem não necessitar da pré-definição das variáveis assim como
seus tipos, então os esqueletos das classes produzidos acabam não valendo o
esforço gasto com a abordagem.


> A gente ainda verá isso em nossas carreiras ou é coisa muito para o futuro?
> E como isso impactará em nosso dia-a-dia profissional?
>
Com a experiência que tive acho muito difícil que isso algum dia venha a
substituir programadores, principalmente pelo fato de os códigos gerados não
terem uma lógica pesada. Com linguagens dinâmicas então muito mais difícil
de afetar a vida do profissional. No entanto, a minha experiência com
MDA/MDD me permitiu ver uma grande vantagem de python e a pensar mais
claramente em metaprogramação.  Espero ter ajudado.



[1]. http://www.acceleo.org/pages/home/en
[2]. http://linil.wordpress.com/2010/08/23/proxy-pattern-java-e-python/

[]s,

Rodrigo Araújo (Fenrrir)


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Python e MDA/MDD

Paulo Eduardo Neves-3
In reply to this post by "Cláudio Pires (Yahoo)"
Em 26 de agosto de 2010 01:13, CP <[hidden email]> escreveu:
>
> E algum de vocês já teve experiências com isso, ou vêem perspectivas nessa "tecnologia"?
> Parece promissora a geração de código executável através de um modelo UML, por exemplo? A gente ainda verá isso em nossas carreiras ou é coisa muito para o futuro? E como isso impactará em nosso dia-a-dia profissional? (bom, agora a coisa esta ficando meio off-topic... me desculpem, o principal para mim é a pergunta inicial).

Apesar de muita gente ainda seguir este caminho, não vai dar certo.

Ao fazer um software, você tem 2 tipos de complexidade: a complexidade
intrínseca e a acidental. A acidental diz respeito a todo o
ferramental e tecnologias que você tem lidar para fazer seu software,
como o banco de dados, a linguagem de programação, o
compilador/interpretador, software de controle de versão etc. A
intrínseca é a complexidade do que você quer que o software faça, isto
é, a complexidade do mundo, das regras de negócio, a legislação etc.
Esta não tem como simplificar com tecnologia.

Se você quiser que seu software seja gerado a partir de UML, você terá
que especificar cada pequeno detalhe e regra possível nos diagramas
UML. Imagina colocar no diagrama cada pequena regra como “se o valor
for acima de 100 mil, precisa de aprovação do diretor”. Aí pensa se
este diagrama seria mais simples que um sucinto código Python.

Tá bom que “Uma imagem vale mil palavras”  — agora diga isto usando
apenas uma imagem. Você conseguiria reescrever este email meu usando
um diagrama?

Este argumento não é original meu, mas sim de um artigo clássico
chamado "No Silver Bullet" escrito pelo Fred Books. Recomendo a
leitura:
http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html

Note que isto não quer dizer que geradores de código não sejam úteis,
mas sim que eles serão úteis quando atacarem o problema da
complexidade acidental. Por exemplo, a partir de uma definição única,
gerar as tabelas para o banco de dados e as classes que acessam esta
base. É o que os ORM — como o SqlAlchemy — fazem.

Isto também não quer dizer que UML não seja útil. É uma valiosa
ferramenta de comunicação e para compreensão de código. Seria mais
usada se as pessoas a conhecessem melhor e não tentassem especificar
completamente seu sistema com elas.  Todo mundo deveria conhecer.

abs,
--
Paulo Eduardo Neves
http://www.mosquito.pro.br


------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
    [hidden email]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html