lunes, 8 de febrero de 2016

Is Design Dead?

Programming is an activity that involve a lot of dedication and passion because in most of the cases the fact of doing a good program from scratch is something that can be a really easy or difficult task, all of this depending of the person that it's in charge and its abilities involved in the planning and design of how to do the task.

Like Fowler (2004) mentions in his article "Is Design Dead?", that in the software development context exist to ways that the person in charge of developing a program can choose which are "evolutionary design" and "planned design", where the first means that the design of the system grows as the system is implemented and The other approach is called planned design, where the designers think about the big issues in advance, there's no need of coding, they just build the general part, and they handle the result to other team, let's say "the programmers team" to actually code the design. Of course, it is practically impossible to think of all the issues you may have, before actually having something, so when you are programming there are questions that emerge about the design, and changing the whole design, yes that's also a lot of work and not all the time works, cause, what if the designer is gone and you cant understand?. So we have a big problem here and it is called "changing requirements". Some say that building the design kinda flexible, leads us to a good way to change our requirements. Thanks to some practices provided by the XP (Extreme Programming) as continuous integration, testing and refactoring, among others, this way can be a very good option.

The XP uses evolutionary design but with the underlying assumption that it is possible to flatten the change curve enough to make this design work, so that for example a change made in analysis for $1 doesn't cost thousands to fix in production. So, in XP they need several things to get this working correctly, first of all they need continuous integration to keep the team in sync, refactoring, which makes the code more understandable and finally, testing; with these three things, XP can achieve its results using evolutionary design.

One of the most important things XP relies on, is "Do the simplest thing that could possibly work" and "You ain't going to need it". So what I understood here is that we don't have to code features that are not gonna exist yet, because we don't even know if we are gonna need them in the future, and the design becomes more complex if we do this. To make our code simpler, XP gives us a criteria for our system: it runs all the tests, has no duplication, reveals all the intention and has the fewest number of classes or methods. Another point here is to refactor, because even though it doesn't add function, it makes our code simpler, so we should refactor every time we can.

Now, all the above is information that proof that the design is not dead, is like Fowler says "changing" and this give us to the programmers the idea that the design doesn't have to be avoided of the process of how to do the task of making some program because the design is the warranty that the program is going to result as a high quality product where the software entropy doesn't exist or is very small. This also proof that the software architecture is a very basic aspect of a process where is involved the development of a program because this activity allows to include the foundations in which all the rest of the elements are going to be based and related which is something that secure the good quality of a software product.

If you're interested in reading this article, here is the link: Is Design Dead?.

No hay comentarios:

Publicar un comentario