1 Nov 2005
I believe strongly that a significant component of the “low software quality” problem-space is failure to understand and appropriately respond to product requirements. In my opinion, it is a given that if you cannot determine or express the product requirements you cannot fulfill them with the product. In order to make a dent in this problem I have bought the domain “OpenRequirements.org” and plan to develop an open-source requirements definition system.
In my scheme, all requirements can be enumerated unambiguously; can have “verifiers” (manual or automated) created for them permitting automated and model-based verification. I also believe that open-source concepts need to be extended both into QA and software specification practices. OpenRequirements.org is intended to address both. Briefly, if specifications are not directly verifiable they are not adequate, and the solution must cover both expression and verification of the design in order to be an end-to-end solution.
I’m passionate about making CAD and graphics software better, and believe that consortia like the Open Design Alliance and IntelliCAD Technology Consortium are acting as key forces in the industry helping to drive CAD innovation. The innovation of hybridizing Open Source methodologies, non-profit business practices and the best of commercial software engineering practices provides a glimpse into the future of software development. I am excited to be aligned with these organizations and to help them compete. I believe their primary competition is not other CAD companies but the high cost of CAD, both in direct monetary terms and in terms of lack of innovation, bad usability, and lack of opportunity for vertical application vendors.
I believe a good way to think about how open-source methods and ideas can improve commercial software quality is that they can provide a coping strategy for the following large challenges
|
Challenge statement |
Problem discussion |
How open source-like strategies can address challenge |
|
It isn’t possible to specify all features of the product |
While this is technically true, this is not a valid excuse! Not having a specification authoring tool which can be shared across the proper base of stake holders guarantees that the product will be inadequately specified. |
Opening the specification process up to a wider audience means requirements can be expressed clearly, and eventually satisfied. |
|
It isn’t possible to test every feature of the product |
his is a factual statement, but let’s look further. It is clearly impossible to verify that requirements have been satisfied if they have not been defined clearly! |
Opening testing (what I prefer to call “requirements verification”) to a wider audience means that more testing is done and features upon which others depend can be tested by those who understand the dependencies. |
|
Quality Assurance is too expensive |
In
addition to commonly understood aspects of low software quality (bugs,
crashes, etc) consider the deeper problem… software which fails to
fulfill the requirements of its users. Software which is
ill-suited to solving the users needs is a far deeper quality problem
which our industry seems incapable of addressing. |
|
|
We have no way of finding out which requirements our users will pay us to fulfill |
This issue lies at the heart of the software quality
quagmire. Some have approached this as
a marketing problem (which it is), but have never attempted a technical
solution. |
Creating tools which allow requirements to be expressed unambiguously by those who understand them will lead to higher revenue and customer satisfaction. Using “marketplace of ideas” concepts to rank and de-conflict requirements can practically guide a software development team (similar to how Amazon.com users rank books, or Ebay rates buyers/sellers.) |