Management Article: What is quality software?

(This is from a E-Zine for developing in Progress. URLs and such are out dated.)

Written by Scott Auge [email protected]


The open source movement has been a major factor is building quality software. Just recently on the Progress E-Mail Group (www.peg.com), there was a small contest to improve the speed of a program that base-64 encoded an attachment for email. There was a program already available made up of many lines of code and did not function very fast. After word was sent out about a free steak dinner, within hours the program had been re-written using perhaps 50%-60% fewer lines of code and nearly 400% faster in execution.


Quality software can be viewed as a combination of the following factors:


Quality = Functionality + Reliability + Integrity + Efficiency + Maintainability + Ease of Use + Flexibility + Uniqueness + Client Satisfaction


Examining this event, one can see from the above formula how the base-64 encoding software changed in quality. The areas of the formula touched where Efficiency, Maintainability, Ease of Use, and Client Satisfaction. By increasing the speed it could encode attachments, the efficiency of the software certain became a higher value. The reduction in source code made the program more maintainable because less analysis would need to be performed to understand how the software worked. With the increased speed of the source module, ease of use and client satisfaction became elements of an improvement in quality.


Examining the elements of quality software, one knows right away functionality plays a major role. If the software does not do what a user needs it to do, then the software does not fit the scope of the work it is to do. Traveling down the slippery slope, one can also say that even though the software does what the user wants it to do, it may not do it the way the user was hoping it would do. So in defining a metric for the quality of software base on a ranking system, at least these values are needed: one if the software actually does it, another for the software does it, but not in a desirable manner, and a third for software that does it in a desirable manner.


Another facet of quality software is reliability. How often does the software crash, come up with the wrong derived data (1) or abend (2)? If the software does stop undesirably, are the error conditions spelled out and the corrective actions documented to get the software going again?


In this day of go-go-go, software efficiency needs to be examined. Not only the efficiency of computation, but the efficiency the software provides to the user. This should be examined on two fronts. One is computational efficiency. The other is the efficiency of the work flow process it is used within the company. A piece of software might be able to allocate inventory for a large BOM ten minutes faster than another, but the work required to get the software to do that in “people” time could ruin the efficiency of the software in the expense of time and user frustration. Other areas of efficiency that can be measured is the size of disk space and memory required for a certain application to function properly.


The maintainability of the software is an important aspect of quality software. I knew of one program where the programmer wrote with the variable names fork, knife, and spoon! Whether the source is viewed by the world or by new programmers within a company, it should be written so it can be easily digested and improved upon. There are many differing opinions on how to achieve this however and beyond the scope of this article!


If software is hard for a user to use, then Ease of Use becomes an issue. Of course, if the user must jump through hoops to get something done, then the issue becomes relevant. As an example, under SAP, placing an order for a part requires the part to be set up else it fails. The process of creating a part within the application is one of the most complex and frustrating processes in the application. It would be better if the software realized that the part was not available, and would prompt the user with the basics needed to create the part. Another Ease of Use issue is the requirement of users to remember various codes. There was a ticket system at one of my work places where by the drop down boxes where filled with letters and numbers that had little meaning to me. Needless to say, the phone was picked up more often than the software used.


Flexibility of the software also plays a role in quality these days. The business market place changes daily and the processes and procedures needed to handle that market place need to be able to change with it. As the company learns it’s market place, and the needs of the customers in it, software should not stop the company from modifying it’s processes to take advantage of behaviors in the market place by it’s customers! (In fact, the configuration article written above is meant to help software developer’s achieve quality software by making the software more pliable and flexible by changing certain values that might be part of the business decision making process – i.e., one of the configurations could be Accounts Receivable accumulated by a customer before a manager needs to make an approval of additional purchases.)


Product differentiation has always been the key to the auto industry selling different kinds of cars – hence software uniqueness is important also. Software is less of a product, than it is a service within an organization. If one thinks about it, it acts a lot like a “knows it” guy one can ask a question of about something happening in the company, or performs automated tasks for a set of users – i.e., a service. One of the benefits of writing one’s own software or modifying existing software is the profit motive of running your company different from others. By differentiating your company process from that of others, allows you to discover and utilize new cheaper/more productive ways of doing things (compared to those competitors who use off the shelf software – if one knows what they use, one has a good idea how their company works!) It is the differentiation of the software that prevents the “buy at the lowest price” argument by potential purchasers.


And of course, satisfaction of using the software. This is not only that the software does what the user wants, how the user wants it, but the interaction between the user and the software provider has been a good and rewarding experience.


A lot of these ideas come from a book entitled “Measuring & Motivating Maintenance Programmers” by Landsbaum & Glass. ISBN 0-13-567827-7 Unfortunately is it out of print!


About the author: Scott Auge is the founder of Amduus Information Works, Inc. He has been programming in the Progress environment since 1994. His works have included E-Business initiatives and focuses on web applications on UNIX platforms. [email protected]

1 Derived data is computations and transformations performed on input data to yield new data.

2 Abnormal End – ended with an error of some kind – that is the software is fragile.

要查看或添加评论,请登录

Scott Augé的更多文章

  • Useful Tool: PHP Wiki (mediawiki)

    Useful Tool: PHP Wiki (mediawiki)

    So many times programmers (or other) want a tool that can be a quick document for work out there. Something to answer…

    1 条评论
  • Menus And The Like On PHP Programs

    Menus And The Like On PHP Programs

    Since it is snowy out today and I have experienced four stokes so don't mind the spelling if it you see an error, I…

  • GetValue() for form/url nvp and cookies with PHP

    GetValue() for form/url nvp and cookies with PHP

    When dealing with PHP and you have Webspeed experience (https://progress.com), it might be useful to create a GetValue()…

  • PHP to 4GL/ABL

    PHP to 4GL/ABL

    Added Entry() and NumEntries() to PHP code for a string of comma delimited substrings like the ABL/4GL has. Also…

  • PHP Code and Dictionary Help Tools

    PHP Code and Dictionary Help Tools

    There are a lot of times when a form on a web app wants information already in the database. Such as the example below:…

  • Queue in PHP (Code)

    Queue in PHP (Code)

    Of course if I write about Stacks(1) (LIFO - Last In, First Out), then I got to write about Queues(1) (FIFO - First In,…

  • Simple stack in PHP (Code)

    Simple stack in PHP (Code)

    Here is a class called Stack that implements a stack. A stack is one of the basic data structures one learns in college.

  • Simple stack in PHP/Maria (Dictionary)

    Simple stack in PHP/Maria (Dictionary)

    This is a dictionary used for a simple stack code in an upcoming article. First of all, what is a stack? Well, it is…

  • HTML/JAVASCRIPT Validating Inputs (using Workbench)

    HTML/JAVASCRIPT Validating Inputs (using Workbench)

    Had a question: How do you validate inputs? (I do pay attention to my comments!) A good question (and gives me the…

  • PHP File browser added to workbench

    PHP File browser added to workbench

    Added a file browser to the workbench (for those of ya who have many test programs!) A new button appears on the bottom…

社区洞察

其他会员也浏览了