Os diagramas de classe UML são adequados para projetar sistemas JavaScript?

23

Dado que a UML é orientada para uma abordagem mais clássica da orientação a objetos, ainda é utilizável de maneira confiável para projetar sistemas JavaScript?

Um problema específico que vejo é que os diagramas de classes são, de fato, uma visão estrutural do sistema, e o JavaScript é mais orientado pelo comportamento. Como você pode lidar com isso?

Lembre-se de que não estou falando sobre o domínio do mundo real aqui; é um modelo para a solução que estou tentando alcançar.

Julio Rodrigues
fonte
7
Muitos de nós diriam que a UML não é adequada para projetar realmente qualquer coisa. Sou da opinião de que o único valor que existe em todo o cânon da UML é o diagrama de seqüência. Todos os outros diagramas UML que tentei entender foram melhor explicados em inglês. Mas isso é subjetivo para o que é.
Jimmy Hoffa
1
@JimmyHoffa Eu concordo em uma extensão considerável. Especialmente nos IDE modernos, um programador deve ser capaz de analisar facilmente o código-fonte orientado a objetos e obter as mesmas informações (e mais) mostradas em um diagrama de classes. Posso imaginar que os diagramas de classes sejam mais úteis antes que os IDE modernos com destaque de sintaxe e contornos gerados automaticamente estivessem disponíveis. Os diagramas de classes podem ser adequados para representar estruturas orientadas a objetos para pessoas sem experiência em programação ou em um projeto grande, onde não há tempo suficiente para o desenvolvedor explicar verbalmente o design a todos.
David Kaczynski
1
@JimmyHoffa Você recomendaria bons livros ou recursos sobre sistemas modelados usando diagramas de sequência especificamente? Eu li Aplicando UML e Padrões e ele forneceu ótimos exemplos de formulário usando UML praticamente em vez de apenas explicar os diagramas e sintaxe.
Songo
@ JimmyHoffa: Eu concordo com você quase, mas não com diagramas de sequência - porque o diagrama de sequência IMHO não mostra nada que não pode ser melhor expresso com pseudo-código. O único tipo de diagrama que tem uso real para mim são os diagramas de fluxo de dados e esses não fazem parte da UML.
Doc Brown
@DocBrown bastante justo, vamos concordar que aprender UML deve ser evitada e sim uma leitura do Strunk e branco deve substituí-lo, talvez :)
Jimmy Hoffa

Respostas:

18

Parece que você está perguntando duas coisas diferentes

  • A UML pode ser utilizada para representar sistemas javascript?
  • Os diagramas de classes podem ser utilizados para representar sistemas javascript?

Lembre-se de que a UML inclui muitos tipos de diagramas , especificamente uma ramificação de diagramas de comportamento, incluindo diagramas de sequência e de casos de uso. Esses diagramas tratam especificamente da sua preocupação em modelar o javascript como uma linguagem orientada a comportamentos.

É bem possível que um sistema javascript não esteja usando design orientado a objetos. Nesse caso, os diagramas de classe provavelmente não seriam apropriados, como você apontou. No entanto, como o javascript oferece suporte ao design orientado a objetos, é possível que os diagramas de classes representem efetivamente um sistema usando javascript. Realmente depende de como o javascript está sendo usado.

David Kaczynski
fonte
5

Sua resposta está oculta na sua pergunta:

Um problema específico que vejo é que os diagramas de classes são, de fato, uma visão estrutural do sistema e o javascript é mais orientado a comportamentos, como você pode lidar com isso?

Veja as técnicas de BDD (Behavior-driven Development) e escolha ferramentas que atendam às suas necessidades de design.

Discussão relacionada que você pode achar útil - Como escrever histórias / cenários no BDD . E um artigo muito abrangente da revista Code - Behavior-Driven Development

ps: em geral, UML represent general types of behaviorno entanto, ainda pode ser usado para modelar seu design com o conjunto correto de categorias selecionadas (como um diagrama de sequência).I would reference the Wikipedia and find the right UML diagram category to use.

EL Yusubov
fonte
Parece ser uma definição de problema ou uma abordagem de gerenciamento de desenvolvimento. Na verdade, eu estava falando de um design de nível inferior, mais próximo da solução.
Julio Rodrigues
4

Foi feito um trabalho para adaptar o aplicativo da Web à UML, chamado de extensão WAE, e há um livro chamado Construindo aplicativos da Web com UML por Jim Conallen, explicando-o em detalhes. Você pode ver variáveis ​​e funções do JavaScript no diagrama de classes.

Por que acredito que é a melhor opção para modelar aplicativos da web? Porque todo mundo sabe como o diagrama de classes funciona e essa é a coisa mais próxima dele. É muito fácil de entender e os programadores ficam com preguiça de ler a documentação em palavras, mas olhar para um diagrama não é tão difícil;). No entanto, se você deseja ver o que acontece na execução, deve procurar um diagrama de sequência, porque no aplicativo da Web, em algum momento os arquivos são gerados dinamicamente.

Diagrama gerado pelo pacote node.js "wavi"

Bakunin95
fonte
3

Também existem modelos de comportamento na UML que você pode usar para representar o comportamento do sistema, como Diagramas de Sequência ou Diagrama de Gráfico de Estado

Manequim Derp
fonte
1

Sim, você pode usar UML, principalmente diagramas de sequência .

Com relação ao uso de diagramas de classes , depende se você projeta seu aplicativo usando princípios de design orientado a objetos ou não. Se você possui apenas algumas funções JavaScript, os diagramas de classes não acrescentam muito. Se você usar protótipos de objetos JavaScript para simular um tipo de classe, esses diagramas serão úteis.

Com base na minha experiência no design de front-ends Javascript em UML, escrevi um white paper sobre o assunto: Design técnico em UML para aplicativos Angular .

www.admiraalit.nl
fonte
0

Parece que você pode usar a UML para JavaScript, mas isso dependerá de como você abordará seu trabalho.

Especificamente, o JS / UML pode automatizar a documentação UML para JSDoc, Dojo, YUI.

Eu acho que há mais por aí, mas ainda não encontrei mais nada.

knguyeniii
fonte
Como isso responde à pergunta?
Gnat