Qual é o padrão para modelar aplicativos modernos antes do desenvolvimento?


9

Estou assumindo meu primeiro aplicativo de nível corporativo e quero que minha equipe modele todo o aplicativo ASP.NET MVC C # antes mesmo de digitar uma linha de código.

ATUALIZAÇÃO: Esta não era uma discussão filosófica sobre quando documentar / modelar um aplicativo. Por favor, forneça apenas respostas para "como" documentar / modelar.

A verdade é que sempre pulei nesse departamento e nunca modelei um aplicativo antes. Qual é a maneira padrão de fazer isso? Que tipo de diagramas deve ser usado e como seria a documentação? Links para diagramas de amostra e documentação são apreciados.

Ao pesquisar, posso encontrar várias coisas na rede, mas eu queria ver se existe um consenso moderno atual sobre como fazer isso.

Desde já, obrigado!

Declaração de encerramento

Eu não tinha ideia de que esse era um assunto tão complicado. Obrigado a todos que puderam anular a controvérsia óbvia e fornecer respostas úteis. Foi uma discussão interessante para dizer o mínimo :)

Outro link útil que descobri é este: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519


6
Você quer fazer cachoeira?
Etienne de Martel

11
@ Etienne, cachoeira? Se isso é algum tipo de referência sarcástica, então não estou entendendo. Críticas / sugestões construtivas são apreciadas. Que tal, em vez de votar um comentário inútil, você adiciona seus próprios comentários para me ajudar a entender o problema.

6
"Quero que minha equipe modele todo o aplicativo ASP.NET MVC C # antes mesmo de digitar uma linha de código". Odeio dizer isso, mas você está quase se comprometendo ao fracasso antes mesmo de começar. O escopo completo da usabilidade, requisitos do usuário, manutenção são totalmente invisíveis até você começar a escrever o código; se você insistir em um grande design antecipadamente, gastará muito mais tempo atualizando seus designs do que escrevendo seu aplicativo. Os designs de alto nível estão bem , mas documentando o aplicativo inteiro? Absolutamente não.
Juliet

3
@ Chevex: Waterfall é um método de desenvolvimento que envolve muito design inicial. Parece bastante aceito na comunidade de desenvolvimento de software que esse método de desenvolvimento funciona mal na melhor das hipóteses.
quentin-starin

11
touche @Chevex, touche ... silenciosamente se afasta
mcgrailm

Respostas:


6

um consenso moderno atual

A verdade é: atualmente, isso é algo que falta ao desenvolvimento de software moderno - um consenso sobre modelagem. A UML parece ser algum tipo de menor divisor comum, mas, na realidade, existe apenas consenso sobre a notação, não sobre a semântica. Existem dezenas de opiniões diferentes sobre como a UML deve ser interpretada para criar código (talvez você encontre uma interpretação que seja adequada para sua equipe).

Por outro lado, há uma guerra santa entre as pessoas "ágeis" dizendo "não faça modelos formais, escreva melhor o código de trabalho" e as pessoas "BDUF" (grande design inicial) que pensam em ferramentas como " MDA "(arquitetura orientada a modelo) são a solução.

Outras pessoas (re) descobriram a programação baseada em fluxo para o design moderno de software como uma alternativa para a UML. Leia aqui e aqui para saber mais sobre isso.


Grande Scott! Essa é de longe a resposta mais excelente para essa questão até agora. Uma boa visão sucinta da modelagem na indústria e onde ela está. Obrigado doc! +1,21 jiggawatts!

7

Quero que minha equipe modele todo o aplicativo ASP.NET MVC C # antes mesmo de digitar uma linha de código

O problema que geralmente encontro com essa abordagem é que meu entendimento da solução está sempre incompleto no começo. É somente através do aprimoramento que o trabalho prossegue que chego a uma solução final.

Tentar criar o aplicativo inteiro antecipadamente, antes de qualquer código (em todos os aplicativos, exceto os mais simples) é geralmente uma loucura.

Você realmente acredita que pode detalhar todas as classes, métodos e estruturas de dados com antecedência?

Eu só quero conhecer algumas boas soluções de modelagem.

Quanto às ferramentas reais para criar modelos, tentei algumas e sempre acabo no Microsoft Visio.

De todos os produtos que experimentei, parece o mais direto e, na verdade, estável (minha experiência com ferramentas de modelagem é que eles são muito problemáticos). Para ser justo, eu faço muito pouca modelagem, então tome essa recomendação com um grão de sal.

Edição: Na verdade, devo dizer que a maior parte da minha modelagem é feita em um bloco de notas que fica na minha mesa. Como faço pouca modelagem, tento mantê-la leve e objetiva. Esboçar um diagrama com caneta e papel é muito mais eficiente para mim do que usar software.

Você pode achar diagramas manuscritos úteis para formar suas idéias, antes de colocá-las em um software de diagramação.

Que tipo de diagramas deve ser usado e como seria a documentação?

