Bjorn Reese wrote:
> This made me wonder. Do we have any empirical evidence for the fundamental
> principles of software engineering, such as abstraction, encapsulation,
> polymorphism, and separation of concerns?
I very much doubt it. Most of the "advancements" in programming and software
engineering are things that people thought were a good idea and so they put them
forward. Other people also thought them a good idea and so took them up. This is not
scientific evidence even though it is evolution (and one assumes improvement).
> For example, the unconditional usefulness of abstraction is usually regarded
> as indisputable fact. If you as much as question this dogma, you risk being
> burnt at the stake. However, the only evidence I have been presented has
> been based on advocacy, anecdote, and authority. An appealing thing about
> Cognitive Dimensions is that it portrays a more nuanced, and in my opinion
> more believable, picture of abstraction.
As well as advocacy, anecdote and authority some things have happened by usage. I
would not like to comment on the way in which structured programming became part of
the canon but I suspect it was part advocacy and part uptake. Certainly abstract
daata types and object-orientation have become part of the canon because of both
advocacy and uptake: whether by choice or indoctrination people have used and
preferred the new ways.
I guess this is Darwinian evolution rather than scientific development/study but it
works.
> Has anybody ever studied the benefits of Design Patterns with the basic
> scientific methods, such as comparing the performance of a group using
> Design Patterns with a control group? Has anybody ever studied how
> applicable Extreme Programming is to other environments and domains that
> the small, fast-moving software environments it was developed for (has
> it even been studied there)?
Jan Purchase and I did try a little of this with some people at OT2000 but we didn't
get enough data to really talk about. I do not know of any real (Popperian)
scientific work on the use of Design Patterns, etc. but they are useful because of
they catch the imagination of a portion of the practitioner community. Yes there are
a number of gurus pushing the Design Patterns party line and as with any dogma people
who gainsay the dogma are ostracized but there is real take up of the ideas as a way
of discussing software systems and generating implementations from architectures and
designs. No science but definite evolution.
Of course bridge building, railway engineering, etc. all started from a
phenomenological rather than scientific approach. The science came after a lot of the
engineering was in place. So the position of programming and software engineering is
not unusual. The issue is there anyone out there really doing science of programming
and software engineering or is it all still phenomenological.
> We tend to accept anecdotal evidence. If a methodology gives an
> improvement in one area, we assume that it will give an improvement in
> all other areas as well, without evaluating the premises of the
> methodology or without considering effects such as negative transfer.
Basically we have no framework in which to reason about these things. Whether this is
because no such framework exists or those that do have simply been rejected, I
wouldn't like to say. If "Psychology of Programming" is going to have any impact on
programming and software engineering then, since it purports to be a scientific
discipline, there need to be serious models/theories/hypotheses/frameworks and
experiments performed on real subjects (not just first and second year undegraduate
computer science students). Perhaps this already exists and I am sounding off from a
weak position but I think not.
> I am not saying that those principles are unfounded or without evidence,
> just that I have never been presented to any scientific evidence.
Nor have I. Hence my "complaint".
Possibly apochraphally, it has often been said that psychology is the study of first
and second year undergraduates in the USA because they are the people that are the
subjects of study.
Russel.
======================================================================
Professor Russel Winder Professor of Computing Science
Department of Computer Science Fax: +44 20 7848 2851/+44 20 7848 2913
King's College London [EMAIL PROTECTED]
Strand, London WC2R 2LS, UK http://www.dcs.kcl.ac.uk/staff/russel/
- Automatic footer for [EMAIL PROTECTED] ----------------------------------
To unsubscribe from this list, mail [EMAIL PROTECTED] unsubscribe discuss
To join the announcements list, mail [EMAIL PROTECTED] subscribe announce
To receive a help file, mail [EMAIL PROTECTED] help
This list is archived at http://www.mail-archive.com/discuss%40ppig.org/
If you have any problems or questions, please mail [EMAIL PROTECTED]