Donnal C. Walter, M.D., Ph.D.
Associate Professor
Department of Pediatrics
University of Arkansas for Medical Sciences
Arkansas Children's Hospital
November, 2003
In a posting on October 2 to the [PyPerSyst-Devel] mailing list, I proposed a "thought experiment" for investigating the Model-View-Presenter (MVP) framework. My suggestion was to invent an idealized GUI toolkit with simulated events and no visual display as a way to circumvent the sticky details of a real GUI. A few days later another innovation came to mind, that of evolving the framework step by step using unit tests. The combination of these two ideas turned out to be fruitful enough to merit wider dissemination, hence this Web site.
This report is divided into the following interrelated documents:
The Results document is the primary "deliverable" of this project. It demonstrates the evolution of the Abstraction-Presentation framework through a series of unit tests, which are presented in nearly the order they were initially preformed along with frequent explanatory comments but little in the way of background or rationale. It includes an Executive Summary and Statement of Conclusions.
Call it a rationale or merely call it rationalization, in either case, this document is a collection of reasons for migrating along the path that I ended up taking. It is an attempt to provide theoretical underpinnings for the Thought Experiment, as well as for the Abstraction-Presentation framework that emerges. There are hyperlinks to and from the Thought Experiment.
In one way or another, all of the source code is presented in the Experimental Results, but for the most part it is fragmented according to its evolution. Here the final source code is collected by module, and presented as a whole along with the canonical unit tests and a description of the API.
Using an example pulled from the Experimental Results, this document explains step-by-step how the Abstraction-Presentation framework can be used for custom application development.
Suggestions for how to read...
Many readers will want to dive right into the Experimental Results, reading through it sequentially, following an occasional hyperlink to the Rationale. Others may prefer to read the Rationale in its entirety first to better understand the foundations before examining the Results. A few readers may find it helpful to start with the Tutorial, which gives a limited, but more practical perspective.