I think this idea that people design software and compilers build it is a very important one. While on the topic of paradigm shifts I believe we should see ourselves as working in the person-to-person communication business rather than as writers of computer code. Given a problem, our job is to describe how to solve it in a 'formal' way that just happens to be a programming language. The fact that the code runs should be treated as almost incidental and is just a way of validating that our description is correct. That's because, for any non-trivial project, we are writing code that must be read and understood by other, human, coders and the better we target the coders as the audience the more chance our overall system code has of working correctly.
That's one of the reasons I like the TDD approach. Not only does it 'close the loop' in the good-old engineering way, but well written tests demonstrate examples of how the code should be used, which is often far more valuable that the likes of what javadoc and co. can extract.
As for UML, I think it has a place, but the code should be generating UML rather than UML generating code IMO.
Pete Cordell
Codalogic Ltd
C++ tools for C++ programmers, http://codalogic.com
Read & write XML in C++, http://www.xml2cpp.com
----- Original Message ----- From: "Stephen Cameron" <steve.cameron.62@gmail.com>
To: "Michael Sokolov" <sokolov@falutin.net>
Cc: "Kurt Cagle" <kurt.cagle@gmail.com>; "Thomas Passin" <list1@tompassin.net>; <xml-dev@lists.xml.org>
Sent: Monday, December 02, 2013 7:58 AM
Subject: Re: [xml-dev] Re: XML As Fall Guy
This is the paper that got me thinking of "code as design" and seeing UML
in a new light
http://www.developerdotstar.com/mag/articles/reeves_design_main.html
On Mon, Dec 2, 2013 at 6:09 PM, Stephen Cameron
<steve.cameron.62@gmail.com>wrote:
Hi Mike,
I think you are getting to the heart of it, but the analogy I like is
making a movie, the final result is very open-ended and coordinating the
activity of getting a result very complex, also, whether the end result is
a success is very much dependant on intimate knowledge of the humans who
will view (use) the outcome.
I think we have to abandon the idea of a design and an implementation
phase, its all basically design, I'd even go so far as to abandon UML as a
design tool, to the extent that its use is premised on this separation.
Building and testing prototypes seems to me to be the means to 'explore'
the space of possible solutions.
This also seems very relevant.
http://www.computer.org/csdl/proceedings/hicss/2013/4892/00/4892e842-abs.html
http://www.computer.org/csdl/proceedings/hicss/2013/4892/00/4892e842.pdf
Steve
On Mon, Dec 2, 2013 at 1:42 PM, Michael Sokolov <sokolov@falutin.net>wrote:
On 11/30/2013 9:39 PM, Stephen Cameron wrote:
promulgation of an inappropriate metaphor?
The idea that we think we know something well, but in fact often all we
have is a fuzzy concept (something I learned from my topic maps reading),
this extends to experts as I recall from the days of expert systems being
the next big thing, that often when asked to explain their thinking, it
turned out the experts used rules-of-thumb to handle uncertainty, sometimes
without realising such. Changing systems potentially challenges the status
of experts as they have to justify such rules-of-thumb. You can also think
of this as unknown-unknowns problem.
I just had a thought: are software trainwrecks caused by the
Maybe if people stopped thinking of designing and building and
architecting - software development as architecture and civil engineering -
and instead thought about planning and mapping and provisioning and
discovery - software development as polar exploration - then a proper
respect for the unknowability of the solution at the outset would be built
in to the process.
-Mike