A Really Simple Explanation Of MVC

I have reposted this article by popular demand. I used to have a programming based site, but since I’m not coding so much these days as my efforts are more into business systems thinking and agile coaching, I changed my site to reflect this. However there was quite a few links still coming for this post, so I thought I’d put it back up for those looking for the answer. Feel free to add comments.

Define MVC in layman’s terms

Remember you’re technically minded and close to the code. MVC to you is as clear as day, but explaining MVC to those not involved with software ‘Model, View, Controller’ can be complicated. To get others to understand MVC explaining it in it’s simplest form abstracted from the software can be beneficial. This is what I have tried to do with the following post.

To understand what MVC is and why it works what I have tried in the pass is to apply MVC to a different industries where the listeners have had more involvement. An example that has worked for me in the past in a comparison to the property or even the vehicles. Most people have had dealing’s with builders, carpenters, plumbers, electricians or have watched the flood of property shows on the TV. This experience is a good platform to use and to explain why separation such as MVC works. I know you’re probably thinking that won’t work as it’s not the same as in software, but remember you’re not trying to train non-tech’s to become developers or have an in depth understanding of MVC, simply explaining to them that separation in production is required and that’s what an MVC structure offers.

To give an example of how you could describe this I have very briefly explained how separation works in property. Keep in mind this is focused on using the system not developing which could be a completely different angle of explanation.

View

The view in MVC is the presentation layer. This is what the end user of a product will see and interact with. A system can have multiple views of all different types ranging from command line output to rendered HTML. The view doesn’t consist of business logic in most clear designs. The interface is fit for purpose and is the area of interaction. Therefore you could simply output HTML for consumers to interact with or output SOAP/XML for businesses to interact with. Both use the same business logic behind the system otherwise known as the models and controllers.

In the world of property you could think of the view as the interior of a property or the outer layer of a property that the inhabitants interact with. The interior can be customised for purpose and the same property can have many different types of tenants. For example a property of a particular design could contain residential dwellings. The same internal space could easily be used as office space, where although in the same property has a different purpose. However the property structure is the same. Therefore the environment in which the users interact does not interfere with the structure of the building.

Controllers

The controller is where the magic happens and defines the business application logic. This could be where the user has sent a response from the view, then this response is used to process the internal workings of the request and processes the response back to the user. Taking a typical response where a user has requested to buy a book. The controller has the user id, payment details, shipping address and item choice. These elements are then processed through the business logic to complete a purchase. The data is passed through the system into the model layer and eventually after the entire request satisfies the business definitions, the order is constructed and the user receives their item.

If we compare this to a property, we could compare the ordering of a book online to turning on a light switch. A tenant will flick the switch to on just like ordering a book. The switch itself is an element in the view layer which sends the request to the controller just like clicking a checkout button on a web site. The business logic in this case is what the electrician installed and are embedded within the property designs. The switch is flicked, which completes the circuit. Electricity runs through all the wires including the fuse box straight through to the light bulb. Just like the user receiving a book, in this case the tenant receives light. The whole process behind the scenes involving the electricity cabling is not visible to the the tenant. They simply interact with the switch within the space and from there the controller handles the request.

Models

The models in MVC are the bottom most layer and handle the core logic of the system. In most cases this could be seen as the layer that interacts with the data source. In systems using MVC, the controller will pass information to the model in order to store and retrieve data. Following on from the example above controller definition, this is where the order details are stored. Additional data such as stock levels, physical location of product of the book amongst many things are all stored here. If that was the last book in stock ordered, the next request for this item may check if it’s available and disallow the order as the item is no longer available.

Sticking with out example of turning on a light switch, this level in our structure could be the electricity supply. When the tenant flicks the switch, the internal circuit must request electricity to power the request which is similar when the user requested data from the database, as in data is needed to process a request. If the dwelling isn’t connected to an electric supply, it cannot complete the process. Business benefits from using MVC

After you get the message across explaining what MVC is, you will then have to see what benefits can be obtained from it. I’m not going to go into a huge amount of detail here are I’m sure you can apply benefits more accurately which are directly related to you actual situation. To list just some of the common benefits of an MVC based system here are a few examples:

  • Different skill levels can work on different system levels. For example designers can work on the interface (View) with very little development knowledge and developers can work on the business logic (Controller) with very little concern for the design level. Then they simply integrate together on completion.
  • As a result of the above separation projects can be managed easier and quicker. The designer can start the interfaces before the developer and vice versa. This development process can be parallel as opposed to being sequential therefore reducing development time.
  • Easy to have multiple view types using the same business logic.
  • Clear route through the system. You clearly know where there different levels of the system are. With a clear route of the system, logic can be shared and improved. This has added security benefits as you clearly know the permitted route from the data to the user and can have clear security checks along the route.
  • Each layer is responsible for itself. (Relates to point 1) This means that you can have clean file structure which can be maintained and managed much easier and quicker than a tightly couple system where you may have lots of duplicate logic.
  • Having a clear structure means development will be more transparent which should result in reduced development time, maintenance problems and release cycles if applied properly.

3 thoughts on “A Really Simple Explanation Of MVC

  1. Model:
    like a building (architecture) – it is just there, it SHOWS itself.
    There are different models (a church, an office, a house, zoo, museum, etc).

    View:
    is a plan or map of the building so we can find our way in the building or understand what it is.
    Different views (a plan of the electricity, a plan of the upper half, or as a route in the zoo (only the little animals) or the Big Five route in the zoo). It’s between us and the model. How we can see the model.
    This interaction is a kind of FLOW.

    Controllers:
    make changes to the building; painters, movers, carpenters, anybody or anything that can change the model in its appearance. So, in time the building changes: another use, shrinking, expanding. You can see this as ‘growing’ in time, it GROWS to something else. Before manipulation the model was A, after manipulation, the model is changed to B.

    So we have SHOW, FLOW and GROW for MODEL, VIEW, CONTROLLERS.
    SHOW is 1-dimensional (to be or not to be or it’s there or it’s not there).
    FLOW is 2-dimensional (between us and the model a plan or map explains the model or a part of the model)
    GROW is 3-dimensional (it includes 1 en 2): changes can only be made when we can use a description of the building: a painter has to know where and which wall he has to paint black.

  2. “The controller is where the magic happens and defines the business application logic” NO. Business logic should be in Model, not in controller.

    Controller’s responsibility is to check what user wants and Controller updates the state of Model.
    ” then this response is used to process the internal workings of the request and processes the response back to the user” -> you already have a View, which handles the UI – COntroller is not sending anything back to user. Controller reads user actions, view sends the updated UI.

    “The controller has the user id, payment details, shipping address and item choice. These elements are then processed through the business logic to complete a purchase.” -> correct, as Controller passes the stuff to Model, where the business logic is. Model is not just a storage, model can contain a strorage though.

    Model then works whatever needs to be done based on information given by Controller and finally View will poll (or observe) the model and then create output based on the model’s state.

Leave a Reply

Your email address will not be published. Required fields are marked *