View Driven Development

In the world of VMware, “view” is an overloaded term which is used in desktop, vSphere APIs, and PowerCLI. Outside VMware, you can also find it in MVC architecture, which basically divides a software system into model, view, and controller. This separation has become a basic programming paradigm in modern software design and development.

This article is not about how to design a view or extract a view from a software system. Rather it focuses on the software development methodology. You may have heard other methodologies like test driven development (TDD), which suggests you develop unit tests before you write production code. I personally don’t think that is a realistic approach for most people.

Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.

More realistic is View Driven Development. Before getting into the detailed discussion, let’s define the term “view.” You can take it as a graphical user interface (GUI) as suggested in MVC, but it’s definitely more than that.

Generally speaking, a view is whatever exposed to any external entities, including to people as GUI or command line interface (CLI), to other computer systems as network services, to other applications as shared libraries, to file systems as import or export format, etc. One system could have more than one view at a time, just like multiple views in MVC architecture.

The basic idea behind VDD is that any code of your system got to be “visible” directly or indirectly from external; otherwise, it doesn’t belong to the system and you should delete it. Once you define the views of a system, the feature requirement of the system is finalized. From there, you just design and implement whatever code that supports these views. Views are definitely not enough.

Part of the following development is therefore to design the model, which is the core of a system and an important work in the project. With the defined views, you can easily scope the model – just include these interesting elements and remove others that are never “seen” by any views.

This view drive development is a methodology inspired by the MVC but is not its replacement. VDD suggests how a software project should be approached while the MVC suggests how the software should be structured. They share the same philosophy therefore complements each other.

This entry was posted in Software Development and tagged , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


    My company has created products like vSearch ("Super vCenter"), vijavaNG APIs, EAM APIs, ICE tool. We also help clients with virtualization and cloud computing on customized development, training. Should you, or someone you know, need these products and services, please feel free to contact me: steve __AT__

    Me: Steve Jin, VMware vExpert who authored the VMware VI and vSphere SDK by Prentice Hall, and created the de factor open source vSphere Java API while working at VMware engineering. Companies like Cisco, EMC, NetApp, HP, Dell, VMware, are among the users of the API and other tools I developed for their products, internal IT orchestration, and test automation.