Software entropy: the process of re-engineering in software development is the process of increasing software entropy.

Source: Internet
Author: User

The first version of each software project is beautiful. The new project starts from scratch and all content is newly developed. Because of all-new development, there is no historical burden. The first version has very few bugs. Of course, programmers also try their best to do their best. This means that in the eyes of developers, the first version can be regarded as perfect: the code is beautiful, the design is good, and the architecture is excellent.

Once the first version is released, bugs will be discovered and published. These bugs need to be fixed. The starting point of the second version is much higher than that of the first version. The second version is not from scratch, but based on all problems. In addition, for most software projects, there is often not enough resources and time to do things perfectly. So the adjustment and modification of the new version is not as beautiful and neat as the first version.

In this way, software entropy will be constantly increased in subsequent versions, and the code becomes increasingly difficult to maintain. Maintenance developers began to complain every day, especially when the original author of the Code is unable to contact, the complaints become more serious.

One day, the project will be in a specific stage. At this time, developers can only say, "don't touch this software !". The code is like a mess, and any changes may make some functions unavailable. The problem is getting bigger and bigger. Finally, the information the management receives is that the software is very ill. They may decide to re-develop the software.

It is very likely that it takes much longer to develop new versions than originally planned. In addition, it may have fewer features than earlier versions. But this new version will be very nice and neat. Obviously, this version starts from scratch. From the design perspective, there will be no problems. This version is as elegant and beautiful as the first version. Now we have finally achieved our expected goal.

In fact, problems in the first version will also occur in the latest version, and the code will become messy again. Someone needs to maintain the code and introduce various modification methods, all problems that occur in the first version will be reproduced one by one. Until someone makes up their minds and wants to fundamentally solve the problem, there will be the previous re-writing. Although a lot of effort has been made to re-develop a new version, every time we go back to the starting point and repeat our previous mistakes. This kind of effort is in vain.

We often think of a better outcome, but in the end, we often make the same mistake again. So there is no reason for us to start from scratch. If you want a better result, you need to change the development method. Only after the development method is changed can there be better results.

All in all, you must learn how to use the agile development method of incremental iteration and small step forward! Software needs to be improved, but the harm introduced during the improvement should also be minimized, especially to avoid the use of abnormal means, regardless of the design shortcuts, to increase functionality.








Reference books:

Practical API design: Confessions of a Java framework effecect

Chinese Translation: The art of Software Framework Design

Software entropy: the process of re-engineering in software development is the process of increasing software entropy.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.