Is Design Dead?


In this long article by Martin Fowler, he talks about software design and its applicability. This article was written in 2000, with its final revision on 2004. Still, the concepts he talks about are still applicable up until this day.

He talks about the main styles of software design, which are planned and evolutionary. As he states, the main problem with planned design is that is really difficult to foresee the changing requirements of a system as it keeps growing and evolving. So that can become a problem, as sometimes the issues that come up can become more difficult to handle on the original design approach.

On evolutionary design, the design keeps changing as the project is developing and becomes part of the programming processes. The issue is that it becomes messy and hard to track down the in the long term, making the code harder to maintain and more prone to bugs.

When Fowler talks about how design applies to Extreme Programming (XP), he also says that XP tends to go into the evolutionary design. But he says that because of continuous integration, testing, and refactoring, provide a new environment that makes evolutionary design plausible. But still haven't yet figured out is where the balance point is between design and refactoring.

He also talks about keeping the code simple, and also how difficult it is to keep it that way, but how the use of software design patters can help to achieve simplicity, but also is important to you identify when exactly is right or not to use them.

He also talks about UML and how it is difficult to keep changing the diagrams as the codes changes continuously, making it almost impossible just to keep up to date with the changes in the code being reflected on the diagrams. So, the approach he suggests is that you should only use the diagrams to get the main classes, attributes and operations without getting into all the details, just get the important ones. This is the best way to communicate the main ideas and make them easier to understand for the rest.

So, in my opinion, and despite the fact that the XP methodology is not the most used in the present, as other agile methods have gained more popularity recently, such as Scrum, this old article has some great insights into the complexities and how any methodology has pros and cons and how software design also has evolved.

Comments

Popular posts from this blog

Who needs an architect?