A maior parte do que eu modelo hoje em dia são diagramas de interação. Novamente, não faço muita modelagem - exatamente onde realmente sinto o exercício de desenhar o modelo ajuda a consolidar minha compreensão.


Podemos ajustar nossa modelagem à medida que avançamos. De qualquer forma, esse não é o ponto, eu só quero conhecer algumas boas soluções de modelagem.

Então você pretende tentar manter seus modelos e códigos em sincronia. Isso não funciona para a maioria. Eles inevitavelmente divergem, e as discrepâncias causam problemas. Além disso, você vai gastar grandes quantidades de tempo tentando
Quentin-starin

Por favor, leia a pergunta atualizada.

@ Chevex: adicionei tudo o que pude em relação à sua pergunta editada.
quentin-starin

@ qes, meu argumento foi que você está respondendo a uma pergunta que não pretendia fazer. Consulte a seção "ATUALIZAÇÃO" da pergunta.

3

Os diagramas UML são um bom ponto de partida, existem muitas maneiras fáceis de fazer isso com software gratuito ou pago. Um exemplo simples de uma ferramenta para criar uma UML é algo como desenhos do google docs, pacotes mais avançados seriam o Visio ou o OmniGraffle.

EDIT: Como mencionado por muitos, se você deseja seguir o caminho da UML, isso não significa que você precisa modelar tudo, mas pode chegar a um consenso sobre o que está modelando e quão detalhados os modelos precisam. estar. Os diagramas UML simples geralmente podem ajudar a organizar seu código antes de escrevê-lo e esclarecer alguns problemas em potencial antes que eles ocorram.


Eu ouvi falar da UML. Tem alguma recomendação para um lugar para começar? Alguma boa ferramenta que você recomenda?

@Chevex - apenas fiz uma rápida pesquisa google e encontrei isto: agilemodeling.com/artifacts/classDiagram.htm parece ser um ponto de partida decente
Brett

@qes - Dependendo de quanto tempo / interesse / investimento ele tem em seguir um caminho como esse, pode ser uma boa experiência de aprendizado e talvez ajudá-lo a entender algumas partes de seu código antes de escrevê-lo (mesmo que seja apenas uma simples UML) ... Mas eu concordo, ele provavelmente deve ter tempo suficiente e interesse pessoal em fazer isso.
Brett

@ qes, leia a pergunta atualizada.

2
@ Chevex - Você provavelmente deseja começar lendo alguns tipos de diagrama e o que eles pretendem comunicar. UML é uma linguagem de modelagem que pode ser muito descritiva, mas também possui muitas nuances. A UML em poucas palavras me ajudou bastante ( oreilly.com/catalog/9781565924482 ). Dito isto, muitas vezes você pode conviver com versões reduzidas do conjunto completo de diagramas. Enquanto as pessoas que criam os diagramas e as pessoas que lêem os diagramas concordam com o que elas significam.

2

Como o @Brett sugeriu, os diagramas UML são os melhores. Com a UML, é bom ter diagramas de classe e diagramas de fluxo de trabalho. Esses dois cobririam a maioria das necessidades de design.

Com o diagrama de classes, você pode modelar os membros de cada entidade, seu nível de segurança etc.

Com o diagrama de fluxo de trabalho, é possível modelar qual método chama quais chamadas, qual é o resultado do fluxo de trabalho e qual seria a exceção que pode surgir.


Obrigado por esta resposta. Recomendar ferramentas úteis? O visual studio suporta UML de alguma forma?

O Visual Studio fornece ajuda para fazer um diagrama de classes. Não é bom para o fluxo de trabalho. As ferramentas Rational são melhores para esse design / modelagem UML. O Rational Software Modeler é o que eu estou familiarizado. Ouvi dizer que o Rational rose seria outra ótima ferramenta.

2

Embora eu acredite fortemente em fazer alguns desenhos arquitetônicos básicos antes de escrever o código, acho que fazer um desenho detalhado de todo o aplicativo é muito trabalhoso.

Normalmente, crio algumas imagens de contorno no Visio, geralmente usando os blocos de construção do "fluxograma" para visualizar o que quero dizer. O uso da UML geralmente parece formalizado e convida a muitos detalhes. Os desenhos do Visio mostram os blocos de construção básicos do aplicativo e que tipo de funcionalidade vai para onde. Se você estiver usando a estrutura MVC, poderá concluir apenas tirando uma amostra da Web e copiando-a.

Uma boa idéia é fazer alguns desenhos de outros pontos de vista. Em vez de desenhar tudo, geralmente prefiro pegar uma função específica do sistema e visualizá-la como:

  • Diagrama de caso de uso (UML)
  • Fluxograma ou raia UML (nível muito alto)
  • Visão geral do componente arquitetural.

Então começamos a codificar. Durante a codificação, estou usando doxygen com a integração de pontos para obter diagramas de classe dinâmicos, herança etc. A visualização da visão geral gerada pelo doxygen geralmente é uma maneira muito boa de ver a estrutura do código.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.