|
Week #1 |
2005-08-01 |
|
I'm one week into my thesis. Brief summary of the last 7 days in numbers: thesis pages written 25, KM jogged 68, avg. coffee shots / day 4.5. So all-in-all progress is OK but not great. Only when confronted by writing documents do I recognise the unadulterated pleasure that is hacking on code. Hopefully I'll be back on that in a couple of weeks. Here's a small taste of the thesis so far - a still rough introduction to the place where cross-cutting code, modelling and requirements traceability meet up: The "divide and conquer" approach to problem solving allows people to build complex software systems. The de-composition of software code into modules is fundamental to software development. Benefits seen by [1] include manageability, flexibility and comprehensibility. The organisation of software development into a process also produces specialised activities, like project planning, requirements gathering, design and development. These in turn make specialised artefacts like test plans, requirements and design documents and source code. This specialisation produces the following benefits:
This decomposition optimises the ability of people to focus on one part of a problem at once. As noted in [1] one modularisation of source code will optimise one part of a system, usually de-optimising another. This tension is played out in the organisation of software into modules, projects into phases, and information into documents. It is useful to consider this trade off using the idea of a concern – defined as any thing that must be considered separately and is a relatively well defined entity within software [2]. By dividing the software development process into stages (for example requirements, then design, then development, then implementation), the process optimises concerns like "the requirements" and "the design" over slices of related work, like "bank account withdrawal". Looking at the de-composition of software into modules, it is also interesting to think about the kind of concerns that are optimised. Classes, components and services all optimise a particular concern – the unification of data and related functionality (class), the encapsulation of cohesive functionality (component) and the description and exposure of functionality through a coarse-grained distributed interface (service). This section examines the concerns that are de-optimised by process and software design so that they are not neatly modularised, called cross-cutting concerns. 1 Parnas, D.L., On The Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, 1972. 15(12): p. 1053 - 1058. 2 Kiczales, G., Concern's Definition, aosd-discuss mailing list, Editor. 2003. |
|
|
More Developers |
2005-07-25 |
|
I'm continually impressed by brother Joseph's side projects, and never more so than by this Ballmer-themed t-shirt he has made. With the job and the kids, where does he find the time? |
|
|
Taking a break |
2005-07-24 |
|
I'm unemployed. I worked my last day at Tesco.com on Friday. It has been a great four years. This gives me about nine weeks of notionally free time before I start in Redmond, although I'll be up to my ears in thesis work for most of that. Nonetheless, I'd like to take the opportunity to declare this The Summer of Patrick. |
|
|
Interviews |
2005-07-19 |
|
Just stumbled across this interview with Kieran Mockford, MSBuild PM, ex-Msft UK and all-around good guy. And if you've exhausted IT Conversations, there's more here, including a great intro to Software Factories by Steve Cook. |
|
|
A Few Good Men, Mariani Style |
2005-07-19 |
|
This is the world's funniest post containing the words "L2 cache replacement disciplines". A sample: "I have a greater responsibility than you could possibly fathom. You weep for your feature, and you curse the performance team. You have that luxury. You have the luxury of not knowing what I know. That your feature's death, while tragic, probably saved bytes. And that my existence, while grotesque and incomprehensible to you, saves bytes. " Kind of reminds me of QUOTES FROM THE MOVIE "JAWS" IN WHICH "SHARK" IS REPLACED BY "JIMMY PAGE". |
|
|
Naming collision |
2005-07-17 |
|
I'm currently working on some demonstration code for my thesis, contrasting my ConcernMaps project with other approaches to separation of concerns. I had planned to use the Feature Exploration and Analysis Tool (FEAT) as one of my comparisons, only to find that a new and improved version was released on Wednesday. It's called ConcernMapper. Argh. |
|
|
Back from Poland, off to Seattle |
2005-07-11 |
|
It has been very quiet on the blog front recently, for several reasons. Firstly, we are moving to Seattle in October so I can start work at Microsoft. I'm not absolutely certain what I will be doing yet, but the general idea is that it will i. involve developer tools and ii. be fun. It is great to have it all finally decided so I can concentrate on finishing my Concern Maps project over the next couple of months. More recently I spent four days in deepest Poland, in a placed called Torun attending my cousin's wedding. As far as I can tell Polish weddings are endurance tests to see just how much vodka, coffee, meat and dancing the human body can take (the answer is about 12 hours). I won't go into too much detail, but the take home points are:
We got back from Poland in time to show my family around London for a few days before the terrorist attack on Thursday. I was impressed at how Londoners remained calm in the face of such terrible events, particularly Ken Livingstone's speech. On the uni front, I finally got my Whidbey beta 2 build finished at 1am last night. Tonight I'm playing around with the Class Diagram Power Toys with a view to using an API to create class diagrams (rather than just building the CD XML myself). This has presented some interesting challenges which I'll post on once I have them beaten. Lastly, my latest Amazon shipment is the new Spolsky book and Paul Graham's Hackers and Painters, both look good. |
|
|
Links |
2005-07-11 |
| I lost all my bookmarks recently so I'm trying out del.icio.us. I'm just building it as I go along, but you can keep track of my stuff here. | |