On Jan 15, 2006, at 9:58 PM, Stephen Hay wrote:
Permit me a little selective quoting...
Gregory Woodhouse wrote: All software is complex and difficult to manage, and user interfaces are really nothing more than a convenient scapegoat. What we /really/ need is the capability to work at a higher level of abstraction, and stop trying to build every new tool or application "from the ground up".
My models... :-)
Could be. Actually, I think the discussion is made a bit more complex by the fact that abstraction is something that occurs in different contexts.
The very act of modelling software or business processes means that you're working at a higher level of abstraction than the implementation.
I certainly agree with you here. The issue here is whether we are working at a higher level of abstraction (in our thought processes and communication) or whether higher levels of abstraction are be employed in the software artifacts we create. It's one thing to think of searching in state space as an abstract concept (ourselves), and another to develop software that abstracts away from the concepts of "search" and "state space", perhaps even allowing them to be instantiated differently at run time. For that matter, state itself is a useful abstraction. But what is it? How do we work with it? Object orientation provides one answer, allowing us to create "objects" with state that changes over time (and what does that mean?) while the objects' identity does not change. Is the evolution of time a fixed process with objects changing in time, or are the objects fixed with time itself being variable? It turns out that there are programming languages that support (and even favor) the latter approach.One of the reasons, from my point of view, that software is so interesting, is that very often the modelling is done in the code. Trying to tease out the inherent model is what's otherwise known as "reverse-engineering". The code-to-model process as opposed to model-to-code-generation...
Working with models permits the abstraction necessary to work "machine-free". Then, and this is of course in the ideal, once the models are agreed and all that, we look for the best way to implement them.
For some really fascinating work on this, you might want to dig around in the OMGs MDA - Model Driven Architecture. It's "controversial" precisely because it works at that higher level of abstraction... and basically considered to be a "waste of time" when everyone would be better off doing stuff...
Yeah, I've heard that before.
I fear that many of us have bought into the idea that change is inherently bad, and that rejecting innovation is the key to success in software. /That/ is what I am arguing against.
Try Googling "Hot Stove Effect". There a number of research papers coming out of the business schools that address exactly this issue, or it's converse... They make good reading.
I did, and I found a bunch of sports links (and links to descriptions of psychology classes).
=== Gregory Woodhouse
"Not only is the universe stranger than we imagine: it is stranger than we can imagine." --Sir Arthur Eddington
|
- [Hardhats-members] Abstraction (was: Attracting develope... Gregory Woodhouse
-