-=//mawi.org//=-
 Tuesday, November 13, 2007
Haven't blogged since summer (!!). So here comes a small update.

This years edition of Øredev is underway. Me and the rest of blue plane are hanging out, we've got a very cozy corner set up. Pics of that coming up!

Tomorrow I will be giving a talk on readability. I will talk about the writing/communication perspective, code comprehension theories and then do a little list of my own favorite readability edits and recommendations; most are simple things that I've seen alot at different teams, that can be fixed easily... and maybe something that I find cool in this space, like method chaining in the name of readability ("fluent interfaces"). Hopefully, I'll have some time to tie in a few words about readability as a team effort.

See you there.

11/13/2007 10:32:45 PM (Romance Standard Time, UTC+01:00)  #    Comments [1]  |  Trackback
 Wednesday, May 02, 2007
I almost forgot to post about this; next week holds a seminar on NHibernate, Castle and MS coming offerings of EF. I will be talking about NHibernate and castle activerecord and my colleague Truls will talk about MS Entity Framework. It's an overview, which we hope will give developers looking to use OR mappers a bit of background, to aid their decision making. We call it "Data access showdown"! Do stop by!

5/2/2007 9:33:41 PM (Romance Daylight Time, UTC+02:00)  #    Comments [2]  |  Trackback
 Tuesday, March 27, 2007

I am here in Cambridge, at the SPA conference, and held a workshop on testability and encapsulation. I promised to publish my sources, so here they are! I will post presentation in the near future.


Most of the articles can be found via acm (portal.acm.org) or ieee, but I always search via google which usually leads to acm.

 

Abstraction, information hiding and encapsulation

Most of the good stuff here is from different OOD books. Here are some old articles I found interesting, (tiny archaeological warning), worth skimming:


    "Data abstraction and hierarchy"
        Barbara Liskov
        OOPSLA 1987
    "Encapsulation and inheritance in OO programming languages"
        Alan Snyder
        OOPSLA 1986
    "Encapsulation constructs in systems programming languages"
        W. F. Appelbe, A. P. Ravn
        ACM Transactions on

        Programming Languages and Systems (TOPLAS)
        April 1984

Parnas on information hiding is classic but the examples dated.

    "On the criteria to be used in decomposing systems into modules"
        D L Parnas
        Communications of the ACM, December 1972

Abstraction is not mechanics of coupling, but is about semantics and meaning - designing is creating models that communicate:

    Good vs. Evil: Abstraction
    Manuel Klimek, article on blog
        http://klimek.box4.net/blog/2007/03/18/good-vs-evil-abstraction/

 

Testability

If you read just one article on testability, Binders old from 12 years ago is the the best I've read. You will have to "translate" concepts to todays terms, and it pretty condensed (but it is at the same time not "being difficult"), read it twice.

    "Design for testability in object-oriented systems"
        Robert V. Binder
        September 1994 Communications of the ACM


The first article I've read that actually talks about testability of software with respect to test creation in a pragmatic way, is Freedman. It is still interesting, although not as current. It's non OO and a bit silly on the math side, especially for a practicioner, but I just skim that...

    Testability of Software components
        IEEE Trans. Software Eng. 17(6): 553-564 (1991)   
        Roy S Freedman

