كتاب
Object-Oriented Reengineering Patterns از Serge Demeyer, Stéphane Ducasse and Oscar Nierstrasz در نوع خود كتاب جالبي است. در مقدمه اين كتاب داستان خيالي را تعريف شده و پس از آن ديدگاه نويسندگان آن در مورد مهندسي نرمافزار بيان شده است. آوردن مقدمه كتاب از آن جهت مفيد دانستم كه در آن به چند مورد خيلي مهم اشاره شده است كه در حالي كه اشاره به ماهيت مهندسي نرمافزار و تفاوت ماهوي آن با ساير گرايشهاي مهندسي دارد، در عين حال بيانگر موضوع بسيار مهمي است: راه حلهاي ما هنوز جواب مسئلهاي كه با آن روبرو هستيم، نيست(كمي آهسته، كسي نشنود

). اين مسئله چيزي نيست جز تغيير و پيچيدگي.
A Fairy Tale
Once upon a time there was a Good Software Engineer whose Customers knew exactly what they wanted. The Good Software Engineer worked very hard to design the Perfect System that would solve all the Customers' problems now and for decades. When the Perfect System was designed, implemented and finally deployed, the Customers were very happy indeed. The Maintainer of the System had very little to do to keep the Perfect System up and running, and the Customers and the Maintainer lived happily every after.
Why isn't real life more like this fairy tale?
Could it be because there are no Good Software Engineers? Could it be because the Users don't really know what they want? Or is it because the Perfect System doesn't exist?
Maybe there is a bit of truth in all of these observations, but the real reasons probably have more to do with certain fundamental laws of software evolution identified several years ago by Manny Lehman and Les Belady. The two most striking of these laws are [Lehm85a]:
A program that is used in a real-world environment must change, or become progressively less useful in that environment.
In other words, we are kidding ourselves if we think that we can know all the requirements and build the perfect system. The best we can hope for is to build a useful system that will survive long enough for it to be asked to do something new.