[My image] [Text Version] blog010 Tue Dec 11 14:38:34 PST 2012
Opening the PDF files on this page may require you to download Adobe Reader or an equivalent viewer (GhostScript).


    RJBottings Web Log -- A Long View of Software Development

      About the most practical theories and the most sound practices in software development.

      See [ Invitation to Contribute ] below.

      2010-12-30 Thu Dec 30 08:18 More Rain and then Wind and...

      Briefly no rain damage but last night's wind brought down a limb of a tree that I will cut up into logs later today.

      Meanwhile Mary Jenkins has pointed out a broken link (CSTC) and suggested a link to add to [ samples/etc.html ] on what is computer science. Thank you very much.

      2010-12-22 Wed Dec 22 17:53 Interesting and wet times

      The CSUSB Campus was hit with 19 inches of water in the last storm and had several powercuts. The CISCO routers apparently do not always come up clean.... and our own servers have been known go down when there is no power....

      Hence my apologies if you tried to use this site (like I did) in the last 28 hours...

      2010-12-21 Tue Dec 21 08:22 Happy and Secure Holidays

      2010-12-16 Thu Dec 16 20:18 Happy Holidays

      I don't plan to follow the normal schedule during the holiday season.

      For example I have been invited to a party tomorrow when I normally upload the new bibliograpic items and a brief Blog entry. I expect to be back on schedule by January 11th next year.... but I might post some entries in the meanwhile.

      2010-12-16 Thu Dec 16 17:47 Plea for literate coding

      [Neville-Neil10a] by Kode Vicious.

      2010-12-15 Wed Dec 15 16:42 Tale of two hacks

      First read how a lot of data was stolen from MacDonalds -- [ 41576-mcdonalds-hacked-and-customer-data-stolen.html ] -- then how Gawker [ the-dirty-truth-about-web-passwords.html ] screwed up its authentication procedures....

      Now ask yourself whether even a specially designed language/framework like fabric [ index.html ] can counter normal human stupidity and laziness.

      Never forget that when a computer system fails it is because of human frailties: stupidity, laziness, cheapness, and (more recently) malice.

      2010-12-14 Tue Dec 14 11:40 System Admin Tales

      Gather round the fire and roast some shells..... err... read and enjoy Infoworld latest set of anecdotes [ 145932 ] about the crazy things systems admins do to keep systems running...

      2010-12-10 Fri Dec 10 17:39 Verizon DSL playing up -- Blog entry postponed

      2010-12-09 Thu Dec 9 17:05 Races considered harmful and detectable by raising an exception

      In the late 1970's I learned how simpler code can be if you can decompose a complex problem into communicating parallel processes. All you needed were some coding tricks and even COBOL simulated a non-sequential program. But the other thing I learned was never to share memory between processes. From "Jackson Systems Development" I learned about real life race hazards and how resolving them was a non-trivial (and a system desgn task rather than a programming bug). But many computer people for years have gone in the direction of shared memory and the search for efficiency... So the threaded models in modern language continue this persuit. Now we have a set of three papers: [Adve10] , [FlanaganFreund10] , and [ElmasQadeerTasiran10] all about spotting data races when they occur and raising and exceprion to handle them.

      All I want is the ability to write simple programs communicating by pipes.... just like UNIX.

      2010-12-08 Wed Dec 8 16:28 Mathematics for the Million

      I suspect that I learned a lot about mathematics and science when I was a child from Lancelot Hogben (you can find him in the Wikipedia). I spent days reading "Science for the Citizen" while sick and off-school. SO I was pleased to find a $1 copy of "Mathematics for the Million" [Hogben37] for sale in my local public library. Rereading it was something of a shock. I must have read the book, I can remember some of the math and the pictures, and yet his opinions are somewhat stronger than I remember.

      Whatever here are to delicious quotations -- which I plan to place inside my web site shortly:

      From page 88

        There is always a danger of carrying this so far that we get lost in a maze of symbols. The mathematician then does what the sensible editor does. He brightens up the discussion by bringing in a cartoon. He goes back to his hieroglyphs, to geometry, whenever he can. To go back is not quite the right expression, because new kinds of hieroglyphs such as "graphs" have been devised (like business advertisements) to give a vivid picture of operations which could not be conveyed by the earlier kinds.[...]

        This tendency of number language to come back to the firm earth of figures and models, when doubts arise, has played a great part in building up the rules of what mathematicians call proof. In one sense proof has much the same relation to discovery as art criticism has to authorship. Mathematical truths are usually discovered by experimenting with individual cases first and "proved" afterwards. The proof is then an obituary notice on a praiseworthy statement. It exposes how it is connected with all the other mathematical rules we have learned to use. As we are always learning other rules, the methods first used to justify a rule in mathematics are nearly always held to be lacking in "rigour" by mathematicians who come later. This is how one of our most abstract mathematicians, Professor G. H. Hardy, speaks of one of the most abstract branches of mathematics: "The theory of numbers, more than any other branch of mathematics, began by being an experimental science. Its most famous theorems have all been conjectured, sometimes a hundred years or more before they are proved; and they have been suggested by the evidence of a mass of computations"

      And from page 304's discussion of the problems with word problems:

        What is called solving an equation is putting it in a form in which its meaning is obvious. The rules of algebra tell us how to do this. The really difficult step consists in translating our problem from the language of everyday life into the language of algebra. At this point the mathematician himself may go astray, because the mathematician may have less opportunity for understanding the problem as stated in the language of everyday life than the plain man who is not a mathematician. Once a problem has been translated into a mathematical sentence (or equation), we can safely trust the mathematician to do the rest. What remains is a problem in the peculiar grammar of mathematics. The danger lies in trusting the mathematician to do the translation.

      2010-12-07 Tue Dec 7 19:32 Experiences introducing Scrum

      I'm a little suspicious of Scrum [ samples/methods.html#Scrum ] so I'm not surprised that introducing it meets opposition as reported in this [BerczukLv10] interview.

      2010-12-06 Mon Dec 6 15:12 Monday Bonus -- preparing for next quarter

      I've been updating my generic syllabus [ syllabus.html ] and schedules for classes [ cs201/ ] and [ cs375/ ] but the take home message is: Same text book is required this year and last year.

      2010-12-03 Fri Dec 3 17:16 Why not use Unicode in programming Language Syntax

      Here [Kamp10a] is a nice polemic attacking the habit of programming language designers of using ASCII... why not use color, why not non-linear syntax, etc. Sadly the answer is that we will need a complete new set of editors and even keyboards.

      2010-12-02 Thu Dec 2 20:07 A Fable from Grady Booch

      In [Booch10c] Grady retells the tale of the blind men and the elephant in a software/systems/architecture context. I'm not sure (yet) what it means but it is funny enough to record here.

      2010-12-01 Wed Dec 1 17:34 Rich Media scenarios anyone

      Here are a couple of very different pieces about using rich media in scenarios. First [SutherlandMaiden10] describe the use of "Storyboard Quick" to expose problems in scenarios and so improve requirements. Then [RiccaEtAl10a] present some empirical pointers to the ease of adding screen shots to use cases and so improve understanding.

      2010-12-01 Wed Dec 1 07:04 Prepping CS535 Numerical Computation

      I'm substituting tomorrow for Dr. Schubert's [ cs535/ ] class... and will have trouble finding my material if I don't note it here:-)

      Whatever you do... don't grow old. Mind you, the alternative is not so good either.

      2010-11-30 Tue Nov 30 20:39 Which specification tools

      Continuing the theme of spcifications and reqquirements from earlier posts (below) it is fun to read this recent Slashdot discussion [ 2323253&from=newsletter ] of which tools should used for writing specifications.

      You get the complete gamut of experienced dogmatism and advertising -- don't write specs, write code. Use emacs. Use cards. and some don't use statements as well.

      But at least some people understand that

    1. one size does not fit all.

      I must cut this short because my Verizon DSL Model is acting flakey....

      BY the way -- the latest iOS4.2 for my iPod Touch has fixed the horrible performance problems mentioned earlier...

      2010-11-29 Mon Nov 29 11:19 Two Contributions on Python HTML and Sudoku

      I'd like to thank Rich McGhee for sending me a nice Sudoku solver by Peter Norvig [ samples/python.html#Sudoku ] and Ted Taylor for clarifying [ samples/comp.html.syntax.html#identifier ] (HTML4 syntax).

      2010-11-24 Wed Nov 24 14:38 Happy Thanksgiving

      The next blog post will be on Tuesday 30th of November.

      2010-11-24 Wed Nov 24 11:09 Use Cases are Mainstream non-specifications

      While preparing for a class teaching use cases [ cs372/r2.html ] (and requirements in general), I tripped over an online copy [Cockburn02b] of Alistair Cockburn excellent history and commentary on use cases. I was particularly struck by his remark that use case are not specifications, because I know that use cases have been a lot more successful in practice than the various specification techniques described in the previous posting (below).

      Also striking is Alistair's proposing the use of both informal and formal forms for use cases -- brief, casual, fully dressed. However in his case a formal use case is done by filling in a form rather than using math/logic. If you want to look at my (very derivative) summary of advice and forms see [ samples/usecases.html ] in my Samples on the MATHS notation (and no mathematics or formal logic was used in developing this document).

      2010-11-23 Tue Nov 23 11:37 The Z Notation and Specifications

      This entry starts with finding an old used text book [Wordsworth93] in the "one dollar" bookstore in our local mall. It introduced the Z (Zed) notation [ Z_notation ] for specifying software. I had seen it and Z before [ samples/z.syntax.html ] before but put down my $1 any way and spent the weekend studying Z all over again. It had a nice example to introduce the notation and I transcribed it roughly into my own MATHS notation [ samples/class_managers_assistent.html ] just to prove I could do it. As always the initial attempts were wrong and it took several iteration to get to a description of a system that was close to those described in the text. The next ripple was thinking that the Z notation might be ideal for writing operation contracts as they appear in Craig Larman's book [Larman04b] that I have been using for several years to teach [ cs375/ ] OO Requirements Analysis and Design. This lead me to think about ways of describing changes in a domain model in mathematics (set theory) and hence to an experimental idea for adding operations to Nets... the experiment results in [ samples/class_managers_assistent1.html ] if you are interested.

      It took several attempts to write (pencil, paper, erasor) the spec for the operations contract on pages 183-188 of Larman04b. Interestingly, formulating the contract exposed something I had not noticed before: the Domain model on page 167 shows

    2. SalesLineItem (0..1)-(1..*) Item (*)-(1) ProductDescription, but the contracts and the following designs all presume
    3. SalesLineItem (*)-(1) ProductDescription, and "Item" vanishes from the Design Class Diagram.

      It is typical of any formalization of an idea to expose assumptions and test them. You can get this effect by

      1. Writing specifications using logic and mathematics.
      2. Writing code that tests the software (TDD)
      3. Writing and testing code.
      4. ...

      However, writing mathematical specifications is not popular and does not appear to be a shortcut to code that the user wants tomorrow.

      Evidence of the popularity of Z for example can be found by subscribing to the comp.specification.z Google group that has two messages each day that are about conferences. Nobody is asking questions or providing answers about Z. Compare this to the comp.lang.python group that has 60 messages a day, nothing about conferences, lots about how to do something in Python, and even 3 or 4 spam messages. There is so little activity on comp.specification.z that it gets NO spam!

      But may be the problem is not just Z. Perhaps the problem is the uselessness of all the specification techniques so far developed. This is argued in [Reiss10] whose essay points to the mismatch between specification techniques and the real software that is needed and suggests some ways forward.... my favorite is to find ways for the user to be part of the specification and derive it from the source code... This sounds like it might be both effective and agile.

      2010-11-19 Fri Nov 19 18:44 WHat do we Know about TDD Test Driven Development

      I like test driven development -- it feels like how I've always wanted to work -- despite years of studying so-called formal methods and BDUF methodologies. So what do we actually know? What do the experiemnts, pilot studies and industrial experience papers add up to? See [ShullEtAl10] to see. Basically TDD is not the best thing since sliced bread but their is weak evidence it is worth doing.

      2010-11-18 Thu Nov 18 19:03 Stats on firms offshoring IT Work

      THis article [TambeHitt10]present the result of polling 300 companies and 6000 workers in 2007. It shows that IT jobs are more often offshored compared to non-IT. Technology companies are more likely to send jobs over seas. Similarly programmers are more likely to be offshored that systems analysis. It all depends if face-to-face and hands-on work is part of the role. Not surprising but interesting.

      This backs up what I have always said -- you can't survive without people skills.

      2010-11-17 Wed Nov 17 17:51 Diagnosing performance problems and bugs

      This [Montagne10] paper describes some experiences with debugging frozen systems and diagnosing performance bottle necks by writing fake components with the correct APIs and performance parameters but without real functionallity. They are also created to gather statistics. It is worth struggling with the style to learn about a new type of prototyping and why you've always needed it.

      2010-11-16 Tue Nov 16 20:12 On the Design of Web Cookies

      Cookie design

      Following the furor about Firesheep here is an easy to understand descriptions of how Web Cookies work [ breaking-the-webs-cookie-jar.html ] and here [ http-cookies-or-how-not-to-design.html ] is a description of the process that got us into this mess. Both are worth reading.

      2010-11-12 Fri Nov 12 12:19 Agile 10 years after

      Ten years ago a group of methodologists published [ http://agilemanifesto.org/ ] (The Agile Manivesto). And four years ago Paul Krill reported [Krill06] on a conference presentation claiming that "Agile" was not delivering... We have [ agile-software-development-now-mainstream-190 ] Krill reporting on the mainstreaming of agile processes and now [Krill10] a set of interviews with the people who started it...

      Conclusion -- Not a one-size-fits-all silver bullet of software development but a reason to think about development processes and so improve them.

      2010-11-11 Thu Nov 11 10:42 Rememberance day and Veterans Day

      THis day Americans honor their veterans. I come from England.

      In England on the 11th of November everybody wears a small artificial poppy:

      A Remebrance Day Poppy

      The poppy greww in the battle fields of France and represents the sleep of death.

      Please support the Brittish Legion [ http://www.poppy.org.uk/ ]

      2010-11-10 Wed Nov 10 17:40 Empirical software engineering literatur surveys seem to wook

      One of the classic types of evidence in software engineering is to do a systematic survey of papers on the topic you are interested in. I tag papers and articles based on these as "=SURVEY". These are not to be confused with the other kind of survey where you ask people things and tabulate the result -- I tag these with "=POLL". We now have [MacDonellKitchenham10] evidence that two independent teams doing a SURVEY will come up with similar conclusions.

      2010-11-09 Tue Nov 9 18:31 How checks were cleared between banks before computers and after

      It is useful to study the old ways of doing thing things when we plan to improve them, automate them, or computerize them. But even if this was not so... what is not to love in [Campbell-Kelly10b] description of the proceses and procedures used to clear checks in Victorian times.

      2010-11-07 Sun Nov 7 15:20 Working on Python

      I've just updtaed my Python page be repairing or removing or rationalizing links from [ samples/python.html ] (my Python notes page). It is a pity that all links on the web seem to decay over time.

      Tue Nov 9 07:44:29 PST 2010. Well this is fun.... I've now got a draft grammar and lexicon [ samples/python.syntax.html ] [ samples/python.lexicon.html ] and discovered two surprises. One is [ samples/python.syntax.html#For Statement Surprise ] which entertained me overnight.... and the delights of having elements in arrays that are all actually the same object found on the comp.lang.python newgroup on Google.

      2010-11-05 Fri Nov 5 17:51 Version numbering advice

      Now below we discussed why software has bugs and how to get good bug reports. Clearly we now have to distinguish the different version of a piece of software. As it upgrades its way down into chaos and unmaintanability. If we are not careful to refactor:-)

      As always the Kode Vicious collumn is interesting, provocative, ironic, and based on experience. This [Neville-Neil10] little essay advocates a simple scheme for version numbering

       		Major . Minor . BugFix
      for software and even propose a way to distinguish between major and minor releases.

      2010-11-04 Thu Nov 4 18:49 Improving Bug Reports

      Given that we don't invest enough in software to avoid bugs (see below) then we can release it an invite people to tell us what is wrong with it. However, recent research [ZimmermannEtAl10] shows how useless these reports can be, and suggests an approach, demonstrated by a web based tool, that teaches and encourages users to write more useful bug reports.

      2010-11-03 Wed Nov 3 16:36 Sloppy software is not properly engineered

      Here [Parnas10a] David Parnas who has lots of experience reacts to the typical sequence of events with typical software. He also proposes a solution -- very much the procedures he has advocated for years that might just give software the reliability and safety of older engineering disciplines, but only if the market starts to put a premium on quality rather than cheap, quickly developed software.

      2010-11-02 Tue Nov 2 19:40 Security comes from perpetual paranoia

      Lets start with the latest large scale "I didn't think of that" that has happened. Many popular social networking sites do not encrypt there sessions -- login is via the 'https' secure sockets protocol. But from then one the data can be read and decoded by anybody on the same network... and the session can then be hijacked by the listener. The is a charming named Firesheep plugin into the Firefox [ secworld.php?id=10042which recognises and parses common social network ] traffic -- for example -- what you had for breakfast on Facebook or Twitter. Worse it makes it easy to intervene in someone else's as if you were them.... and cause havoc.

      Cures: [ How_to_protect_against_Firesheep_attacks?taxonomyId=17&pageNumber=2 ]

      User apathy [ herding-firesheep-in-new-york-city.html ]

      2010-10-29 Fri Oct 29 17:34 PEPA described

      [ samples/languages.html#PEPA -- Performance Evaluation Process Algebra ]

      2010-10-28 Thu Oct 28 20:14 Biological PEPA etc

      I also bumped into PEPA as one of a dozen formal methods in biology mentioned in [PriamiEtAl09] which collects papers from a satelite workshop at the 15th International Symposium on Formal Methods at Turku in 2008.

      2010-10-27 Wed Oct 27 17:15 Performance -- PEPA defined later

      I had planned to translate some of the definitions of the PEPA Performance Algebra as found in [Hillston95] as a sample of my MATHS language in action ... but this is going to take some time to type up from this source.

      Meanwhile, here [Hillston05] is the source for the use of ODEs (Ordinary Differential Equations) to track the way load flows in a complex multithreaded system. This is used in the following item.

      2010-10-26 Tue Oct 26 18:51 PEPA -- An Algebra for Performance Analysis

      Continuing the "Performance" theme, here [TribastoneGilmore10] is a paper describing a way to annotate a UML sequence diagram with PEPA comments and then automatically derive a set of algebraic definitions that represent the way the sequence diagram will perform. The paper shows the results of solving the equation by using 37 simultaneous Ordinary Differential Equations (ODEs). Bit the paper doesn't have any hint of a practical application.

      However notice that [Millsap10a] (below) also suggested that sequence diagrams are a key tool for understanding the timings of complex systems.

      2010-10-22 Fri Oct 22 18:11 Performance Evaluation and model checking

      Here [BaierHaverkortHermansKatoen10] we have an excellent history of two convergent trends. On the one hand the development of model checking and on the other performance evaluation. Model checking allows us to check if some more or less complex system has some required logical property -- like that ultimately it will enter a particular desirable set of states. Performace avaluation allows to include the probabilities of the objective being met within a given time as well.

      THis is a highly formal paper but produces some interesting results in analysing protocols. Quite different to the practical experiences I dicussed below.

      2010-10-21 Thu Oct 21 20:14 Performance made clear Part 2

      Here are the two parts of Cary Millsap's article on performance tuning: [Millsap10a] [Millsap10b] (I commented on the first part below).

      The second part mentions a property of many systems that I learned about in a book be James Martin back in the 1970's. I visualize it like this:

      delay increases suddenly as load gets near the limit.

      It seems to be a handy rule of thumb and Clary relates it to M/M/m queues. However Clary has a longer "flat" bit before what Cary calls the "Knee".

      2010-10-21 Thu Oct 21 11:04 DRY considered a good idea

      This morning a got a ton of spam -- about 30 messages at 9 minutes past 9 .... I assumed that some robot was using an obsolete PHP (or worse a CGI) script on the web server... After some digging I found eight (8!) scripts that used the old way to send Email from the server. So I removed them.... and then another 30 messages arrived at 10 minutes past 10 and I noticed that they were real messages sent 2 or 3 years ago.

      Time to find the Sys Admin.... who had restarted the sendmail on the web server and didn't know about a back log.

      This left me with potentially 8 HTML pages with forms that called scripts that did not exist.... and had to examine each one, and update it to use the one single script that works.

      This shows you that "Don't Repeat Yourself" is one of them great laws of software -- at all levels code should not be repeated. If repeated, refactor the repeated part out and refer to it!

      Back to my planned tour of modern performance estimation and tuning later.

      2010-10-20 Wed Oct 20 17:07 Performance tuning from Experience Part 1

      Cary Millsap has spent her professional career getting complex software to perform. I find her [Millsap10a] to be full of provocative ideas that agree with.... Part 2 next.

      2010-10-19 Tue Oct 19 19:03 Why performance is important

      A slight delay between the user doing something and a system responding disturbs the user -- a tenth of a second (1/10) is enough. Having to count to five before the machine is ready for the next input is not acceptable. For example conder the iPod with iOS 4.2 where there is a 3..5 second delay between changing a calendar and the screen (1) showing the change and (2) accepting the next change. In my life I need to keep records of what pills I have taken and what exercises I have done each day. A PDA should be able to help me. But I have just shifted from using the iPod Calendar to using the Notebook purely because of the delay -- a simple performance problem.

      The interesting thing is that the performance degraded with the installation of 4.2. I started to use Calendar events because the Notebook app used to be too slow to open notes for writing and editting...

      I will be writing more about performance in coming blog entries(above).

      2010-10-15 Fri Oct 15 18:23 Measuring performance is not easy

      On my shelves from the early 1970's is my old "lab book". In this I recorded all the experiments I did and how they worked out. I modelled the write up of each experiment on the physics experiments I had done in high school and at the Brittish National Physical Laboratory (Ship Division). I used the stats I had picked up in my bachelor's Mathematics degree. I was using a small fast minicomputer (a Modular I) and a Wang 2000B desktop machine. I used assembler and Algol 68 on the "Mod 1" and BASIC on the Wang. Several of these experiments were timing algorithms. I can still recall the shock of seeing one algorithms time tending to a beatiful straight line at 45% to the "n" access.... and realising Knuth was right.... when the time is the sum of a linear term and a log term .... you can forget the log term.... or as I learned to say
    4. O(n + log n) = O(n).

      But I also learned that you can not use real time (stop watch time) to time an algorithm if anything else is being done on the machine at the same time. I will say nothing about the complex statitistics calculating means and variances..... It is much nicer to work in terms of worst case timing! So my experiments at this time basically lead me to except the dogma that is taught in Data Structures and Algorithm classes.

      When I returned to university life in the 1980's again, I got interested in the performance of systems. I wanted to take the ad hoc rules for estimating data base performance that I learned in the Brittish Civil Servic SSADM method and replace them by scientific formulas based on the behavior of disk drives. Again it boiled down to an experiment. If data is in RAM then the time to copy n bytes is proportional to n, but if it is on a disk, then it should have a quadratic term n^2. So, one day, after the end of term party I cleared the PDP11 of all users and ran a simple program that timed how long it took to copy a file for every file on the disk. I plotted the result. And found a nice straight line with no visible quadratic term.

      So I am pleased to discover that it is even worse when you are measuring the performance and Tuning of a web based, multiprocessor, web based, search engine like "Bing". See [KohaviLongbothamWalker10] and look out the article to see some of the nasty data traps and surprises that happen.

      2010-10-14 Thu Oct 14 19:30 Network File System Problems

      Our main lab file server has been misbehaving since Tuesday. I'm told that some script kiddie has been creating large numbers of empty files to knock it out.

      This blog will come back when things are back to normal.

      2010-10-13 Wed Oct 13 16:47 Simplexity considered not worth it

      Over the week end I read a book called "Simplexity" [Kluger08] and was most unimpressed by it. In the same way that Cybernetics, Catestrophe Theory, and Chaos spawned popularizations, the study of complexity has provided anecdotes for this book. You'd be better off reading [Mitchell09] which is written by somebody who understands the history, research and mathematics involved.

      2010-10-12 Tue Oct 12 19:25 Visualising projects via Story Lines

      I am a sucker for graphics. Hence my Ph.D. work. Hence my daily tour of web comics like the famous xkcd [ http://xkcd.com/657/ ] (sample #657).

      Now it seems that this comic has inspired a new way -- Project Story Lines to show the history of projects: [ http://vis.cs.ucdavis.edu/~ogawa/research/storylines/ ] -- which seems quite interesting.

      On the other hand compare [DAmbrosLanzaLungu09] Radar diagrams and Witty's Dimensional Flowcharts [Witty76] or

      [Witty77b] from the 1970's.

      2010-10-08 Fri Oct 8 18:45 BNF as harmful if not fixed

      Consider this a rant on sloppy formalisms. I've just finished writing a review of the proceedings of a workshop that was full of statements like the following (I'll write about the content later).
    5. A::= A*A | A+A | "a" | "b" | "c" .

      This is valid BNF. But it has an error that I try to teach students to avoid. It is Ambiguous. Consider

    6. a * b + c

      you can not tell whether this is the same as

    7. (a*b) + c or
    8. a*(b+c).

      Now, I've seen grammars like this for years and put up with them. The writers typically seem to copy the BNF from previous papers and texts.... that were also sloppy, also ambiguous.

      (By the way, none of these syntaxes ever explain that parentheses are also a valid syntax!)

      If you want to see elegant and unambiguous BNF see the "Edison papers" [BrinchHansen81] and [BrinchHansen83] which show how clear BNF-like grammars lead to clean, correct, and easily understood assemblers and compilers. Or perhaps the C and C++ LRMs (paraphrased in XBNF/MATHS as [ samples/c++.standard.syntax.html ] ).

      In the generative theory of BNF as a Context Free Grammar it doesn't matter much. But it matters if you are trying to learn the language and can not get access to someone who can explain the relative priorities. I've found evidence on Wikipoedia that it is not just me. Others waste time trying to figure it out. I guess this is a barrier set up to preserve the elite who can know the secret rule:-)

      The other group of people who get badly bitten by bad BNF are people writing parsers. It turns out, that in 2004 two people (at least) have proposed BNF-like notations that avoid ambiguities: [Bekkerman04] [Ford04]

      In particular, Brian Ford proposes using "A*A / A+A" to express the idea that "*" has the higher priority.

      What do you think?

      2010-10-07 Thu Oct 7 19:21 Crowd Sourcing and Spam

      Some time ago some one produced a long proof that P<>NP. This is would be a major break through for Computer Science -- and earn the prover 1 million dollars! What happened next was a spontaneous. Someone put up a Wiki and interested people read the paper and put the thoughts on the Wiki. Meanhile the prover improved the proof. However the final consensus is that there is a hole in the proof. Here [ Crowdsourcing_peer_review ] is a news story about this event -- which promises to be a template for future proofs as well.

      Back in 2008 I was planning to put a forum on this web site.... allow any one to post a comment... However I read [Shirky03] and decided that would be too risky. Open forums are infiltrated very rapidly and abused. Here [ http://randomdigilante.blogspot.com/ ] is a sample of how nasty and automated the process is.

      2010-10-06 Wed Oct 6 17:46 Risk changes the Return on Investment for projects

      Phillip Armour has an article [Armour10] pointing out the some difficulties that arise in estimating the Return On Investment or ROI of a project when (as usual) the cost is not fixed and the final value may not be what we planned. He argues that the calculations may be complex but with the help of tools we can get a better picture of the worth of a project is we work with a spectrum of costs and a sprectrum of values. However he doesn't discuss the possibility that the value will depend on the cost... A thought provoking article.

      2010-10-05 Tue Oct 5 19:47 Encyclopedias -- ancient and moder

      David Gries has written another fine article [Grier10c] that starts with a game played on the Wikipedia that turns on finding the fewest clicks between two pages and goes back to Diderot's original encyclopedia. The first book to allow easy linking between all topics. He alos discusses techniques for using the web and Wikipedia in classrooms..... Hmmmm.

      2010-10-01 Fri Oct 1 18:31 OMG -- its a SysML Professional Exam

      This is a little outside the focus of this blog. I normlly concentrate on software development. But software is always embedded in a larger system....

      I've been keeping an eye on the various outgrowths of the Unified Modelling Language (UML) that was taken over by the Object Management Group some years ago. One of these is called SysML and is designed for modeling systems. Not Software but general systems -- for example an automobile. I'm sceptical but intrigued. There is a pretty clear and complete text [FriedenthalMooreSteiner08] and now you can have your knowledge tested [OMGEtAl10].

      2010-09-30 Thu Sep 30 19:40 Objects considered harmful

      Mordechai Ben-Ari [Ben-Ari10a] recently argued something that many of us older computer programmers feel -- that objects are not the only paradigm and that sometimes an alternative paradigm is better. In a phrase `one size does not fit all. He also challenges the proponents to provide evidence of when objects succeed and when they fail. I expect a robust discussion will follow...

      2010-09-29 Wed Sep 29 17:05 Appinventor -- Googles graphic IDE

      One way to try and improve programming languages is to shift from words and formulas to pictures. People have been proposing graphic notations for constructing software for decades. For example "Dimensional Charts" in the 1970's, Visual Basic in the 1990's, and then Scratch. Now Google have got a visual/graphic programming environment called the
    9. Appinventor::= See http://appinventor.googlelabs.com/about/.

      If you dig a bit on the above site you will discover that underneath the Appinventor and the graphics is Scheme -- a well-established dialect of LISP.

      You can read good editorial (with links) on visual programming [ MailView?ms=MzU1OTY0NDAS1&r=MjIxNTUzNzc4NAS2&j=Nzc1NTE5MjAS1&mt=1&rt=0 ] in Dr. Dobbs.

      2010-09-28 Tue Sep 28 18:53 Clojure metaprogramming for multiparadigm programming

      Clojure is dialect of LISP that runs inside the Java Virtual Machine and has access to many of Java fine features. More importantly, it has the concept that the program is also data... and so is open to careful manipulation. So, in [DjuricDevedzic10] we have an example of adding new programming paradigms to a programing language on the fly...

      2010-09-24 Fri Sep 24 17:56 The Erlang Programming Language of Ericsson -- again

      Here [Armstrong10] we have a second advert for what looks like a very clean and reliable language. Last year [Larson09] had a similar article published.

      And the the ideal HPC language is FORTRAN, believe it or not....

      2010-09-23 Thu Sep 23 19:14 And the ideal high performance computing programming language is ---

      Can you guess what happens if you ask HPC -- High Performance Computing -- people to write algorithms in free format.... invent their own pseudocode? Guess before you visit [Loh10] for an answer.

      Meanwhile, don't forget I'll be doing the final post of the week on Friday.

      2010-09-22 Wed Sep 22 16:16 New Programming languages -- who needs them

      This is the first of a series of posts about programming languages. In July, a google executive and others discussed the need for new languages [ 25854 ]

      I have another link to a report on InfoWorld but that site appears dead...

      Shortly I'll post notes on Clojure, Erlang, the ideal HPC language, and Googles graphic IDE the AppInventor.

      2010-09-21 Tue Sep 21 17:50 Useful or just usable

      User Friendly was once the hot new buzz phrase on the block (Circa 1980) but it has become an important quality of good software -- that the software be usable. Now, [Bernstein10] appeals the Clay Shirky's presentation to argue that software must be more than usable, it must be useful. And he proposes an interesting test -- do you have to paid to use the software? If so then it is (just) usable. If it was useful, you might even pay to use it. Or it least not begrudge the time and effort.

      Reversing this, to understand how to improve software, look at the software that people choose to spend time and money on. I'll leave this as an exercise for the reader...

      2010-09-16 Thu Sep 16 17:46 Can all sequential processed grow up to be iterative and incremental

      Here is a topic that is something of a hobbyhorse of mine -- the ability to think about processes in parallel and then implement them using sequential code. See [ monograph/01_2.html#2.6 From DFDs to Code ] (a write up of my thinking). In [Erdogmus10] we see the same thinking applied in software processes. If you like this then you might like to visit his blog. [ http://hakanerdogmus.net/weblog/ ]

      2010-09-16 Thu Sep 16 10:28 Advert for BontQ Bug Tracking

      I'd better say that nobody has paid to get any links or reviews on to this site. But I've just put a permanent link to [ http://bontq.com ] into my [ samples/tools.html ] and tried mto sort that out a bit. More later today.

      By the way check out the seminar [ seminar/20100917OkeyUchendu.txt ] tomorrow.

      2010-09-15 Wed Sep 15 14:42 Measuring and predicting Readability

      This blog centers on publicising the must practical results from the "Software Engineering" academic literature, as well as the most sound (in my view) experiences and practice.

      Here [BuseWeimer10] is a paper reporting on an experiement on the readabillity of code. Of course this means that the readabillity was estimated by students... but the code was real (Source Forge) code. THe experimenters developed a complex model that predicts how the readers rated pieces of code with good accuracy. More importantly the metric predicts the quality of code as measured by changes and bug reports and logs. The actual formula/algorithm is not published in the paper but it worth noting that

    10. Comments reduce the readability of code.
    11. Identifiers increase the readability of code.
    12. Longer lines with periods and parenthesis -- function calls I guess -- make code more readable.

      Very interesting and coherent with agile best practices.

      2010-09-15 Wed Sep 15 11:04 Software Engineering Jobs

      Here is a contribution from Lisa.
        I am working with Mentor Graphics to get the word out about their job openings.They can be found at http://careers.mentor.com/. I am hoping you can add a link to the Mentor Graphics site on your website. It could benefit both of us!

      The permanent link is [ samples/etc.html#Software Engineering Jobs at Mentor Graphics ]

      2010-09-14 Tue Sep 14 17:55 On Systems Failure and Links

      This web site went offline over the weekend. The campus DNS servers had to be rebooted:-( Sorry for this. But I notice that most systems tend to break down sometimes. Which has nothing much to do with this [ vampires-programmers-versus-werewolves-sysadmins.html ] (Coding Horror....).

      Sometimes good design and success add up to second order failure. Consider, for example, this report from the BBC [ technology-11263559 ] on how Good software makes us Stupid. Basically a psychologist, Nicholas Carr, in a book The Shallows: What the Internet is Doing to Our Brains argues that using our brain makes it grow and become more powerful. But when computer technology takes over some of the functions from our brain then it will shring and become less capabale. More he quotes an experiment where helpful software reduced what people learned as the solved a puzzle. He thinks Google is a particular example of a good system that does bad things to the brain.

      Meanwhile, Coding Horror, [ go-that-way-really-fast.html ] praise speed as a determinant of success. What counts is not the quality of iterations but the number you can do in the same time. Very much in the Fail fast and agile tradition.

      ANd here is another report on a way to fail [ http://m.wired.com/wiredscience/2010/08/do-gooder-dislike/ ] from Wired, that suggests that saints [Turchin06] are not liked because they tend to raise the bar for every one else in a team/organization.

      In the Archive the previous item used the little red light in my car as an example of a system being monitored. I described how it will turn on when we drive over a series of bumps even when the system is full of fluid. That was Thursday. Saturday night the light started turning on. On Sunday morning I opened the hood, and found, for the first time that the fluid reservour was low. And topped it up. And the light has not come on again.

      This goes to show the warning systems neeed to be designed to not give too many false positives. Otherwise people start to ignore them. Call it the Cry Wolf syndrome. You can find out all about how systems fail (and they all complex one fail) in [Gall79] on General Systemantics.

      2010-09-09 Thu Sep 9 17:17 Monitoring systems to see if they meet requirements

      Mostly people install a system and test it and then relax and assume that it is continuing to work as required. At least this seems to be true inside organizations and software. But Many trucks now advertise a number to call if the driver irritates you. Automobiles have warning lights and messages that appear -- our car regularly goes over a bumpy piece of road and then spends the rest of the drive complaining about the brake fluid.... rebooting seems to fix this better than opening up the widget and adding fluid even tho' it is full. But many systems include warning mechanisms that provide feedback. Here [RobinsonWN10] we have a comprehensive description of all forms of monitoring for software systems.

      2010-09-08 Wed Sep 8 17:51 Testing and Proving and Checking

      It turns out that testing and proving/checking (so called formal methods) are not opposed techniques. They complement each other. This paper [ArtziEtAl10] demonstrates the effectiveness of a tool (Apollo) that finds bugs in PHP/SQL/HTML web applications and [BeckmanEtAl10] uses tests, symbolic execution, and program proving to either discover an error or prove it can not occur -- despite the program being written in C and using pointers is sneaky ways!

      2010-09-07 Tue Sep 7 17:54 Agile Architecture Advocated And Adumbrated

      Grady Booch is one of the original Gang of Four who created the UML. But he has been thinking about how the requirements for a project map onto the structure of the software for a long time. Previously in [Booch10] he discussed the difference between system architecture and software architecture. Then in [Booch10a] he gave some interesting advice on meetings to review architecture. Now [Booch10b] he raises the question of whether architecture can be agile, gives several useful pointers, and stresses the person-to-person aspect of architecture -- it must be socialized into the team doing the development. Power point and manuals may not hack it!

      2010-09-02 Thu Sep 2 18:38 Singularity a safe operatimg system

      Modularity has been a vital tool of the software engineer since the late 1960's. Foe example [LarusHunt10] have a demonstration operating system where crasehs are limitted and can not effect distant parts of the operating system. I like the use of communication rather than sharing to do this. There is a consistent history of using well defined pipes to connect modules minimizes the consequences of defects and makes maintenance easier.

      2010-09-01 Wed Sep 1 18:25 In praise of simple patterns

      Linda Rising may be a self-described "Pattern Princess" but here [Rising10] she talks good sense describing observed benefits of a couple of simple patterns -- one from the "Gang of Four" about managing a subsystem of objects and the other about managing people.

      2010-08-31 Tue Aug 31 18:39 Software Quality Assurance

      Software development is an error prone process. So we have special procedures in place to discover these erors (defects) as soon as possible in the process. Each process does it its own way -- in XP code is king and is inspected, tested, and, corrected as it is written. In less agile settings documentation is reviewd for errors. Indeed there are a large number of companie whose job is to independently validate and verify artifacts produced by other companies. One of these companies has forms the contaxt for some case studies of ways to estimate the number of defects in requirements documents. The results are poublished in [KlasNakaoElberzhagerMunch10] and meanwhile [ZhangKim10] discuss the use of good old fashioned statistical control charts to understand how a process is working.

      2010-08-26 Thu Aug 26 18:03 Reasoning about programs with unknowns

      Model checking is a way of making sure that a program does what we expect of it or at least avoids unwanted behaviours like dereferencing a NULL pointer. Here [DilligDilligAiken10] we have a demonstration of a tool that handles unknown inputs and functions as part of the analysis ofwhat the program can do. It comes with a small amount of formal logic and mathematics, which is an answer to the previous question (below).

      2010-08-25 Wed Aug 25 18:29 Why teach mathematics to engineers and computer scientists

      David Grier [Grier10b] has an entertaining tak on the value of mathematics to engineers and computer scientists ... even if we have a ton of mathematical software to solve common problems. He doesn't mention what you do with uncommon problems. Or how to read the mostly mathematical research papers in the literature. He also doesn't mention a short story about the future rediscovery of arithmetic in a computerised world. It is called "The Feeling of Power" and is by [ Isaac_Asimov ] in a book called "Nine Tomorrows". I reccommend both Grier's essay and Asmiov's story.

      2010-08-24 Tue Aug 24 16:06 Some Random Links

      Here are some links I've collected from Slashdot, correspondents, etc.

      First, the IBM 704 Manual of Operations [ IBM_704.html ] which is such an old USA computer that I've never programmit.... and this reproduction of the manual stops just when I get interested -- samples of symbolic code. In the 1980s a student worked on a flight simulator for me and uncovered a FORTRAN programn that had comments and bugs that pointed back to the 704!

      Going with the above is [ article.php?mid=1&CALL_URL=http%3A%2F%2Fwww.computerworld.com%2Fs%2Farticle%2F9180479%2FStupid_data_center_tricks%3FtaxonomyId%3D154%26pageNumber%3D4 ] of Stupid DataCenter Tricks. This site doesn't seem to provide a way to get away from a "mobile" format. Most impolite, not to say stupid.

      Here [ http://nmap.org/favicon/ ] is a visualization of the web using Favorites Icons. If you search you can find the CSUSB icon hidden in the graphic. By the way, the clever image is best viewed through a non-touch interface on a big screen.

      And speaking of visualizatons.... Sorting Algorithms to Music page: [ http://www.geek.com/articles/geek-cetera/sorting-algorithms-quite-boring-until-you-add-sound-effects-20100819/ ] which I might use in class or a CS202 lab.... however the best teaching techniques for sorting involve playing cards. Here is someone demoing HeapSort [ watch?v=WYII2Oau_VY ] using cards. Here is a teacher using Quicksort for real [ watch?v=Ria9-zz12Ro ] sorting scripts.... GACK. The Cute prize goes to [ watch?v=Zybl598sK24 ] (the Maggi SOrt). But the winner has to be this [ watch?v=INHF_5RIxTE ] video. Meanwhile [ watch?v=ZDzu7xknbLQ ] (the Lego sorting machine) is most fun to watch but least educational IMHO. There used to be only one or two demos published on the web, with You Tube, we have dozens.

      2010-08-19 Thu Aug 19 17:04 Death Taxes and Scalability

      It seems to be difficult to get clear quality requirements for software. And even when clear how can we be sure that a system can actually achieve them? This article [DubocRosenblumLetier10] claims that requirements that a design scales with respect to load or volume are particularly difficult. First of all they are not just about how the system performs. Projects fail -- they do not function -- under a high load when they don't scale well. In deed many scalabilty requirements are stated in such a way that no finite system can meet them. One needs to take these requirements and challenge and critique them. They must make the assumptions explicit that allow the system to operate. And the critique process will often lead to improved emergency plans and backup processing pwer for high load situations.

      2010-08-18 Wed Aug 18 18:11 How online communities grow and die

      Clearly online communities have come under a lot of academic scrutiny: psychology, sociology, management and technology. Clay Shirky [Shirky03] has shared his experiences and opinions. Here [IriberriLeroy09] we have a detailed literature survey. It describes the successive stages an online community should follow -- including death. For each stage it lists the factors that seem to contribute to survival and maturity (or death). A bit fry and careful but a useful description of moderately reliable (published and reviewed) ideas about the web and the internet.

      2010-08-17 Tue Aug 17 16:51 UML is Active but the buzz is lost

      I have been tracking, comparing, documentating, and collecting notations that people can use when developing software since the mid 1960s. I have even created my own diagrams. The most recent notation is the Unified Modeling Notation (UML) for object oriented software. And I am pleased to report that not much has been happening to it -- in terms of changes, debates and noise. Here [Serignese10] is a description of where UML is and what is happening. Key thought: the Object Management Group (OMG) is started to send out "Requests For Proposals" for the next version -- UML 3.0.

      2010-08-12 Thu Aug 12 17:50 An eclipse plugin to make refactoring safer

      I always thought that refactoring proceeded by using a set of simple steps that could not change the behavior of the software -- it just gets easier to understand and maintain. Now [SoaresEtAl10] presents a tool that makes sure that if a change might break the program then it generates tests to see if it did break it. So it seems that, again, we don't follow the rules and rely on tests to see if we have caused a problem. But then I've just uncovered a 2004 entry in my bibliography that was misplaced.... "To Err is human".

      2010-08-11 Wed Aug 11 18:28 Analysis of programmer behavior leads to a better development tool

      It is very rare to find a paper about a new tool or method that starts out with what developers actually do. Most start outwith a theory aboutwhat would help and proceedto a tool, and if we are lucky, a comparison with alternatives. Here [DeLineVenoliaRowan10] three Microsoft Researchers sampled how real programmers drew the software they were developing -- Code Maps -- and developed a tool -- Code Canvas -- that automatically liked the code to the discovered notation -- a Code Map. And it is nothing like the UML.

      2010-08-10 Tue Aug 10 20:35 Improved patterns for software architecture

      I'm glad to see [BuschmannHenney10] discussing ways to improve the classical object-oriented patterns. Occasionally an old but good architecture is rediscovered. Thus by proposing that creators should also be responsible for destroying objects the Factory pattern [ cs375/patterns.html#Factory ] is improved. I think that creators should also have the responsibility of finding the right object to fit an identifier -- see my [ cs375/patterns.html#IDs_to_Objects ] notes. I believe one can go further and make objects repsonsible for their complete life cycle -- and this leads back to ideas that were first used in the 1970s. Another improvement - using the meta-pattern of emergence leads to the Pipes-and-filters architecture. This has a very long history, both as a technology (UNIX pipes, co-routines, ...) and as methods (Michael Jackson).

      2010-08-09 Mon Aug 9 19:20 Fall Schedule

      During this coming fall, starting this week, I will be posting items to this blog on Tuesday, Wednsday, and Thursday of each week, Until December.

      2010-08-05 Thu Aug 5 08:56 Documentation and comments

      The question of what documentation you need to create and develop software has been arround for a long time... I even had a letter published on it back in the 1970's. Here [Spinellis10] is a collection of excellent advice, well tested over the years, and worth reading.

      2010-08-04 Wed Aug 4 07:23 Analogy -- IT now is like driving 90 years ago

      This [MargariaSteffen10] essay describes the development of automotive technology as an picture of Information Technology today. In the early days the use and market for automobiles was severely limitted to the number of chaufeurs. The chaufeur was needed because the roads were bad, the garages few and far between, and the technology non-standard and temperamental. The propose a slogan for IT to aim for IT simply works.

      As for information technology -- consider the iOS4 upgrade on an iPod Touch. I remarked earlier on the loss of performnce and the way the battery needs recharging twice as often. Two days ago I turned off a feature that I did not ask for and do not want -- this stores notelets on mailservers. I am pretty happy with synchronizing my 40+ notes (including the bibliographic items and reviews I am working on) when I plug the iPod into our iMac each day. I do not need the iPod to check to see if there have been any changes on the copies on my work mail system notes. Especially as these notes can not be accessed via the webmail client at work.

      Now I need to figure out what the calendar program does to make the screen blank for a couple of seconds.

      2010-08-03 Tue Aug 3 17:13 Are companies actually using secure development life cycles

      Given that you can not patch in security once a project is released .... we need to analyse the security threats before we even start designing the software. And then we need to keep security in mind through coding -- using static analysis to spot holes in code, and testing -- getting outsiders to try and break in.... This [Geer10] article reports on a survey showing awarenes and formalization ae far apart.

      2010-08-02 Mon Aug 2 11:20 Visualizing things

      Here [HeerBostockOgievesky10] is a nice lite article on different ways to display information -- in particular data about software.

      I am also updating [DenningFloresLuzmore10] (coordinating ditributed teams) and [StachourCollier-Brown00] (maintenance misconceptions) to include the followup correspondence.

      2010-07-29 Thu Jul 29 14:15 Software Development at Siemen's

      Here [Paulisch10] is a nice set of slides presenting the current state of software development at Siemens: "Think Big, Act Small, Fail Fast, Learn Rapidly". Very interesting to see agile ideas in large scale embedded systems.

      2010-07-28 Wed Jul 28 09:51 Agility in Practice

      Here [CesareEtAl10] is an interesting poll of senior people involved in software development. It tries to determine how far agile processes have penetrated software development. They conclude that most organizations have now adopted and tailored and explicitly agile processs that includes incremental or iterative development. The ideas of face-to-face communication and the developers and busness experts working together have been taken up. Teams are doing post-mortem reviews. However the idea of emergent design is not well understood. And there is no consensus on allowing late requirement changes or only using working code as a measur of progress.

      2010-07-27 Tue Jul 27 08:07 Developing an comic app for iPhone

      I've been following Shlock Mercernary for some years. Here [Henson10] is a report of what happens when you try to move a web comic onto a touch device.

      No, I am not in San Diego.

      2010-07-26 Mon Jul 26 12:25 Update to an ancient monograph

      In the 1990's I submitted a monograph to the IEEE Press .... and it vanished. I've uploaded the structure and some of the chapters in [ monograph/ ] and discovered that this was one place where I had a definition of a contecdt free language and a grammar... I recovered [ monograph/03.html ] from an old WordPerfect file. It explains my proposal for defining languages and shows how the definition leads directly to code. The only clever bit is linking parallel parsing to intersections of languages.

      2010-07-26 Mon Jul 26 08:52 Blasts from the Past

      Last Friday I had the opportunity to spend the day at the University of California, Riverside (UCR). I have spent many happy days in the past in the various libraries checking out periodicals, RAND reports, Lecture Notes on CS, etc. etc.

      But has been a couple years and the campus has changed to the point that I got lost right at the beginning among the new buildings arround the "HUB" and on my way to the Science Library. Which looked unchanged. However, I used to flip through the paper editions of the BCS Computer Journal and "Software Practice and Experience". Now the paper copies have gone. But the library subscribes to "e" editions. And they provide a small MS Windows machine that has browsers, access to the catelogs and basic productivity tools. Very nice.

      The first surprise was that I was able to scan the content lists and select items to look at faster than I used to flip through the hard-copy journals. The evidence being that I caught up with 5 years worth of "Computer Journal" and "Software P&E" between 9am and 11:15am. The second surprise was that I could access this web site and use my own software [ contribute.html ] to preapre and send the two items that I found. The whole experience was smooth and glitch free. Sadly, this is not always true.

      The first paper [VeermanVerhoeve06] describes a tool for detecting minefields in COBOL. As an old Coboler I was well aware that the PERFORM verb was an invitation to create unmaintainable code. So a tool that take leagcy code and spots some of the more egregious code traps should be useful.

      The second paper [Almendros-JimenezIribarne10] demonstrates that use case relations (includes, extends, etc.) are neither well defined or well understood and shows that they can be deduced from sequence diagrams of the use case.

      2010-07-22 Thu Jul 22 05:58 Agility vs Requirements Documentation

      Here [MaidenJones10] is an essay talking about the conflict between agility and documentation. The agile movement prefers communication -- face-to-face communication -- to preparing documents -- unless the documents/artifacts are executable. But in the abscence of these documents, the article claims, projects have had problems with inducting newbies, missed non-functional requirements, and changes. The authors looked at use 3><5 cards and CDs. And speculate about other techniques.

      Personally -- why not blog artifacts and have a reccommendation and tagging scheme so that the valuable ones can be identified -- notice that the value of a document is not determined in the short term. The whole idea is to enable long-term memory beyond the personal. Hence, the pay off may be many iterations in the future. Or not.... we can not know in advance. Or as somebody once said "I wish I could see this person's trash can". Or as I blogged here in 2003 it is worth taking the time to label paint cans. This was reconfirmed when we touched up the bathroom a week ago... the labels paid off.

      But why use paper artifacts. Why not rich media (not a new idea). Larman suggests using chalk boards, camera/cell phones, and software to improve the image. Indeed why not record face-to-face meetings so that new people to the team can really see why the system is the way it is?

      More on agility next week!

      2010-07-21 Wed Jul 21 08:11 Experience with the Agile Unified Process

      I value articles about real experiences of software development -- even if they tend to be biased towards success stories. Sadly you can learn more from negative experiences than positive. Evidence that some idea does not work is like a gold nugget when prospecting.

      This [ChristosPoniPalaiolgou10] describes how the Unified Process was tailored to fit a particular project, how people reacted (predictably the data base people are strongly attracted to Big Design Up Front for example), the best tools, and the most useful practices. They observe that at any time you tend to be working on several artifacts at one time (no surprise) but that simple artifacts are best. Also: use cases and them UML is not enough. Similarly each person on the team must be skilled in both modelling and coding -- avoid a team of modellers and a separate team of coders. Finally -- Honest open communication and published models is good.

      So it is worth study and thought... I have one slightly snarky thought -- <joke>did this software contribute to the recent Greek Financial Meltdown?</joke>

      2010-07-20 Tue Jul 20 08:55 Automated bug fixing and program evolution

      This seems to good to be true... a system for fixing code that fails tests with minimal intervention. There is an introduction [WeimerEtAl10] to Search based Software engineering and a report of test on real C code [Harman10] demonstrating how some tests pin point the places that might need changing, the other code indicates possible fixes, etc.

      If this generalizes it could automate a lot of debugging. However I think that this may lead to more carelessness and so mor bugs to find.

      2010-07-19 Mon Jul 19 08:31 Booch on architectural reviews

      It is very good to read a long-established authority writing on a long-established technique in software development that does not sound depressed at the state of the art. Grady Booch (one of the famouse "Gang of Four" who created UML) has just published [Booch10a] some of his conclusions from attending many reviews. He notes that you need constructive conflict if the review is to produce value. It is a waste of time to just have people nodding at an artifact as the presenter displays it. The presented materials must be examined and chellanged to improve them.

      And what are the purposes of reviewing an "Architecture"? Well, architecture is about how the forces on the system map into high level design decisions. The review is not trying to find the ideal perfect solution -- there are probably many "good enough" architectures. You are hoping to get enough confidence in the plans to continue.

      Now I accept these thoughts because they fit with 3 decades of attending similar reviews. Also the idea of looking for a "good enough", non-optimal plan goes back to the "Science of the artificial" by Herbart Simon [Simon69].

      2010-07-13 Tue Jul 13 08:07 How IT can contribute to systemic failure

      Roman Beck [BeckR10] writes about how Information Technology failed to protect the financial world from the crash of 2008. He argues that IT handled the clear risk of 2001/9/11 by using normal disaster recovery planning and ideas developed in preparing for Y2K. THe transaction continued to flow and the system survived as a result -- even with thousands dead and servers out of action.

      However, IT was not prepared for the internal disastor caused by toxic assets. It could not handle the evaluation of credit risks quickly enough. In the first phase people assumed that the assets were ok and the transacions went through -- spreading the risk further. In the second phase, everybody assumed that the risk was high (bexause the systems could not quickly evaluate it) and so the transaction was not made. The System grinds to a halt and we get a liquidity crisis, low interest rates, and no investment, falling employment and so on.

      Why couldn't the IT systems evaluate transactions quickly? Because the data was spread over many data bases and there are no stnadards for matching it up.

      The above is my gloss of a 3 page article. The original is probably more accurate. Follow the link above to find out.

      2010-07-13 Tue Jul 13 08:00 Upgrades and updates

      On the topic of upgrades -- the voice mail system for my VoIP phone in my office is about to be upgraded. Any mesages left between the backing up of the old system and the instalation of the new will (of course) be lost:-) Luckily few people use that phone.

      I'm thinking of changing the format of these blog entries. In future I won't be including the telegraphic summary and review but a link to the review.

      2010-07-12 Mon Jul 12 09:54 Fear and loathing of updates

      If there is one thing I despise it is making a product buzz phrase compatible in a way that makes it worse for the user.

      This is a brief rant inspired by the recent upgrade of my iPod Touch to iOS4.

      1. + The user interface gives more control over the database of calendars.
      2. - But the calendar view goes blank for a couple of seconds to update it self.
      3. + Multitasking -- not that it couldn't play music, run an alarm system, track alerts in the calendar and access my mail before.
      4. - Now it continually accesses the wifi and this drains the battery at about twice the rate. Evn over night and turned off.
      5. - Wifi strength fluctuates more than it used to.

      2010-07-08 Thu Jul 8 07:14 Goal Question Metric

      This is the latest result in a long running piece of research by Victor Basili.


      1. Victor R Basili & Mikael Lundvall & Myrna Regardie & Carolyn Seaman & Jens Heidrich & Jurgen Munch & Dieter Rombach & Adam Trendowicz
      2. Linking software development and business strategy through measurement
      3. IEEE Computer Magazine V43n4(Apr 2010)pp57-65
      5. GQM::= See http://en.wikipedia.org/wiki/GQM.
      6. Formalizes link between business level goals and strategies to software development goals, questions, and metrics.
      7. See previous items for Basili and GQM.

      2010-07-07 Wed Jul 7 09:44 Contribution on Java And JavaScript

      From: Sarah Wahlberg

        Great website with information on computer programming: [ java.www.sites.html ]

        I've been looking for resources to add to packets for my kids...I hate letting them get rusty over the summer break, especially with technical lessons. Since your page was helpful, I thought I would pass along another web site you might like: [ javascript.html ]

        There's some good stuff on there; it covers quite a bit on Javascript. It might be a good addition to your page. Let me know what you think :)

        Oh, and this link is broken on your page: http://www.trl.ibm.co.jp/aglets/

        Have a great summer and try to keep COOL! - Sarah

      I've added the JavaScript link to [ javascript.html ] which is my introduction to the language.

      2010-07-06 Tue Jul 6 06:32 Process Wave -- collaboration graphic tool

      I got this contribution from my Facebook wall.... Thank you Stephen!


      1. Steven Parker
      2. processWave10
      3. Facebook Wall (Jul 2010)
      5. An interesting use of Google Wave: real time collaboration on UML diagrams! And oh yeah, it's free!
      6. processWave::blog= See http://www.processwave.org/.
          ProcessWave Your diagram is kept in sync over all of the connected clients which means that you can see the actions of remote users just as they are being performed. Adding new users to a modeling session in progress is a breeze: Just invite them to your current Wave.

      2010-07-01 Thu Jul 1 07:30 Request for comment on a way to avoid insecure web sites

      This is deep and interesting...


      1. Kelly Jackson Higgins
      2. Kaminsky Issues Developer Tool To Kill Injection Bugs
      3. dark reading (Jun 14 2010) [ http://mobile.darkreading.com/9287/show/e17461923a943ee5a9ddab78d5a4f496/ ]
      5. Normal string interpolation is unsafe -- but attractively easy.
      6. By distinguishing code from data, a new framework helps stop the user injecting there on (evil) code into your code.
      7. Recursion_Ventures::= See http://recursion.com/index.html.
      8. Iterpolique::= See http://recursion.com/interpolique.html.
      9. (Dan Kaminsky)|-"Life is too short to defend broken code". Code breaks only when a website become popular,

      2010-06-30 Wed Jun 30 07:43 How science evolves

      I greatly enjoy reading David Alan Grier's collumn in the IEEE Computer Magazine. In the April edition he writes about how a discipline evolves -- personally or socially -- through a chaotic phase to a reliable theory. It has been a subject that interested me because there can be no logical model of theory building -- or more precisely, working from observations to theories is an unreliable step -- logic is about reliable reasoning. Grier quotes a couple of examples where a new observation was discussed in public, not in academic conferences and journals. He claims, and I aggree that reliable knowledge results from a long process with many trial-and-error steps.

      I have a second reason for collecting stuff about science. I believe that the first task in developing software is to come up with a reliable theory for the user's/stakeholder's domain. A knid of mini-science of the application area.

      While preparing the bibliogrphic item I discovered an older item by Grier which I had given the identifier "Gries07" and fixed it as "Grier07c".


      1. David Alan Grier
      2. Utter Chaos
      3. IEEE Computer Magazine V43n4(Apr 2010)pp6-9
      5. It takes time to form an organized and reliable theory.
      6. A new observation often triggers a chaotic phase of theory making and experimentation.
      7. Normally in journals and papers. Xrays discussed in newspapers.
      8. Sometimes the observation is rejected -- cold fusion.
      9. Similarly when learning a discipline.

      2010-06-29 Tue Jun 29 06:43 Summer weekend

      Watched the world cup and went to the Long Beach Bayou Cajun Festival....

      The canpus had an unplanned powercut and this web server was dead for about a day, immediately after it had come up after a planned powercut on Friday.

      Now we are having the front yard and drive torn up to fix leaks in the sprinklers...

      Here is another example of a project that hides some formalism inside the tool. It is a tool that helps people generate black box test cases from specifications.


      1. Pak-Lok Poon & Sau-Fun Tang & T H Tse & T Y Chen
      2. CHOC'LATE -- A Framework for Specification-based Testing Commun ACM V53n4(Apr 2010)pp113-118 (Virtual Extension) [ 1721654.1721687 ]
      4. CHOCLATE::acronym="CHOoiCe reLATion framEwork"
      5. Test_Frame::=$ Net{ category, values:Sets, choices:partition(values)}.
      6. CTF::=Complete_Test_Frame, ....
      7. Choice_Relation Table. ...
      8. choices>=={Full_embedded, Partial_embedding, Nonembedding}, ...

      2010-06-25 Fri Jun 25 15:26 Things are up

      The Campus web sites and the CSE web sites seem to be fully functional again.... and I will update this blog on Tuesday.

      2010-06-24 Thu Jun 24 10:38 The Language Curry combines functional and logic programming

      Another one for the interesting language file -- a development of Haskell and Prolog....


      1. Sergio Antoy & Michael Hanus
      2. Functional Logic Programming Commun ACM V53n4(Apr 2010)pp74- 95 [ 1721654.1721675 ]
      4. Combines ideas from functional programming (LISP, ML, Haskell) and Logic Programming (Prolog).
      5. Given a definition of a function Curry can sometimes invert it, finding argument values to fit given results.

      2010-06-23 Wed Jun 23 11:08 World of Warcraft for team training

      I've just been watching the worl cup and thinking of the importance of team work, psychology, and leadership. These are also a key part of software development. So how to train a distributed and diverse team of people so that they can work together in developing software. The answer below is WoW. It is worth looking at purely for the list of skills/attitudes/activities that help a team work.


      1. Peter J Denning & Fernando Flores & Peter Luzmore
      2. The Profession of IT -- Orchestrating Coordination in Pluralistic Networks
      3. Commun ACM V53n3(Mar 2010)pp30-32 + Correspondence V53n6(Jun 2010)p6
      5. Claims that there is a need for effective multicultural distributed teams.
      6. Claims that certain values/activities help and can be learned in multiplayer style game environment like World of Warcraft.
      7. Values/activities
        1. Proficient in a practice essential to the team.
        2. Able to articulate vision of teams worth that others embrace.
        3. Make commitments and fulfill them.
        4. Spot and eliminate waste.
        5. Share assessments+moods+emotions to build & maIntain trust.
        6. Observe own history and link it to other's history.
        7. Able to Blend: dynamically align to own intentions+actions of others.

      2010-06-22 Tue Jun 22 11:57 Campus Power shut down coming

      This was in my Email
        Facilities Services have been working on a few energy related projects that will require a power shut down for the entire campus. The shutdown is scheduled for this upcoming Friday, June 25, 2010 for approximately 6 hours from 6:00am to 12:00pm during which time new smart electrical meters will be installed at the main campus switchgear. This outage was purposely scheduled on a campus closure day to minimize the impact to the campus as much as possible. We advise the campus to shut down computers and other electronic devices during this power outage.

        This shutdown is part of the campus wide replacement of building electrical meters and the addition of photovoltaic panels currently being installed on the roof of the College of Education.

      Seeing that the campus is closed from that Friday to Monday.... I think this web site will be dead until Tuesday 29th of June.

      2010-06-22 Tue Jun 22 11:48 History Lessons

      Another nice little article traces the history of mathematical tables. Since Babbage got into computing devices to print tables it can be said that the whole of Information and Computer Technology is an unintended side-effect of a limited initial project. What I had not known was that the Association for Computing Machinary was also strongly linked to the generation of tables in its beginning... Indeed the computer made the production of accurate and useful tables possible. This leading to a boom in table production just when computers started to make them obsolete.

      I will keep my battered Cambridge Univerisity Stats Tables to hand however. Even if the last χ^2 I looked up was on the Wikipedia or via WolframAlpha.


      1. Martin Campbell-Kelly
      2. Be careful what you wish for
      3. Commun ACM V53n4(Apr 2010)pp25-26 [ 1721654.1721666 ]
      4. =HISTORY TABLES Napier Briggs Babbage Mauchly Eckert

      2010-06-21 Mon Jun 21 08:18 Study History to avoid the mistakes made in the past

      Here is a good history of the many different attempts to lay down processes for developing software. You can find most them described in the paper below. No mention of my concept that software development is non-sequential. It should not be described or enforced as a structured program. It is more a complex system of interations between an existing system, the clients/users, and the developers. But I've written enough [ samples/methods.html ] about this.


      1. Nayan B Ruparelia
      2. Software development lifecycle models
      3. ACM SIGSOFT Software Engineering Notes V35n3(May 2010)pp8-13 [ 1764810.1764814 ]

      2010-06-17 Thu Jun 17 11:16 Model Checking

      First of all I hope you like the cosmetic and small technical changes made to these pages.

      Now to business, Model Checking seems to be flavor of the month. It is a very clever idea. You describe the properties you want to be true of a system and describe how the system works... and a model checker will show you where the system behavior fails to meet the desirable properties. It shows most leverage in non-deterministic systems we it can seek out rare scenarios that will almost certainly missed with testing. Here we have two introductory articles... very readable, an enormous text/reference, and a sample of current research. Enjoy!


      1. Peter B Henderson
      2. Math Counts -- Model Checking
      3. ACM Inroads V1n1(Mar 2010)p33
      5. Encourages the use of model checking in teaching computer science.
      6. Introduces [ Ben-Ari10 ]


      1. Mordechai (Moti) Ben-Ari
      2. A Primer on Model checking
      3. ACM Inroads V1n1(Mar 2010)pp40-47
      5. The formula if not p then if p then q can be proved true by axiomatic methods but it is simpler and easier to check that it is true by trying out all 4 cases in a truth table.
      6. Similarly, proving that a parallele non-deterministic program has a property is usually time consuming but there exist tools that will find counter examples in a reasonable time. Spin works in industry but can be wrapped in an IDE that works well with students.


      1. Christel Baier & Joost Katoen
      2. Principles of Model Checking
      3. The MIT Press Cambridge MA (2008) ISBN 026202649X CR 0912-1115
      5. Excellent and thorough text book suitable for graduate Computer scientists or some final year undergraduates
      6. A large in depth reference to the theory of the most successful formal method - so far.
      7. Does not use the normal syntax for modes but uses ∀ and ∃. So doesn't fit some tools.
      8. Does not use standard terminology.
      9. Does include newer topics and types of models.


      1. Husain Alijazzar & Stefan Leue
      2. Directed Explicit state-space search in the generation of Counter examples for Stochastic Model Checking
      3. IEEE Trans Software Engineering V36n1(Jan/Feb 2010)pp37-60
      5. Given a model as a Markov chain and a property, finds paths that are probable but don't match the property.
      6. Can handle both discrete and continuous Markov chains.

      2010-06-16 Wed Jun 16 09:31 Changes

      The spring quarter classes are finished. Now we are into final examinations and grading. I am also thinking about the summer schedule for this blog. The Mon, Tues, Weds, Thurs schedule worked for the last 10 weeks. It als fits with the CSUSB summer schedule -- we close the campus done on Fridays to save utiliy costs. But I have domestic things to get done so I don't know (1) what the weekly schedule will be or (2) when we will go on holiday (and even where).

      I am tired of the look of this web site -- in particular the use of Frames to set up header information and navigation. I am starting to think how to put the information back in a simple HTML page... Wish me luck.

      2010-06-16 Wed Jun 16 13:33 -- What do you think of the new format?

      2010-06-16 Wed Jun 16 06:24 Puzzle Master

      Back in May Leon Stein Sent me the following link [ http://www.puzzlemaster.ca ] Description: Puzzle Master has a large and unique collection of brain teasers & puzzles for sale. In addition they also carry chess, mechanical banks, puzzle books, magic trick books, boomerangs, etc.

      Now I don't have much time these days so I'm not so interested puzzles any more but this does appear to be a good collection.

      2010-06-15 Tue Jun 15 08:09 Performance vs Computer Science Text Books

      Some of the best computer science we have predicts the behavior of algorithms and data structuressing the big-O yardstick. The analysis of algorithms is nearly always based on assuming that the data is in RAM == Random Access Memory in O(1) (constant) time. Donald Knuth founded this analysis and later texts tended to redact and simplify the message. They have largely forgotten Knuth's analysis of sorting large files using magnetic tape and disks.

      In the 1980's I did some research on the performance of data bases -- I brought with me the SSADM handbooks that had empirical "Physicial Design Control" techniques and formulas for predicting (and so improving) the performance of various data bases. The improvements in performance came from reducing the number of disk accesses and organizing the sequence of accesses to match the structure of the data on disk. Alternately they would reorganise the data (on paper) to make the disk accesses match the logical sequence. Often this sacraficed the sacred cow (normalization) of databases on the altar of satisfying the user.

      I was concerned that the methods had no theoretical basis. In 1983 M A Pechura & J D Shoefler [PechuraShoefler83] published a useful formula approximating the file access time of floppy disks. I took their work and derived some formulas for predicting disk based systems... and in the process published a paper [Botting88] showing that a binary search on a disk is O(n) rather than the traditional O(log n). I would have taken the research further if an experiment I tried on a hard disk on a mini had not fitted the random access assumption.

      So it gives me great pleasure to publicize an article in the ACM Queue online magazine that argues that Virtual Memory also fouls up the classic analysis and so can give rise to different algorithms that are a lot faster than the ones in the text books.


      1. Poul-Henning Kamp
      2. You're Doing It Wrong
      3. ACM Queue (June 11 2010) [ detail.cfm?id=1814327 ]
      5. Proposes a new type of heap which performas 10 times better in a virtual memory system because it organizes successive accesses to be in the same page thus reducing page faults.
      6. Compare [PechuraShoefler83] [Botting88] for other non-text-book results.

      2010-06-14 Mon Jun 14 10:56 State of The Art of Code Reviews

      Here are some detailed notes I took while replaying a webinar on code reviews. Its good to see that a simple and effective technique is still in use -- even if informally and with out tools.... which in turn raises the question of why XP and Open Source projects were not mentioned...


      1. Dave West
      2. Are Code Reviews Keeping Pace with Modern Development Practice?
      4. Forrester Research/Klocwork [ forrester-webinar-code-review ]
      5. Code reviews are still used and valuable but unchanged over 20 years and not using modern technology.
      6. Outline of talk: Challenges, Current Practice, Future, Conclusions and recommendations.
      7. Peer_Review_of_code(author, reviewer, artifact)::=author submits artifact; reviewer studies artifact; reviewer discusses artifact with author; author fixes artifact'.
      8. Environment: Most work is geographically distributed. Size of code is increasing. Most projects must comply with mandated standards.
      9. Most use face-to-face. Use some static code analysis, special tools, Online meeting, IDE, Wikis, .... could be used. Why are so few QA and architects involved? UML and visual modeling always used <11% projects, Few tools and formal processes.
      10. Values: reduce bugs earlier, learning, compliance, ... Code review changes the code and improves the programmers.
      11. Challenges: time, motivation, tools, ...
      12. Conclusions: Part of process with right people and technology.
      13. Recommendations: can web2.0 improve motivation? 80% of People do use social media, have blogs, etc. outside of work. But not in code reviews(80%)!
      14. Why not automate and post pieces to social network via a queue/ competition and collect comments ( with evaluations) and let author review.
      15. 1. review process, 2. support distribution,time, right people. 3. measure contributions, ...
      16. (dick)|-compare with Open Source projects that get lots of eyeballs looking at the code.
      17. (dick)|-compare XP pair programming that gives instant code review as the code is produced.
      18. See also [Meyer08a] for using tools in distributed code review.

      2010-06-10 Thu Jun 10 07:38 New Fonts for Science and Technology STIXfonts

      A problematic feature of mathematical notation are the symbols used. They act as shorthand. They allow complex ideas to be expressed quickly and easily by hand. However, I will never forget one of my professors in college who used squiggle eta verbally for a symbol somewhere between the greek xi (ξ) and zeta (ζ). I didn't really understand the problem until I decided, in grad school, to type my notes in ASCII (to make editting easier) and found that I had to invent ASCII sequences to encode the Greek letters used in Grammar theory. In the fullness of time Donald Knuth hit a similar problem and solved it by inventing TeX ( [ TeX ] (Wikipedia)).

      HTML now has greek letters included as entities, and most browsers handle them correctly. Now, with luck, your browser has displayed the two greek letters above correctly.

      All I had to do (for the last three years) in my MATHS language is type the TeX symbols

      and my mth2html tool translated them automatically to HTML. It will do this for all the HTML entities that are also TeX --- sorry I can't do the real ΤΕΧ ... You can see a list at [ tex2html.html ] and download the UNIX sed script (tex2html) from [ tex2html.txt ] (No warrantee, but complaints welcome, save with out the .txt into your bin directory and make executable).

      I would love to be able to render more characters and the things like the black board font as Part of MATHS.... but for that you need special fonts on your system. This crosses over a self imposed limit. A MATHS page when rendered into HTML should be readable with out special fonts.

      For 8 years a consortium of mathematicians, physicists, etc. have been developing a set of fonts for just about any symbol that is in use in their journals... and mapping them to the UNICODE. So we have a solution in sight... but a long way away in my judgement.


      1. Evan Owens
      2. STIX Fonts Version 1.0 Released
      3. J Applied Physics, AIP Melville NY (May 2010) [ stixfonts_v1.0_released.html ]
      5. Initial release is 23 open type fonts for UNICODE codes STIX Fonts
      6. Works on MS IE8 in standards mode.
      7. Version 1.1 for MS Office etc fonts available by end 2010.
      8. Version 1.2 with Type 1 fonts for LaTeX in 2011.
      9. Details and downloads at [ http://www.stixfonts.org/ ]

      2010-06-09 Wed Jun 9 07:40 Fitting logic to software

      In the beginning Floyd showed how to prove flowcharts by adding comments called assertions. Hoare used similar ideas with structured programs and people denied that you could prove unstructured programs. The C programming community took the the idea of an assertion and diluted it until it became an executable test which could about a run if it failed... another idea from a decade earlier... but not what Floyd had done. These assertions are checked at run time not verified before times.

      Fast forward to making a complier that checks the correctness of assertions... closer to Floyd. The Verifying Compiler project. It appears that when people applied mathematics and logic to verifying software that imposed a simple but incorrect logic on the software. This paper explores an alternative.


      1. Patrice Chalin
      2. Engineering a sound assertion semantics for the verifying compiler
      3. IEEE Trans Software Engineering V36n2(Mar/Apr 2010)pp275-287
      5. A verifying compiler should spot when assertions will go wrong.
      6. The logic of the verifying compiler should allow for expressions being undefined.
      7. Must handle arithmetic errors like 1/0 correctly. Even in assertions!
      8. Stresses the need to talk to the users of the compiler before deciding its semantics!
      9. Introduces a definedness predicate.
      10. Formal Methods shouldn't have imposed an elegant but unsound logic on software.

      2010-06-08 Tue Jun 8 08:39 Useful resource on Programming Languages

      Sarah Wahlberg contributes
        I hate to bug you, but I have been using your page with computer programming resources: [ samples/tools.html ]

        Thanks for making it! There's some good stuff on there! I did want to point out a dead link, though: http://www.zib.de/Visual/software/doc++/index.html

        Since your page was so useful, I thought I would pass along a replacement you might want to use instead: [ computer-programming.html ]

        It has tons of resources for many different computer languages. If anything, it might just be a good addition. Let me know what you think.

      Thank you Sarah.. This does not bug me.... I've put it in my [ samples/languages.html ] page.

      2010-06-07 Mon Jun 7 16:00 Visual Summary of Computer Science People

      Just added this [ http://www.smashingmagazine.com/2010/06/06/designing-the-world-of-programming-infographic/ ] to my [ samples/people.html ] page. Thanks to Derick and Rowen (of CSE320) for this link.

      2010-06-07 Mon Jun 7 07:46 Developing correct industrial control software

      I've just submitted a review (for CR) of an clever application of formal methods inside a tool. A true example of Information Hiding. Interesting, readable, but I suspect that the definition of "Knowledge update" is incomplete....


      1. D Hurnaus & H Prahofer
      2. Programming assistance based on contracts and modular verification in the automation domain
      3. Applied Computing, Sierre, Switzerland (Mar 22-26 2010)pp2544-2551
      5. Two case-studies of a system that helps users construct correct industrial control programs by using hidden formal methods.
      6. In a changing world, what beliefs should we abandon when a new truth is asserted?

      2010-06-03 Thu Jun 3 08:28 Distributed Software Development

      Another busy day... and so a simple note of a survey of the literature on setting up long-range software development. And tommorrow I will be on furlough. See you Monday.


      1. Rafael Prikladnicki & Jorge Luis Nicolas Audy & Forrest Schull
      2. Patterns in Effective Distributed Software Development
      3. IEEE Software Magazine V27n2(Mar/Apr 2010)pp12-15 + web extension
      5. Dozens of publications propose frameworks.
      6. Need studies that evaluate proposed processes emperically.

      2010-06-02 Wed Jun 2 13:55 Request For Comment

      I'm a little short of time today -- so here is a book which I would love to write a report on. I don't have a copy so if you have read it let me know what you think and I will post it on this blog:


      1. Anneke Kleppe
      2. Software Language Engineering: creating domain-specific languages using metamodels
      3. Addison-Wesley Boston MA (2008) ISBN 0321553454
      5. Notes: RFC [click here [socket symbol] Kleppe08 if you can fill this hole]

      2010-06-01 Tue Jun 1 08:39 What drives programers to work better

      Thanks to Coding Horror (Atwood10) for this ref (Pink09)
    13. which restates what I discovered in the 1970's -- programmers are not motivated by money -- as long as there is enough. This fits well with Maslow [ samples/Motives ] plus these papers, books, articles, etc. [Ariely09] [Conklin96] [HallEtAl08] [Harrison04] [Horowitz05] [Nov07] [RiehleEtAl09] [RubinHernandez88] [ThomasHunt04b] and [WeinbergG98]


      1. Jeff Atwood
      2. Coding Horror Jun 1st 2010 [ the-vast-and-endless-sea.html ]
      4. More money does not encourage better programming.


      1. Daniel H Pink
      2. Drive: The surprising Truth about what motivates us
      3. Riverhead Hardcover ?? ?? 2009 ISBN-10: 1594488843
      5. For simple algorithmic tasks money is a motivator.
      6. For tasks that need thought, more money can reduce performance.
      7. People will work for mastery, self direction, and purposes.
      8. (dick)|-compare Maslow and McGregor
      9. Summary at TED and on an animated video at Atwood10?
      10. RFC [click here [socket symbol] Pink09 if you can fill this hole]

      2010-05-27 Thu May 27 21:31 Long weekend

      The campus is closed tomorrow to save money and faculty have been told not to work. Monday is Memorial day when the USA has a Holiday. I plan to restart this blog on Tuesday June 1st.

      2010-05-27 Thu May 27 07:45 The Risks of Politics vs Sound Engineering

      Dr. Dobbs's magazine just lead me to rediscover a favorite book. I lost my copy some decades ago. It Dates back to the 1950s and is about events in the 1920s and 1930s. It describes how ignoring sound engineering and mathematics in favor of politics lead to one of the two great disastors in blimp history. It provides an example of a common pattern -- when the design and/or implementation outstrips our know-how things go wrong. I believe this happens a lot with software.


      1. Nevil Shute Norway [ http://www.nevilshute.org/ ]
      2. Sliderule: The Autobiography of an Engineer
      3. House of Stratus UK? 2000 ISBN 1-84232-291-5 TL540.N6
      5. Review [ sliderule1.php ] (Bill McCandless - July 1998)

      2010-05-26 Wed May 26 07:50 This site cited

      Thanks to the University of Toronto for [ fmlinks.html ] that links to this site.

      I have returned the fovor by puting a link in [ samples/methods.html ] under "Formal Methods".

      I also have to updated my collection of documentation and FAQs [ doc/ ] which has got sadly out of date...

      2010-05-25 Tue May 25 19:25 A new constructed language -- iConji

      I collect invented languages... especially thos with a graphic flavor. Here is a new one designed for people to send each other iconic message ... message made out of icons. To get the flavor see [ http://www.iconji.com/ ] and explore a bit. They have something right -- the language is open and will be (they say) be allowed to evolve as its users use it.

      For me I find the abscence of icons for abstract ideas a little worrying. But It might just be the ideal languages for comunicating instant messages in the future:-)

      By the way, the icons would complement mind maps... and I've just been told about [ Main_Page ] a tool for drawing these on a computer.... but I still prefer pencil, paper and highlighters.

      2010-05-25 Tue May 25 08:14 Automotive software

      Here are a couple of articles on the software that is inside most automobiles these day, and the need for transparency in modern technology... These links [WeberWeisbrod03] , [McRae02] , [Edwards09] (Matlab) are some previous related items.


      1. Jurgen Mossinger
      2. Software in automotive systems
      3. IEEE Software Magazine V27n2(Mar/Apr 2010)pp92-94
      5. No reboots allowed!
      6. 1970s assembler..1990s C
      7. Bosch CMMI level 3..5


      1. David Alan Grier
      2. The Age of accountability
      3. IEEE Computer Magazine V27n5(May 2010)pp6-8
      5. Example of good people unable to solve problems because they did not communicate or cooperate.
      6. There is now a need for transparency.
      7. Automobile software needs software engineering. Hence AUTOSAR.

      2010-05-24 Mon May 24 09:31 Servers up again

      I think that there was a powercut on campus during a thunder storm this weekend. For a while the web servers for CSE were down and then came back... but we didn't have SSH service running becuase of a file server not running.

      Things look OK now.

      However, there won't be a normal blog item today.

      This is also because I hear that Martin Gardner [ Martin_Gardner ] has died. His "Mathematical Recreations" column in the Scientific American, and later his books, were an inspiration to me. Should I tie a Moebius band about my arm in mourning?

      2010-05-20 Thu May 20 07:44 Special Seminar Monday 2-3pm

      [ seminar/20100524NickNavaroli.txt ]

      2010-05-19 Wed May 19 10:10 UML Usage by Programmers

      A recent posting on Google Groups [ umlforum?hl=en ] quotes some results from an ongoing survey of programmers and what parts of the UML they use.


      1. Dwayne Anius & Brian Dobing
      2. Programmers' views of the usefulness of UML diagrams
      3. Survey Monkey (February 16 to May 6, 2010) [ uml ]
      5. Table shows that nearly all programmers (98%) have used class diagrams but only 6% have used Timing Diagrams.
      6. Table 2: Respondent Views of UML Diagrams
        DiagramUsed (%)AccessAccuracyUsefulnessN
        Use Case Diagrams87473.123.0047
        State Chart/Machine69353.593.9449
        Use Case Narratives47513.593.4147

        (Close Table)

      7. (dick)|-plotting usefulness vs usage hints that Use case narratives and state machines should be used more than they are.

      2010-05-19 Wed May 19 08:00 Size does matter in Coupling

      I contnue to be cynical about metrics -- quantitive measures of the quality of artifacts (mainly source code). At worst they seem to be a form of bean-counting -- how many lines of code in a class? At best a warning that a piece of code may have a problem. Rarely has anybody faced up to the fact that some software structures are determined by requirements and so the metrics should be measued relative to what the software is trying to do.

      However, here is a subtle result indicating an underlying truth. This is continuing a series of experiments analysing open source code -- follow the link to KoruZhangEmamLie09(below) or search my bibliography [ bibfull.php?from=blog&search=Koru ] for "Koru".


      1. A Gunes Koru & Khaled El Emam
      2. The Theory of Relative Dependency: Higher Coupling concentration in Smaller Models
      3. IEEE Software Magazine V27n2(Mar/Apr 2010)pp81-89
      5. Measured dependencies between classes -- inheritance and couplings.
      6. Number of dependencies is not proportional to size (LoC).
      7. You are more likely to find a line that is dependent when the class has fewer lines of code.
      8. Measures the effect of refactoring in one project -- makes classes smaller.
      9. (dick)|-a small class has to be coupled to other classes to do anything useful.
      10. Compare [KoruZhangEmamLiu09]

      2010-05-18 Tue May 18 12:43 Architecture

      I have always had a problem with the use of Architecture by software people. It seems, to me, to be a very fuzzy term. I can't seem to tie it down to a type of artifact -- does it describe the classes you are coding or the packages you organize the project into? Certainly it should include traces from requirements into technical design decisions... Technical Memoranda in Larman's UP. Here Booch points out that enterprises have an architecture... and it he does not mean the design of the buildings but more like the organization and procedures etc. that make the enterprise run.


      1. Grady Booch
      2. Enterprise Architecture and Technical Architecture
      3. IEEE Software Magazine V27n2(Mar/Apr 2010)pp96+95
      5. Enterprise Architecture and Technical Architecture speak about different things mostly, so keep the notations etc. separate.
      6. One is about the organisation and the other about the software.
      7. Many more frameworks for doing enterprise architecture than technical architecture.

      2010-05-17 Mon May 17 12:00 On the Impact of the Internet on the Media and advertizing

      I started the week by removing last weeks postings to [ blog010.html ] , please adjust any links you have...

      I've just finished a quick read of "The Chaos Scenario" that argues that the internet is reducing mass markets to niche markets and increasing the publication rate -- everyone can publish on anything. And this in turn means changes in advertizing and how businesses have to work. I particular enterprises will have to learn how to listen and how to reap profit and fame from listening rather than shouting...


      1. Bob Garfield
      2. The Chaos Scenario -- Among the ruins of mass media, the choice for business is stark: Listen or Perish
      3. Stielstra Publishing USA 2009 [ http://TheCahosScenarion.net ]
      5. The title says it all...
      6. He claims that Top 10 lists are good for blogs and gives the reader the option to publish this list:
      7. Listenomics::=following,
        1. Listen to the conversation
        2. Better yet, host the conversation
        3. Off that Community a stake in your enterprise
        4. Practice Jujitsu -- turn you attackers strength against them
        5. Sneeze in Public
        6. Have a story to tell
        7. What's it in for us? Not you. US!
        8. Behave yourself
        9. Remember Siegfried and Roy. Especially Roy. -- Tigers)
        10. Pray for Serenity -- somethings you can not fix.

        2010-05-13 Thu May 13 08:18 Users and Requirements

        The first step in large projects is one of extreme risk. Small misunderstandings are amplified into expensive bug fixes. One solution is to build large software in increments, one small requirement at a time. Even so it helps if you take time to encourage creative rather than critical thinking. In other words, employ a technology that lets users and clients imagine what they need. It turns out that the best technology is probably low technology not high technology. However see Gottesdiener02 below for a more traditional "businesslike" technique.


        1. Mary Rose Cook
        2. Creative Requirements Conversations
        3. IEEE Software Magazine V27n2(Mar/Apr 2010)pp90-91
        5. Gathering requirements should be a creative conversation and so needs special environments and techniques.
        6. The Touring Cafe Caravan -- mobile space to collect requirements. Free refreshments...
        7. Speed modeling: 3d brainstorming, plasticine, ...


        1. Ellen Gottesdiener
        2. Requirements by collaboration: workshops for defining
        3. Addison-Wesley Longman Publishing Co., Inc., Boston MA 2002. ISBN 0-201-78606-0 $44.99 [ http://www.ebgconsulting.com/ ]

        2010-05-12 Wed May 12 11:14 Classpects -- another new buzz phrase


        1. Hridish Rajan & Kevin J Sullivan
        2. Unifying Aspect- and Object-Oriented. Design
        3. ACM TOSEM Trans Software Eng & Methodology V19n1(Jan 2010)pp3:1-14
        5. Proposes a language construct that is both a class and an aspect.
        6. Demos that classpects simplify the design of code.

        By the way -- Computer Reviews have published online my review of [SubramanyamWeissteinKrishnan10] (CR).

        2010-05-12 Wed May 12 11:01 Delay in posting

        Our servers went down this morning.... so there will be a delay before I post today's entry.

        2010-05-11 Tue May 11 16:29 Department name change and the fall schedule

        Here is a news item for people at CSUSB who can't find there CSCI courses any more.
          Please note that Summer 2010 is the last quarter in which courses offered by the School of Computer Science and Engineering will have the prefix designation CSCI. Beginning with Fall 2010 such classes will have the prefix CSE. For example, CSCI 201 will be CSE 201.

          From Alice Martinez

        1. ASC II
        2. School of Computer Science and Engineering
        3. California State University
        4. San Bernardino, CA 92407-2397

        2010-05-11 Tue May 11 09:16 Consulting

        Internet communication has always used the HHOS protocol or mode.
      8. HHOS::= "Ho Ho, Only Serious", Truths are wrapped up in humour.

        Here is a nice example from Alan Skorkin on his blog. It leads to a paperback that looks interesting but I haven't any data on it....Help!


        1. ALAN SKORKIN
        2. 8 Types Of Software Consulting Firms - Which One Do You Work For?
        3. Skorks MAY 4, 2010 [ http://www.skorks.com/2010/05/8-types-of-software-consulting-firms-which-one-do-you-work-for/ ]
        5. Funny but True
        6. Quotation from "The Nomadic Developer" by Aaron Erickson, See EricksonA09 below
        7. List: BOZO Consulting, FEAR Consulting, The Body Shop, CHEAP Consulting, Personality Cult Consulting, Smelzer and Melzer Consulting, "Push the Sku" Consulting, "Band of Freelancers"


        1. Aaron Erickson
        2. The Nomadic Developer: Surviving and Thriving in the World of Technology Consulting
        3. Addison-Wesley Professional; 1 edition (May 15, 2009) ISBN 0321606396 [ 0321606396 ]
        5. Help [click here [socket symbol] EricksonA09 if you can fill this hole]

        2010-05-10 Mon May 10 08:08 Personality Psychology or expertise in Pair Programming

        Firs I just moved the previous items into the [ blog010.html ] archive. I was reporting on recent research on personality, expertise and programming. Here is some more. The data such as it is: expertise matters more than personallity and pair programmin trades quality for speed/productivity.

        But first an administrative note. I have a copy of [ blog010.html#BaierKatoen08 ] and plan to study its 900+ pages and report on it here some time "Real Soon, Now".


        1. Jo E Hannay & Erik Arisholm & Harals Engvik & Dag I K Sjoberg
        2. Effects of Personality on Pair Programming
        3. IEEE Trans Software Engineering V36n1(Jan/Feb 2010)pp61-80
        5. Surveys models of personality. Selects the big 5 factors not MBTI.
        6. Personallity is not as important as expertise for productivity when pair programming.


        1. Stuart Wray
        2. How Pair Programming Really Works
        3. IEEE Software Magazine V27n1(Jan/Feb 2010)pp50-55 + Correspondence V27n2(Mar/Apr 2010)pp8-9
        5. For mechanisms account for pair programming advantages...
        6. Mechanism 1: Pair Programming Chat Stating problems and solutions out loud allows you to hear them and so rethink them. Well known positive effect of a verbal explanation to anybody. Interviews include white board solutions to problems.
        7. Mechanism 2: Seeing more details Can't see what is there if you know what is there.
        8. Mechanism 3: Fighting Poor Practices
        9. Mechanism 4: Sharing and Judging Expertise
        10. Correspondence
          1. Linda Rising: It is the other person's brain and experiences, not just their eyes.
          2. Andrew Main: not navigator-driver but constructive debate and instant code review.
          3. Andy Raybould: pairing encourages you to do better.
          4. Joshua Stern: pair programming sounds absurd.
          5. Roy Morris: Pairing slowed one a project down to failure. In two projrects increased design quality. Never again.
          6. Andrew Glue: you work harder when paired. Better than meetings.
          7. Nico Coetzee: Shared space for team arround a table works as well or better.

        2010-05-07 Fri May 7 08:05 Personality and software development

        A different types of people good at different jobs in developing software? Here is one theory relating personality types to 4 disciplines as I would put it. The article itself presumes a traditional phased "life cycle". I believe that at any time you have a mix of jobs to get done, and so possibly a different mix of people. Also I didn't notice any experimental data or experiences that fit the theory in this article and there is evidence that in some proceses it is not personallity that has an effect, but experience(later).


        1. Luiz Fernando Capretz and Faheem Ahmed Making Sense of Software Development and Personality Types IEEE IT Professional (Jan/Feb 2010)pp6-13 [ T_IT_MakingSense.pdf ]
        3. Theory Different personallities are most useful at different times/jobs.
        4. MBTI::="Myers-Briggs Type Indicator", [ samples/reference.html#MBTI ]
        5. Which types fits four disciplines/phases: Table 2 "The personality types with the strongest impact on the software life cycle."
          Personality typesSystem analysisSoftware designProgrammingTesting Maintenance
          Extroversion (E)x
          Introversion (I)x
          Sensing (S)xxx
          Intuition (N)x
          Thinking (T)xx
          Feeling (F)x
          Judging (J)x
          Perceiving (P)x

          (Close Table)

        2010-05-06 Thu May 6 07:57 Expertise vs icons

        Here is an interesting result from some experiments with the comprehension of code for a web based system -- with and without Conallen's special symbols.


        1. Flippo Ricca & Massimiliano Di Penta & Marco Torchiano & Paolo Tonella & Mariano Ceccato
        2. How Developers' Experience and ability influence application comprehension tasks supported by UML Stereotypes: a series of four experiments.
        3. IEEE Trans Software Engineering V36n1(Jan/Feb 2010)pp96-118
        5. Attempts to evaluate Conalen's UML profile for web designs. [Conallen02]
        6. Shows that the special symbols make up for experience.
        7. Experienced people use the source.

        2010-05-05 Wed May 5 07:28 Corrected some links

        I'm planning to post an item on the effectiveness of Jim Conallen's Web WAE Stereotypes for the UML and uncovered some broken links in [Conallen01] and [Conallen02] , both refering to a non-documented "Conallen00". So I've just fixed it. More about the experiemnts later...

        2010-05-04 Tue May 4 11:07 Checking code for smells and Anti-patterns

        Previously [ blog010.html ] I presented some model checking and code analysis tools that spot defects in artifacts. Slightly more subtle is the task of spotting bad style or code that smells. However, it turns out that many smalles can be expressed as combinations of metrics that can be measured, and so anti-patterns (common ways to code that are not sustainable or clear) can also be flagged. This has yet to cross the chasm between academe and industry, and may never make it. But it is an interesting proof of concept and includes a new language for describing bad code. The one thing that does not work is understanding natural language in identifers. Apparently some form of ontology is needed.


        1. Naouel Moha & Yann-Gael Gueheneuc & Laurence Duchien & Ann-Francoise Le Meur
        2. DECOR: A Method for the Specification and Detection of Code and Design Smells
        3. IEEE Trans Software Engineering V36n1(Jan/Feb 2010)pp20-36
        5. Anti_patterns := {Blob, Functional decomposition, Spaghetti code, Swiss Army Knife}.
        6. Smells := {large class, low cohesion, data class, controller class, controller method, long method, no parameter, use global variable, no inheritance, no polymorphism, procedural names, one method in class, multiple interfaces, ...}.
        7. Smells are symptoms of Anti-Patterns.
        8. Shows how to express an informal description of an anti-pattern in terms of smells into a formal language called SMELLDL (a Domain Specific language for smells), and how to map smells into ranges of values for metrics. Hence how to spot antipatterns in code.
        9. Tools based on theory detected many smells and antipatterns in open source code samples.
        10. Problems with detecting smells expressed using natural language semantics of the identifiers in the code. Will try to use open ontologies.

        2010-05-03 Mon May 3 07:10 Complexity

        Here is a historical review of a recent buzz phrase -- Complexity. This not to be confused with the CSCI topic of the "Complexity of Algorithms". It is about the emergence of weird and chaotic behaviors in simple systems, and the occurnce of order in large, but simple systems. The following is readable and thorough (and doesn't have much mathematics).


        1. Melanie Mitchell
        2. Complexity: a guided tour
        3. Oxford UP UK 2009
        5. A personal, human, and pretty complete description of researches leading up to and associated with the Santa Fe Institute.
        6. Includes a brief history of the rise and decline of cybernetics and of general systems theory.

        2010-04-30 Fri Apr 30 06:46 Formal Methods need rethinking

        The first time I read David Parnas's classic paper on decomposing a problem into modules I just did not get it. I was happy with sketching a flowchart and allocating each box to a module. On the other hand I divided up my Ph. D. project differently. There was a module called Stack for example and another called CPU that was a virtual machine with plugable components that would hold the machine dependent fucntions..... Which was closer to what Parnas was talking about. So, slowly, I realized how very smart it was to place each design decision inside its own piece of code. So I became a fan. He later moved on to explore the use of mathematics and logic in software development -- one my own interests as well. And an area of though that turned into "formal methods". Here Parnas looks at the field called "formal methods" and explains why it needs to be rethought. His proposals of using the calculus of Relations was part of my MATHS project. His use of tables to show the kind of logic that appears in real requiremnts is wise. And when I experimented (in Hypertalk on an old Mac) combining tables with his concept of Displays I found it rather effective. A Display cobines 3 windows. The first shows the desired properties for a module. The next shows the structure of the module and the third lists the properties of the modules that the first module uses. I owe him for a lot of good ideas.

        His latest thoughts make interesting reading as they match BesseyEtAl10 (below) on the difference between lab tested tools and mainstreaming tools. It also suggests that MillerWhalenCofer10 and Wright10 (both below) have only just started a long and painful process to make Model and Type checking a mainstream quality control method.

        One thing is certain these methods will not help my DSL providers web-based billing system that states -- on the 29th of April -- that it will debit my account on the 28th of April.... and provides three different account Ids... Or a segment of this website which was still not setting the "Reply to" field when people use the [Comment/Contact] button. Perhaps I should start applying Parnas's ideas in even small pieces of software.


        1. David Lorge Parnas
        2. Really rethinking 'Formal Methods'
        3. IEEE Computer Magazine V43n1(Jan 2010)pp28-34 + letter V43n3(Mar 2010)pp6-7
        5. Claims of progress and industrial adoption doubted. Example: benefits of inspection vs formal specification known since 1979. They can account for most later claims!
        6. Alarming gaps: Research vs Practice, Software development vs engineering, computer science and mathematics.
        7. Mathematical papers are about a particular formal language not discovering ways to apply new mathematics to a problem.
        8. Computer variables are finite state machine but in mathematics variable are placeholders in functions and relations.
        9. How to handle arrays.
        10. Conventional expressions don't express piecewise-continuous and discrete functions.
        11. These days: most software variables have a hidden state., programs do not terminate, and time is important.
        12. Use relations and relational algebra! Abandon pre-conditions and post-conditions!
        13. Work in multiple directions.
        14. Find ways to handle side-effects and non-determinism.
        15. Distinguish model vs specification vs description. Avoid "specification languages"
        16. Investigate using a predicate to specify requirements.
        17. Need to be able to analyze a program like an engineer analyses a circuit. Not program proof, but derivation of properties.
        18. Need to research ways to use mathematics to document programs -- outside of the code of the program.
        19. De-emphasize "technology transfer" and advocacy, instead go back and change what we are selling.
        20. We need an integrated notation and step by step ways of moving from user to code.
        21. Be careful to spot abstractions that are lies!
        22. Don't try to be philosophers and logicians... try to emulate engineers.
        23. Letter from Toomas Plaks: Some math applications were lost in the search for formal methods.
        24. Letter from Lee Pike: quotes examples of successful FMs, but some research not worthwhile.
        25. Reply: mathematics is not yet mainstream.

        2010-04-29 Thu Apr 29 09:21 Spotting errors in Practice

        Continuing the theme of the week here is a report of what happens when a static analysis tool is moved out of the laboratory and into the world of industrial code. It is not comforting to know how many bugs are allowed by modern compilers, misunderstood by programmers, and allowed by managers into the the final shipped software. It also shows the chasm that model and type checking have to jump before becoming anything like mainstream. I will return to the gap between research and practice when I post my thoughts on Parnas's latest work.


        1. Al Bessey & Ken Block & Ben Chelf & Andy Chou & Bryan Fulton & Seth Hallem & Charles Henri-Gros & Asya Kamsky & Scott McPeak & Dawson Engler
        2. A few billion lines of code later -- using static analysis to find bugs in the real world.
        3. Commun ACM V53n2(Feb 2010)pp [ 1646353.1646364 ]
        5. Practical experience uncovered new problems not seen in experiments. "Weird is not good. Tools want expected".
        6. Bugs found vs false positives.
        7. In practice most users are not the developers.
        8. Selling the tool by an onsite trial with engineer and salesperson.
        9. rules
          1. You can't check code you don't see.
          2. Not everybody uses make or even command lines. Must adjust checkers to work in complex GUI build ecology. Typical overnight builds. You can not change a build process even if it is clearly broken.
          3. You can't check code you can't parse. Compilers diverge from the standard and are old. Amazing code works. Must translate these away for each compiler. 100s of translations.
          4. Programmers react to bug reports with disbelief, anger, denial, and bargaining. Always some Clueless people. Good people still do stunningly clueless things. Always present results to a group. Someone may be stupid or unmotivated but another can be smart and motivated.
          5. Commonly code is shipped with bugs in it. Lots of bugs. So maintain a list of bugs that are known already.
          6. Upgrades that find more bugs make managers and the checker look bad. Bugs in the tool that lead to missed bugs make tool look bad when upgrade fixes them.
          7. Missing bugs is easier to sell than reporting nonbugs.
          8. Churn is bad. Churn is unexpected changes in user output on an upgrade. (dick: Festina lenti).
          9. Deeper, smarter analysis is not always good. Need explainable bug reports.
          10. Vital to reduce false positives. Especially in the early runs.
          11. Else: "this tool sucks".

        10. Programmers are starting to accept static checking tools.
        11. If the code is big enough and it compiles then you can find bugs in it.

        2010-04-28 Wed Apr 28 07:27 Error spotting

        Continuing a theme of methods for making software less likely to fail or have security flaws here are two current techniques: Model Checking (filling in a hole in [ blog010.html#2010-02-02 Tue Feb 2 20:42 Models of Software ] ) and Type Checking. Both claim successes in particular (real) projects.


        1. Steven P Miller & Michael W Whalen & Daren D Cofer
        2. Software model checking takes off
        3. Commun ACM V53n2(Feb 2010)pp58-63 [ 1646353.1646361 ]
        5. Case studies involve millions of states.
        6. Need to take care in selecting the best tool to check the models.
        7. Only takes a day to train people to use the tools.
        8. Model checking found errors that testing missed, and cost lest.
        9. Need better ways to handle floating point numbers and transcendental functions.


        1. Alex Wright
        2. Type theory comes of age
        3. Commun ACM V53n2(Feb 2010)pp16-17 [ 1646353.1646361 ]
        5. Type systems must be decidable, transparent, and sound.
        6. Classification of type checking approaches: static vs dynamic = compile-time vs runtime.
        7. Refinement types are a type plus a constraint.
        8. Type checking tools help find errors and security holes in code and other documents (Z).A

        2010-04-26 Mon Apr 26 09:04 Clinics and Practice of Proving

        Start of a new week.... I will be holding special "clinics" for students working on projects. On Friday we have a special seminar with a guest speaker. See [ plan.html ] for times.

        And here is a reply to Tony Hoare's retrospective on his career:


        1. Jim Humelsine
        2. Software still as much an art as science
        3. Commun ACM V53n1(Jan 2010)p7 [ 1629175.1629176 ]
        5. Reply to [Hoare09]
        6. Asserts I use program proving but clients can't give me a clear specification...

        2010-04-22 Thu Apr 22 13:24 Competing DBMSs -- a brief history

        This blog is described as the "long view" of software development. In the long view the new controversy over Data Base Management Systems is rather like a replay of the 1970's and 80's. In those days there were a dozen competing mainframe data base management systems and a "CODASYL" standard model from the people who brought us COBOL. IBM had one or two proprietary DBMSs and several small software companies sold there own proprietary data bases. To a large extent you would take a logical design based on the standard and then rejig it to fit the arcane rules of the actual data base you planned to use. The standard was only available on a couple of main frames (forget minis, and this was before PCs).

        Then along comes a brilliant piece of theory by Edgar Codd that show how all data can be expressed using simple tables. Part of the theory is a process (normalization) that lets you take any existent or planned data and convert it into a (large) collection of tables. This becomes known as a Relational Data Base. To my surprise the theory took off in practice. Relational data bases started appearing in the companies where my students worked before it was in the university where I taught.

        By the late 1970's I moved to the Civil Service College in London, England, and was taught to combine CODASYL data modeling with normalized data that was then forced to meet the still surviving DBMSs. We even had rules for working with Indexed Sequential (ISAM) files. We also had techniques that sped up normalized data bases to perform quickly enough for the clients.

        Then the relational DBMS slowly outcompeted the other DBMSs. Even the sub-relational DBMSs claimed to be "relational".

        So in summary -- a good user-friendly model of data became cock of the roost. Until now, when we get the debates and doubts described below.

        2010-04-21 Wed Apr 21 08:49 Competing DBMSs -- MapReduce

        I've been tracking Google's MapReduce technique [DeanGhemawat08] [Lammel08] for some time. I was not impressed -- the concept of
      9. map | sort | reduce was available in COBOL --- even if it did not (normally) exploit parallelism -- for that you had wait until the 1970's and UNIX. So in 2010 the Journal for All Members of the ACM instigates a policy of encouraging debate(Vardi10). The first debate is about MapReduce -- StonebrakerEtAl10(con), DeanGhemawat10(pro) and GrierJEtAl10 (correspondence). And then the United States Patent Office (USPO10) grants a patent on a completely obvious extension of prior art -- In My HUmble Opinion.


        1. Moshe Y Vardi
        2. More Debate, Please
        3. Commun ACM V53n1(Jan 2010)pp5 [ 1629175.1629176 ]
        5. Quotes death of program proving and birth of model checking.
        6. Refers to debate on Mapreduce.


        1. Michael Stonebraker & Daniel Abadi & David J DeWitt & Sam Madden & Erik Paulson & Andrew Pavio & Alexander Rasin
        2. MapReduce and Parallel DBMSs: Friends or Foes?
        3. Commun ACM V53n1(Jan 2010)pp64-71 [ 1629175.1629198 ]
        5. Claims that Hadoop does not perform as well as well tuned Parallel Data bases,
        6. But Parallel DBMS need expert tuning to perform well.
        7. Replies: [DeanGhemawat10] [GrierJ10]


        1. Jeffrey Dean & Sanjay Ghemawat
        2. MapReduce: A Flexible Data Processing Tool
        3. Commun ACM V53n1(Jan 2010)pp72-77 [ 1629175.1629197 ]
        4. =ADVERT =EXPERIENCE GOOGLE TOOLS MapReduce Hadoop FORMATS Protocol Buffer
        5. Reply to [StonebrakerEtAl10]
        6. Has some conclusions (p77) for speeding up MapReduce processes.


        1. Jonathon Grier & MIchael Stonebraker & Daniel Abadi & David J DeWitt & Sam Madden & Erik Paulson & Andrew Pavio & Alexander Rasin
        2. Hold the Accusations that limit Scientific Innovation (correspondence)
        3. Commun ACM V53n4(Apr 2010)p7 [ 1721654.1721657 ]
        5. Reply to [StonebrakerEtAl10]
        6. Google did not trample on the toes of others.
        7. But Google's engineers seem to have ignored prior art when developing MapReduce.


        1. Inventors: Dean; Jeffrey (Menlo Park, CA), Ghemawat; Sanjay (Mountain View, CA) Assignee: Google Inc. (Mountain View, CA)
        2. United States Patent 7,650,331: mapreduce
        3. USP(January 19, 2010) [ 7,650,331 ]
        5. Patents MapReduce etc.
        6. Also see [DeanGhemawat08] [Lammel08] [DeanGhemawat10] [StonebrakerEtAl10] [GrierJ10]

        2010-04-20 Tue Apr 20 09:02 Competing DBMSs -- NoSQL

        This is the first (in time) of a pair of postings on the new (or rediscovered) data processing techniques. I'll be posting on MapReduce later (and above). I like many dislike having to design and populate a data base to get a simple job done. Mostly I get by using the UNIX tools and flat files. Similarly I avoid XML whenever I can. Here are a couple of articles on the alternatives to relational DBMSs.


        1. Neal Leavitt
        2. Will NoSQL databases live up to their promise?
        3. IEEE Computer Magazine V43n2(Feb 2010)pp12-14
        4. =ESSAY DATABASES RELATIONAL TABULAR vs key-value column-oriented document-based
        5. Lists new tools and their issues.


        1. Michael Stonebraker
        2. SQL Databases v. NoSQL Databases
        3. Commun ACM V53n4(Apr 2010)pp10-11 [ 1721654.1721659 ]
        5. Questions the value of NoSQL DBMSs for Online Transaction Processing Systems(OLTP)

        2010-04-19 Mon Apr 19 12:55 Starting a new week -- 2 RFCs on Logic

        I've archived last weeks postings in [ blog010.html ] and have decided to start this week by posting a couple of Requests For Comments on books on Logic for Computer people. If you have read either of these and say anything (good or bad) about it use [ contribute.html ] to share your ideas.


        1. David Makinson
        2. Sets, Logic, maths for computing
        3. Springer NY NY 2008 ISBN 1846288444
        5. Notes [click here [socket symbol] Makinson08 if you can fill this hole]


        1. Robert Lover
        2. Elementary Logic: for software Development
        3. Springer Publishing NY NY (2008) ISBN 1848000812 CR 1002-0125
        4. =UNREAD =TEXT LOGIC
        5. Notes [click here [socket symbol] Lover08 if you can fill this hole]

        2010-04-15 Thu Apr 15 13:20 Aspects of Aspect Oriented Software Development

        Nice study of the use of a new technology in real projects.


        1. Awais Rashid & thomas cottenier & Phil Greenwood & Regine Meunier & Roberto Coelho & Mario Sudholt & Wouter Joosen
        2. Aspect-oriented software development in practice: tales from AISD Europe
        3. IEEE Computer Magazine V43n2(Feb 2010)pp19-26
        5. Projects used the basic AO features to modularize well-known crosscutting concerns.
        6. AO was also used to stop bad design by adding new error types.
        7. Incremental introduction, developer concerns appeared before product features.
        8. AO improves stability and reduces size of design
        9. Examples of pointcut fragility because they depend on names of classes, methods, and fields.
        10. New aspects can interact badly with old exception handling.

        2010-04-14 Wed Apr 14 09:40 Stuff worth knowing about

        I'll be saving these in my [ samples/ ] of MATHS in action.

        (Code bubbles): tool IDE [ codebubbles_site.htm ]

        (Languages -- TIOBE Index): popularity of languages [ index.html ]

        (Statistics): what you should know [ programmer_stats.html ] (includes much f***ing)

        (Mathematics): what you should know [ http://www.skorks.com/2010/03/you-dont-need-math-skills-to-be-a-good-developer-but-you-do-need-them-to-be-a-great-one/ ]

        (Economics): why perfect software doesn't happen [ economics-perfect-software ]

        (Another Turing Machine): theory [ http://aturingmachine.com/ ]

        2010-04-13 Tue Apr 13 10:57 Software Cost Reduction

        While researching the background for a paper I am reviewing on Requirements Engineering I rediscovered the SCR or "Software Cost Reduction" project. I discovered a description [Heitmeyer02] on the webthat describes the method and its history and tools.

        It may match an article in the "Encyclopedia of Software Engineering" [Marciniak02] however I can't verify this suspicion at this time, not having a copy available. If you have one and the time drop me a note if I'm wrong or right.

        As for the bottom line, [Hager89] reported a 10% cost reduction in projects that use CSR. More important, to me, is that a lot of interesting and useful ideas came out of the SCR project including the four variable model (below) and the use of tables to specify requirements.


        1. Constance Heitmeyer
        2. Software Cost Reduction
        3. Center for High Assurance Computer Systems (CHACS) Publications 2002 [ 2002heitmeyer-encse.pdf ]
        5. @T(c)::=c becomes true,
        6. @F(c)::=c becomes false.
        7. SCR uses logic and tables to express very clearly what is expected of a new system.
        8. Software that monitors certain inputs and controls certain outputs.
        9. It uses a four variable model (NAT+REQ+IN+OUT) that distinguishes the assumed properties (NAT) from the requirements (REQ). IN and OUT specify tolerances.
        10. Software has modes. Tables relate modes and events. Finite State model.
        11. Human inspection for defects proved expensive and tools uncovered more defects afterwards.
        12. Tools include SPIN, TAME, PVS, Salsa, an invariant generator, .
        13. Usable subsets of requirements lead to the uses hierarchy, module guide, etc..
        14. Methods and tools applied to real projects to discover problems.


        1. Constance Heitmeyer
        2. Software Cost Reduction.
        3. Article in [Marciniak02]
        5. Compare [Heitmeyer02] perhaps [click here [socket symbol] Heitmeyer02a if you can fill this hole]


        1. J. J. Marciniak, editor
        2. Encyclopedia of Software Engineering
        3. John Wiley & Sons, Inc., New York, NY 2002 2nd edn
        5. Help [click here [socket symbol] Marciniak02 if you can fill this hole]

        2010-04-12 Mon Apr 12 12:57 Chaos Worse Confounded

        I am delighted that someone has dug up some evidence that the Chaos Reports -- which regularly claim that the state of software development is pretty awful -- have been debunked. They don't measure success. The measured the accuracy of the estimates.


        1. J Laurenz Eveleens & Chris Verhoef
        2. The rise and fall of the Chaos Report figures
        3. IEEE Software Magazine V27n1(Jan/Feb 2010)pp30-36
        5. Provides evidence that the process used by the Standish group to measure the percentage of projects that succeed is actually measuring the accuracy of the estimates at the start of the project not the real success of the project.
        6. Problems with a closed data set.
        7. Tendency to sensationalize results when advocating new methods.

        2010-04-08 Thu Apr 8 09:57 More on The Shared Paradigm

        Earlier this year [ blog010.html#2010-03-09 Tue Mar 9 20:19 Maintaining ignorance of maintenance ] I argued that [DenningFreeman09] 's model of engineering/science/mathematics/computing ignored the iterative nature of all these disciplines. Now a letter [ Fulltext in citation ] opposes them because the shared paradigm doesn't include understanding the situation before you provide solutions. I completely agree. The letter also accuses Denning and Freeman of not understanding what a paradigm is in science by invoking Kuhn.

        It all goes to show that this grand theory of everything does not fit anything well. I'd prefer something like this:

      10. shared_paradigm2::= forever(analyse_a_bit; theorise_a_bit; construct_and_test).

        Now you might think that this looks like a piece of the Agile Manifesto.... but I've been thinking about software development in a similar way for at least 20 years. However I had a slightly more sophisticated model -- not as an iterated sequence of steps but as three parallel processes (Analysis & Design & Implementation) that stop and restart themselves as needed. Here is part of the poster I presented at a Southern California SIAM meeting in 1992.

        [SADT diagram of Analysis, Design, and Implementation processes]

        The key thought is that the three processes are data driven and restartable. When the client changes they can trigger off a burst of Analysis. This can change the model of the situation (which includes requirements) that in trigger rethinking the design. Changing the design forces some Implementation which generates a new system (we hope) which provokes the Client further...

        In sequential terms:

      11. forever( analyse_a_bit; design_a_bit; implement_a_bit ).

        And where is maintenance? The "bit" is tiny. In Big Design Up Front the "bit" is enormous... and often the project fails because the feedback from the running system takes too long to arrive. The UP teaches us that the mixture of time spent in each sub-process varies as a project proceeds. The RUP also gives a strong push for choosing the scariest "bit" in each iteration...

        2010-04-07 Wed Apr 7 12:59 Designing Diagrams for Software Development

        We have a lot of different ways to draw diagrams in Software Development. Even the UML has 13 different types of diagram. It is by no means complete. Then we have all the old diagrams: DFDs. LDSs. ERDs. ... You can find many examples by looking for the regular expression "^ *=.*GRAPHIC" in my bibliography. Here someone tries to formuate what makes a diagram a good diagram.


        1. Daniel L Moody
        2. The "Physics" of Notations: Towards a scientific basis for constructing visual notations in Software Engineering
        3. IEEE Trans Software Engineering V35n6(Nov/Dec 2009)pp756-779
        5. Presents an exhaustive model of the possibilities for a diagram and there psychology.
        6. Describes various pathologies.
        7. Compares different notations.
        8. Suggests new combinations. Example crowsfeet with multiplicities!
        9. Notes that newer diagrams (UML) seem to be worse than the older ones

        2010-04-06 Tue Apr 6 16:26 Metrics -- size does matter

        The traditional metrics for software have always seemed a little spurious to me. So I'm pleased to find more evidence that the simplest measure of a class (the number of lines of code) drives both coupling and cohesion and the number of times the class is fixed. In 2003 [SubramanyamKrishnan03] we had one experiment and here is another.


        1. Yuming Zhou & Hareton & Baowen Xu
        2. Examining the Potentially confounding effect of class size on the associations between object-oriented metrics and change-proneness
        3. IEEE Trans Software Engineering V35n5(Sep/Oct 2009)pp607-623
        5. Size correlated with common oo metrics and with the number of changes made to modules in Eclipse.
        6. Casts doubt on the traditional interpretation of coupling and cohesion as directly driving the number of changes in a class.

        2010-04-05 Mon Apr 5 10:45 Jean Sammet -- IEEE Computer Pioneer

        First things first (new Schedule below) -- One of the people who got me interested in the design and history of programming languages, back in the 1970's, was Jean Sammet. I must have read and reread her book a dozen times. Citation below (Sammet69). Here [ detail.asp?guid=&searchtype=&DicID=17847&RefType=Encyclopedia ] is a short (and unchecked biography).

        I am very pleased that she has been honored with the Institute of Electrical and Electronic Engineers (IEEE) Computer Pioneer Award.


        1. Jean E Sammet
        2. Programming Languages: History and Fundamentals
        3. Prentice-Hall 1969 Englewood Cliffs, N.J. ISBN 0137299885 [ 0137299885 ] (Amazon.com)
        5. Contents
          1. General introduction
          2. Functional characteristics of programming languages
          3. Technical characteristics of programming languages
          4. Languages for numerical scientific problems
          5. Languages for business data processing problems
          6. String and list processing languages
          7. Formal algebraic manipulation languages
          8. Multipurpose languages
          9. Specialized languages
          10. Significant unemployment (sp?) concepts
          11. Future long-range developments - Bibliography arrangements and author list
          12. Language summary.

        2010-03-30 Tue Mar 30 07:58 Computer Programmer Job Site

          I am Sandra White. I run a resume writing guide and career website which provides free career information and sample resumes for students and Jobseekers.

          I have recently created a Computer Programmer Career section: [ http://www.greatsampleresume.com/Computer-Programmer-Career/ ]

          This section provides useful information to Computer Programming students, Computer Programmers seeking employment and for young and aspiring Computer Programmers.

          This section provides information about career as a Computer Programmer including job outlook, education and training requirements, job description, salary benefits, job responsibilities and job duties.

          If you feel that my Computer Programmer section would be of value to your readers, I'd appreciate it if you could add it as a link on your website so that your viewers can benefit from the Computer Programmer career information provided on my site.

        I'll putting a link in [ samples/etc.html ] under Jobs and Careers.

        2010-03-30 Tue Mar 30 07:46 Spring break

        To celebrate Spring Break (not that faculty get much of a break -- I go from grading the previous quarter into preping the next rather quickly) I've decided to post some of my favorite web sites -- the ones I visit every day or are set up to email me updates. Notice: your milage may differ.

        I will start blogging about software development again on a different schedule on Monday April 5th -- in the morning!

        So, to fill the gap, here we go:
        (Web comics): [ http://www.userfriendly.org/cartoons/archives/ ] (User Friendly), [ comics.php ] (Ph.D), [ http://www.schlockmercenary.com/ ] (Schlock Mercenary) [ http://www.evil-comic.com/ ] (Evil inc), [ ootscast.html ] (Order of the stick), [ http://www.erfworld.com/ ] (Erf World), [ index2.php ] (Gunnerskrig Court), [ http://www.inktank.com/ ] (Ink Tank), [ http://dresdencodak.com/ ] (DresdenCodak), and [ http://xkcd.com/ ] (xkcd).

        (News feeds): [ http://www.wired.com/ ] (Wired), [ http://www.sciencedaily.com/ ] (science daily), [ http://slashdot.org/ ] (Slash dot -- signed up for Email) [ http://queue.acm.org/ ] (ACM Q). and [ http://catless.ncl.ac.uk/Risks/ ] (RISKS to the public).

        (Blogs): [ http://www.skorks.com/ ] (Skorks) and [ http://www.codinghorror.com/ ] (CodingHorror).

        See [ entry.html ] for more of my every day web sites.

        2010-03-25 Thu Mar 25 19:22 Object Oriented Analysis in Practice

        For some years we have had some proposals for ways of using objects to analyse systems. The result is some form of conceptual modeling or Enity-Relationship model. In theory this domian model is the basis for all the classes inside the finished software. But Larman [Larman02] argues that the best we can hope for is a layer that is inspired by real-word concepts. So what happens in practice. Here is the result of a poll.


        1. Roy Gelbard & Dov Te'eni & Matti Sadeh
        2. Object-oriented Analysis -- is it just a theory
        3. IEEE Software Magazine V27n1(Jan/Feb 2010)p64-71
        5. Most classes are identified during design & code.
        6. diagram types: (most used) class(ERD), package, activity, flow, sequence, state, collaboration, DFD, use case(least used). Component& deployment not used.
        7. Text always used, mostly with diagram. Diagrams are not enough.
        8. 80% used one iteration.
        9. Clients do not get oo diagrams.
        10. CASE tools don't speed up understanding and explaining.
        11. Missing: user interface, business process, ... OO models.
        12. Suggest that less is more.
        13. Notes use of OOA depends on policy, costs, and benefits.
        14. Minimize Costs: focus on organisational relationships, interactions, data items, and user experiences.
        15. Maximize Benefits: use psychology and sociology to analyse needs.

        2010-03-23 Tue Mar 23 19:18 Economics rethought

        In [ papers/rjb95b.one.size.html ] I used supply and demand curves to theorize about the development of mass-marketted software. This is based on understanding human behavior as being rational -- attempting to optimize utility. Dan Ariely [Ariely09] has done research that shows that people are not rational. The popularisation is an easy and entertaining read. But it makes the point that, for example, people will work harder in the abscence of monetary rewards than if you pay them if the social rewards are present. This fits ver well with another recent book on cliodynamics that studies the rise and fall of empires. Again the basic research (history) appears sound and the book is easy to read. However some of the predictions are a little scary.


        1. Peter Turchin
        2. War and Peace and War
        3. Pi Press NY NY2006 ISBN 0-13-149996-3 JC359 T87 2005
        5. The ability of a society to inspire its members to cooperate and sacrafice themselves for the whole (Asabiya) is a key determinant of the societies growth and decline.
        6. Empires grow where there have been active ethnic frontiers.
        7. Empires collapse when the loose asabiyah.
        8. Mathews_Law::= "The rich get richer, and the poor get poorer". Follows from the way inheritance works.... and leads to loss of internal cohesion.
        9. Competition leads to ruin, cooperation to growth.
        10. Rome fell many times, not once.
        11. Refers (in passing) to Hari Seldon and Asimov's psycho-history.

        Any way here is something for people who think the software development is all about writing programs [ http://blog.ksplice.com/2010/03/libc-free-world/ ] -- how to produce an unbloated " Hello World " program without libc.

        2010-03-23 Tue Mar 23 19:11 Definitions in Computer Science vs in Business

        Tiffany, an alert reader spotted these definitions in my CS202 site:
        1. OOP::="Object-Oriented Programming", Current paradigm for programming.
        2. KDE::="Kommon Desktop Environment".
        3. TBD::="To Be Done", something you have to do.

        (End of Net)

        and proposes the following corrections
        1. OOP::business="I just made a poo-poo", Current paradigm for telling manager to clean the mess for you.
        2. KDE::business="You gonna kidding me", Current paradigm for telling people Ibdefinitions t going to do that for you.
        3. TBD::business="To Be Determined", something you have to re-prioritize. It is a soft "No".

        (End of Net)

        2010-03-18 Thu Mar 18 20:26 Bugs

        First a list of the 25 most dangerous programming errors then a novel way (Control Theory) to produce system that do not suffer deadlocks.


        1. Steve Christie (Ed) [ cwe@mitre.com ]
        2. CWE - 2010 CWE/SANS Top 25 Most Dangerous Programming Errors
        3. MITRE/SANS [ http://cwe.mitre.org/top25/ ]
        5. Several categorized lists of error types: Cross-site scripting. SQL injection, Classic Buffer overflow, ...


        1. Terence Kelly & Yin Wang & Stephane Lafortune & Scott Mahlke
        2. Eliminating Concurrency bugs with control engineering
        3. IEEE Computer Mag V42n12(Dec 2009)pp52-60
        5. Compile time tool detects possible deadlocks and plants minimally invasive changes to code to avoid them.
        6. DCT::="Discrete Control Theory", C G Casandras & Stephane LaFortune "Introduction to discrete Event Systems", 2nd Ednd Springer 2007

        2010-03-16 Tue Mar 16 20:50 MIS-Management perhaps

        First a blog about a poll about how well business understands IT and vice versa, and then a nic bit of advertising about expanding a software development team with some success by applying what Brookes wrote all those years ago.


        1. Susan Cramm
        2. IT and Business Leaders: Getting Along Is Not Enough
        3. Harvard Business Review (Mar 3 2010) blog [ it-and-business-leaders-getting-along.html ]
        5. Thought that business does not understand IT well enough and IT doesn't understand business as well


        1. Greg Price
        2. How to quadruple your productivity with an army of student interns
        3. Ksplice Mar 10 2010 [ http://blog.ksplice.com/2010/03/quadruple-productivity-with-an-intern-army/ ]
        5. Compare [Brooks87] [Brooks95]
        6. If solution is modularized to separate concerns then you can put new people to work on each modules with out the normal communication penalty.
        7. Well engineered modules don't take as long to learn to use.
        8. "Shared" (Overcrowded) space probably helped.
        9. Discussion [ 2327236 ] (Slash dot) -- not Brookes case, ... wait until it has to be updated, ... Parnas vs Brookes, ... quality of slashdot.

        2010-03-11 Thu Mar 11 19:08 Process mismanagment and improvement

        First why do projects fail? Second, how much should users be involved? Third, how organize and manage improvements? These papers are about peoples different perceptions of projects.


        1. Narciso Cerpa & June M Verner
        2. Why did your project fail?
        3. Communications of the ACM V52n12 (Dec 2009) Virtual extension pp130-134 [ 1610252.1610286 ]
        5. Delivery date, estimates, and other management issues are the commonest reasons for failure.
        6. No time for reviews and reassessing risks, and so, no learning.
        7. Figure 1 page132. 18 top reasons -- Worth the price of the PDF download from ACM.
        8. inhouse not equal to outsourced.
        9. Need inhouse postmortems.


        1. R Subramanyam & F Weisstein & M Krishnan
        2. User participation in software development projects
        3. Communications of the ACM V53n3(Mar 2010) Virtual extension pp137-141 [ 1666420.1666455 ]
        5. In projects developing new software developer satisfaction grows and user satisfaction falls as users get more involved.
        6. In maintenance projects a medium amount of user involvement is associated with the greatest satisfaction for both users and developers.


        1. Nannette P Napier & Lars Mathiassen & Roy D Johnson
        2. Combining Perceptions and Prescriptions in requirements engineering process assessment: an industrial case study
        3. IEEE Trans Software Engineering V35n5(Sep/Oct 2009)pp593-606
        5. In addition to prescribing improvements also analyse what people perceive about the process.
        6. initiate carefully; #(engage stakeholders;collect data; analyse; debate findings); make recommendations.

        2010-03-10 Wed Mar 10 11:09 Not a good day

        I have a cold, so it is hard to stay positive. Thus the day started with discovering I had tested on Tuesday the material to be taught tomorrow.... if you are taking cs375 check out [ cs375/ ] the blog there.

        Then the login server died while I worked on the guides for tommorrow...

        And I forgot my hat -- it jingles to remind me that everything is a joke....

        But, to be positive, the rain has lead to plats gowing, and so today the foothills are starting to turn from green to gold.

        Meanwhile -- the following post is incomplete. I have been convinced since the 1980's that projects never really finish. There are always updates -- changes in requirements, changes in technology, changes in fashions. etc. that demand further analysis, design, and implementation. Further it is a mistake to treat these updates as maintenance and delegate it to the newbie on the team. They demand the same care and attention as the original project.

        In deed, there are no new products in software, we are always working in a context that has to be understood... it is all maintenance.

        Putting it a third way that fits with the agile crowd: we should do all projects as a series of incremental updates. And all updates will involve: Analyse a little, design a little, and code and test a little.

        2010-03-09 Tue Mar 9 20:19 Maintaining ignorance of maintenance

        Here are a couple of maintentance related writings. One argues that with care updates can be distributed safely and simply accross networks without having to download and instal complete replacements for whole programs. The other is notable for not paying attention to the reality that science, engineering, computing, and even mathematics is an iterative and social process. Updates always happen.


        1. Paul Stachour & David Collier-Brown
        2. You don't know Jack about software maintenance
        3. Commun ACM V52n11(Nov 2009)pp54-58 [ 1592761.1592777 ]
        5. Maintaining software does not bring it back to an ideal state but develops it further.
        6. Four known strategies:
          1. Ignore maintenance (hatch a disaster),
          2. Develop perfection and freeze (popular),
          3. Update discrete components (State of the art),
          4. Include version metadata and develop version aware components (Works best).


        1. Peter J Denning & Peter A Freeman
        2. The Profesion of IT: computing's paradigm
        3. Commun ACM V52n12(Dec 2009)pp28-30 [ 1610252.1610256 ]
        5. shared_paradigm::=initiation; conceptualization; realization; evaluation; action.
        6. (dick)|-Ignores maintenance, iterations, updating, and social processes.

        2010-03-05 Fri Mar 5 10:18 A 19th century pattern language for enginers

        My father had this lovely book of mechanical devices dating from the 1800s that he gave to me in 1961. I have "read" it cover to cover several times and like to dip into it. I took it to class to explain what a "pattern" was and a student found it on Google books. The link is in the citation below. Enjoy.

        We could do with a book of sketches of software designs like this. "A sketch, properly executed, is -- to a practical man -- worth a folio of description...".

        A later edition adds (probably written by TWB's son?): "The sketches given in this work are practical drawings intended for Engineers, by an Engineer, showing just what is needed and no more. They will give him the inspiration he requires, the guidance he wants-in fact a "lead" in the right direction-and he will not waste his time wading through a lot of "pictures" that have no analytical value." (from the extensive review linked below).

        But can the UML achieve the above?


        1. Thomas Walter Barber, engineer
        2. The Engineer's Sketch-Book of mechanical movements, devices, appliances, contrivances, and Details
        3. Spon London UK and NY NY 1890 (2nd edn) [ books?id=sExDAAAAIAAJ&printsec=frontcover&dq=%22Thomas+Walter+Barber%22&source=bl&ots=TO7N5WG9MV&sig=4LXrUsWlKGYmqQ84S6DUiPxjVHw&hl=en&ei=K0mRS8bAOoj8sgO6zf38Aw&sa=X&oi=book_result&ct=result&resnum=5&ved=0CBUQ6AEwBA#v=onepage&q=&f=false ]
        5. Extensive review and historicalresearch [ twb.html ]

        2010-03-04 Thu Mar 4 19:27 Go Scratch and language history

        First two new languages and then a pessimistic review of past languages and tools.


        1. Mitchel Resnick & John Maloney & Andres Monroy-Hernandez & Natalie Rusk & Evelyn Eastmond & Karen Brenan & Amon Millner & Eric Risenbaum & Jay Silver & Brian Silverman & Yasmin Kafai
        2. Scratch: programming for all
        3. Commun ACM V52n11(Nov 2009)pp- [ 1592761.1592777 ]
        5. Digital fluency. Computing should include designing, creating, and remixing.
        6. (Tinkerable & meaningful & social) programmming.
        7. web site [ http://scratch.MIT.edu/ ]


        1. Google
        2. The Go Programming Language
        3. Web site [ http://golang.org/ ]


        1. Niklaus Wirth
        2. A brief History of Software Engineering
        3. IEEE Annals History computing V30n3(Jul 2008)pp32-39 =HISTORY PROGRAMMING LANGUAGES TOOLS METHODS PROOF Pascal UNIX C Ada C++ Modula-2 MODULES OBJECT-ORIENTED Oberon ONE SIZE KISS
        4. Complexity & unreliabillity vs profit.
        5. Academia following industry and not leading.

        2010-03-03 Wed Mar 3 10:29 Thank you BrainTrack

        David Siegel of BrainTrack has noticed a broken link on [ info2.html ] and contributed his companies page as a place to find out about Colleges and Universities world-wide.

        2010-03-01 Mon Mar 1 12:26 Early post on a logic text

        I found this BergmanMoorNelson90 in $1 used book store in a local mall. It is a comparatively recent presentation of the two logistic systems that I have taught with some degree of success -- Natural Deduction and Semantic Tableaux/Trees. I'm not so happy with the way the introduce predicates and terms without linking them to natural language, but both these systems are workable ways to prove things by hand. Other books include: [KalishMontague64] , [Jeffrey67] , [Jeffrey91] , [Hodges77] , and [Hodges05] , to say nothing of Lewis Carrol.

        My spin on these methods can be found in [ maths/logic_20_Proofs100.html ] and [ maths/logic_25_Proofs.html ] on this web site as part of the MATHS language.


        1. Merrie Bergman & James Moor & Jack Nelson
        2. The Logic Book (2nd edn)
        3. McGrawHill (1990) ISBN 0-07-909524-0 LC# BC135.B435

        2010-02-25 Thu Feb 25 19:18 Computer Reviews

        Today's note comes from the books and papers reviewed in the December 2009 and March 2010 issues of "Computer Reviews". First, both have a review of [Martin09] "Clean Code". They are CR 0912-1114 and 1003-0222. SImilarly there is a review CR 0912-1198 of [WhiteKochGehrkeDemers09] on the scripting patterns of games.

        Second the December 2009 issue has the following items that I will ordering for CSSB library, and hope that I or some contributor can write a short review or summary by clicking on the "plugin" icon below.


        1. Christel Baier & Joost Katoen
        2. Principles of Model Checking
        3. The MIT Press Cambridge MA (2008) ISBN 026202649X CR 0912-1115
        5. Notes [click here [socket symbol] BaierKatoen08 if you can fill this hole]


        1. Orit Hazzan & Yael Dubinsky
        2. Agile Software Engineering
        3. Springer Pub NY NY(2008) ISBN 184001983 CR 0912-1151
        4. =TEXT
        5. Notes [click here [socket symbol] HazzanDubinsky08 if you can fill this hole]

        Last and least, CR has published my own review of [SaariluomaIsomki08] (CR 1003-0249).

        2010-02-18 Thu Feb 18 19:44 The Waterfall is Back

        Well, the previous item (link under $2010 below) attacked the use of processes that claim to be agile. Here we have an argument that all projects should evolve from an agile start to a ceremonial "waterfall" maintenance phase:


        1. Sutap Chatergee
        2. The Waterfall that won't go away
        3. ACM SIGSOFT Software Engineering Notes V33n1(Jan 2010)pp9-10 [ http://www.acm.org/sigsoft/SEN/ ]
        5. Frontend experts must treat the backend developers as stakeholders.
        6. Need to transition from an agile process to a more ceremonial one as software moves from deployment to maintenance.

        2010-02-16 Tue Feb 16 20:10 A Post-Agile World

        Earlier this month [ blog.html#2010-01-26 Tue Jan 26 17:46 Agile processes becoming mainstream ] I noted suggestions that "Agile" was becoming mainstream. I also noted [ blog010.html#2010-01-21 Thu Jan 21 19:53 Failed Games ] [ blog101.html#2010-01-19 Tue Jan 19 18:53 Processes for developing motor racing games ] the methods used to develop some recent games. Now we have a manager of game development ranting about people adopting "Agile processes" and the popular Scrum process. The blog entry below is long and powerful. It makes interesting reading. I personally wonder whether the three phase process he describes as essential maps neatly into one of the many Unified Processes and RUP.


        1. Gwaredd Mountain
        2. Game Development in a Post-Agile world
        3. Gwaredd Space (Feb 5 2010) [ game-development-in-post-agile-world.html ]
        5. Game_production::= Pre_production; Production; Post_prod.
        6. Pre_production:=Organic+creative+exploration; answers & technology.
        7. Production:=make content & spend money
        8. Post_prod:=alpha; beta.
        9. alpha:=polish game play;
        10. beta:=bug fixing;
        11. "We can change our approach throughout a project lifecycle; we do not always have to stick to the same thing throughout."
        12. (dick)|-Compare with the Rational Unified Process with its adjusting mix of disciplines and 4 phases.

        2010-02-16 Tue Feb 16 10:44 Contribution to my Sports Page

        Sports are not really my thing but some years ago Minh Man Do sent me a nice set of links.... and a day or so ago Heather wrote
          Hi there, my name is Heather and I found your page while researching some fun sports and recreation sites for my students. I love putting the interesting links I find onto my class webpage. Your page was very helpful and had a lot of resources, so I just wanted to say thank you!

          I thought I should point out that the link you have that goes to http://www.atm.ch.cam.ac.uk/sports/sports.html doesn't seem to be working, so I wanted to pass along another page I've found in my research: http://www.jamesbootcamp.com/articles/the-complete-sports-guide.html It's got a big list of links to pages about all kinds of sports and activities. I thought it was pretty great, so I thought you might like to add it to your page. Thanks again!

        I have added it to [ sport2.html ] with thanks.

        2010-02-11 Thu Feb 11 20:07 Temporal Logic and Model Checking wins a prize

        The people who invented or discovered the application of Modal Logic to checking the correctness of designs back in the 1980s have been given the 2007 Turing prize (ClarkeEmersonSifakis09). There paper is a historical introduction to the topic with some suggestions for its future development. The key point is that software can be described by a automata-like model and then a tool can check to see if required properties hold or not. This has proved useful in several real but special projects. The two most popular forms are CTL [ maths/logic_9_Modalities.html#Computational Tree logic ] and LTL [ maths/logic_9_Modalities.html#Linear Temporal Logic ] and CTL has recently extended to handle protocols and web services in CYL-FO+ (HalleVillemaireCherkoui09).


        1. Edmund M Clarke & E Allen Emerson & Joseph Sifakis
        2. Model Checking: algorithmic verification and debugging
        3. Commun ACM V52n11(Nov 2009)pp75-84 [ 1592761.1592781 ]
        5. 2007 Turing Prize Article


        1. Sylvain Halle & Roger Villemaire & Omar Cherkaoui
        2. Specifying and validating data-aware temporal web service properties
        3. IEEE Trans Software Engineering V35n5(Sep/Oct 2009)pp669-683

        2010-02-09 Tue Feb 9 21:09 Mathemagics and macro-economics

        This post is a little off topic for this blog. I've just been reading Margaret Ball's "Mathemagics" (Baen 1996 ISBN 0-671-87755-0) which describes a world where mathematical formulas act like spells. And there was a time when mathematicians where synonymous with astrologers. and even today people build complex mathematical models to predict the evolution of the economy. Brian Hayes (Hayes09a) describes a delightful 1949 hydraulic analog computer built by W Phillips which in turn inspired Terry Prachett's Glooper ("Making Money", Corgy Books, 2008). This is a subject I've been fascinated with for most of my life. I first saw such models in a short article (Stone64) on mathematical models for the social sciences. However my models kept on predicting crises that never happened -- so I gave up on them. However, I still find it handy to analyze situations in terms of flows, rates, and feedback (Similar to Jay Forrester's stuff) -- however differential equations are a topic that is taught in computer science but not used [Lethbridge00] in practice. Examples in software development research include [CangussuDeCarloMathur02] and [Turski02] for a couple of examples.


        1. Brian Hayes
        2. Everything is under control
        3. American Scientist V97n3(May-Jun 2009)pp186-191
        5. MONIAC::=hydraulic analog computer for the British economy 1949 by A WH Phillips.
        6. Control theory suggests the need for proportional & integral & derivative feedback.
        7. Need to reduces lags.
        8. Example model [ main2.htm ] (127 equations Ray C Fair )


        1. Richard Stone
        2. Mathematics in the Social Sciences
        3. Scientific American (Sep 1964) Reprinted "Mathematics in the Modern World" 1968 pp 284-293
        5. Multiple feedback llops leading to complex and counter intuitive behaviors.

        2010-02-04 Thu Feb 4 20:27 Estimating Software Projects is difficult

        According to the Project Managers Body of Knowledge (PMBOK) estimating the time and cost of a project is a matter of breaking the work down into a series of tasks and using some kind of network planning to figure out time and cost and a workable schedule. I discovered that this did not work for software development back in the 1960's when my work break down included a decision depending on whether or not I could solve a particular problem. The PMBOK is blamed by [Stepanek05] for many software projects failing. FOr me the key reason is that software development includes research -- finding out things -- and (as Phillip G Armour noted) -- finding out things that we didn't even know we needed to know. Iteration is one way to tackle the unknown -- a key risk. And in the Unified Process [Larman04b] a standard guideline is to tackle risky functions early to provoke discovery and improvement. Add to this risk the irrational behavior of people (Armour09b below) and the observation that both the highest and lowest amounts of budget pressure is worse than a medium amount and we have many reasons that estimating software projects is difficult. I guess the rational response is the XP practice of estimating enough work to fill the next week only -- and adjusting the next estimate by using the error in the old one.


        1. Ning Nan & Donald E Harter
        2. impact of budget and schedule pressure on software development cycle time and effort
        3. IEEE Trans Software Engineering V35n5(Sep/Oct 2009)pp623-637
        5. Budget pressure vs effort: u-shaped. Low and high pressure worse than medium.
        6. sjimilarly buget in time to complete.


        1. Phillip G Armour
        2. Contagious craziness, spread sanity
        3. Commun ACM V52n10(Oct 2009)pp19-20 [ 1562764.1562774 ]
        4. =ANECDOTAL PEOPLE ESTIMATION TEAMS cognitive dissonance rationalization groupthink
        5. Newton's first law of behavior: every behavior will continue until acted upon by another behavior.

        2010-02-02 Tue Feb 2 20:42 Models of Software

        Software modeling is still a current buzz-phrase. For 3 decades people have been selling tools to help refine functions into code -- Anon10 below -- or support the whole life cycle -- see MargariaSteffen09. For the last 10 years static model checking has also promised improved reliability -- see MillerWhalenCofer10 below. INdeed there have been some notable successes in automatically checking that software fulfills its requirements. And now people are including explicit model within running software --BlairBencomoFrance09. To say nothing about the Unified Modeling Language covered at [ samples/uml.html ] on this web site.


        1. Anonymous Reporter
        2. No Catastrophes Please, It's Software Modelling
        3. ICT Results (01/28/10) [ index.cfm?section=news&tpl=article&ID=91135 ]
        4. =ADVERT TRT MDE TOOL MODEPLEX MODEL Driven Engineering
        5. Thales Research and Technology (TRT) researchers have created a development platform that enables applications to tackle the increasing complexity of modern computer systems.
        6. MDE::=Model driven engineering.
        7. lifecycle of development, including interoperability, substitutability, and traceability.
        8. required functions related to the industry-specific domain.
        9. design refers to real-world functions rather than algorithms...


        1. Steven P. Miller & Michael W. Whalen & Darren D. Cofer
        2. Software model checking takes off
        3. Communications of the ACM V53n2 (Feb 2010) pp58-64 [ 1646353.1646372 ]
        5. Abstract: A translator framework enables the use of model checking in complex avionics systems and other industrial settings.
        6. More in [MillerWhalenCofer10]


        1. Gordon Blair & Nelly Bencomo & Robert B France
        2. Models@run.time
        3. IEEE Computer Magazine V42n10(Oct 2009)pp22-27
        5. Introduces papers pp28-68 about the advantages of a running system including a model (abstraction) that the system can access and update.


        1. Tiziana Margaria & Bernhard Steffen
        2. Continuous model-driven engineering
        3. IEEE Computer Magazine V42n10(Oct 2009)pp106-100

        2010-01-28 Thu Jan 28 20:24 People and Systems

        A couple of reports on how user feedback on software works.


        1. Achita (Mi) Muthitacharoen & Khawaja A. Saeed
        2. Examining User Involvement in Continuous Software Development ( A case of error reporting system) Commun ACM V52n9(Sep 2009)online [ 1562164.1562194 ]


        1. Jane Cleland-Huang & Horatiu Dumitru & Chuan Duan & Carlos Castro-Hrrera
        2. Automated Support for managing feature requests in open forums
        3. Commun ACM V52n10(Oct 2009)pp19-20 [ 1562764.1562784 ]
        5. Evidence that an algorithm can analyse and classify issues better than the subjects provided by submitters.

        2010-01-26 Tue Jan 26 17:46 Agile processes becoming mainstream

        I have seen four paradigms/fads arrive and become mainstream while studying software development. There was Structured Programming and Modular Programming then Object Orientation, and finally the Agile movement. All follow a similar pattern: first a single publication that triggers of a tsunami of controversy, then the admission that many of us were already doing it, then it becoming the way every body does it. Here are two straws in the wind.


        1. Darryl K Taft
        2. Agile Development Hitting the Mainstream, Report says
        3. eWeek (01/22/10) [ http://www.eweek.com/c/a/Application-Development/Report-Agile-Development-Hitting-the-Mainstream-539452/ ]
        4. =ARTICLE AGILE


        1. Sean Michael Kerner
        2. Mozilla Firefox Gets More 'Agile' with Lorentz
        3. developer.com (Jan 22 2010) [ Mozilla-Firefox-Gets-More-Agile-with-Lorentz.htm ]

        2010-01-22 Fri Jan 22 11:02 SIKULI -- one for the strange language club

        Saw this on Slash Dot. A language that makes it easy to automate tasks by mixing Python like syntax with GUI elements. For example you can take a snapshot of a button on the screen and drag it into a script as an argument of a "click(_)", "wait(_)", "input(_)", etc. function. Here [ http://sikuli.csail.mit.edu/ ] is the link to the project site at MIT. The drag and drop feature is like the MIT Scribble language.

        I've noticed over the years that we can use graphics for the structure of programs but variables and operations tend to remain text. Scribble lets you drag and drop variables ok But, for example, I once worked out a set of small icons for opening, closing, reading, and writing a stream of data. But I was never happy with the notation. This is one reason why I've studied languages like Blissymbolics and Loglan...

        2010-01-21 Thu Jan 21 19:53 Failed Games

        The following item was about the reported failure of "Gran Turismo 5" and success of "Forza Motosport" -- See [ blog010.html#Vaughn09 ] Coincidently Wired speculates on the failed delivery of "Duke Nukem Forever".


        1. Clive Thompsom
        2. Learn to let go: How Success killed Duke Nukem
        3. Wired (Jan 2010) [ http://www.wired.com/magazine/2009/12/fail_duke_nukem/ ]
        5. Success lead to perfectionism, wealth, and requirements creep... lead to failure

        2010-01-19 Tue Jan 19 18:53 Processes for developing motor racing games

        Two games stressing realism...


        1. Mark Vaughn
        2. Virtual velocity
        3. Autoweek(Nov 2009)pp28-33
        5. How a realism drove the design for a new game.
        6. MS using a Scrum process.
        7. (London Times January 2010)|-Gran Turismo 5 delayed indefinitely [ article6985939.ece ]

        2010-01-19 Tue Jan 19 10:21 A Link on End of Lines and ASCII etc

        I found this [ 001319.html ] on the coding Horror blog and linked it into my own [ samples/comp.text.ASCII.html ] summary of ASCII.

        2010-01-14 Thu Jan 14 20:58 Computer Science Web Sites


        1. Mark Doernhoefer
        2. Surfing the net for software engineering notes: computer science
        3. ACM SIGSOFT SEN V34n5(Sep 2009)pp8-17 [ 1598732.1598752 ]

        2010-01-12 Tue Jan 12 17:53 A Novel and useful Diagram for complex projects

        The following paper describes an interesting and novel diagram that has some very useful properties that should help a project with a large amount of code spot and correct architectural problems.


        1. Marc D'Ambrose & Michele Lanza & Mircea Lungu
        2. Visualizing co-change information with the evolution radar
        3. IEEE Trans Software Engineering V35n5(Sep/Oct 2009)pp720-735
        5. The image shows a central module and all the other modules surrounding it.
        6. A Module is a slice of the pie and contains files.
        7. The files are shown as circles with size proportional to the degree of change.
        8. Their angle of a file is determined by their name with in each module.
        9. Their distance depends on the degree that they are changed at the same time as the central module.
        10. Relies on a revision /configuration control system that records all changes in time.
        11. Tested on one maintenance project.

        2010-01-07 Thu Jan 7 20:51 Two quick links -- SEMAT and Comments in Code

        We have a new group of pundits trying to improve software engineering: [ http://semat.org/ ] (Software Engineering Method and Theory) on the basis of theory. Very much what this blog is about -- Practical theory and sound practice.

        Meanwhile the topic of comments in code has come up again... [ myths-about-code-comments ] very similar conclusions as I drew in [Botting75]. For more on this see [Langr02] [Martin02] [Martin09] (Comments unclean) [Mason03] (Comments harmful) [PrecheltEtal02] [Reeves05] (comments are not enough) [Shore04] (prefer explicit code to added comments) [Shustek08] [StoreyEtAl09] (Comments that tag code) and [Wirfs-Brock07b] (comments and beauty).

        2010-01-05 Tue Jan 5 05:47 Happy New Year

        I ended the year in Las Vegas for two "Cirque du Soliel" shows: "Mystere" and "LOVE". And caught a cold. This blog will pick up again when things are back to normal. Probably Thursday.

        All entries from last year are to be found in [ blog009html ] and [ Previous Archived Blog Entries ] below for the complete archives.

        Invitation to Contribute

        If you disagree with what I write.... click [ contribute.html ] and send me a comment.

        If you have read something about software development that you think was worth reading you can share it and earn a small piece of fame merely by following this link [ contribute.html ] and filling in the form. I will review and post it if it fits with the goals of this blog: The most practical theories and the most sound practices associated with software development.

        Contributors to this site

        Dr. Christopher Landauer [ samples/ada.syntax.html ] Wednsday, November the 18th, 2009.

        Katie Kline [ info4.html ] Monday October 12th 2009.

        Jeff Hewitt [ samples/people.html#Computer Science Associations ]

        Alejandro [ maths/blog.html#2009-01-31 Sat Jan 31 09:01 Thank you Alejandro ]

        Joanna, Emily Kovak [ blog008.html#2008-12-22 Mon Dec 22 09:12 Contributions ]

        [ maths/blog.html#Sonesh Rawat ]


        Previous Archived Blog Entries

        (2010): [ blog010.html ]
        (Blog to December 2009): [ blog009.html ]
        (Blog to December 2008): [ blog008.html ]
        (Blog to December 2007): [ blog007.html ]
        (Blog December 2006): [ blog006.html ]
        (Blog December 2005): [ blog005.html ]
        (Blog December 2004): [ blog004.html ]
        (Blog December 2003): [ blog003.html ]
        (Blog July 2003): [ blog002.html ]
        (Blog June 2003 and before): [ blog001.html ]


        [ blog.html ]

        Glossary and Links

      12. above::=using the above statements....

      13. bibliography::= See http://cse.csusb.edu/dick/newbib.html, (source [ newbib.mth ] ) a large collection of publications on software development. a place to search for data on my site. Now recovered from damage done in the latter half of 2003.

      14. dick::=indicates my own opinion in and of a bibliographic item.

      15. given::=the data and input into a proof, construction or other thinking.
      16. goal::=the current conclusion, target or unknown of the thinking, construction, or proof.

      17. Haiku::poem="A 19 syllable Japanese poem that captures one moment but implies the universal", All Haiku are supposed to indicate the season of the year and Japanese has many words and phrase that are used for these purposes. Most Haiku also have a caesura (pause) that is counted as a single syllable. Writing Haiku in English is like trying to clap with one hand.

      18. languages::= See http://cse.csusb.edu/dick/samples/languages.html, information on computer languages.
      19. latest::= See http://csci.csusb.edu/dick/blog.html,

      20. MATHS::= See http://csci.csusb.edu/dick/maths/, a language for semiformal documentation including ontologies, logics, conceptual models, specifications, and algorithms that I also use for weblogs, essays, lecture notes, etc. etc.

      21. methods::= See http://cse.csusb.edu/dick/samples/methods.html, links and definitions about software development methods and processes, plus some jokes. Also see [ methods.glossary.html ] instead.
      22. monograph::= See http://cse.csusb.edu/dick/monograph, a study of software development methods 1940-1990 attempting to show how simple mathematics can avoid common errors.

      23. papers::= See http://cse.csusb.edu/dick/papers, pre-publication drafts, local seminars, unpublished essays, etc..
      24. people::= See http://cse.csusb.edu/dick/samples/people.html,

      25. prostate::gland=`a walnut sized gland found in human males that has cells that have a tendency to turn cancerous as the male gets older`, see PSA. [ http://www.healthopedia.com/prostate-cancer/ ] (not checked for accuracy, includes adverts).

      26. PSA::blood test=Prostate Specific Antigen, the cells in the prostate generate a particular chemical in the blood and this test measures how much. High values (40+) show rapidly growing cancer. From my experience -- values like 5, 6, and 7 are a cause for concern .. but it all depends on age and whether heart disease or some other problem will get you first. To get a score of zero (undetectable <0.01) the cells must be gone or not growing.

      27. samples::= See http://cse.csusb.edu/dick/samples/, samples of documents prepared using MATHS.
      28. se::= See http://cse.csusb.edu/dick/samples/se.html, links to things about software engineering and software development.
      29. source::= See http://cse.csusb.edu/dick/blog.mth, I use my own MATHS language to write these blogs.

      30. standards::= See http://cse.csusb.edu/dick/samples/standards.html,
      31. STANDARD::= See http://cse.csusb.edu/dick/maths/math_11_STANDARD.html, my personal standard definitions for MATHS.
      32. subjects::= See http://cse.csusb.edu/dick/samples/subjects.html,

      33. tools::= See http://cse.csusb.edu/dick/samples/tools.html,

      34. UML::= See http://cse.csusb.edu/dick/samples/uml.html,

      35. vita::= See http://cse.csusb.edu/dick/VITAble.html, [ short.vita ] (plain text).

      36. XBNF::=eXtreme Bachus Naur Form, a metalanguage based on EBNF that can handle some forms of context dependency in an intuitive way, as part of the MATHS language.

      37. Z::= See http://cse.csusb.edu/dick/samples/z.html, specification language.

      . . . . . . . . . ( end of section RJBottings Research Web Log) <<Contents | End>>

    14. CR::="Computer Reviews", [ http://www.reviews.com/ ]

    ( End of document ) <<Contents | Top