Not so long ago I found an excellent recent summary of testability work, that I could have made good use of earlier. (Note the weird publishing spot.)

    "Predicting Class Testability using Object-Oriented Metrics"
        Magiel Bruntink, Arie van Deursen
        September 2004
        Proceedings of the Source Code Analysis and Manipulation, Fourth IEEE
        International Workshop on (SCAM'04) - Volume 00 SCAM '04

Magiel Bruntinks "Testability of Object Oriented Systems: a Metrics based approach" (dissertation, 2003) is pretty nice as well.

We talked about two basic models of testability, which were kind-of based on Binders categories of fault and conformance directed testing. A model of testability that focuses on fault directed testing is that of Jeffrey Voas. He has published alot, I found this article to be the most accessible:

"Software Testability: The New Verification"
    IEEE Software may 1995
    Jeffrey M. Voas, Keith W. Miller

There are a couple of others worth checking out, this one is ok:

"Factors that affect software testability"
     Voas Jeffrey M.
    October 1991          
    Technical Report
    Publisher: NASA Langley Technical Report Server (available via acm)

Stefan Jungmayr has published alot an+d has focused on dependencies and metrics, this short article sums up alot of his work. Both this and more can be found on www.testability.de/E_index.html:

    "Testability and unit testing"
        Stefan Jungmayr

His dissertation is lengthy, there is some useful stuff there. His clear definitions of dependencies are a good contribution.

 

Books

If you want a good and accessible text that does cover a lot of the issues we talked about, I really have found good use for Feathers "WELC" book. I recommend it to anyone learning behavior driven or test first design as well.

    "Working effectively with legacy code"
        Prentice Hall, 2004
        Michael Feathers

Chapters addressing test construction factors: Chapter nine and ten talks about controllability and a little about observability. Other chapters talk about design and abstraction, notably chapter 17. Great book on the subject of testing object oriented code, one of the best IMHO.

There's also Binders enormous book, which is not mentioned that often, so I'll mention it. The parts I've read are excellent, but it's quite enormous. He should have split it into several.

    "Testing Object-Oriented Systems: Models, Patterns, and Tools"
        Addison-Wesley 1999
        Robert V Binder

 

Testing general

I brought up some stuff (the testing periods, etc) from an old article that is really nice, and highly recommended, well worth a read. Short easy read that has many insights, although it is a bit historical.

    The growth of software testing
        D. Gelperin, B. Hetzel
        June 1988, Communications of the ACM,  Volume 31 Issue 6

This is an old classic and still very amusing read, could use another font:
    "In defense of program testing or Correctness proofs considered harmful"
        Andrew S Tannenbaum et al
        ACM SIGPLAN Notices Volume 11 ,  Issue 5  (May 1976)

 

OO

I mentioned the study on core OO concepts:

    "The quarks of object-oriented development"
        Deborah J. Armstrong        
        Communications of the ACM  archive, February 2006

 

TOOP - Testable object oriented programming

There has actually been some work on what testable object oriented programming might mean. What I've read has not been terribly interesting, but here is one I read anyway:

    "On testable object-oriented programming"
        Y Wang, et al
        ACM SIGSOFT Software Engineering Notes, July 1997

3/27/2007 2:07:02 AM (Romance Daylight Time, UTC+02:00)  #    Comments [0]  |  Trackback
 Wednesday, February 28, 2007

Roy blogs about testability in the language. I definitely think that the language could cater testability, much like it connects with other development needs. For example, in .NET there is the obsolete attribute which we may decorate a method with, which causes the compiler to issue a warning if someone compiles code that uses that method.

Likewise, I have for some time wondered if using an attribute indicating that a method is for testing purposes only would be useful. I think so.

Anyway, thanks for this Roy! It's amazing to see how quickly that debate springs up again! I am doing a workshop on testability and encapsulation and this is definitely inspiring, I almost thought that everyone had already gone past the encapsulation debate and that I wouldn't get anyone to discuss it with - but here is proof that it is not so again!

Hopefully we'll get even more perspectives.

2/28/2007 10:33:43 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]  |  Trackback
 Friday, November 17, 2006
Dev Days 2006, Stockholm in December

Microsoft is arranging a asp.net focused event, Dev Days 2006,  in Stockholm december 5th. I have agreed to talk about databinding in ASP.NET 2.0. Tobias Fjälling will be talking about AJAX. There is little info on the site, and no abstracts, but Johan Lindfors has put up the info on his blog, here, among other posts. Note that neither me, nor Tobias are cornerstone employees - despite what Johans post may indicate.

 

If you're doing ASP.NET development, come check it out - it's an inexpensive event, and there will be lots to choose from.

SPA 2007, Cambridge in March

The 2007 edition of the Software Practice Advancement conference is held in Cambridge. I will be giving a session in the form of a short workshop exploring testability, encapsulation and how they relate to each other. The idea is that the topic will serve as the starting point for a short collaborative exploration of these concepts, and we will all leave with a clearer understanding of them.

 

