Reducing software defects: 10 things to keep in mind

I’ve been involved with software development for over 12 years now. Over that period I’ve been a developer, architect and a project manager in different software projects. So the following list of 10 things relating to software development (and the key issue of software defect reduction) made a lot of sense.

  1. Finding and fixing a software problem after delivery is often 100 times more expensive than finding and fixing it during the requirements and design phase.
  2. About 40-50% of the effort on current software projects is spent on avoidable rework.
  3. About 80% of the avoidable rework comes from 20% of the defects.
  4. About 80% of the defects come from 20% of the modules and about half the modules are defect free.
  5. About 90% of the downtime comes from at most 10% of the defects.
  6. Peer reviews catch 60% of the defects.
  7. Perspective-based reviews catch 35% more defects than non-directed reviews.
  8. Disciplined personal practices can reduce defect introduction rates by up to 75%.
  9. All other things being equal, it costs 50% more per source instruction to develop high-dependability software products than to develop low-dependability software products. However, the investment is more than worth it if significant operations and maintenance costs are involved.
  10. About 40-50% of user programs enter use with nontrivial defects.

More on each of these points can be found in this expanded article entitled, Software Defect Reduction Top-10 List, by Barry Boehm, USC and Victor Basili, U. of Maryland.

�

Finally, Skype on my iPhone!

I’ve been waiting for an app that would allow me to make Skype phone calls from my iPhone.! And it is here… woo hoo!

It is called “Fring” (and it is now an accepted terminology to use the word “fringing”!).

It not only allows you to make Skype calls and do Skype chats, but also integrates with MSN Messenger, Google Talk, Twitter and a whole lot of other chatting services.

Check out the Fring site for more.

Installing it was a breeze. And the interface is really nice and simple. It uses WiFi to make Skype calls. So if your phone is connected to WiFi, you can make Skype calls.

Fring is also available for other handsets like Wi-Fi Symbian 8 or 9, Windows Mobile 5 or 6 and UIQ.

Online tool for creating Apache .htaccess files

Creating/modifiy the Apache webserver .htaccess files by hand can be a bit of a pain at times.

Today I came across a website that lets one generate an .htaccess file using a nice, Ajax-y web interface.

For example, to setup authentication, one has to create a user. You can do that by simply filling out a simple form like:

Create htaccess file

And this gives you contents that you need to copy across into your .htaccess file.

htaccess file content

Very neat and very useful.

You can use the tool here: Create .htaccess files online

Dumping MySQL databases using Groovy

Today I needed to use Groovy to create a dump of all MySQL databases on the MySQL server running on my local machine.

So I looked at my earlier blog entry on how to dump MySQL databases using the “mysqldump” command.

So when I issued the command create a dump from console, the contents of the database are dumped to a sql file as expected.

// Works in command line
mysqldump --all-databases -u [username] -p[password] -C > alldatabases.sql

As you might know, it is fairly straight-forward to execute shell commands from Groovy. You simply put the command in quotes and call the execute() method.

However, when I issued the same command using Groovy, the command did not work… well, at least not at first.

After some head-scratching and pondering over the help documentation of Groovy and MySQL, I found that the correct way to call the mysqldump command in Groovy is:

// Works in Groovy (as well as command line)
/usr/local/mysql/bin/mysqldump --all-databases -u [username] -p[password] -C --result-file=alldatabases.sql

The basic issue was that the “>” symbol (to redirect output to file) does not work as one expects in a console. If you use Groovy to issue command that contains the “>” symbol, the command will silently fail (which is rather frustrating).

Thankfully the mysqldump command provides an alternate way to dump SQL to a file — the “–result-file” option (which does the same job as “>”). Using this option instead of the “>” symbol does the job very nicely.

Another minor issue was that when issuing the command from Groovy, I needed to fully path the mysqldump call. So, in my case the call was to /usr/local/mysql/bin/mysqldump rather than mysqldump.

Oh, and BTW, this is my first post on Groovy. More will come 🙂

New Zealand, a great place to do business (including software development)

Just found this blog entry that speaks of why New Zealand is a great place to do business. Some of the reasons mentioned are:

  • At 30%, the corporate tax is lower than or equal to most developed countries?.
  • Our GST is only 12.5%, in most developed countries it is 15-25%.
  • Workforce participation is 68%, very high by international standards.
  • ACC provides no-fault income insurance, meaning businesses to not have to go to massive expense insuring themselves against litigation by injured workers and hiring lawyers to defend themselves.
  • Ease of doing business is New Zealand is second in the world only to Singapore.
  • This is the least corrupt country in the world.
  • Corporate profits were up 60.5% in just six years from 1999 to 2005.
  • Only 0.54% of businesses failed last year.

Plus it offers a great lifestyle!

On the downside, Internet connectivity less than average, but is getting better every year.

But if you can be happy living on a large, very pretty island, New Zealand is the place for you.

I came to New Zealand five years back and have been working in the area of software development, and have enjoyed every minute of being here.