Are we turning out better software than we were 15 years ago? To answer this question, we turned to the classic software quality measures from J McCall to see how current software development measures up.
But before we start, let's turn back the clock and remember what software development was like back 15 years ago.
In those days, most of us were writing character applications for mainframes, minis or PCs. Most PCs hadn't been networked because of the expense. The Mac people were doing their GUI thing over in the corner and the PC LAN guys were using 4GLs against an ISAM database. It was the heyday of Dbase, Paradox, Clipper and Foxbase on the PC, and Cobol and RPG on mainframes and minis. Most mainframe folk had made the change to SQL but were still using early third-generation languages and command-line compilers. Developers on AS/400, VAX and HP1000 minis were still using whatever proprietary tools the hardware vendor felt like giving them.
Nowadays the vast majority of developers are working on PCs, and most are developing using Windows – even if they are not developing for Windows. However, there are an increasing number of developers developing for and on Linux (and other free Unix variants such as FreeBSD). Fifteen years ago you could still find the odd punch-card reader around (although they were mostly used as an instrument of torture for computer science students).
Now, integrated development environments (IDEs) are the standard, complete with remote debugging, code completion and all sorts of whizz-bang tools. And no longer do programs take hours to compile – if they take minutes then you’re talking an enormous program like an operating system.
So for developers the tools have got better, but what about the software that we produce with these tools? Let’s look at McCall’s software quality index and see what 15 years has gained us.
Maintainability - can I fix it?
Flexibility - can I change it?
In most cases the answer to this is a yes. Most windows applications allow all manner of changes to the user-interface – customisable toolbars and menus, colours etc. The question is whether this flexibility is the right sort of flexibility, or whether it has just provided too much complexity for the end user. Gargantuan suites like Office provide all possible functions, but the majority of users only use a fraction of them. So yes you can change it, the question is how and is the change what you really need.
Testability - can I test it?
Good effort, not sure about the results. Many software houses are now using regression testing due to the availability of good testing tools. Object-oriented programming provides the ability to simplify components of functionality into simpler more easily testable chunks. But the greater complexity of today’s applications still means there is a lot of room for bugs to creep in that are hard to test.
Portability - Will I be able to use it on another machine?
The advent of Java may have stalled the Intel-everywhere syndrome but, basically, this is much less important than 15 years ago due to the demise of the proprietary platforms. Windows and Unix rule okay! Standards also help – except where they are “extended” by helpful vendors.
Reusability - Will I be able to reuse some of the software?
Excellent progress. If we have achieved nothing else in the last 15 years, we now at least understand how hard (and how necessary) version control is in a component-oriented reusable landscape. However, the wide variety of ActiveX and Delphi components and Java libraries are an indication that the reusable component world is alive and well.
Interoperability - Will I be able to make it work with another system?
Showing great promise but not much delivery – yet. The verdict is still out on Corba. COM, COM+ and DCOM had problems with deployment and speed, and were really only for the Windows platform. But XML and SOAP or XML-RPC may yet provide a workable solution.
Correctness - Does it do what I want?
Another good effort. Those clumsy CASE tools have all gone or at least you have more choice. Unified Modelling Language has provided us with a sound set of concepts and our universities are turning out trained students. There are more off-the-shelf applications available, providing a greater range of choice to consumers, and ensuring that developers focus more strongly on user requirements.
Reliability - Does it perform accurately all of the time?
Due to the more complex technical platforms that we have wished upon ourselves, and the move to event-driven GUI programming, it would probably be true to say that our software is significantly less reliable than 15 years ago. But if our software causes a blue screen of death, we just reboot and blame the Microserfs.
Efficiency - Will it run on my hardware as well as it can?
Another real bad one, guys and gals. Why is it that the faster the processors, the larger the hard drives and the greater the quantity of memory, the more the programs we produce increase in size and decrease in speed? And much of the time there’s only incremental increases in functionality. Code bloat is rife.
Integrity - Is it secure?
In those pre-web days every host or LAN was an island, and protecting the data usually only meant hiring security to collect and store tape backups and locking the door to the computer-room with pass-card access. Now with connected networks we have to work much harder to keep our information secure. Firewalls, encryption and physical security are all a much greater issue now, and will require much more focus from here on in. On the other hand, hardware reliability has improved dramatically thereby increasing the reliability of our data storage.
Usability - Can I run it?
Briefly we had this problem almost licked. It had to be battleship grey and conform to Apple Macintosh or MS Windows style. If you could drive a mouse, you could drive anything. Recently, we have let creativity sneak back in with the advent of the web and even let graphic designers get involved. Let’s not even talk about Flash.
So what’s the conclusion? Basically we’re running a solid C average at present. As teachers would say, room for improvement. Perhaps another 15 years and we might be looking at an A average? Of course by then the goal posts will have shifted again. If we were still developing character-based applications on green screens we’d have licked most of these problems by now.
Evans is IDG Communications' online business manager and Reynolds is the owner of Auckland consulting company Windows Software Factory.