![]() |
|
An e-newsletter published by |
September 2004, Vol. 1 No. 1 |
| Welcome to Food for Thought™, a free monthly newsletter from Software Quality Consulting. I've added you to this subscription list because you are one of my valued business contacts. I hope you will find it informative and useful. And of course, please feel free to share this newsletter with your colleagues by clicking the Forward Email link at the bottom of this newsletter. If you wish to continue receiving this newsletter, you need do nothing—it will arrive in your in-box every month. If would rather not receive it, simply click the SafeUnSubscribe™ link at the bottom of this newsletter, and we won’t bother you again. Your feedback on this newsletter is most welcome. Please send your comments and suggestions to info@swqual.com. |
Each month, Food for Thought™ will include articles on a variety of topics related to software development, software engineering, and software quality. Included in this first issue is an article on the importance of good requirements. Regular features to look for each month are:
|
It’s the Requirements, Stupid! For quite some time, we in the software engineering community have known that requirements are important. As Fred Brooks said:
When it comes to learning from past mistakes, we have failed miserably Past performance is the best predictor of future performance. The problem is that all too often we ignore what we’ve learned from the past. We skip over the most important part of the process – figuring out what we need to do – and jump right into coding. Why does this continue to happen?
A Software House of Cards? Imagine if instead of developing software, you are building an expensive house. Wouldn’t you expect that before you started pouring the foundation, you’d have detailed drawings that showed what the finished house should look like, inside and out? Of course you would. And why is that? Well, it’s because architects and general contractors have determined that having architectural drawings and blueprints is the most cost-effective way to build houses. Do you think they would go to all the trouble to create drawings and blueprints if they weren’t necessary? Now you may ask, how does building houses relate to developing software? Well just think about it. When you build a house, there is usually a general contractor (on software projects we call this person the project manager), there are skilled trades people like carpenters, plumbers, electricians (on software projects there are developers, QA engineers, and tech writers). When building a house, it must pass several inspections to ensure that the work meets the national and local building codes (not unlike inspections on software projects). So, you can see that there are striking similarities between building houses and building software. Getting the requirements right is the first step to getting the software right. Without well-written, complete, and unambiguous requirements, it’s difficult to for software engineers to know what to build and for QA engineers to know what to test. Getting the requirements right is also a Best Practice that has been recognized by the Software Engineering Institute (CMM SM Level 2 Key Practice Area), the Airlie Council, and hundreds of companies surveyed by Capers Jones. What can you do? Well, start by educating yourself about the impact requirements have on projects. There’s a wealth of historical information that proves that projects started without written requirements are doomed to fail. For example,
The next step is to get Management to understand the importance of requirements and to require that requirements are a mandatory part of your development process, a step that can’t be skipped no matter how intense the pressure is. Management commitment to having well-written requirements is essential. Lastly you’ll also want to learn how to do a better job of writing requirements. For this, there are a few workshops that may be helpful. See the Calendar below for more details. For additional information on requirements, I’ve included some reference information in the Monthly Morsels below. If you want to improve your software development process, the place to start is at the beginning – with the requirements. One last thing, remember to vote on November 2nd. |
Every month in this space you’ll find reference information related to this month’s topic. This information may include hints, tips, techniques, as well as reference information such as books and articles that are directly or indirectly related to this month’s topic… Tips and Techniques Two of the most useful techniques I’ve learned regarding requirements are: 1. Use Pictures—
Pictures are truly worth thousands of words when it comes to requirements. They are much less ambiguous than words and can convey highly complex information more easily than words. 2. Use Structured English—Structured English
(also referred to as pseudocode) is English written within the basic structures common to most programming languages. The vocabulary used when writing requirements in structure English should be the vocabulary of the problem domain, not of the implementation domain.
Three basic constructs for control flow are sufficient to specify requirements:
Although these constructs are sufficient, it is often useful to include three more constructs:
Using structured English can help reduce or eliminate much of the ambiguity associated with requirements when written in narrative style. Click here for more information on structured English and pseudocode. BooksGoldsmith, R., Discovering the REAL Business Requirements for Software Project Success, Artech House, 2004. Wiegers, K., Software Requirements, Microsoft Press, 1999. Gause, D. and Weingberg, G., Exploring Requirements: Quality Before Design, Dorset House, 1989. Articles Robertson, S., “Requirements and the Business Case”, IEEE Software, Sept-Oct 2004, pp. 93-95. Salit, R., “Requirements are Corporate Assets”, IEEE Software, May-June 2003. pp. 86-88. Anton, A., “Successful Software Projects Need Requirements Planning”, IEEE Software, May-June 2003, pp. 44-47. Neill, C., and Laplante, P., “Requirements Engineering: The State of the Practice”, IEEE Software, November-December 2003, pp. 40-45. Robertson, J., “Eureka! Why Analysts Should Invent Requirements”, IEEE Software July-August 2002, pp. 20-23. Conferences 12th Annual International Conference on Requirements Engineering Proceedings of 11th Annual International Requirements Engineering Conference |
| Every month, you’ll find news here about local and national events that are of interest to the software engineering community. InfoXchange 2004 – September 30, 2004 Nashua, NH The Software Association of New Hampshire (SwANH) is sponsoring the 10 th Annual Conference in Nashua, NH on September 30, 2004. This year’s theme is the value of technology in business. Learn more. ASQ Software Division Postpones 14 th International Conference on Software Quality The Software Division of the American Society for Quality recently announced that 14 th International Conference on Software Quality has been postponed from October 4-6, 2004 to March 21-23, 2005. The conference will be held at the Wyndham Orlando Resort. Learn more. Software Quality Calendar There are many organizations that sponsor monthly meetings, workshops, and conferences. Find out what’s happening. Public Workshops Offered by IEEE Boston Section Are you interested in a workshop or short course on cutting edge topics? Learn more. Public Workshops Offered by Software Quality Consulting If you are interested in information about public workshops presented by Software Quality Consulting, Learn more. If you know of an organization or event that isn’t listed here and would be of general interest, please send me an e-mail with the details. |
| Software Quality Consulting provides consulting, training, and auditing services tailored to meet the specific needs of clients. We help clients fine-tune their software development processes and improve the quality of their software products. The overall goal is to help clients achieve Predictable Software Development™ – so that organizations can consistently deliver quality software with promised features in the promised timeframe. To learn more about us and how we can help your organization, visit our web site or send us an email. Thanks for reading, ![]() Steve Rakitin ![]() |