Check out the awesome programme here, and details of my session here. The conference is actually very inexpensive, and whereever you are in Europe, catching a flight to the UK is dirt cheap nowadays - so give it some consideration. The lineup includes names like Dave Thomas (of pragmatic programmers fame), Michael Feathers, Tony Hoare, Brian Marick (brilliant test specialist, known to go out of his way to give non-planning swedes rides to airports), Kevlin Henney, and a host of others.

11/17/2006 12:20:37 AM (Romance Standard Time, UTC+01:00)  #    Comments [3]  |  Trackback
 Thursday, November 16, 2006

Martin Fowler, Erik Doernenburg, James CoplienØredev 2006 is over, and it was pretty great - despite several last minute  (quite literally last day) cancellations from some high profile speakers. I talked to alot of people and many agree with me that the social atmosphere was very good. The panel on the last day rounded off the whole event nicely. In the picture you see Martin Fowler, Erik Doernenburg and James Coplien.

 

My presentation went pretty well, it seems alot of people enjoyed it. Here is the slidedeck for it.

 

I forgot a couple of things: First, I forgot to announce the next SNUG meeting, which is December 6th in Malmö - sorry chris. I also forgot to underline the steps after vou've got the code you're interested in under test. I managed to cover alot, but there are so many important ideas that I did not have time to cover.

 

The last thing I missed was the resources slide, you will find it in the download. I have also put out an older version of this talk in an older blog entry, look for it. As you probably noticed, the sessions where recorded, and I hear that there are plans to make them available to all attendees. Time will tell.

11/16/2006 11:38:48 PM (Romance Standard Time, UTC+01:00)  #    Comments [4]  |  Trackback
 Tuesday, November 14, 2006

What a party it is! Even though the actual start is tomorrow and today was "just" workshops, I am already having a great time!

 

Todays highlight was definitely meeting Jim Coplien and listening to his provocative style as he recounted seven ways agile teams fail. It was all business, hard facts and no play (well, aside from the provocations and caricatures).

 

Tomorrow, I will be giving my talk on changing software with tests to back you up. It's kind of at odds with what Coplien talked about today, because I don't "care" much for the either the specification directed nor the fault directed aspects of using tests as a developer tool. I think the great benefit are the behavioral aspects. None the less, tomorrows talk will be pretty code-centric, not like my previous attempts - come check it out!

 

Speaking of the benefits of tests, we reflected on the Copliens talk on the way back in Niclas car, and missed the design and behavioral aspects: In saying that TDD is no better than code reviews (and other techniques)* I do believe that we are missing the point. It reminded me of Martin Rinard on failure oblivious computing: TDD adresses the fault-prone part of developers, I feel most older techniques lean back to the space of a more elitist view (uncompromising it seems to me). I find that it does not work, we need methods that help us with the human side of things. Most of the cases, none of the methods give us bug free software - and my take on TDD is that it neither finds faults nor guarantees behavior according to spec. It does, however, help us move forward when developing.

 

Am I too pessimistic?

 

On another note, namely speaking: I will be giving a workshop at the SPA 2007 conference in Cambridge in march, more on that later.

*I am being sloppy with the details here, it does not detract from my point, I think.

11/14/2006 6:35:02 PM (Romance Standard Time, UTC+01:00)  #    Comments [8]  |  Trackback
 Wednesday, October 04, 2006

I was just informed that Bertrand Meyer is also coming to Öredev 2006! This is great news, I have never heard him speak - another good reason to come to Øredev in November. Martin Fowler, Jim Coplien, and just a host of other great people are coming. Speaker overview.

10/4/2006 10:57:05 AM (Romance Daylight Time, UTC+02:00)  #    Comments [3]  |  Trackback
 Thursday, June 01, 2006

I was pleased to notice that so many had not had the opportunity to get up to speed on continuous integration before our talk yesterday. Of all the people in the auditorium only 2-3 felt they knew what all the "hoopla" is about.

Even though we could have used the full fifty minute slot, I think that we managed to cover the essence - although there is so much more there in the form of experiences and perspectives to talk about.

