Notice how TestCase, the central abstraction in the framework, is involved in four patterns. Pictures of mature object designs show this same ‘pattern density’. The star of the design has a rich set of relationships with the supporting players.
Bertrand Meyer, at the 40 Years of Software Engineering panel at ICSE 2008, on May 16, 2008, 11:56am: “Electrical engineering is to computer science what making a bed is to making love.” I’m not entirely sure this is true, but it certainly makes for a memorable quote.
UPDATE: I had mentioned my enjoyment of this quote to Prof. Meyer at the conference. A few days later I received an email from him in which he generously (and gracefully) corrects me with the exact statement, which first appeared in his inaugural lecture at ETH Zurich:
We appreciate our debt to electrical engineering, without which there would be no computers. Indeed, computer science is to electrical engineering as the art of making love is to the art of making beds.
Much better, and certainly less crude than my in-the-moment snapshot.
Commercial open source has a peculiar sales process. Frequently, when a firm decides to buy (license) a specific type of software like a content management system or a wiki engine, they’ll find that their company already employs multiple solutions, downloaded for free from the Internet. By some measures, this is dangerous to IT governance, as it bypasses corporate purchasing and operating regulations. On the other hand, open source empowers IT users to make their own decisions early on without having to go through lengthy approval processes, keeping them nimble and speedy. So, is commercial open source good or bad for IT operations and the CIO?
Software researchers need case studies to validate new tools and methods of object-oriented software design. A good thing to do is to standardize on a set of open source frameworks and libraries that are known and available to everyone. Basically, a benchmark set for new tools and methods in object-oriented software design. JUnit and JHotDraw come to mind.
Most open source frameworks and libraries that are being used in research studies have little original documentation associated with them. However, I as well as others have written up such documentation. Here are those frameworks that I see increasingly being used in scientific studies, as well as any design documentation documentation that I may have provided.
Commercial open source firms go to market trying to create an “unfair” competitive advantage that lets them win customers more easily than their competitors. So do most other companies. Commercial open source firms do this by bypassing the traditional purchasing process by getting their software into customer companies for free, before the customers even know they will need the software. But is an employee’s decision to install a piece of open source software a good decision for the company? After all, every software locks in its users, whether open source or not.
Abstract: This paper describes the design of the unit testing framework JUnit v3.8. The documentation technique employed is an enhanced version of collaboration-based design, also known as role modeling. In collaboration-based design, objects are viewed as playing multiple roles in different contexts, and different contexts are viewed as task specific collaborations. The documentation accounts for every method in the JUnit 3.8 framework by assigning it to a role. It thereby investigates whether roles and collaborations can serve as basic units of functionality provided by a design like a framework. Such a measure of functionality can serve multiple purposes, for example estimating implementation efforts or measuring complexity.
On March 30th, 2008, Ward Cunningham will unveil his latest innovation at the DorkBotPDX 0x01 event in Portland, Oregon. Don’t miss this chance to meet and listen to one of the great innovators in computer science.