Jerry Yoakum's thoughts on software engineering and architecture from experience working with code, computer science, python, java, APIs, NASA, data mining, math, etc.
Thursday, September 27, 2018
Prototypes Reduce Risk In Selecting User Interfaces
To reach an agreement on a user interface prior to full-scale development, a prototype is your best choice for a low-risk, high-payoff approach. The simplest of prototypes would be a series of screen displays. These so-called "storyboards" give the users the impression of a real system. Not only do they help nail down requirements, they also win the hearts of the customers and users.
Reference:
Andriole, S., "Storyboard Prototyping for Requirements Verification," Large Scale Systems, 1987.
Labels:
requirements,
software-engineering
Location:
Springfield, MO, USA
Wednesday, September 26, 2018
Determine The Requirements Now
Requirements are hard to understand and harder to specify. The wrong solution to this problem is to do a slipshod job of requirements specification, and rush ahead to design and code in the vain hope that:
- Any system is better than no system.
- The requirements will work themselves out sooner or later.
- Or the designers will figure out what can be built as they are building it.
The right solution is to do whatever it takes to learn as many of the requirements as possible now.
- Do prototyping.
- Talk with more customers.
- Work with a customer to get to know his or her job firsthand.
- Collect data.
- Do whatever it takes.
Reference:
Boehm, B., "Verifying and Validating Software Requirements and Design Specifications, IEEE Software, January 1984.
Labels:
Chicago,
requirements,
software-engineering
Location:
Chicago, IL, USA
Tuesday, September 25, 2018
Determine The Problem Before Writing Requirements
When faced with what they believe is a problem, many engineers rush into offering solutions. I am guilty of this myself - finding solutions and designing systems is an enjoyable activity. However, problems are often elusive. To properly define the problem:
- Explore all alternative options for who really has the problem and what the problem really is.
- Create several solutions for the perceived problem then explore the range of costs, risks, and time delay associated with each solution. While gathering these details you'll likely discover who really has the problem and why the problem really is.
- When solving the problem, don't be blinded by the potential excitement of the first solution.
"Procedural changes are always less expensive than system construction."
Reference:
Gause, D., and G. Weinberg, Are Your Lights On?, New York: Dorset House, 1990.
Monday, September 24, 2018
Poor Requirements Yield Poor Cost Estimates
Poor cost estimation can be traced back to these top five causes that all relate to the requirements process:
- Frequent requirements changes
- Missing requirements
- Insufficient communication with users
- Poor specification of requirements
- Insufficient analysis
Here are some ways to improve your requirements process:
- Use prototyping to reduce the risk of incorrect requirements.
- Use configuration management to control change.
- Plan new requirements for future releases.
- Use more formal approaches for requirements analysis and specification.
Reference:
Lederer, A. and J. Prasad, "Nine Management Guidelines for Better Cost Estimating," Communications of the ACM, February 1992.
Take Responsibility
In all the [licensed] engineering disciples, when a design fails, the engineers are blamed. Thus, when a bridge collapses, we ask, "What did the engineers do wrong?" When software fails, the engineers are rarely blamed. If they are, the engineers respond with, "The error always existed. My change just exposed it," or "I was just following the pattern," or "My manager made me do it," or " The schedule left insufficient time to do it right." The fact is that the best methods can be utilized in any engineering discipline to produce awful designs. And the most antiquated methods can be utilized in any engineering discipline to produce elegant designs.
There are no excuses. If you are the developer of a system, it is your responsibility to do it right. Take that responsibility. Do it right, or don't do it at all.
Reference:
Hoare, C.A.R., "Software Engineering: A Keynote Address," IEEE 3rd International Conference on Software Engineering, 1978.
Thursday, September 20, 2018
Research-Then-Transfer Doesn't Work
The achievements of software engineering research laboratories have difficulties making it into practice. Some reasons would be:
- Software researchers have little experience developing real systems.
- Solving a technical problem is easier than making sure it fits in a real system.
- Researchers and practitioners have different vocabularies which results in difficult communication.
To best improve the chances of successful transfers, you need to from close ties between research and practice in the beginning. Use the industrial environment as the laboratory in which to germinate ideas. Don't try to formulate an idea then transfer it into industry.
Reference:
Basili, V., and J. Musa, "The Future Engineering of Software: A Management Perspective," IEEE Computer, Sept 1991.
Wednesday, September 19, 2018
Use The Same Name For The Same Concept
Technical documentation must always use the same words to refer to the same concept and the same sentence structure for similar messages. To do otherwise could confuse the reader, causing the reader to spend time trying to determine if there was a technical message in the rewording itself.
For example,
There are three types of special commands. Regular commands come in four varieties.is not as good as:
There are three types of special commands. There are four types of regular commands.
Reference:
Meyer, B., "On Formalism in Specifications," IEEE Software, January 1985.
Tuesday, September 18, 2018
Every Software Document Needs An Index
An index is a list of all terms and concepts used in the document, together with one or more page numbers where the term or concept is defined, used, or referenced. This is useful for requirements, design, test cases, and maintenance documents. The index is essential to finding information quickly and during maintenance.
Every Document Needs A Glossary
It is a frustrating experience to read a document and come across a term that is not familiar. The frustration is short-lived; however, when a glossary is available.
The definitions of all terms should be written in a manner that minimizes the need to use the glossary. One technique is first to explain the term in common, everyday terminology, and then add a second definition that uses other glossary terms. Terms used within definitions that are themselves defined elsewhere should be italicized.
Monday, September 17, 2018
Use Documentation Standards
If your project requires that a documentation standard be followed, then, of course, follow it. However, never blame a standard for doing a bad job. Standards exist to provide organizational and content guidance.
Innovate! Follow the standard and do it intelligently. That means including what you know needs to be included regardless of what the standard says. It means writing in clear language. It means adding additional levels of organization that makes sense. If you are not required to follow a standard, at least use one as a checklist to verify that you don't have major omissions.
Reference:
IEEE Computer Society, Software Engineering Standards Collection, Washington, D.C.: IEEE Computer Society Press, 1993.
Subscribe to:
Posts (Atom)