Tuesday, December 18, 2007

Traditional and Agile

There is a recurring dispute between these two approaches for software development process: traditional and agile. Which one is better? It depends on the goals you want to reach and on the context of the project, the organization, including its professionals: the experience and skills that they have, and those that they do not have. Concerning the project, it makes a great difference if the project is for a critical safety system or an e-commerce website.

I certainly agree that there are advantages in each approach, but there is not a one-fits-all approach, the decision of which one to use depends on the entire context: business strategy, type of system to be developed, type of development, requirements to be addressed, characteristics of end users, skills of professionals, size of development team, limitations (on time and cost, for instance), time to market, competition, etc...

Could we say that agile is appropriate only for smaller teams? Should we say that traditional suggests a larger methodology? I would certainly prefer a less restrictive point of view. Whether you are more formal or more lightweight, it is advised to consider the context before making a decision.

I will come back to this topic, so if you have any stories of applying one of these approaches, share them with us!

Friday, December 7, 2007

UPi in ACM

UPi is available in the ACM Digital Library. UPi is a Software Development Process aiming at usability, productivity and integration, which was created during my Masters at UNIFOR, where I participated in research projects in the Lab of studies on the Use and Quality of Systems (LUQS) coordinated by Elizabeth Furtado. If you want more details, you can download my masters dissertation from my website.

What makes UPi special is that it bridges the gap between Software Engineering and Human-Computer Interaction with a clear concern on Return on Investment. But what called my attention these past days was that I can once again use it with my current research goals. One of my main focuses now is to define a strategy to help professionals in defining a new method for their organization or projects, or in updating the current one based on specific needs.

I have defined a set of activities, roles and artifacts to be used in a software development process for specific disciplines, namely: requirements, analysis and design, implementation, deployment and test. But considering that software organizations also need to apply other disciplines (e.g. project management), as well as other activities in the existing disciplines; there is still the need to support merging UPi with other processes.

I am currently studying techniques to assemble pre-existing processes in order to create a particular process to address specific needs of projects. Once I have a strategy defined, I will share with you how UPi can continue expanding in the research community and who knows, one day... new horizons...