Application Modeling – Standards for Modern Applications

asp.net-mvccdocumentationuml

I'm taking on my first enterprise-level application and I want my team to model the entire ASP.NET MVC C# application before we even tap out one line of code.

UPDATE: This was not intended to be a philosophical discussion about when to document/model an application. Please only provide answers for "how" to document/model.

The truth is that I've always skimped in this department and I've never really modeled an application before. What is the standard way to do this? What type of diagrams should be used and what would the documentation look like? Links to sample diagrams and documentation is appreciated.

When searching I can find numerous things around the net but I wanted to see if there is a current modern consensus on how to go about doing this.

Thanks in advance!

Closing Statement

I had no idea this was such a sticky subject. Thank you to all of you that could set aside the obvious controversy and provide useful answers. It was an interesting discussion to say the least 🙂

Another useful link I discovered is this: https://stackoverflow.com/questions/61487/do-you-use-uml-in-agile-development-practices/61519#61519

Best Answer

a current modern consensus

The truth is: currently, that is something that modern software development is lacking - a consensus about modeling. UML seems to be some kind of smallest common divisor, but in reality there is only consensus about the notation, not about the semantics. There exists dozens of different opinions on how UML should be interpreted to create code (perhaps you can find one interpretation that is ok for your team).

On the other hand, there is a holy war going on between those "agile" people saying "don't make formal models, better write working code" and those "BDUF" (big design up front) people who are thinking tools like "MDA" (model driven architecture) are the solution.

Other people (re-)discovered flow based programming for modern software design as an alternative for UML. Read here and here to find out more about that.

Related Topic