ACCU 2010 Conference
Total Page:16
File Type:pdf, Size:1020Kb
Conference Chair: Giovanni Asproni Conference Committee: Event Manager: Astrid Byro Francis Glassborow Archer Yates Associates Ltd Paul Grenyer Threshers Yard, West Street Alan Lenton Kingham, Oxon. OX7 6YF Ewan Milne Phone: +44 (0) 1608 659900 Roger Orr Fax: +44 (0) 1608 659911 James Slaughter Email: julie at archer‐yates.co.uk Keynote speakers announced In 2010 we'll have yet another exceptional line‐up of keynote speakers: • Jeff Sutherland, co‐inventor of Scrum • James Bach, well known tester and author of "Lessons Learned in Software Testing" • Dan North, Agile coach, software developer and the inventor of Behaviour Driven Development • Russel Winder, consultant, author, and expert in parallel and distributed systems. As usual, there will be a set of pre‐conference tutorials which will include: • A Certified Scrum Master Course taught by Jeff Sutherland and Gabrielle Benefield (two days 12 and 13 of April) • A one day tutorial on the D programming language by Andrei Alexandrescu and Walter Bright • A one day tutorial on testing by James Bach Sessions 5 Steps to Kanban (Karl Scotland) 90 mins A Kanban System for Software Development provides an alternative means of creating an Agile Development process using Lean Thinking. Creating a Kanban System is not as simple as adopting a previously defined process as a starting point. Instead, a team needs to come up a model of its own process which will form the basis for further continuous improvement. This talk will introduce 5 steps that a team can use to create their own Agile process using a Kanban System for Software Development. A Simple Matter of Configuration" - how can we tame the complex world of configuration? (Roger Orr) 90 mins Configuration is a vital element of many programs. However it is often hard to get configuration right, leading to people wasting time and programs that do not work correctly. In my experience explicit discussion of design options for the configuration of a program is rare and, all too often, the choice is made arbitrarily. I believe that looking at the usage patterns of the program early on helps to pick the best method(s) for configuring it and hence reduce the cost of problems caused by configuration issues. Configuration is a complex subject and there doesn't seem to be an obvious single solution that works in every case, but we can try to fight against the common 'anti‐pattern' of using multiple, unrelated, configuration techniques at the same time. I will look at some of the issues surrounding configuration; firstly by trying to answer the "six key questions" (who, why, what, where, when and how) for this subject to help understand the size of the problem and the forces at work. ACCU Conference 2010 April 14‐17, 2010. Barcelo Oxford Hotel, Oxford, UK 1 of 30 I'll then sketch out some possible design patterns and look at their trade‐offs and interaction with the intention that I (and you) can reduce the pain of getting programs working in different environments by making more informed and deliberate decisions. I am looking at the problem in the general case, using examples from various problem domains, and expert knowledge of a particular language or API is not assumed. A Year of Misbehaving - A Retrospective on using BDD in a commercial enterprise (Mauro Talevi) 90 mins So you've heard about Behaviour‐Driven Development (BDD) and you're intrigued. You think it might just work but only in a very Agile environment. You ask yourself if it could work in a realistic commercial enterprise. We've done just that for the past year: we'll present a retrospective on using BDD on a high‐profile project in a global corporate bank. We'll share the lessons learnt, including what worked well and what could be improved. We'll also introduce BDD and JBehave for Java‐based development environments. Outline: • Introducting BDD • Introducting JBehave for Java‐based development o Using with IDE o Using with CI o Using with Web Runner • Introducing the Case Study o A Java enterprise project in a global corporate bank o Greenfield project in a non‐Agile environment o Extremely volatile market conditions • What worked well o Communication with business and specification of acceptance criteria o Adapting to rapidly changing priorities o Use of web runner for setting up and driving demos o Integration with development tools • What can be improved o Dealing with large datasets whose formats do not refactor easily o Finding the best form of outcome verification o Ensuring scenarios are written earlier in the iteration cycle o Avoiding unnecessary duplication of scenarios and steps • Lessons learnt Abusive C++ (Jonathan Wakely, Richard Harris) 90 mins Time and time again we programmers have discovered that the clever tricks of yesterday are the maintenance nightmares of tomorrow, and yet still we are drawn, moth‐like, to the leet. In this session we shall describe a selection of our own clever C++ tricks, some of which we have learned to avoid, some of which have yet to burn us and some of which we have yet to use... Adventures in QA (Dirk Haun) 90 mins In this session, we follow the adventures of a software developer who unexpectedly finds himself in the role of head of quality assurance. Hilarity ensues as worlds collide and our protagonist realizes he doesn?t even speak the same language as his new colleagues. This session will be exposing some of the gruesome details of real‐life software testing. Courses for testers and shiny testing tools are readily available, but how widely are they actually used, useful, or even usable? Is there a need for a "professionalism in testing" initiative? ACCU Conference 2010 April 14‐17, 2010. Barcelo Oxford Hotel, Oxford, UK 2 of 30 Also, while testing is widely accepted as a necessity, it isn't always seen as an integral part of the development process yet. So we will be looking into this and related (ongoing) struggles with management and development. Lessons learned and a chance to exchange stories from the trenches will round off the session. Analysing Large Data Sets - an introduction to MapReduce with Apache Hadoop (Gavin Heavyside) 45 mins Apache Hadoop (http://hadoop.apache.org) is an open‐source implementation of MapReduce, the algorithm famously used by Google to process large data sets. The Hadoop framework provides a reliable, scalable distributed environment for anlalysing massive amounts of data, and is used by companies from startups with a single server to Yahoo! whose largest cluster has 4000 nodes. I will introduce Hadoop and the MapReduce programming model, with a discussion of how the Hadoop framework helps you process massive amounts of data in parallel across many machines. The session will cover subprojects of Hadoop, including the distributed file system HDFS and the distributed database HBase. Hadoop is written in Java, but I will show how the Streaming library enables developers to access the power of MapReduce from any language. I will also introduce Pig and Hive, two subprojects of Hadoop that enable you to run complex queries using a high‐level query language (Pig) or an SQL‐like syntax (Hive). These tools enable ad‐hoc querying and analysis of large datasets, generating the appropriate MapReduce jobs for you. Architecture Refactoring - Motivation, Approach and Patterns (Michael Stal) 90 mins For software engineers creating new code is one side of the coin ,while checking its conformance, sustainability and quality represents the other side. Adding new features is considered a creative act, whereas improving quality is rarely respected but often neglected. If problems are built into a software architecture, it will be the more complicated and expensive to get rid of them the more we postpone appropriate activities. One way to avoid such design erosion is to regularly apply architecture refactoring. Architecture refactoring extends code refactoring to also cover architecture artifacts. The tutorial will introduce the core concepts of architecture refactoring, introduce refactoring patterns, and differentiate it with re‐engineering. Atomics for C++ (Detlef Vollmann) 90 mins C++0x will (quite probably) define "components for fine‐grained atomic access". This is one more mechanism to deal with concurrency in C++ programs, and it's considered a mechanism "for experts only". Of course every decent C++ programmer considers himself an expert in concurrent programming, so they might consider to use these atomic objects and their operations. But there's a reason why these components are considered "expert‐level". Their use can have some pitfalls, they might not be as atomic as a naive user might expect, and they might generally not do what a user expects from them. This talk will present the C++ atomics and what niche in programming for concurrency they actually fill. Some examples on how to use them will be explained, and the talk discusses what programmers can expect from atomics and what not. Intended audience: This talk is for programmers and designers of projects that have to deal with concurrency and who consider using atomics. A good working knowledge of ISO C++ is helpful, but not required. Automated Testing of a Medical Imaging Application (Jeff Kotula) 90 mins Virtual Radiologic Corporation (http://www.virtualrad.com) is a provider of 24/7/365 teleradiology service for thousands of clients throughout the United States, associated with numerous radiologists in the US and overseas. Several years ago we began a project to write our own radiology PACS (Picture Archiving and Communications System) application to ACCU Conference 2010 April 14‐17, 2010. Barcelo Oxford Hotel, Oxford, UK 3 of 30 support and grow our core business. A key component of this system is an application used by radiologists to review medical images (e.g.