Tuesday 28 July 2009

The Exagon

Since the early days of software development we learned that there were some forces that were determinant for a project's success. We identified the triangle of scope, time, and resources (effort), and used to say to our users: "pick two".


Soon afterwards we understood that those three dimensions were not enough when we found that we could build software that met its scope, was done in time, and reasonably within the estimated effort, but was unusable because it was ridden with bugs and had an unbearable user interface. So we added a fourth dimension to the forces that drive software projects: quality. The typical depiction is a thetraedron because in it every vertex is conected to the other three, but a fully connected graph drawn as a asquare would fit the same purpose. We told our users and customers "pick three", and went on, failing to keep our commitments in about half of all software projects.

What we have found after a couple of decades is twofold. First, that it is never a matter of picking the constraints but of balancing them; agile development, for example, aims for a balance that delivers value earlier, even if it means a longer project and more effort in the end. Second, we found that the four dimensions were not enough, and that we needed to consider two additional dimensions to have a project that converges to closure: architectural design, and project design.

The issue is that it is not possible to build any moderately complex piece of software any way you want. The "best design" may be the one that dooms a project to failure, and a typical per-module process may make a project never ending. Both software design and project design must be flexible and thought out as to accomodate and balance the other forces. The what and the how must be included in the plan. A time-critical project and a quality-critical (or resource -bound) project are totally different beasts, and they must be designed and executed differently.

An example. We all know what an automobile must do functionally, and how much it should cost, more or less. But there are infinite designs to meet the basic requirements, and many strategies to build those designs. Only some of them will be sucessful.

The new criteria add up to the forces that interact and must be balanced to have a succesful software project. They are now: scope, time, resources, architecture, and process. A fully connected exagonical graph.

Sunday 19 July 2009

Still on XP

It's been a while since I last wrote about my plan to migrate from Windows XP to Ubuntu Linux. The plan needed refining, and I needed the time to proceed with the migration. What follows is the transcript from my chalkboard with the current plan.

Repartitioning
The backups and repartitioning were successfully done, and I have read-only access to the remaining Windows partitions.

All of my files are still on the NTFS partitions, but they are well backed up. I'll move them to the Ext3 partitions on a need basis.

I'm reminded that I need to write a Python script to catalogue my backups. I didn't like any of the software out there.

Printing
It works, but the plan is to move the Epson three-in-one to a Windows computer. I'll probably get a new printer that has Linux drivers.

Scanning
I haven't made it work, , but the plan is to move the Epson three-in-one to a Windows computer. Scanning is not a priority for me.

Email
Old email is well backed up. Recent email is also backed up by Google Apps/Gmail. Two of the 12 accounts are not on Google Apps, but one of them is switching, and the other one is well backed up by its administrators.

As to clients, I'll have to learn to live with the GMail interface, and handle the rest with Evolution. I still use my inbox as a task list (even issues from the issue base land there), and

Contacts

They were imported to GMail, and they can be exported from there to VCard format, which almost any contacts software imports.

Just now I needed to find the license and code for Delphi 7, and it was in my GMail contacts, as it was in MS Outlook.

Calendar
It was exported to Google Calendar, with which I can live with. I love the email and SMS notifications.

Web
Firefox works great with every page I visit, thank you, and the Chrome-like skins are fine. The fall-back to a Windows session is still available in case of emergency.

Work
Assume the learning curve with Open Office. Any way, most of what I write these days goes to the Web, a Wiki, or to a PDF.

For graphics, Inkscape seems to be all I need. I've never used Photoshop, and there's Gimp in case I need to do manipulation of graphics.

Photography

Picasa3 runs fine in Ubuntu 9.04/64. I don't need anything else because I don't do much postprocessing these days.

Music
Rythmbox Music Player plays my music fine (I don't care about the files in Windows formats). There have been interruptions in the sound every once in a while, but they may be bacause the music is still on one of the NTFS partitions. The album artwork gets downloaded from I don't know where. Searching works fine.

I still have to test burning a CD to listen to in the car.

Skype
It works.

Teleconferencing
Ekiga works great since the admins opened up the SIP protocol route to my moday telemeetings.

VPN
I haven't been able to make VPN to Windows servers work, but I do very little work in those, and can fall back to a WinXP boot when I need to.

Programming
Python, Java, C++, etc. are solved business with native installations and Eclipse.

The only project that is tied to Windows is TRANUS. I'm testing how things work over the virtualized XP today. Delphi7 works fine, and it does so fast enough. I still need to test the Intel Fortran compiler.

Hardware
Bluetooth is not working, which means that my favorite mouse isn't working either. I'll either have to get a new mouse, or a new bluetooth card/dongle.

My keyboard works fine, but it will get some time to get used to the new US-International layout.

Other
I expected Ubuntu 9.04/64 to be faster, but, by today's standards, my Pentium D is an old machine with too little RAM.

Did I miss anything?