Happy Passover or Easter weekend to you all. RJLRef: $CASE/bdelog2ks/BugClassification.2k0421 In response to a question from Jeff: On Apr 20, no class was held - bde still needs testing, and bde bugs need a classification scheme. This classification is a tree with a top-level split into build (static/compile) and run (inspect/trace/execute) types: 0: build 1: run Build-time bugs MAY have been fixed on alphas but still exist on decstations. (But don't worry about the latter unless your familiariaty with OSF/Ultrix library version and environment differences can help my remus build process. :-) Myers: The Art of SW Testing, and Humphrey on testing recommend inspection and bug-classifying checklists which partition runtime bugs according to the semantic type of the source code error. The root of the runtime branch of the bug classification tree can be divided into computation vs. data structure problems : 0: build (make/compile) (Precondition to run-time testing) 1: run (inspect/test) 1.1 Computation (local) 1.1.1.* compound block type (loop, conditional, sequence) 1.1.2.* I/O (file/record/field level?, error type) 1.2 Data Structures (non-local) 1.2.1.* persistent data type (pfkey relations?) 1.2.2.* internal data type (pointers?) Computation problems tend to be simpler to fix (e.g., they can often be localized to one assignment target (NULL Ptr?) or expression). Compilers can report Warnings that deserve attention as run-time risks; Code inspectons can find bugs and either fix them before testing; compiler warnings can be exploited to focus tests and assertions on likely sources of problms; pay attention to the ways these warnings suggest potential risks. Data/state problems are harder to fix, precisely because errors in static or persistent data can be introduced at anytime before they are first detected, hence the value of pre- and post-condition assertions, refactoring and ghost variables to expedite detection. Code inspections or enabled assertions may detect the insertion times of these runtime errors without tracing backward from the crash. So I expect you to classify bugs by describing the detection and repair processes you employed, not just about the type of syntax or semantic error that was responsible. Quantitative measurements, like identifiying time-of-detection and method of diagnosing and labor to fix the bug, are important metrics to improve quality because information on cost-benefit rations is needed to direct improvement effort. Now that bde builds OK on alphas (but not on decstations) it's time for more test runs that crash bde and follow-up runs that trace the cause[s]. Each of you should become proficient at both; from your reports we may be able to aggregate enough bugs and fixes to see how our bugs distribute over the classes above. Note that fixing the bug is a perequisite to classifying it by its cause. >> Date: Thu, 20 Apr 2000 17:07:10 -0400 (EDT) >> To: Bob Lechner >> cc: 2ks523 >> Subject: Master build is fine. >> >> I just did the master build. It looks fine. >> make -e | tee result >> >> The result of the build is redirected to >> /nfs/jupiter/proj3/case/bdelog2ks/she/bde/result >> >> I can not go to class today because I have monday's class to go. >> >> Shuiqing He (Scott He) >> >> Scott's build result looks clean, but it didn't re-run genv11, He also used the default error/warnings reporting level. To aid in finding suspicious code, warnings should be turned on. Here is -Wall at man gcc line ~863: --------------- -Wall All of the above `-W' options combined. These are all the options which pertain to usage that we recommend avoiding and that we believe is easy to avoid, even in conjunction with macros. --------------- A complete rebuild should run genv11 also. Here are the steps to do that: The pr_util/Makefile does this if the schema.h file changes. ------------- [tern1](62)> cat ~lechner/bde2alpha_rjl/buildbde # do this in bde's parent directory: - RJL 2k0420 xmkmf -a cd bde # do this to run genv11 again: touch schema/*.sch # do this so g++ links instead of cxx: setenv CXX g++ make -e ----------- ========================================================== You should also do make clean before you build on a different (decstation) platform and on return to alphas. Right now I am stymied by a problem with Imake rules for decstations where printenv says: OSTYPE=ultrix, MACHTYPE=mipsel. The Imakefile contains #ifdef UltrixArchitecture dependent code. I tried xmkmf -a on remus: xmkmf -a on remus first needed , whch I copied from jupiter. Then xmkmf -a complained as follows about bde/src/Imakefile (but not about pr_util/Imakefile) ------------- cd src; imake -DUseInstalled -Dnostdinc -I/usr/lib/X11/config -I/usr/lib/Xm -DTOPDIR=../. -DCURDIR=./src; make Makefiles Make: Must be a separator on rules line 453. Stop. *** Error code 1 ------------