Some reference information: Patterns, Refactoring, and Dynamic languages
I just thought I'd throw out some titles of the books I've been reading. These are mostly to catch up on conversations I've been having with Ralph Johnson (who wrote the first paper on refactoring) and Ward Cunningham, another ubergeek. There is a cluster of activity/thinking around the notions of refactoring, pattern languages, open systems, and dynamic languages (Smalltalk, in particular).
Design Patterns, Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (the "gang of 4") has sold over 500,000 copies in 13 languages and is a classic in the field. What I really like about patterns is their ability to represent abstract thoughts and communicate these effectively. The "Interpreter" pattern gives us: "Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in a language." This gives use some tools for talking about the dynamic nature of language, and perhaps an intellectual tool for wrapping the MUMPS language in some way. I wrote about patterns as part of a vision of VA Future IT architectures. Patterns also give us a tool for talking about organizational transformation triggered by the software... a key aspect of the success of VistA.
Analysis Pattern Reusable Object Models, Martin Fowler. Fowler is an object-orientation and pattern guru; he uses some examples from health care. It is also an interesting case study on the notion of abstraction level - at what level of abstraction do we look at a system? Do we look at a system as just a collection of interfaces, or are there broader, more general patterns to be examined? He gives the example of analyzing an address book, which may contain entries for people as well as companies. He shows how the system can be generalized around the concept of an abstraction called "party" - which could be either an organization or a person.
Domain-Specific Languages, Martin Fowler and Rebecca Parsons: an interesting discussion of this linguistic tool. I am interested in this notion both from an internal perspective - viewing the core kernel as an instance of a VistA "virtual machine," as well as creating a DSL for clinical applications, semantic processing, and the like.
Innovation Happens Elsewhere, Ron Goldman and Richard Gabriel. A great introduction to the open source model. A bit dated (Wikipedia was a novelty back then), but a wonderful collection of insights into open source communities.