Growing Object-Oriented Software, Guided by Tests

Published April 23rd, 2010 Under Books | Leave a Comment

Object orientation (OO) is not a trendy concept these days, but it hasn’t certainly lost it values. The purpose of this book is to integrate the development of object oriented software with the test-driven development (TDD) approach, more specifically in Java. It starts with an introduction to TDD and the tools (Junit, jMock2) that will be used. It describes then in detail the TDD process that is then illustrated by a large example. The book ends with more software testing topics like tests smells or tests readability. A final part is dedicated to special aspects of testing like persistence, threads and asynchronous code.

The book could be read from start to end or be used as a reference book. In the preface, the authors say that the book is intended for developers with professional experience and some first knowledge of TDD. It really goes far beyond “toy” examples that you can find in programming learning books. The content is a balanced mix of concepts, examples and diagrams that makes it easy to read. Besides what could be considered “catchy” acronyms (OO+TDD), this book is an excellent reference on how to design and program software (the authors use the nice concept of “growing” software). I will consider it a must for anyone programming in Java, but I will also recommend it to people programming in other languages, as the thinking process could be applied in other contexts and with similar tools.

Reference: “Growing Object-Oriented Software, Guided by Tests”, Steve Freeman, Nat Pryce, Addison-Wesley, 358 pages, ISBN 978-0-321-50362-7

Get more details on this book or buy it on amazon.com
Get more details on this book or buy it on amazon.co.uk

Quotes

“What if software wasn’t “made”, like we make a paper airplane – finish folding it and fly it away? What if, instead, we treated software more like a valuable, productive plant, to be nurtured, pruned, harvested, fertilized, and watered? Traditional farmers know how to keep plants productive for decades or even centuries. How would software development be different if we treated our programs the same way?”

“As John Gall wrote in “The Systems Bible: The Beginner’s Guide to Systems Large and Small”: a complex systems that works is invariably found to have evolved from a simple system that works”.

“Sometimes we find it difficult to write a test for some functionality we want to add to our code. In our experience, this usually means that our design can be improved – perhaps the class is too tightly coupled to its environment or does not have clear responsibilities. When this happens, we first check whether it’s an opportunity to improve our code, before working around the design by making the test more complicated or using more sophisticated tools. We’ve found that the qualities that make an object easy to test also make our code responsive to change.”

The Times They Are a-Changin’ ? Maybe Not

Published March 8th, 2010 Under Software Development | 2 Comments

I will rather say that history repeats itself. By the way, this is a quote from Hegel and Marx added that first time was tragedy, and the second time farce. Yet this post is not about a Bob Dylan against Marx debate, but about a thought that came when, after following a conference presenting some of the IBM Rational products, I discovered the Open Services for Lifecycle Collaboration initiative. OSLC defined itself as “a community effort to help software delivery teams by making it easier to use lifecycle tools in combination. The OSLC community is creating open, public descriptions of resources and interfaces for sharing the things that software delivery teams rely on, like change requests, test cases, defects, requirements and user stories.” I first thought that Rational Jazz, self-defined as “an open platform designed to support any industry participant who wants to improve the software lifecycle and break down walls between tools” would be the place for tool integration. Apparently building this platform was not enough to foster tool collaboration.

I was traveling back 20 year back in time when IBM already tried to combine multiple tools data in a single repository, an initiative called AD Cycle. The grails (without groovy) of having different vendors tools communicating has been since then attempted again by some other “standards” like CDIF (Common Data Interchange Format) or PCTE (Portacle Common Tool Environment). I am sure that you have all heard about these initiatives and that they are one of the key factors when you make a tool acquisition decision. Aren’t they?

One of the problems of these initiatives for uniting tools is that vendors mostly favor bilateral alliances and create integration with selected partners. However, the most important issue is that except for IBM, most of the industry players have a (very) short life expectancy. Most of them will disappear before the time needed to define and implement such standards. Anybody remember of Knowledgeware’s ADW, Index Technologies’ Excelerator or Arthur Andersen Method/1? If yes, it means that you have some gray hairs … and a good memory (let’s see the positive points). The current list of tool partners of OSLC is far from being impressive and the probabilities that this initiative will have the same fate than its predecessors are high.

1500 Tools to Assist Software Developers

Published October 12th, 2009 Under Methods & Tools | Leave a Comment

Created in 2007, the Software Development Tools Directory has now more than 1500 references. It is one of the rare web sites where you can see on the same location both commercial and open source software development tools. Tools are categorized by programming language, license, operating system or software development function (software testing, project management, database, IDE, user interface,  etc.).  The Open Source category is the most important one with 770 tools.

The five most popular open source tools in the directory are:
* IceScrum – agile project management
* ERmodeller – a CASE tool for data modeling
* ArgoUML – UML modeling with Java code generation
* StarUML – UML modeling tool
* Arbiter – requirements gathering and acceptance testing tool

More than 1000 tools registered at SoftDevTools.com

Published November 4th, 2008 Under Links, News, Software Development | Leave a Comment

SoftDevTools.com is a unique directory of software development tool where you can be informed on both commercial and open source solutions for your software development needs. It covers all software development activities: programming (java, .net, php, ruby, etc), testing, configuration management, databases, project management, etc. Tools can be classified using multiple criteria: licensing, running platforms and functionalities, etc. With 10′000 monthly visitors, SoftDevTools.com is proud to have registered its 1000 tool and looking forward to reaching the 2000 milestone.

If you are the editor of a commercial software development tool or contributing to an open source project, go to http://www.softdevtools.com/ to register your tool.

More than 750 tools Listed!

Published February 27th, 2008 Under Methods & Tools, Software Development | Leave a Comment

More than 750 tools have been registered in our Software Development Tool directory. If you are looking for a specific tool to develop software, do not hesitate to visit it to get some direction. If you are developing a tool, both commercial and open source, useful for software developers, register it for free on the web site. Subscribe to the RSS feed for continuous information on the software development tool market.