As promised here is the presentation slidedeck. Since it was so heavy on images I have made them smaller, although this download is still large (6mb).

Links to good articles - the web is naturally full of both good and bad, but don't miss these:

On the conference:
We had a great time at Developer Summit 2006 in Kista, Stockholm. I applaud all the great guys and gals at Cornerstone for managing to create such a cozy gathering!

The first day started out with an interesting overview of mashups and the semantic web. Erik did a great top 10 developer donts kind of thing that I enjoyed very much - highlighting best practices, many of which are reexposed in agile. After lunch, Jimmy did TDD and we got a nice agile progression going upto my CI talk. The second day highlights for me was probably Manges entertaining causerie on Web 2.0 and an entertaining overview of open source development in .NET by Mats Helander. Patrik did WF and Johan a potpourri of coming VS.NET stuff.


Lets hope we get the same kind of event next year. For more conference and development fun this year, keep your eye on Öredev scheduled for November.


6/1/2006 11:07:25 AM (Romance Daylight Time, UTC+02:00)  #    Comments [0]  |  Trackback
 Wednesday, March 08, 2006
My presentation last week on effective development of existing code in .NET using testsupport seemed to have been very appreciated.  The materials can be downloaded from the dotway site, the directlink is this.

I had atleast double the amount of material prepared, but we needed to focus on some basics as well which made the available time less. The download includes the presented material only, in order to not confuse too much. (Dotway plug: If you are interested in more testsupport techniques such as TDD and what I talked about this time, we do offer a 2 day introductory course announced here).

This week I get some vacation in the alps.
 

3/8/2006 9:05:26 AM (Romance Standard Time, UTC+01:00)  #    Comments [0]  |  Trackback
 Wednesday, January 18, 2006

I will be talking about Continuous Integration at Nordev 2006, although it has been renamed to/rebranded as Developer Summit 2006. The agenda is to be posted at the site shortly. The event takes place May 31st to June 1st in Kista.

1/18/2006 9:31:17 AM (Romance Standard Time, UTC+01:00)  #    Comments [2]  |  Trackback
 Sunday, January 15, 2006
My next talk will be february 28th one in our breakfast seminars series at dotway. It somehow got the somewhat unfortunate title "testdriven development in a legacy environment", which is not completely correct but there are naturally many influences and parallells. Technically we will hopefully get to talk about what kinds of unique seams .NET offers, how to exploit them and how you should stay focused on the target, and more. The talk is in Malmö near central station (here) and the date is 2006-02-28.
1/15/2006 12:09:32 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]  |  Trackback
 Monday, December 19, 2005
For those that attended my generics talk at either Öredev in November or the SNUG meeting last monday, the presentation is available in powerpoint format from www.dotway.se, at this downloads page.

12/19/2005 8:08:18 AM (Romance Standard Time, UTC+01:00)  #    Comments [0]  |  Trackback
 Thursday, December 08, 2005

Forgot to put relevant info yesterday: If you missed out on Öredev, I will be doing talking about generics again at the next SNUG (Skånsk .NET User Group) meeting, which is on monday (12/12).

Info is posted here.

If you already know about generics, come anyway and learn about Continuous Integration from Kim Gräsman and just mingle with some other great .NET geeks. Kim is a really smart and great guy and I look forward to that. This time the meet is in Malmö, close to the station. Again, check out the info post.
12/8/2005 9:30:51 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]  |  Trackback
 Wednesday, December 07, 2005
Öredev was good fun. Today I came across a writeup from MS here (but in swedish). It was alot of work and just before the event, many people were saying: "never again" - but afterward everyone felt really satisfied and excited that it went so well.

I talked about generics in .NET 2.0. I initially wanted to do an intermediate session with stuff on performance and design patterns but I really think my session hit the spot as far as level goes for most attendees. I kind of talked about theory and ways of thinking about generics and about the implementation. I was overwhelmed by the positive response.

Another fellow dotwayyer wrote about it just after the event.

12/7/2005 9:28:51 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]  |  Trackback