A few days ago, the forecast for today was a hot sunny day, to properly mark the start of Summer. In turned out to be a windy overcast morning and a warm sunny evening with a light breeze, at least in my neck of the woods. Although today felt more like early Fall (my favourite time of the year) than Summer, I took the date to be a symbolic opportunity to change the markedly autumnal look of my blog de to the Maple Leaf theme shown left. It has served me well for the past months, but it was time to get something less seasonal. Read the rest of this entry »
Tags: themes
Today I drove to Cambridge (it’s just 1h each way) to attend a talk given by Daniel Ratiu, who is visiting Microsoft Research this week. He presented a summary of his PhD work, which he will defend in precisely one month. Daniel’s main message was that program analyses can benefit from the use of some domain knowledge, instead of being mostly based on the syntax and structure of the code (e.g. call graphs).
Our new part-time online MPhil in Computing, starting in October 2009, is now accepting registrations. It uses the Open University’s virtual learning environment (an extension of Moodle) and a virtual campus on Second Life. More details at the MPhil’s website.
The third issue of our department’s bi-annual research highlights newletter is now available. It features our amazing climb up the ladder of the UK-wide Research Assessment Exercise, our major grants, publications and event organisation in the past 6 months. It’s certainly a welcome reminder of how well we’re doing, a nice little morale booster in these financially troubled times (as if the funding cuts to the Equivalent and Lower level Qualifications students weren’t already bad enough for the Open University).
Today I read the extended version of Richard Gabriel’s essay Designed as Designer, written as a response to Fred Brooks’ OOPSLA’07 keynote. Brooks reiterated his position from The Mythical Man-Month that the central problem of good design is to achieve conceptual integrity, which can only be obtained if the design stems from a small number of “agreeing resonant minds”. He went further, saying that many great works of engineering and art are the product of one or two persons (Michelangelo, Edison, Wright brothers, Gilbert & Sullivan).
Gabriel refutes Brooks’ view with two arguments. Read the rest of this entry »
The call for papers of IWPSE/Evol, the software evolution workshop of 2009, has been published! If you’re interested in the topic, please help us disseminate the event by printing out the 1-page PDF version of the call and putting it up in your organisation. We look forward to your submissions and participation in Amsterdam.
The industrial experience paper my MSc student Ireo and I submitted to the ICSE workshop on Sharing and Reusing Architectural Knowledge was accepted! The reviewers asked us to clarify the scope of the assumption management approach we present (i.e. whether it’s confined to agile development and architectural knowledge) and to expand on the lessons learned from it. We will address this, but meanwhile you can read the submitted version.
I’m very pleased with Ireo’s efforts and with the strategy followed to get a publication out of his work. Read the rest of this entry »
Some good news arrived just before the day ends: the paper we submitted to the New Ideas and Emerging Results track of the Int’l Conf. on Software Engineering was accepted! It’s about applying formal concept analysis to get automatically a intuitive visual ‘hierarchy’ of developers , and how one might want to use the hierarchy, e.g. to find out who may replace a developer who is about to leave the project.
We illustrate the approach by relating developers and Eclipse bugs and then showing the hierarchy of bug fixers and discussants, aggregated by component. Developers towards the top of the hierarchy are generalists (involved in more components), those at the bottom are specialists (involved in just one component).
The reviewers had some questions about technical details of our example, and about the potential of the approach — good points to take care for the final version. Meanwhile, you can read the submitted version.
It’s been over 1 month since I wrote here
but that doesn’t mean I haven’t been blogging; I just have been writing elsewhere, namely in my games blog (follow the ludossier link on the sidebar). Today I upgraded my three blogs to WordPress 2.7, which has a completely redesigned Dashboard, easier to use and with more functionalities. Read the rest of this entry »
What if we want to use our command to draw centred squares in various programs? We can simply copy it from our tunnel program and paste into the new program. It’s a bit cumbersome, but still much better than reinventing the algorithm every time we need it. However, there is a drawback: if we find an error in our algorithm (and that kind of thing happens all the time), we have to change the algorithm and copy the changes to every program that uses the centred_square command.
We can avoid all this contant copying and pasting, and at the same time make our programs much shorter, by storing the centred_square command into a separate module (i.e. a file containing just commands) and then loading the module into every program that requires centred squares. If an error in the algorithm is found, only the module is changed and all programs will work, because they always load the newest version of the module when they start executing.
Having one different module for each command we define is the most flexible option, so that each program only loads those commands it needs, but is a bit cumbersome. A better option is to store related commands in the same module, in order to build libraries of reusable algorithms. A program may use just a subset of the commands defined in a module. For our running example, we copy the centred_square command into a file called shapes.dbn:
// shapes library
// version 1, 30 Oct 2008, Michel Wermelinger
// centred_square command
command centred_square left
// draw a centred square, given the left coordinate
{
set bottom left
set centre 50
set distance (centre - left)
set right (centre + distance)
set top right
line left bottom right bottom
line right bottom right top
line right top left top
line left top left bottom
}
In file tunnel.dbn we replace the centred_square command definition by DBN’s load command.
// the tunnel // version 4, 30 Oct 2008, Michel Wermelinger // put command in external library load shapes.dbn line 0 0 100 100 line 0 100 100 0 centred_square 20 centred_square 40
To recap, this and the previous two lessons introduced three different fundamental programming concepts, all relating to abstraction:
- variables allow us to abstract concrete values into general concepts
- sub-programs (called commands in DBN) allow us to abstract sequences of computational steps into named algorithms
- modules allow us to abstract related commands into reusable libraries
In the next lesson we get back to drawing: we introduce the use of grey scales to reinforce the notion of distance.