GOTO is a vendor independent international software development conference with more that 90 top speaker and 1300 attendees. The conference cover topics such as .Net, Java, Open Source, Agile, Architecture and Design, Web, Cloud, New Languages and Processes

Martin Fowler, Chief Scientist and Loud-mouth on Object Design.

Martin Fowler

Biography: Martin Fowler

Martin Fowler is an author, speaker, consultant and general loud-mouth on software development.

He concentrates on designing enterprise software - looking at what makes a good design and what practices are needed to come up with good design. He has pioneered object-oriented technology, refactoring, patterns, agile methodologies, domain modeling, the Unified Modeling Language (UML), and Extreme Programming.

He's the Chief Scientist at ThoughtWorks - an international application development company, and has written five books on software development: Analysis Patterns, UML Distilled (now in its 3rd edition), Refactoring, Planning Extreme Programming (with Kent Beck), and Patterns of Enterprise Application Architecture. I also write articles regularly on my site at Martin Fowler.

Martin is member of GOTO Aarhus Program Advisory Board 

Books: Domain-Specific Languages (Addison-Wesley Signature Series (Fowler)), Analysis Patterns: Reusable Object Models, UML Distilled : A Brief Guide to the Standard Object Modeling Language 3RD EDITION, Refactoring: Improving the Design of Existing Code, Planning Extreme Programming, Patterns of Enterprise Application Architecture
Video presentations: Three Years of Real-World Ruby, Agilists and Architects: Allies not Adversaries Presentation

Workshop: Continuous Delivery

Getting software released to users is often a painful, risky, and time-consuming process. This tutorial sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and operations, delivery teams can get changes released in a matter of hours–sometimes even minutes–no matter what the size of a project or the complexity of its code base.

Inthis tutorial we take the unique approach of moving from release back through testing to development practices, analyzing at each stage how toimprove collaboration and increase feedback so as to make the delivery process as fast and efficient as possible. There will be interactive exercises where the audience practices using these techniques for themselves. At the heart of the tutorial is a pattern called the deployment pipeline, which involves the creation of a living system thatmodels your organization's value stream for delivering software. We spend the first half of the tutorial introducing this pattern, and discussing how to incrementally automate the build, test and deployment process, culminating in continuous deployment.

In the second halfof the tutorial, we introduce agile infrastructure, including the use of Puppet to automate the management of testing and production environments. We'll discuss automating data management, including migrations. Development practices that enable incremental development and delivery will be covered at length, including a discussion of why branching is inimical to continuous delivery, and how practices such as branch by abstraction and componentization provide superior alternativesthat enable large and distributed teams to deliver incrementally.

Workshop: Evolutionary Architecture - How to Make it Work

Agile software development encourages, or even requires, a more evolutionary approach to architecture than is normally practiced by traditional Software Architects. The evolutionary approach to architecture, based on the principle of delaying architectural choices until the latest responsible moment, balances the desirability for sufficient information to make architectural choices with the reality that many architectural choices are difficult to change and should thus be made early.

This tutorial describes the principles that support an evolutionary architecture. We illustrate these principles with example techniques such as database migrations, HATEOS based architectures, and strategies such as end point testing for integration points. We also describe approaches to technical testing, particularly automated technical testing, that provide the safety net for evolving the architecture in the same way that automated unit and regression testing support evolving the code in an agile project.