Software Design in the Twenty-first Century, Martin Fowler, ThoughtWorks Inc. In the last decade or so we've seen a number of new ideas added to the mix to help us effectively design our software. Patterns help us capture the solutions and rationale for using them. Refactoring allows us to alter the design of a system after the code is written. The UML gives us a standard notation for drawing software designs. Agile methods, in particular Extreme Programming, give us a highly iterative and evolutionary approach which is particularly well suited to changing requirements and environments. Martin Fowler has been a leader is most of these techniques and will talk about some of these and how they affect our software development.
OO, DDD, and the Honour of the Programmers' Guild, Dan Bergh Johnsson, Omegapoint AB The code we write and the system we build are not only a result of the technologies we use. They are also heavily affected by the way we think about programming.
In this slightly philosophical session Dan present some the ways he thinks about programming. We examine what it takes for object orientation to fulfil its promise to give us reusable code, and how refactoring is absolutely essential. We see how programs can be seen as simulations, why Domain Driven Design makes sense, and the importance of "code that mean something". And over all of it hovers the question whether programming is an honourable profession, or not.
RDF and data integration, Rickard Öberg, SenseLogic AB
The next generation of webcentric services rely on the idea of integrating data from several sources and adding value-added services or data on top of this. Whether it is finding the best price of a product or allowing books and movies to be rated by communities, at the heart of these new services there is a need for data integration techniques.
This presentation will explore how RDF can be used as a data model as the foundation of these new services, and will also look at the query language SPARQL that is used to query this model. By combining these with cutting edge visualization techniques one can accomplish quite a lot with reasonable effort.
Self Reliant Systems, Björn Granvik, Jayway AB
Today we programmers usually ship systems that basically contain the specified functionality - and just that. We do this by crafting the system using our favorite tools. These can be anything from your local IDE to your top ten prompt hacks. The common denominator is that they are all external to the functionality you are trying to deliver. We cannot continue to do this. It will have the same result as it always has had - systems that needs the original programmer to tell if it is up and running or not, systems that are fragile and only verifiable on the programmer's PC, requirements that are lost in Word-land etc. We must put the abilities these tools represent into your system and deliver it all, not just the source code. Make the acceptance tests automatic and runnable - in run time. Inject the requirements into your code and refactor them along with your code. Make the status of the system understandable by everyone - including your grandmother. This session will introduce a new approach to how we can build our systems adding capabilities that are based on the notion of introspection. The approach will be highlighted with several examples - from the trivial but important, to the future and on the edge.
Peer-to-Peer, Jakon Jenkov, Jenkov A/S
The session will introduce pure and hybrid peer-to-peer architectures. Peer location, routing and distributed hash table algorithms like Pastry and Chord will be covered as well. The session will also take a closer look at security in peer-to-peer systems. More specifically at topics like authentication, authorization, non-repudiation, and secure/encrypted communication. Finally the session will look at the future potential of peer-to-peer systems beyond file sharing. Ideas include knowledge sharing systems, backup of data, email transport, group ware etc.
The session is programming language independent. The topics covered are equally applicable in C++, C#, Java, VB.NET etc.
Eclipse goes server side, Wolgang Gehner, Infonoia SA & Peter Neubauer, Jayway AB
Since Eclipse 3.2 the plug-in infrastructure of Eclipse/OSGi can be used as a basis for server-side applications. This promises a new dimension for flexible- modular code reuse and integration of web and business components. This seminar talks about the state of affairs on> server-side Eclipse. An example demonstrates the transfer of the architectural concepts of Eclipse RCP (Rich Client Platform) to RSP (Rich Server Platform).
Participants obtain an introduction to the concepts and understand the benefits of development with RSP.
For those who were Agile before Agile was cool..., James O. Coplien, Nordija A/S
A few software people have been Agile long before Agile was cool, and one can find most of the roots of Agile development in Ward Cunningham's company in the late 1980s, in Borland in the early 1990s, and in many other small organizations of the same era. Agile started appearing as a discipline in the early 1990s, reflecting a grass-roots cultural change that swept the industry. That change was crystallized in the Dr.Dobb's article on Borland's QPW development, in the emerging
day-to-day practices of programmers using object techniques, and ultimately in organizational patterns and in more formalized methods such as Crystal Clear, SCRUM, and later XP.
In this keynote I'll describe one man's journey through this history, the aspirations I noted in the hearts and minds of those who shaped Agile development along the way, and my reflections on the degree that Agile development today lives up to those cool aspirations.
Flow with continuations, Geert Bevin, Uwyn
Get back in control of the natural flow of your application.
Continuations leverage the expressiveness of Java for the creation of re-enterable execution points. This presentation explains what continuations are and why they are useful. The benefits quickly become apparent through side-by-side comparisons with traditional flow management. You'll get an overview of the different approaches of today's tools and will see that continuations are handy in many application domains.
Ruby on Rails, Niclas Nilsson, Activa AB
Ruby on Rails has gained a lot of attention lately. Articles about Rails has been published in such different places as Dr. Dobb's Journal and The Wall Street Journal, there is a loud buzz in the online developer forums and the number of web applications built upon Rails is increasing quickly. This talk will give a glimpse of what Ruby on Rails is all about, how it differs from many other web app. dev. tools/ frameworks, why it really is a big deal that Rails is built upon the programming language Ruby and what exactly it is about Ruby on Rails that makes you more productive. You will be exposed to how Rails uses the Model-View-Controller pattern, how it interacts with databases and the way AJAX and Rails plays together. And of course, you will see how development with Ruby on Rails is actually done.
Practical Continuous Integration, Jonas Blunck & Kim Gräsman, TAC AB
Continuous Integration is ultimately a practice to help a team reduce project risk and feel safe about the state of their code base. In recent years, a number of products have turned up for automating the practice. One of those is CruiseControl.NET, for the .NET platform, which is free, open-source and relatively easy to get running. We have been using CruiseControl.NET for a couple of years, and have found a number of ways of extending it and improving on the experience. In this session, we thought we'd share some of our experiences and ideas for how to make CruiseControl.NET work with custom build tools, unit testing, custom reporting mechanisms, source control systems and on non-Windows platforms.