herraiz.org | Blog
Main | Blog | Research papers | PhD thesis | GnuPG (PGP)
Main | Blog | Research papers | PhD thesis | GnuPG (PGP)
As a part of the course on Software Engineering that I have started to teach at UAX, my students, some fellow lecturers and I will engage in a debate about the past, present and future of Software Engineering. In class, we have just finished learning about software architectures, and object oriented design, with all the heavyweight usual design process. In the next weeks, we will learn about agile methods, extreme programming, etc.
Last week we all read Code as design, a set of articles about how software design is bloated, and about using software code directly as design, without all the overhead documents produced while applying standard design and development processes.
In the next weeks, we will read some other papers, blog posts and other sources, that have dealt with this issue before. The paper by Tom DeMarco in IEEE Software Aug 2009 issue is worth noting. It triggered some comments about the death of Software Engineering, and how software design and development is rather craftsmanship than engineering, and wondering what's the point of Software Engineering.
Interestingly, this month's IEEE Software issue is entitled Architecture and agility, and it is about the coexistence of agile methods and architecture. I have not read the issue yet, but it looks like it advocates for a peaceful coexistence of both.
Most of the students have a strong opinion in this debate: they are on the side of heavyweight methodologies. I am probably a little biased about lightweight and agility, but don't get me wrong, this will not be a fight heavy vs. light methods. We will try to obtain a set of guidelines and recommendations about what methodologies are better in what cases, and how existing processes can be improved, taking in account existing successful experiences that would have been predicted as a failure using traditional engineering beliefs.
We will probably also add a grain of free software / open source software development, both on the side of heavy and lightweight methodologies, and also both for successful and failed projects.
We will add our conclusions and materials used during the debate to a wiki page, that will be published once we get finished (I will based part of my evaluations using the activity of that wiki, so it will not be public before finishing the course to avoid interferences).
If you want to help or collaborate, and know interesting examples to use for this debate, a enlightening paper or whatever, please add a comment to this post. Your help will be very much appreciated.