Intro
Overall Presentation Goals
Speaker's Qualifications
The Current State of the Art
Scaling over Time
Change/Version Management Today
A typical version progression
Our (flawed) understanding of software
Our (corrected) understanding
Consequences of misunderstanding
Origins of misunderstanding
Nature of applications
Who cares and why?
What we have
State of the art - 1
State of the art - 2
OSGi - 1
OSGi - 2
OSGi - 3
OSGi - 4
OSGi - 5
A high-level look at versioning
Designs for "versioning friendliness"
APIs vs. SPIs - 1
APIs vs. SPIs - 2
Tools in the Java world
serialVersionUID - 1
serialVersionUID - 2
What we could have
Tools & Conventions
Where it breaks down
What we...
What we should have
What if we don't have it?
First class language features - 1
First class language features - 2
First class language features - 3
First class language features - 4
How would this help?
First class language features - 1
How would this help?
How would this help?
Proper abstraction levels & tools
Summary
Q&A
Software versioning is one of the most neglected areas of software development. We're all aware of the need for version control systems in development, but these systems are external to our source code.
How do you write software that withstands the test of time, software that does not have to be rewritten each time you change an interface, software that can still read persisted objects even if they were written by the last version of the application?
This session discusses some fanciful futuristic concepts as well as currently useful approaches to writing software that scales over time.
Alexander Krapf has over 20 years experience in software engineering, product development, and project management in the United States and Europe. He has been extensively involved in a variety of complex product development efforts using his in-depth understanding of .NET, C++, and Java. His successes have ranged from contributing SEC compliance components in the financial sector to managing the development of e-commerce servers for Hitachi Computer Products. In addition to founding and managing Codemesh, Alexander has worked for IBM, Thomson Financial Services, Hitachi, Veeder-Root, and Document Directions Inc., where he has been involved in product rollout, customer training, and customer relations for a diverse set of products and services.
Recognizing the need for easy to use, quality software integration products, Alexander co-founded Codemesh to satisfy a growing market need and his own entrepreneurial instincts. His history, with product successes as well as failures, has taught him what it takes to build a company with strong technology, firm business principles, and excellent customer support: CodeMesh.
Alexander Krapf received a Bachelor of Science degree in Electrical Engineering from the University of Stuttgart, Germany.