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
Post a Comment