Imagine you are doing maintenance on an application from the late 90’s that uses the classic ADO libraries. The recompiled code works fine on any Windows 7 SP1 machine, but mysteriously crashes on the Windows XP machines that have been running the program for nearly a decade. This is the problem facing lots of maintenance developers.
A prank during TechEd caused many to believe that Visual Basic 6 would be open sourced. While it turned out to be false, it did start a lot of conversations about the language, its legacy, and an open source implementation would mean.
MED-V 2.0 is a desktop virtualization solution enabling users to run legacy applications on Windows 7. App-V 4.6 SP1 is a service pack for Application Virtualization, another solution for deploying applications within the enterprise.
It was recently announced that InfoQ is creating a new Operations community. In addition to that, another major change which has been in the works for the last few months at InfoQ is the conversion of the Java community to the Scala community. InfoQ spoke with a prominent Scala expert and members of the former InfoQ Java editorial team to learn more about this change and why it was made.
Alan Baljeu was trying to use TDD with his large, legacy C++ code base. He found that the principle of the simplest thing that could possibly work was causing him trouble with the amount of rework.
If a bug fix is shipped and no one knows about, has it been actually been fixed? The VB Power Packs were patched and shipped with VS 2008 SP 1, but only those who knew to explicitly change which DLL they referenced got the update.
Grey Lens Man, a blogger who does not decline his identity, posted an interesting piece about legacy problems plaguing the enterprise and proposes a new software stack as viable solution: JOSH, JSON OSGi Scala HTTP.
In this article, Andreas Kaltenbach explains how Model-Driven Software Development (MSDS) can help solving backward compatibility problems when creating a newer version of a software which can mean a new API or a new database schema that old clients cannot use. MSDS is used to negotiate the differences between versions to ease the upgrading process.
It's not news that at the heart of successful software systems (and, frankly, fulfilling software careers) is good design. Also not news is that defining what "good design" really means has been at the heart of many debates, papers, talks, books, discussions, and more for ages. To help, J.B. Rainsberger and Scott Bellware offer some advice to follow until that one true definition comes along.
A Technical Debt Workshop was recently held to improve our industry's understanding of and approach to "technical debt", resulting in some interesting ideas. Among them, changing our perception of the problem to focus on "assets" rather than "debt", an idea now receiving quite a bit of attention by people such as Michael Feathers and Brian Marick.
In his latest blog post, Michael Feathers argued that object oriented programming languages offer some built-in features that facilitate testing and are therefore more recovery friendly than functional languages. Proponents of functional languages expressed strong disagreement with this statement, which provoked a very passionate debate in the blog community.
Alberto Savoia has written a series of four articles describing "characterization testing" - the process of writing unit tests to understand and work with legacy code.
One can't always start from scratch with Agile - sometimes it's used to salvage troubled projects, but Emanuel Gaillot notes that "What's tough about XP is, the more you need it to get your project in a better shape, the harder it is to start doing it." Can a team really afford to switch in the middle of a troubled project? Gaillot recently shared his approach to gradual XP implementation.
Ian Roughley shows how to use logging seams to easily create unobtrusive unit tests around legacy classes, without needing to edit class logic as well as avoiding behavior changes.