[Cascavel-pm] UML+Design Paterns+Modelagem

Luis Campos de Carvalho lechamps em terra.com.br
Terça Dezembro 23 06:41:57 CST 2003


Graciliano M. P. wrote:
> Luiz,
> 
> 1o um feliz natal é um próspero ano novo com muita saúde!

   Obrigado, Graciliano.
   Feliz Natal e um Fantástico Ano Novo para você e para os seus. (:

> Eu uso o livro Applying UML and Patterns do Graig Larman (q tb tenho em
> PDF). Este livro aborda desde UML, OO até UP.

   Ah! Certo... (: Anotado!

> Bom, este livro tem UML mais como chamaris/marketing, pois o interessante
> são os padrões de design (design paterns) que o livro aborda. Digo isto pois
> vc pode usar td sobre UML e ao mesmo tempo não fazer nada de Design Patern e
> modelagem.

   Eu tentaria traduzir como "Padrões de Projeto", me soa melhor... 
muito interessante.

> Não sei em que regime de trabalho vc atua, mas aprender modelagens e
> "Análise de Projetos e Sistemas" é algo muito útil, tanto para concluir um
> projeto de forma mais eficiente como para fazê-lo de forma mais rápida e com
> menos problemas. O problema é que tds envolvidos em um projeto têm que saber
> isto.

   Eu sou CLT, atuo como programador. Mas sou uma "equipe de um homem 
só", como a maior parte do pessoal daqui... ):
   Na literatura que eu conheço, os "papas" são o Wirth, o Knuth, o 
Pressman e o Yourdon (respectivamente, "Estruturas de Dados", "The Art 
of Computer Programming", "Engenharia de Software" e "Análise de Sistemas").
   Gostaria de conhecer mais coisas. Sinto muita dificuldade em 
trabalhar construindo sistemas sem projeto ou objetivos claros e 
bem-definidos.

> Quanto ao UML, só tem sentido se vc quiser utiliza-lo para geração
> automática de código, mas isto funciona mais com Java e olhe lá! Eu gosto de
> usar UML na parte de modelagem conceitual, mais para organizar td e ter uma
> visão melhor do problema. Na parte de projeto (programação) também é bom
> utilizar UML para organizar cada ciclo, mas será útil mesmo se vc tiver uma
> equipe trabalhando no mesmo problema, e não uma única pessoa.

   Oras, por que esse preconceito? Tenho certeza de que documentação 
bem-feita e com ajuda do UML pode aumentar e muito o rendimento da 
construção de projetos de sistemas de computador...

> Em resumo a melhor dica que posso dar é q todas estas ferramentas servem
> para auxiliar o trabalho, por ex, "Casos de Uso" (vc vai ver um monte sobre
> isso nos livros) é apenas uma ferramenta de estudo, para auxiliar a análise
> de como o sistema tem que ser utilizado e como vai interagir.
[...]
 > fácil qualquer um se perder em todos estes padrões e esquece o
 > objetivo real.

   De acordo. Mas saber apenas UML, e conhecer alguma coisa de "Casos de 
Uso" não é o suficiente para o processo de modelagem de sistemas 
orientados à objetos. Precisamos desesperadamente de um processo de 
modelagem, formal o suficiente para garantir documentação e boas 
práticas, mas ao mesmo tempo suficientemente flexível para se adaptar ao 
nosso modo de trabalhar e pensar problemas e soluções. Eu acredito 
firmemente que o processo de modelagem de software unificado ("RUP", 
desenvolvido pela Rational) é a chave para um universo de compreensão, 
projeto e modelagem de software pouco conhecido pela maior parte dos 
profissionais brazucas da área.

> Quanto a aprender uma modelagem para desenvolvimento, encorajo muito isso,
> pois aqui no Brasil tem muito pouca gente utilizando qualquer coisa do tipo,
> na verdade tem muito pouca gente que sabe o que realmente existe nesta área.
> Tem gente que acha que desenvolver em conceito ASP
> (reaproveitamento/pré-moldados) é modelagem para desenvolvimento, o que na
> verdade é apenas um detalhe.

   As pessoas acham que podem construir edifícios simplesmente juntando 
"peças de Lego" como se isso fosse o suficiente... mas como destruir 
essa ilusão, principalmente na esfera gerencial?

> Agora quanto a Web, não sei se tem muita coisa boa, pois UP é algo bem
> extenso e que exitem várias abordagens e focos sobre o mesmo. Agora quanto
> aplicar tais recursos na Web é complicado, principalmente falando-se em OO,
> pois OO para Web é algo que não funciona muito bem, pois grande parde dos
> sistemas para Web ainda usam muita coisa estruturada, e a única coisa de OO
> que eles usam são aguns módulos para algumas tarefas específicas, ou seja,
> não se utiliza OO para desenvolver o sistema em si.

   Desculpe, mas sou obrigado a discordar. Eu não tenho nenhuma linha de 
código estruturado em meus websites, apenas código OO. E funciona muito 
bem, obrigado. (:

   Para começar, eu criei uma hierarquia de objetos para representar 
coisas interessantes para o meu projeto: Conexões com banco de dados, 
objetos de configuração e de conservação de estado. Em seguida, agreguei 
todos estes objetos em um Framework de duas camadas, capaz de lidar 
praticamente sozinho com as requisições HTTP e chamar os métodos 
corretos para cada situação. Deste ponto em diante, implementar novas 
funcionalidades passa a ser apenas questão de extender o Framework, 
implementar métodos para manipular cada evento desejado, agregar 
Templates (eu uso o Template Toolkit, do Andy Wardley) e publicar o CGI 
na web, que acaba simples como

   #!/usr/bin/perl
   use warnings;
   use strict;
   use Framework::Module;
   ( new Framework::Module )->run();
   __END__

> Na verdade o problema da Web com OO para sistemas, é que cada execução de
> página/tela está em um processo diferente, e pode estar em máquinas
> diferentes tb, mas o objeto responsável por tal parte do sistema, e que
> interage com o usuário, tem que funcionar como se estivece em um programa
> normal, desktop. Ou seja, muita coisa está escrita para desenvolver
> softwares desktop, e não para Web.

   Isso não é importante. Aliás, quanto menos sua aplicação souber sober 
o ambiente em que ela está rodando, mais simples se torna o 
desenvolvimento.

   Eu implementei gerenciamento de sessões utilizando os módulos 
CGI::Session (puro OO) e CGI (suporte a OO se você quiser). Depois, 
implementei acesso a banco de dados usando DBI/DBD, e acesso a 
configuração via Config::Simple. Mas posso facilmente trocar 
Config::Simple por XML::Config, e isso me abre a possibilidade de 
distribuir a configuração do sistema (e todo o resto) usando banco dados 
(para os dados da aplicação) e HTTP (para os XML's de configuração).

   Desta forma, o mesmo framework que eu concebi inicialmente pode ser 
extendido para um ambiente distribuído, statefull, seguro, paralelo, 
multiprocessado e com suporte a processos concorrentes, sem mudar sequer 
  uma linha de programação da aplicação.

   Com isso, quero mostrar que as dificuldades de programar sistemas 
para a Web está muito mais relacionada com a abortagem adotada do que 
com a tecnologia ou as limitações existentes.

> Digo isto sobre a Web pois a área de pesquisa que atuo é extamente esta,
> aplicar de forma mais eficiente os Design Patterns e a modelagem OO em
> sistemas Web. Onde também estou desenvolvendo um FrameWork para WebGUI, ou
> seja, a idéia é fazer um sistema de um portal sem escrever nada de HTML, e
> apenas componentes, como os componentes gráficos utilizados em um Delphi da
> vida.

   Puxa!!! A parte de desenvolver componentes é muito interessante... 
mas isso vai deixar toda a web mais ou menos com a mesma 'cara', não? 
Como você pretende se livrar das "amarras" de look'n'feel impostas pela 
componentização? Ou você não está preocupado com isso, e é um detalhe 
sem importância a esta altura do campeonato?

> Por exemplo, uma enquete (Pool en inglês) seria declarada desta maneira:
> 
> <webgui::pool title="Qual a sua cor?" bgcolor="#CCCCCC"
> button_color="#000000" style="pool-style.xml">
>   <option value="0">Red</option>
>   <option value="1">Blue</option>
> </webgui::pool>

   Parece muito com XML, de um tipo (com atributos) que eu não gosto 
muito... (: Mas é promissor...

> E o FrameWork detecta automaticamente os tags de webgui e converter para
> código. Bom, isso ai é só para dar um gostinho do que vem por ai! ;-P

   Obaaaa!! Será que você precisa de um "beta-tester"?

   Obrigado pela "Aula"!
   (:
   Boa sorte com seu projeto!!
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Luis Campos de Carvalho is BSc in Comp Science,
   PerlMonk [SiteDocClan], Cascavel-pm Moderator,
   Unix Sys Admin && Certified Oracle DBA
   http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=




Mais detalhes sobre a lista de discussão Cascavel-pm