« Javascript Date Picker | Main | Sandberg’s Slant on Software Engineering »
Vertical Scenario-based Development
By Jeremy | July 26, 2009
Over the past few days I have had some very interesting conversations with my workmates at Microsoft. I have really appreciated their input this summer and have learned and grown tremendously under their tutelage. This brings me to the point of the article. This week my co-workers taught me two separate principles that work very well together. They are vertical development and scenario-based development. In the end they really amount to basically the same thing but let me explain what my current understanding of these two principles is.
Vertical Development
Vertical development consists of developing a project with a top-down perspective. Specifically, the first goal is to get a complete vertical section of the program working. For instance, if I was building a text-box for a new GUI toolkit I was creating, the first thing I would try to get working is a text-box into which you could enter characters. Notice I didn’t say anything about deleting, or moving around with the arrow keys, or selecting text, or even that it displayed correctly.
Despite this great idea of vertical development, the natural way I have always been developing was in a layer-based method. If I was building a web crawler, the first layer a web crawler needs is page retrieval from the web. Page retrieval is where I would begin my development and I would continue working on the page retrieval class(es) until they were feature complete, i.e. they did everything they would need to do for the whole project.
While I think there are merits to layer-based development, I think that vertical development has quite a few strong advantages over layer-based. Continuing with the example above, having that small vertical slice of a text-box working without being feature complete will show you problems that you will encounter later on and allow you time and flexibility, because you don’t have lots of already finished code baggage, to solve the problems in a more elegant fashion.
Scenario-based Development
Scenario-based development follows very closely with vertical development. In scenario-based development, you need to have a scenario of how a user will use your software. Then using this scenario you simply develop the software strictly to that scenario, not worrying about other scenarios or requirements the software might have.
Using scenarios is very close to vertical development because, in either case, you end up with a vertical segment of your program done. The real difference comes that with vertical development, you might end up with a vertical segment that really isn’t that useful and is not sufficiently implemented to actually serve as a prototype or a demo. In other words, with vertical development you might have the slice done but it might not actually do anything useful.
On the other hand, with scenario-based development you always end up with something that adds value to what you are trying to accomplish. And if you really sit back and think about it, there is no point in doing anything unless you are adding something of value.
By [These] Powers Combined
I think where real value can come into software development is by using these two different methodologies together. If each time we develop software we have scenarios in mind that we are developing towards then we will consistently add value to our software products. Then if at the same time, the scenarios drive us towards vertical development, we have the best of both worlds. We are always adding value through scenarios and we are better prepared to deal with those unforeseen problems.
Topics: Uncategorized | No Comments »
Comments
You must be logged in to post a comment.