New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Shane Hastie on Aug 10, 2009
In a recent article entitled “Continued Delivery of High Values as Systems Age”, Chris Sterling discusses the concept of Software Debt – “Software debt accumulates when focus remains on immediate completion while neglecting changeability of the system over time.”
Software debt goes beyond what is typically referred to as technical debt -
He identifies the four components of software debt as:
- Technical Debt: those things that you choose not to do now and will impede future development if left undone
- Quality Debt: diminishing ability to verify functional and technical quality of entire system
- Configuration Management Debt: integration and release management become more risky, complex, and error-prone
- Design Debt: cost of adding average sized features is increasing to more than writing from scratch
- Platform Experience Debt: availability and cost of people to work on system features are becoming limited
He discusses how software debt creeps into projects, and provides a view of how projects accumulate debt over time, often for the best motivation and a desire to maintain the pace of delivery in the face of increasing complexity.
In a similar vein Bill Curtis discusses the impact of Muda (“Muda” is the Japanese word for waste) on software projects – the most common source of waste on software projects is rework, the result of software debt:
The few available studies of rework report that it accounts for between 30% and 50% of project effort in most organizations that have not undertaken successful process improvement. Rework numbers are painful, not only in the collecting, but also in the fessing up. Few executives want to admit they are flushing away an average 40% of their investment in applications.
Sterling suggests ways to manage and reduce software debt:
In the article he provides advice on how to address each of these points.
He concludes the article with the following comments:
As systems age they can become more difficult to work with. Software assets become liabilities when software debt creeps into systems through technical debt, quality debt, configuration management debt, design debt, and platform experience debt.
Applying the six principles in this article will lead to small changes that over time will add up to significant positive change for teams and organizations. The goal of managing software debt is to optimize the value of software assets for our business and increase the satisfaction of our customers in the resulting software they use.
How do organisations reduce software debt and protect their investment in software systems?
Shane Hastie is an agile coach, trainer and consultant working for Software Education in Australia & New Zealand
Agile Practices to Improve Project Management Organization (PMO) Effectiveness
Agile Maturity Model Applied to Building and Releasing Software
SCM best practices for multiple processes, releases & distributed teams
In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!
Well, Chris has redefined technical debt to be one of the things technical debt refers to. You can look up references to technical debt on the Internet, and you'll see all things described by Chris as "software debt".
I don't mind the categorization, though that always leads to having stuff that doesn't quite fit any existing category. But this is by no ways adding new categories, just reclassifying.
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
1 comment
Watch Thread Reply