| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 16:19:29
|
brunohansen
JavaEvangelist
![[Avatar]](/images/avatar/1e0feeaff84a19bf3936e693311fa66d.jpg)
Membro desde: 27/03/2006 11:11:34
Mensagens: 391
Offline
|
Estou tentando iniciar um modelo no Enterprise Architect, só que não estou conseguindo utilizar as classe base do Java como String.
Alguem sabe se tem como adicionar uma biblioteca, ou seja, alguem sabe como eu faço para utilizar as classes fornecidas pelo java dentro do EA?
Se algume puder ajudar....
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 17:21:00
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
Bruno, no caso do String basta digitar "String" no tipo do atributo. Como String está no java.lang não tem problemas na geração de código.
Particularmente acho uma péssima idéia importar classes da linguagem de implementação no modelo. O modelo é uma abstração, não é um espelho do código. Se o seu modelo está amarrado à classes da implementação é bem possível que o seu design está "indo fundo demais".
A França está ganhando de 2 a 0.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 17:33:56
|
brunohansen
JavaEvangelist
![[Avatar]](/images/avatar/1e0feeaff84a19bf3936e693311fa66d.jpg)
Membro desde: 27/03/2006 11:11:34
Mensagens: 391
Offline
|
Concordo que o projeto não deve estar preso a implementação, mas sera que tem como fazer algo generico não simplista que pode ser implementado em qualquer linguagem?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 17:54:50
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
A filosofia que tenho aplicado nos meus últimos projetos é focar a análise com a UML nos elementos do Domain Model (entidades, serviços) e também modelo repositories para representar as buscas necessárias para o sistema funcionar.
O foco da análise é descobrir informações. É partir dos requisitos mapeando como os componentes de software resolvem o problema. Mas essa "descoberta" tem uma baixa profundidade. Exemplo, se na realização do caso de uso descubro que preciso da operação "ClasseA.calcularValor(x, y, z)", no modelo, não entro em detalhes como essa operação funciona internamente. O código é melhor para demonstrar isso.
Concluindo, uso o modelo UML mais para descobrir as responsabilidades das classes e não para definir o seu funcionamento interno...
Escreví um artigo sobre isso para a MundoJava, espero que publiquem em breve...
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 18:06:07
|
brunohansen
JavaEvangelist
![[Avatar]](/images/avatar/1e0feeaff84a19bf3936e693311fa66d.jpg)
Membro desde: 27/03/2006 11:11:34
Mensagens: 391
Offline
|
A questão é se no meu projeto eu descubro que minha classe deve usar o padrão prototipo eu defino um interface qualquer para representar isso ou eu utilizo a inteface clonable fornecida pelo java??
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 22:45:52
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Acho que tem um plugin do E.A. para isso, acho legal sim, importar as classes da linguagem que você tá usando no projeto, se você tá fazendo um diagrama de classe e colocar um atributo Colecao do tipo java.util.Collection, fica completamente estranho.
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2006 01:03:19
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
brunohansen wrote:A questão é se no meu projeto eu descubro que minha classe deve usar o padrão prototipo eu defino um interface qualquer para representar isso ou eu utilizo a inteface clonable fornecida pelo java??
É difícil imaginar uma situação que você necessite demonstrar isso no modelo. Tente imaginar um requisito que te force a usar o pattern prototype... Esse pattern fornece uma solução para a implementação e não para a análise.
De qualquer forma, se uma classe possue uma operação clone() que retorna o próprio tipo da classe não é bem óbvio que na codificação essa operação cloneia a classe? Será que é necessário eu importar a cloneable para demonstrar isso melhor?
É mais válido fazer o modelo se aproximar dos requisitos do que do código. Isso garante que você não vai se aprofundar demais no design. Já ouviu falar na expressão "o analista está programando no Rose?!?". Basicamente é o sintoma do BigDesignUpFront....
UML=Ferramenta de Análise
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2006 03:28:15
|
brunohansen
JavaEvangelist
![[Avatar]](/images/avatar/1e0feeaff84a19bf3936e693311fa66d.jpg)
Membro desde: 27/03/2006 11:11:34
Mensagens: 391
Offline
|
rodrigoy wrote:
É difícil imaginar uma situação que você necessite demonstrar isso no modelo. Tente imaginar um requisito que te force a usar o pattern prototype... Esse pattern fornece uma solução para a implementação e não para a análise.
Requisito:
Suponhamos que estou desenvolvendo uma aplicação que manipula quadrados. O usuário tem como um de seus objetivos configurar um tamanho, cor, textura e etc.. para que seus quadrados já iniciem desta forma.
"Este objetivo já me leva a pensar em usar um prototipo no meu projeto".
Esse pattern fornece uma solução para projeto, como conseguencia seu projeto vai refletir na sua implementação.
Padrões de Projeto antes de tudo fornecem soluções para projeto, e não fornece uma solução para análise. Se pensarmos que a fase de análise tem um objetivo totalmente diferente da de projeto.
rodrigoy wrote:
É mais válido fazer o modelo se aproximar dos requisitos do que do código. Isso garante que você não vai se aprofundar demais no design. Já ouviu falar na expressão "o analista está programando no Rose?!?". Basicamente é o sintoma do BigDesignUpFront....
UML=Ferramenta de Análise
UML para mim é uma ferramenta de análise/projeto.
Por exemplo na fase de analise eu utilizaria a uml para fazer um diagrama de classes conceituais(Modelo de dominio) que estara bem proximo dos meus requisitos, alias este modelo representara meu problema real.
Agora na fase de projeto eu utilizaria a uml para fazer um diagrama de classes de projeto que estara bem proximo da estrutura que eu vou implementar. Esta fase transforma seu proplema real em "computavel", ou seja, faz com que ele possa ser resolvido com logica computacional. Nesta fase voce pode ate usar uma tecnica como diminuição do hiato de representação, que faz com que seu projeto se aproxime do seu dominio.
Coisas como essa voce encontra em varios livros como Utilizando UML e padrões 2 ed LARMAN.
Agora se isso tudo é um exagero ou não é uma outra conversa.
Só fiquei um pouco espantado quando você disse que padrões de projeto fornece uma solução para a implementação e UML=Ferramenta de Análise.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2006 20:02:56
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
brunohansen wrote:UML para mim é uma ferramenta de análise/projeto.
Pq nao ver UML como uma ferramenta de comunicacao, assim como a lingua Portuguesa?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2006 21:09:15
|
brunohansen
JavaEvangelist
![[Avatar]](/images/avatar/1e0feeaff84a19bf3936e693311fa66d.jpg)
Membro desde: 27/03/2006 11:11:34
Mensagens: 391
Offline
|
cv wrote:
brunohansen wrote:UML para mim é uma ferramenta de análise/projeto.
Pq nao ver UML como uma ferramenta de comunicacao, assim como a lingua Portuguesa? 
Podemos realmente ver sim.
Podemos dizer que o limite da usabilidade da UML é o limite da nossa criatividade! hauahuha
Acho que restingi na hora a análise/projeto por estar muito assustado com: UML=Ferramenta de Análise.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/06/2006 10:16:36
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
brunohansen wrote:Requisito:
Suponhamos que estou desenvolvendo uma aplicação que manipula quadrados. O usuário tem como um de seus objetivos configurar um tamanho, cor, textura e etc.. para que seus quadrados já iniciem desta forma.
"Este objetivo já me leva a pensar em usar um prototipo no meu projeto".
OK! Demonstre o pattern no modelo UML, mas como falei, não é necessário importar classes java na ferramenta UML para demonstrar isso. Uma operação Quadrado.clone():Quadrado é suficiente para demonstrar a solução desse requisito de uma maneira clara e menos amarrada.
brunohansen wrote:UML para mim é uma ferramenta de análise/projeto.
Por exemplo na fase de analise eu utilizaria a uml para fazer um diagrama de classes conceituais(Modelo de dominio) que estara bem proximo dos meus requisitos, alias este modelo representara meu problema real.
Agora na fase de projeto eu utilizaria a uml para fazer um diagrama de classes de projeto que estara bem proximo da estrutura que eu vou implementar. Esta fase transforma seu proplema real em "computavel", ou seja, faz com que ele possa ser resolvido com logica computacional. Nesta fase voce pode ate usar uma tecnica como diminuição do hiato de representação, que faz com que seu projeto se aproxime do seu dominio.
Bruno, seja realista, esse modelo de domínio de uma fase de análise em alto nível, próximo do negócio e principalmente "incodificável" (isto é, abstrações que não se aproximam nem um pouco dos componentes de software reais) não se aplica a muitos projetos. Essa técnica gera artefatos difíceis de manter e aumentam muito a distância entre os requisitos e o código. Seria como uma "camada" a mais na documentação, que encaixa mais na análise de negócio e não de sistema.
O que você chama de projeto é o que eu chamo de análise. Minha visão da análise é descobrir como os requisitos (essencialmente os funcionais) são resolvidos por componentes de software. Nisso o uso da UML faz sentido. Você modela a estrutura estática (os dados e relacionamentos) usando um diagrama de classes e descobre como essas classes colaboram entre sí (através de mensagens) usando diagramas de interação. Por isso disse UML=Ferramenta de Análise. Usar a UML só para documentar é um erro.
cv wrote: Pq nao ver UML como uma ferramenta de comunicacao, assim como a lingua Portuguesa?
OK, mas usar a UML só para comunicação também é limitar a UML. Como falei, uso um diagrama de sequência para descobrir as mensagens que os objetos vão ter que trocar para resolver os requisitos. Não estou fazendo este diagrama só para deixar as idéias claras para a equipe...
brunohansen wrote:Agora se isso tudo é um exagero ou não é uma outra conversa.
Só fiquei um pouco espantado quando você disse que padrões de projeto fornece uma solução para a implementação e UML=Ferramenta de Análise.
Acho que é exatamente esse exagero que sempre entra em discussão quando falamos sobre uso da UML.
Sobre padrões, alguns deles podem aparecer no modelo UML, outros não. Por exemplo, Strategy, State, Singleton, Decorators são bons candidatos a aparecerem no modelo UML, um DataMapper seria um exemplo de pattern que não apareceria no modelo UML, ele estaria só no código. Concorda? É essa a idéia que quis mostrar.
No modelo UML, se estamos usando um Entity, assumimos que tudo está a nossa disposição: não nos preocupamos se é remoto, obtemos os dados das associações sem se importar se o Lazy Load funciona ou se a sessão do Hibernate está aberta ou fechada. Essas não são (não deveriam ser) preocupações em tempo de análise. Logicamente é importante que a arquitetura resolva isso. Arquiteturas fortes permitem um modelo mais abstrato.
É preciso tomar cuidado quando as libraries da implementação estão no modelo UML. Teve uma vez que um analista meu modelou tim-tim-por-tim-tim como uma lista vinda do servidor era populada num JComboBox. Trabalho jogado fora, né? Modelos nesse nível são pesados e potencializam um problema da UML que é a dessincronização com o código (não sei se essa palavra existe).
Como falei, nos últimos projetos meus tenho centralizado o uso da UML em descobrir o funcionamento do Domain Model. Uma ótima leitura é o Domain-Driven Design de Eric Evans. Aliás, no endereço abaixo tem um ótimo resumo:
http://domaindrivendesign.org/book/PatternSummariesUnderCreativeCommons.doc
Também é importante ressaltar que a modelagem não é feita somente no modelo UML, a modelagem continua no código.
(definitivamente, não tenho o dom da brevidade)
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 08:34:20
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
rodrigoy wrote:
cv wrote: Pq nao ver UML como uma ferramenta de comunicacao, assim como a lingua Portuguesa?
OK, mas usar a UML só para comunicação também é limitar a UML. Como falei, uso um diagrama de sequência para descobrir as mensagens que os objetos vão ter que trocar para resolver os requisitos. Não estou fazendo este diagrama só para deixar as idéias claras para a equipe...
Usar UML pra descobrir quais as mensagens que objetos tem que trocar nao me parece la uma boa ideia.
Prefiro usar testes unitarios pra isso, ja que, ao contrario da UML, eles sao mais faceis de manter (apesar de nao necesasriamente tao ou mais faceis de ler), ja que sao compilados assim como o resto do codigo, e sao deterministicos: ou falha ou nao falha.
Minha escolha geralmente tem sido direcionar o design a partir dos testes (veja mais em TDD e BDD) e usar UML pra comunicar pra equipe mudancas importantes ou pq algumas decisoes foram tomadas de um ou outro jeito.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 10:48:25
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Acho que o problema principal em UML como modelagem é que não dá pra validar (esqueçam MDA, Executable UML, etc. por hora). Acho que mesmo considerando que o retrabalho que a falta de roundtripping das ferramentas atuais torna extremamente improdutivo modelar e depois codificar, este é um problema ainda mais grave.
Claro que do jeito que o Rodrigo coloca a modelagem me parece num nível que não precisa de tanta validação. Infelizmente as pessoas costumam programar em UML (curiosamente chamando isso de 'projeto' ou 'especificação') e isso é um risco muito alto considerando que não dá pra validar aquele modelo gráfico de maneira precisa e automatizada.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 11:27:25
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
cv wrote:Usar UML pra descobrir quais as mensagens que objetos tem que trocar nao me parece la uma boa ideia.
Prefiro usar testes unitarios pra isso, ja que, ao contrario da UML, eles sao mais faceis de manter (apesar de nao necesasriamente tao ou mais faceis de ler), ja que sao compilados assim como o resto do codigo, e sao deterministicos: ou falha ou nao falha.
Minha escolha geralmente tem sido direcionar o design a partir dos testes (veja mais em TDD e BDD) e usar UML pra comunicar pra equipe mudancas importantes ou pq algumas decisoes foram tomadas de um ou outro jeito.
Aí é uma mistura de prós e contras, mais gosto pessoal e o tipo de projeto. Sobre o gosto pessoal, algumas pessoas são mais "visuais" do que outras. Freud explica.
A questão do modelo UML ser visual é uma vantagem a considerar. No código você olha uma classe de cada vez, e para entender como uma interação ocorre, você precisa navegar entre muitas delas. Um diagrama de sequência dá uma visão mais macro da interação, assim fica mais fácil criar, delegar e identificar responsáveis.
No código, para enxergar todos os envolvidos numa interação, você precisa navegar entre todos eles. No diagrama de sequência vc consegue enxergar todos os elementos envolvidos na interação logo que abre o diagrama.
Mas cada caso é um caso, a UML tem lá os seus problemas, alguns eu já citei. Eu uso as duas abordagens. Tenho verificado que mapear requisitos de processamentos com pouca interação de atores (como um processamento em lote) é muito mais efetivo usar as práticas do TDD do que escrever casos de uso e modelar com UML. Nesse caso, a documentação dos requisitos e o modelo estão diretamente no código.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2006 14:35:16
|
rodrigoy
GUJ Ranger
![[Avatar]](/images/avatar/cf79ae6addba60ad018347359bd144d2.jpg)
Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline
|
pcalcado wrote:Acho que o problema principal em UML como modelagem é que não dá pra validar (esqueçam MDA, Executable UML, etc. por hora). Acho que mesmo considerando que o retrabalho que a falta de roundtripping das ferramentas atuais torna extremamente improdutivo modelar e depois codificar, este é um problema ainda mais grave.
Eu gosto da UML para modelar pela visão geral. Acho que desenhar classes e visualizar associações na fase de análise é mais produtivo do que escrever e ler código. Gosto do diagrama de sequência para descobrir as mensagens que os objetos devem trocar para realizar os requisitos (aí encontro as operações, as responsabilidades). Mas o modelo UML deve parar por aí. Os diagramas de interação da UML modelam interações e não o funcionamento interno da classe. O funcionamento interno da classe é melhor documentado no código.
Basicamente, o modelo UML me responde como os requisitos estão resolvidos por classes que colaboram, sem entrar em detalhes.
pcalcado wrote:Claro que do jeito que o Rodrigo coloca a modelagem me parece num nível que não precisa de tanta validação. Infelizmente as pessoas costumam programar em UML (curiosamente chamando isso de 'projeto' ou 'especificação') e isso é um risco muito alto considerando que não dá pra validar aquele modelo gráfico de maneira precisa e automatizada.
Conversei sobre isso no tópico do seu artigo. O trabalho de modelagem e análise deve se estender ao código. Se a modelagem UML está focada num Domain Model baseado em POJOS, a geração de código e a reversa é bem menos traumática (mas não é 100%). De qualquer forma, o trabalho de modelagem não pára na UML. É importante que o analista implemente no código o funcionamento interno das classes do Domain Model e aplique testes de validação independentes da arquitetura. Isso torna os analistas mais responsáveis, mas ressalto que isso não é uma prática comum nos projetos que observo.
|
Rodrigo Yoshima
www.ASPERCOM.com.br
Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro
Débito Técnico Blog: blog.aspercom.com.br
|
|
|
 |
|
|