What I have learned from usability

This issue has three fascinating papers. The first, A new method for testing timed systems, by Bonifácio and Moura, presents a discretization method for timed input/output automata that allows grid automata to be constructed in a more compact manner (recommended by Alan Hartmann). The second, It really does matter how you normalize the branch distance in search based software testing, by Arcuri, analyzes different normalizing functions for branch distances in search algorithms and presents a new and improved normalizing function (recommended by Mark Harman). The third, Ranking of software engineering metrics by fuzzy based matrix methodology, by Garg, Sharma, Nagpal, Garg, Garg, Kumar and Sandhya, presents a new framework for ranking software engineering metrics (recommended by Min Xie). I have recently been working on a project about usable security. An interesting thing I have observed is the many similarities between usability and testing. To start with, they both address emergent properties; that is, they address aspects of the software that do not exist until the entire system is completed. Of course, we can (and should!) test software piecewise, but some faults are not visible until the system is entirely integrated, and we certainly cannot measure reliability until the entire system is present. Usability is even more emergent—there is really no sign of usability until we get the user interface of the system in place. Many engineers and educators view usability and testing in the same way: as being unimportant to the real work of building the backend software. Or worse, usability and testing may get in the way of the real work. I think that the most important way they are similar is in their historical progression in relation to software success. In 2000, both testing and usability were relatively unimportant to the success of many software products. In 2013, however, both are now crucial to the success of most software products. In simple terms, without usability, customers will not buy software. Similarly, without the increased reliability that comes with good testing, customers will not buy software. Finally, there is one other way in which usability and testing are the same. Most practicing software engineers studied computer science in college and were taught little or nothing about usability or testing. How many undergraduate computer science programs have a course in usability? How many undergraduate computer science programs have a course in software testing? Does your program?