The Big Four
There are many concerns for software design and architecture, including functionality, scaling, performance, extensibility, backward compatibility, platform compatibility, future-proofing, the list goes on and on. However, for a system to continue to be workable (maintainable, readable, extensible, correctable) there are primarily these four large concerns.
Software developers have pondered the question of "design rot" as long as there has been software, and have realized that the internal structure of a software system is vitally important to its continued success, just as external factors are critical to user acceptance.
Object-oriented design has provided tools for managing continued workability, but many developers today have not received a well-grounded education in software structure. They are instead pushed to make software that lacks internal structure, but works and is appealing in concept or user interface.
We are presenting a series of articles via the Pragmatic Bookshelf magazine, which we hope will fill in the gaps: