TICOSA Sessions

Michael Feathers - Process Echos in Code

We know that trees bear the mark of their environment. When you take a cross section of their trunks, you can see evidence of rainfall, available nutrition and many other environmental conditions. In this talk, Michael Feathers will discuss how we can use our version control history to learn more about the conditions under which software was developed. With this information, we can gain deeper insight into the pathologies that plague software development and move toward more effective strategies of mitigation.

Presentation as PDF

Michael Feathers is an independent consultant in the area of software design, prior to that he was Member of the Technical Staff at Groupon. Prior to joining Groupon, Michael was the Chief Scientist of Obtiva, and a Senior Consultant with Object Mentor International. Over the years, Michael has spent a great deal of time helping teams after design over time in code bases. Michael is also the author of the book Working Effectively with Legacy Code (Prentice Hall, 2004).

Daniel Brolund - Are you a Lost Raider in the Code of Doom?

When making changes to old code, it can be like entering an old, doomed temple in the jungle. You get in to find the "golden line of code" to make your change, but one step demands the next, and before you know it, the golden line of code is gone and you're in trouble. You have lost track of where you are, moving forward is like pushing a giant rock through quicksand, the errors are flying through the air, and the floor behind you is gone. The roof is caving in and you don't have your bullwhip any more (maybe your boss does?). Suddenly you wake up. Your colleague reverted the code, and you're back outside the temple. Let's never get back in there again! Or…. maybe you should. Or must…

When your code feels like a temple of doom, and you don't feel as lucky Indy, you can try the Mikado Method instead. It is a structured way to keep track of the maze of old code, to guide your way to the end of a change without getting lost. Join Daniel as he demonstrates the theory and mechanics of the Mikado Method.

Daniel Brolund is a software developer and consultant at Agical in Stockholm, Sweden. He has a habit of always seeing things to improve, to the joy or grief of his fellow workers. In his more than 15 years as a professional, he has worked with global web sites deployed on hundreds of servers, desktop applications for just a few users, and a big bang disaster. He bikes to work and trains Brazilian Jiu Jitsu when he has the chance.

Matt Wynne - How much should I refactor? Digging in the Cucumber codebase for clues

A green-field re-write of the core domain of the open-source BDD tool Cucumber gave Matt the opportunity to go looking for evidence of the team's behaviour. How many of the commits to the codebase added behaviour, and how many were just refactoring? Join Matt as he talks you through his method, and see how easy it can be to gleam this kind of information from your own codebases.

Presentation as PDF

Matt started programming in BASIC on the BBC Micro when he was about 11 years old, and has been programming for a living since 1997. He’s the lead developer on Cucumber-Ruby, the open source tool for running executable specifications that help bridge the communication gap between business stakeholders, testers and developers. He’s co-author of two books on Cucumber, The Cucumber Book with Aslak Hellesøy and Cucumber Recipes with Ian Dees and Aslak Hellesøy.

Along with Aslak Hellesøy and Julien Biezemans, Matt runs Cucumber Limited, the company behind the popular family of open-source tools that include Cucumber-Ruby, Cucumber-JVM, Cucumber-JS, Cucumber-CPP as well as the Gherkin parser that powers SpecFlow for .NET. The company also run a paid-for service calledCucumber Pro that offers a collaborative platform for teams using Cucumber.

Matt is a founder of the Kickstart Academy which provides training and consulting to teams learning to use Behaviour-Driven Development (BDD) and other advanced agile practices.

He lives on the west coast of Scotland with his wife, two boys, two cats and a few chickens.

Keith Braithwaite - Code Metrics

We will examine one well known and widely used design metric, Cyclomatic Complexity, across a number of open-source codebases and examine the effect of Test-Driven Development ("TDD") on the distribution of complexity. Along the way we will learn that sometimes the "average" of a metric is not useful or informative, and what to do about it.

Keith Braithwaite is a Principal Consultant at Zuhlke Engineering in London. He has worked in and with Extreme Programming and Agile teams around the world since the late 1990's.

Dmitry Kandalov – Visualizing Project History

There seems to be a lot of interesting data captured in version control systems, yet we don't use it that much. This is an attempt to analyse and visualise project history. This session is a demo based on JUnit and IntelliJ code history.

The plugin with examples.

Dmitry is a software developer based in London, specialising in Java, JVM languages and investment banking.

Stéphane Ducasse - Tools for Software Business Intelligence

To sustain software development and maintenance there is a need for tools. Now not all the tools are worth the same. You can get generic tools answering generic questions such as the number of lines of code or average complexity of a method. but it is quite rare that you can take strong decisions based on generic results.

In this presentation we will show that building dedicated tools is worthwhile. In particular we will present some of the results developed by Synectique a company delivering dedicated tools for software business intelligence.

Presentation as PDF

Stéphane Ducasse is director de recherché at Inria where he leads the RMoD team. He is expert in two domains: object-oriented language design and reengineering.  He worked on traits, com posable groups of methods, and this work got some impact. Traits have been introduced in AmbiantTalk, and Squeak/Pharo, Perl, PHP and  under a variant into Scala, Fortress of SUN Microsystems. He is one of the developer of Pharo a new dynamic language used in industry and academia. He is also expert on software quality, program understanding, program visualisations, reengineering and metamodeling. He is one of the developer of Moose, an open-source software analysis platform.  He is working with Synectique a company building dedicated tools for advanced software analysis.

Stuart Curran - Information Archaeology : Understanding Historical Design Decisions in Software

This talk will consider how enterprise software systems have historically been planned, looking back at some of the tools and methods used to capture requirements and specify design.

Rather than digging into the code, I'll be looking at the ontology of legacy software and how this relates to the practices and methods that shaped the design.

Stuart is an Experience Design Consultant at Thoughtworks with a background in information architecture, interaction design and user research.

Robert Smallshire - Confronting Complexity

Nobody doubts that complexity is the enemy. As software architects we are up against an unrelenting entropic force. Successful engagement with such a formidable opponent demands taking the time to understand and characterise your adversary before planning the assault. By transforming data into knowledge, we gain power. And with sufficient power, we can prevail.

Legacy software systems acquire an organic quality and as such they are amenable to analysis with the tools of the observational sciences - measurement and statistics. We accumulate a wealth of data during development which we can usefully mine from source control systems. Analysis of this data can direct preventative or remedial refactoring efforts to maximise their impact.

I’ll share experiences of extracting and analysing useful data from a large, high-value, legacy system undergoing active development, charting its history and renewal.

Presentation as PDF

Another version of the talk

Robert Smallshire is a founding director of Sixty North, a software product and consulting business, which amongst other adventures, helps teams understand their inherited code history and find solutions to the problems bequeathed by their predecessors. Robert is no stranger to accumulated complexity. He has worked in senior software architecture and technical management roles for several software companies providing tools in the energy sector, roles which required wrangling with high-value but long-in-the-tooth systems which has accreted an impressive stratigraphy of legacy code, much of which actually worked for most of the time.

Robert is a regular speaker at conferences, meetups and corporate software events and can be found speaking about topics as diverse as behavioural microeconomics in software development to implementing web services on 8-bit microcontrollers. He is organiser of the Oslo Python group and holds a Ph.D. in a natural science. He blogs occasionally at smallshire.org.uk and is active on Twitter as @robsmallshire.