Software Requirements Specification


I am currently of writing a fairly large software requirements specification for a client. I am acutely aware that in general people don’t like to read documents, and that large terse documents like software development specifications can be especially challenging. To help reduce the amount of effort that readers will have to put into reading and reviewing the document while attempting to increase its usefulness I am doing my best to follow some simple self enforced rules:

1. Avoid using abbreviations (TLAs)
2. Avoid mentioning technologies – this is a requirements spec. after all!
3. Avoid unnecessary Capitals As Much As Possible!
4. Avoid repeating words in a sentence for no good reason
5. Run the spell checker
6. Add a revision number
7. Print out and properly review on paper before releasing to to the client.

Hopefully if I stick to these rules, then the specification will end up as a slightly ‘better’ read.

Debian external disks – /dev/sda1 /dev/sdb1 randomly swapping

I ran into a funny problem recently with Ridge’s debian fileserver – I connected a second external USB drive to it and it stopped working! It always had one external USB drive connected, this was mapped to /dev/sda1 and auto-mounted in /etc/fstab along the lines of:


/dev/sda1    /mnt/usb   auto    rw    0       0


Everything was running nicely until I introduced a second usb device, this time a large flash disk onto which our automatic backup script is going to periodically dump an encrypted tarball (to provide an easy way for us to move encrypted backups off-site.)


Anyway, I saw that the second disk was mapped to /dev/sdb1 and I optimistically modified /etc/fstab to cater for the new flash disk along the lines of:


/dev/sda1    /mnt/usb   auto    rw    0       0
/dev/sdb1   /mnt/flash  vfat  rw,users,umask=0   0    0


So far so good, after reboot both file systems successfully mounted. But after the next reboot things were not as expected, the original disk was mounted onto the new ‘flash’ mount point and the FAT flash disk was not mounted at all!


With the second USB disk connected the way in which the disks were mapped to Linux devices would change randomly every time the system was rebooted – sometimes a disk would appear as /dev/sda1 and sometimes as /dev/sdb1.  As you can imagine this completely ruined the file system setup as configured in /etc/fstab!!


I had never encountered this before, but after a little research I found a work around – this involved mounting the disks by label rather than by the more traditional device name.


All labelled disks/volumes can be found in /dev/disk/by-label/ , these labels are static and can be used to mount their volumes (instead of using the non-static /dev/sda1 etc.).  Only labelled device appear in the by-label directory, so if you don’t see a disk you may have to give it a label using the tune2fs command. I had to give my original USB disk’s volume a label, I determined that it was currently mapped to /dev/sdb1 and issued the following command to label it as ‘external’:


tune2fs -L external /dev/sdb1


Now with both disks labelled I modified /etc/fstab as follows:


/dev/disk/by-label/external    /mnt/usb   auto    rw    0       0
/dev/disk/by-label/CORSAIR    /mnt/flash  vfat  rw,users,umask=0   0    0


And thankfully that fixed the problem! – with the IT systems purring along I can get back to the many more mundane aspects of running a software development consultancy…

Software Engineering Resources in Ireland

I am about to embark on a little research, I intend to compile a list of resources in Ireland for Irish Software Engineers and Developers. I want to include and bodies, websites, web forums etc. that provide a genuinly useful service to Developers and Engineers in their day-to-day work and in developing their careers in general.


I intend to steer clear of the large for-profit training outfits and that we all know and love and instead focus those resources that really have something useful to offer while not charging a small fortune (times being what they are).  I’ll be checking all around the country, not just in Dublin.


Once I have the list compiled I will post it here, in the mean time if you would like to suggest a resource please post it here or email it to me – Thanks!