1

MVC is used a lot (not only in web apps) and it seems it's the 'go to' approach when designing software. There are also a lot of MVC versions.

My question is: what was before MVC? How did people structure large software systems?

Obviously 'separation of concerns' wasn't invented with MVC (even if it wasn't called that). I assume this type of thinking, which is crucial for building and maintaining software, was present long ago.

But in more technical terms, how was software structured before MVC?

Aviv Cohn
  • 21,538

2 Answers2

6

MVC is about User Empowerment for Interactive GUI Systems. It was invented at about the same time that GUIs were, and only shortly after Interactive Systems became available (and before they became widespread). User Empowerment (at least in the sense that Alan Kay's group understood it, namely that programming should be so easy that users wouldn't have to depend on programmers for programming) still hasn't happened yet.

So, in a sense, there was no "before". At the time that MVC was invented, there were only about a dozen or so programs that would have benefited from MVC, and the inventors of MVC knew all of them and (probably) drew inspiration from them.

More interesting is the fact that the community which invented MVC 35 years ago has mostly abandoned it by now. Self (a direct descendant of Smalltalk) appeared in 1987 with the Fabrik UI (inspired by the Alternate Reality Kit), which is distinctly different from MVC, and Squeak Smalltalk (the Smalltalk dialect designed by the original creators of Smalltalk) adopted a port of Fabrik called Morphic instead of MVC in the 1990s (MVC is only included in the Squeak distribution for legacy programs). Pharo, a modern fork of Squeak, gets rid of MVC altogether, in favor of Morphic. Most commercial Smalltalks nowadays use some variation of MVP, not MVC.

Jörg W Mittag
  • 104,619
3

Actually the MVC concept pre-dates graphical GUIs.

It first appeared as an architecture in large mainframe CICS installations.

The motivation was scalability rather than useability, and, to overcome some of the single threading, single ownership issues associated with CICS processes or "region" in M/F speak.

So you had the Controller which contained the application logic in a separate program which could run in one of several "Application Owning Regions".

Then you had the View as a separate program which could run in any of the "Terminal Owning Regions" where users could log in and start a session.

Finally you had the Model in a "Data Owning Region" there could be several of these but an olde worldy VSAM file or IMS database had to be wholly owned by a single CICS region. These days "DOR"s have mostly been replaced by connections to a real DB2 database.

So apart from the actual GUI almost everything you think of as "modern" IT was implemented on the mainframe in the last century.

In case you were wondering VSAM is effectivly a "key"/"value" data store. IMS/DB is a NoSql database.