I am at the UK OT 2004 conference this week near Cambridge (England!) so will be blogging about what is going on here. First of all this isn’t a standard presentation style conference, it’s very much about participation and interaction so the attendees tend to be pretty advanced in their experience and understanding which certainly makes for interesting discussion. I won’t be doing much detail on the non session based events but there are a number of different and innovative ways that the conference uses to get interaction.
One note, most of the attendees are very experienced java developers and so fairly language centric. As a visual architect I struggle with some of their approaches and language (!).
So on to the sessions: The first session I went to was about the use of mock objects. This is an interesting idea where some of the concepts of XP are used in the design phase of the development process and you build mock objects for those parts of the system you need to design then build the mock objects for the objects you need and so on; you then refractor to get the “right” design. The session dove into the code rather early whilst I was still trying to understand the idea and the scenario (a trading application) so I got rather lost in the middle but the summary and learning’s were excellent. These pulled out the concept of agile design for me and then covered some of the issues, most of these being the standard issues with XP development but an interesting one was that you shouldn’t try to mock real systems (eg db’s) but just interface with the system. Very useful summary although I rather regret not going to a session on “Getting to grips with architecture using viewpoints and perspectives” because this was more in line with what I am working on and feedback in the hall was that it was a rambunctious session.
The next session was around the application reference model by John Cheesman. This was much more familiar territory to me and covered the concepts of high level functional or business level “components” and then the SDLC associated with them. This was probably a bit too much to cover in one session. John defined components and objects and services which was nice although not how I normally think of them (not a problem, just different) and only had time to look into the code gen aspect of modelling which is half day in its own right really.
Useful and interesting session with a couple of takeaways for me; first whilst the reference architecture he proposes I agree with there was no linkage between that and physical architecture or non functional requirements (he says these are parts of architectural patterns.. hum not sure) which I think was something that is needed. Second he thinks that there are a number of different modelling domains which need to be addressed (totally agree). I would have been interested in a fuller overview of the SDLC process using his reference architecture though. Thanks for the UML components book though John, I will read it and give a review on my blog!
The next session was an afternoon tutorial on generics which the language guys from Microsoft put on and I participated in. Note that this was about generic software mechanisms as opposed to generics specifically. As I am weak in languages the intro was useful to me as a refresher but the more experienced people didn’t really need it. Then into a workgroup around a scenario for generics which was really interesting. My group had a data access (CRUD) type scenario and it was fun trying to work out which mechanism (attributes, inheritance, code gen and attributes) was most appropriate. There were some very smart guys in my group who really brought the whole thing into focus for me and I learnt a lot.
I am still not a language guy but I found it great to listen to good developers working out how to use the language mechanisms.
Finally there was a Q&A session with Ivar Jacobson which was again interesting. It started with questions about Use Cases which of course he is best known for and went on to analysis models and structures all of which I agreed with. He related XP to use case and then went on to say that for very large systems you need to do analysis as well in particular with the non functional requirements. YES! From this he led into cross cutting concerns and thence into AOP. Double YES! This is exactly what I think.
Next he talked about architectural models and RUP / Objectory where he talked about sets of models and viewpoints into models being architecture which again is where my thinking is.
Then on MDA; Ivar says that he agrees with models and Model Driven Development (yes!) but a model compiler is not possible today as we don’t have the understanding to build one (Yes!) and whilst the vision is great it probably isn’t implementable today. Clearly a pragmatic and objective view which I totally agree with.
XP. Ivar thinks XP is all about skill and art and not grunt engineering which I probably agree with. He thinks that most IT development is about engineering not art and so whilst there will always be a place for XP around speed and agility the vast majority (80%) will be engineering.
Finally on to an excellent dinner and the return of my questionnaire (similar to the one I sent out a few weeks ago). I had a quick look through the feedback and will post the results and the comparison against the online results I got when I have collated the feedback.
An interesting if long first day.
Glad to hear that a cold-hearted Architect can get something out of being in a room full of developers that doesn't need Ibuprofen to fix :)
Generic mechanisms are one of those things that the software world seems to have been striving to perfect forever. In code we have a bunch of ways of doing it, including language level generics (templates), object orientation etc. Though in architecture we really seem to have focussed on just one: The Pattern (and maybe Ontologies - though I'm not quite so comfortable with that idea, since they seem to be much more about knowledge structure).
Could it be said that modelling languages like UML provide us with enough facilities to achieve generic, reusable architectural "building blocks" - or is something else required?
Nat and I were first up with our talk on Mock Objects. Yes, we are still harping on about them :). Here's what we covered: OO concepts: an application is a web of collaborating objects, each providing a distinct responsibility...