Wednesday, 20 April
09:00
Open and Closed Systems are Equivalent (that is, in an ideal world)
- Room: Ballroom
- Track: Security
- Presenter(s): Ross Anderson
- Description:
Some members of the open-source and free software community argue that their code is more secure, because vulnerabilities are easier for users to find and fix: `to many eyes, all bugs are shallow', as Eric Raymond famously put it. Meanwhile the proprietary vendor community maintains that openness just makes things easier for the attacker. This has become an issue the security-economics community: Rescorla argues against vulnerability disclosure, while Arora and others argue that vulnerabilities should be disclosed more quickly.
I will present a principled approach to the interaction between security and design openness. I show first that under quite reasonable assumptions, which are widely used in the dependability community, the security assurance problem scales in such a way that making it either easier, or harder, to find attacks, will help attackers and defenders equally. This does not imply that, in any specific real system, open or closed will be better; rather it is a model of the symmetry between attack and defence. It helps us focus on and understand those cases where this symmetry is broken.
10:00
Break
10:30
C++ Template Metaprogramming
- Room: Room A
- Track: C++/C/C#
- Presenter(s): David Abrahams, Principal, Boost Consulting, United States
- Description:
Since the introduction of templates, C++ programmers have discovered surprising and powerful ways to perform computation at compile-time. While the excitement generated by these capabilities among C++ experts has reached the community at large, their practical application remains out-of-reach for many programmers. Literature on C++ template metaprogramming (TMP) has focused primarily on details of low-level "tricks" at the expense of strong idioms and abstractions, and without illuminating the path from metaprogramming to expressive interfaces and efficient, maintainable software. This class delivers both "big picture" ideas and practical tools. It explains what metaprogramming is, why it matters, and how the unique combination of features in C++ make it an especially powerful language for metaprogramming. It also presents the Boost Metaprogramming Library, a powerful open source framework of high-level compile-time algorithms and sequences based on familiar STL idioms.
Asynchronous Functions in C++
- Room: Room D
- Track: C++/C/C#
- Presenter(s): Schalk Cronje, Senior Software Engineer, United Kingdom
- Description: The necessity to lauch some form of task in the background is a common theme in programming. Threads are a common, but not the only platform for this. Attendees to some of Kevlin Henney's sessions on multithreaded programming would have seen how a generic approach to threading can be done. It is duely possible to expand these ideas into asynchronous tasks in C++ i general and create a set of free functions to launch any C++ function or functor in an asynchronous manner.
Life in the software factory
- Room: Room B
- Audience Level: Easy
- Presenter(s): Pete Goodliffe, Code Monkey, UK
- Description:
This is a foray into the gory truths of writing software in the Real World. You'll see how to be successful in the software factory, how to survive software-writing teams, and learn practical techniques to improve your day-to-day software writing experience.
Garbage Collection
- Room: Room C
- Track: Java
- Presenter(s): Richard Jones, Senior Lecturer and Deputy Director, UK
- Description:
Garbage collection (GC) is a key component of almost all modern programming languages. The advent of Java, C# and Managed C++ has brought it into the mainstream and, as memory manager performance is critical for many large applications, brought GC to the attention of programmers.
In this talk, I shall start by reviewing where GC is today, why it is desirable, what performance you might reasonably expect and I shall outline the directions in which GC research is moving. Following a brief explanation of the major GC techniques, including a demonstration, we shall examine some of the challenges to GC, looking at contexts ranging from GC for high-performance, multiprocessor systems to GC for real-time systems and limited devices. We shall also examine how GC can be better integrated with its operating environment or to specific applications.
Implementing the Security Development Lifecycle
- Room: Room E
- Track: Security
- Presenter(s): Steven Lipner, Director of Security Engineering Strategy, USA
- Description:
This presentation discusses the Trustworthy Computing Security Development Lifecycle (or simply the SDL), a process that Microsoft has adopted for the development of software that needs to withstand malicious attack. The process encompasses the addition of a series of security-focused activities and deliverables to each of the phases of Microsoft's software development process. These activities and deliverables include the development of threat models during software design, the use of static analysis code-scanning tools during implementation, and the conduct of code reviews and security testing during a focused "security push". Before software subject to the SDL can be released, it must undergo a Final Security Review by a team independent from its development group. When compared to software that has not been subject to the SDL, software that has undergone the SDL has experienced a significantly reduced rate of external discovery of security vulnerabilities. This presentation describes the SDL, discusses experience with its implementation across a range of Microsoft software, and suggests ways in which ISV and end user development organizations can use the SDL to improve the security of their software.
12:00
Lunch & Vendor Presentations
14:00
Compile-time Algorithms On Overload Sets
- Room: Room D
- Track: C++/C/C#
- Presenter(s): Alexander Nasonov, C++ Developer, Russian Federation
- Description:
Several compile-time algorithms have been developed to simplify searching and other operations on a set of function overloads. A flexible yet simple in use framework was built around the algorithms. Key points of the implementation are explained and comparison with typelists is given. The most important algorithms are demonstrated in use by a finite state machine example. The framework is based on Boost.MPL library and uses it heavily.
Planning, Estimation and Correction in an Agile Project
- Room: Room B
- Track: Process
- Presenter(s): Jutta Eckstein, Consultant, Germany
- Description:
One of the key activities within agile development is continuous planning. Using short feedback cycles the whole team will be able to improve the estimates and help the customer to understand what his or her requirements really are. This will make the planning more and more precise over time and allows for strategic software development and risk reduction.
In this talk, Jutta will explain, based on her experience, how this can be done in practice.
Identifier Spelling
- Room: Room C
- Track: Process
- Presenter(s): Derek Jones
- Description:
While almost any sequence of letters can serve as an identifier name, developers are often given recommendations that result in identifiers which combine particular letter sequences in certain ways. The benefits claimed for these recommendations are rarely supported by experimental evidence, or analysed on a cost/benefit basis. This session uses experimental results from a variety of studies to show the very poor cost/benefit of some commonly encountered recommendations and to list the most significant human factors that authors of identifier naming recommendations need to consider.
ISO C++03 Templates / J2SE 5.0 Generics / .NET 2.0 Generics (part 1)
- Room: Room A
- Track: C++/C/C#
- Presenter(s): Herb Sutter, Architect, Microsoft Developer Division, USA
- Description:
This talk compares and contrasts the generic type facilities of .NET 2.0 generics, Java 5.0 generics, and ISO C++ templates. We will analyze their respective strengths and weaknesses (yes, they do all have strengths and weaknesses), see what kinds of problems they are designed to solve, and analyze when and where each is appropriate. We'll also put them through their paces with live code-writing and demonstrations of the three facilities; Java generics will be demonstrated in Java and C++ templates in C++ (of course), and .NET generics in both C# and C++.
Introduction to Security Patterns
- Room: Room E
- Track: Security
- Presenter(s): Peter Sommerlad, Professor, Switzerland
- Description:
According to security guru Bruce Schneier, security is all about trade-offs with respect to limited resources. Nevertheless, security seems to be complex "black art" performed well by experts only like OOP was before 1994. Design Patterns have shown since then to be a perfect vehicle of transferring OOP towards mainstream technology. Security patterns try to repeat that success by making the knowledge and trade-offs of security practice accessible like design patterns did for OOP. Security patterns will give names and a common understanding to security techniques and show their value and limitations honestly.
15:30
Break
16:00
Aeryn: Development of a C++ Testing Framework
- Room: Room C
- Track: C++/C/C#
- Presenter(s): Paul Grenyer, Senior Software Engineer, UK
- Description:
Automated testing, sometimes including a Test First approach, is becoming more and more widespread, but is still far from being common place. This is surprising when you consider that the simplest form of test, an assert() statement, is so easy to implement.
Aeryn is a general C++ testing framework (not just a unit testing framework) intended to make test writing quick, easy and straight forward.
I developed Aeryn after looking at and trying out a few other testing frameworks. Modifying other frameworks to meet my needs became more and more difficult and so I decided to develop a new framework which would be easy to modify and simpler to use.
During this session I will describe how Aeryn was developed from the ground up and look at the importance of interfaces and mock objects in a unit testing strategy. I will also be discussing my take on integration testing.
If you are already happy using another testing framework then Aeryn may not appeal to you, but if you are thinking about moving in the automated test direction for unit and/or integration testing then perhaps Aeryn is for you.
More information about Aeryn can be found at: http://www.paulgrenyer.co.uk/aeryn/
ISO C++03 Templates / J2SE 5.0 Generics / .NET 2.0 Generics (part 2)
- Room: Room A
- Track: C++/C/C#
- Presenter(s): Herb Sutter, Architect, Microsoft Developer Division, USA
- Description:
(continuation of previous session)
Hands-on Java Code Review
- Room: Room B
- Track: Java
- Presenter(s): Jon Jagger, software enthusiast, UK
- Description:
In this session I will walk through the review of a sample piece of Java code, and show how many aspects of a code review (such as adherence to layout guidelines) can be detected by a program. I will then write a simple Java program to detect non-adherence of a simple layout guideline. This program will be written as a client of the JavaSauce framework.
Delegates will then pair up and spend a short while reviewing the Java source code they have brought to the session and write down a list of the review comments they make during this review. They will select a review comment that is potentially detectable by a program, and will then attempt to write a JavaSauce framework client to automatically detect the code review comment (in a test first manner of course). There will be a small prize for the first working framework client.
At the end of the session, I will write up all review comment lists and framework client code on a simple Wiki. All delegates must bring at least one Java source file (in electronic form) for review, and a computer with Java 1.5 ( JDK 5.0) installed. They will be provided with a copy of the JavaSauce framework.
Two Roads Diverged*: The State of Project Management
- Room: Room D
- Track: Process
- Presenter(s): Barb Byro, Project Manager, US
- Description:
Two diverging and possibly incompatible philosophies of project management are currently emerging. New tools and practices are evolving under the radar which signal major cultural changes and need examination.
These two diverging paths may be generally labeled as "Voyages of Discovery" and "Big Brother". Strategies and practices that may be generally classed as within the Voyages of Discovery set are Agile Project Management, Blogs for IT management, WIKIs. The Big Brother set is typified by Metier's Worklenz and Brightsword Designer.
What are these changes and what do they mean to both programers and project managers? We'll examine these topics through discussion and a PowerPoint presentation.
*With apologies to Robert Frost
Security for the working programmer
- Room: Room E
- Track: Security
- Presenter(s): Adam Martin, CTO, UK
- Description:
"Security" is rapidly moving from marketing buzzword to essential feature, with the attackers making huge leaps in skill, experience, and effectiveness. Organized crime gangs are achieving the potential of weakly-guarded internet systems as cheaper, faster, and much lower-risk of capture than traditional crime. Despite being engineered to a high level of quality in all other areas, modern IT systems are often simply "fundamentally insecure". Firms complain of the costs and the meagre benefits of securing systems - but is security really as difficult, thankless, and expensive as many fear?
This talk is aimed at non-specialists who would like to build decent security into their own systems as a matter of course. It does not aim at a holy Nirvana of academic perfection, but rather at a careful balance of cost and benefit. It replaces vague, hand-waving ignorance with simple methodical rigour, and shows how to get an accurate estimate of how secure your own systems actually are.
Finally, we look a the computer-games industry, and a series of case studies into particular security-related disasters in this field. The unique challenges facing Games Developers help to highlight some of the key points of this talk.
18:00
Blackwells Reception
19:30
IT View 2005
- Room: Ballroom
- Track: Process
- Presenter(s): Nico Josuttis
- Description:
The Ultimate IT Chat - A reflection of one more year of our business.
Bouyed by the success of last year, Nicolai Josuttis gathers another extraordinary group of representatives of our IT business to talk about the most important, thought-provoking, and funniest headlines and tendencies of the past year.
Lean back and enjoy being a fly on the wall when the following participants chat in a pub-like* atmosphere:
- (Panellists to be announced)
* Please note that the Conference Chair does not guarantee similar quantities of free beer as last year. In fact, if anyone would like to buy him a pint in return...