2008-06-28 Sat Jun 28 09:06 Expensive user mistakes
Who should pay if the user mistypes a number and the interface does not
do "Sanity checking" that would have found the error?
OlsenK08
- Kai A Olsen
- The $100,000 Keying error
- IEEE Computer Magazine V41n4(Apr 2008)pp108+106-107 + Correspondence V41n6(Jun 2008)p7
- =EXPERIMENT RISK USER INPUT ERROR Fossbakk
- System accepted an extra digit in an account number and sent money to wrong account.
- In experimental web-based simulation with "confirm" 124/1,778 transactions had errors.
- 29% of wrong number had extra digits in a sequence of repeated digits. Modulo 11 would find all but 3.
- Always spot and highlight too many over-long input -- (Sanity check)
- Confirmation does not catch common errors.
- Need other checks of all user input. Example: modulo 11 CRC.
- (Alan Quirt)|-typed comma for period and multiplied ayment by 100 times.
- (dick)|-give a picking list rather than expecting user to input digits.
2008-06-27 Fri Jun 27 13:06 Positive demonstrations
The literature of software development is full of papers and articles
demonstrating a new idea, methid, technique or technology
ad make large claims as to the value of the idea... It is only
in the lat five or six years that solid experimental and exmpirical work
has started to appear to back up these ideas.
So here are two positive and plausible ideas... (1) use Aspects to
implement Features in an iterative "feature-driven" process. (2)
Use tools that combine text and diagrams in a seamless way.
ApelLeachSaake08
- Sven Apel & Thomas Leach & Gunter Saake
- Aspectual Feature Modules
- IEEE Trans Software Engineering V34n2(Mar/Apr 2008)pp162-180
- =DEMO FEATURES FOP + ASPECTS AOP ITERATION PRODUCT LINES AFM
- AFM::="Aspectual Feature Module", combines iterative Feature Oriented Programming (FOP) with Aspect Oriented Programming(AOP).
Dori08
- Dov Dori
- Words from Pictures for Dual-Channel Processing
- =DEMO TOOL GRAPHIC NATURAL LANGUAGE SYSTEM DESIGN MODELLING OPM OPD OPL OPCAT FSM
- Commun ACM V51n5(May 2008)#7pp47-52
- Claims that automatically linking diagrams to text makes process more intuitive.
[MillerJ02]
2008-06-26 Thu Jun 26 11:06 Standards for Small Enterprises
More evidence (also see
[OktabaEtAl07]
) that software develpment standards do not fit all
companies equally.
LaporteAlexandreRenault08
- Claude Y Laporte & Simon Alexandre & Alain Renault
- Developing International Standards for Very Small Enterprises
- IEEE Computer Magazine V41n3(Mar 2008)pp98-102
- =STANDARDS SMALL ENTERPRISES VSE ONESIZE ISO/IEC WG24
- Survey shows that small enterprises don't implement ISO standards because (1) no resources, (2) not required, & (3) standards are difficult bureucratic and don't fit small businesses.
Working Group 24 is developing special standard profiles and packages for small enterprises.
- Some enterprises will try out the new standards -- real soon now.
- See
[ index.html ]
[ indexEN.php3 ]
- (dick)|-This might fix the problems recently reported with ISO/IEC standards
[Glass07a]
2008-06-25 Wed Jun 25 11:06 No Silver Bullets Again
One or two papers make a gigantic impact on software engineering. Fred
Brookes's 1987 article "No Silver Bullets" is one of these... ten years
later people are still discussing it's thesis:
- Software development is in essence difficult.
FraserManci08
- Steven Fraser & Dennis Manci
- No Silver Bullet: Software Engineering Reloaded
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp91-94
- =REPORT OOPSLA PANEL HISTORY STATUS Brookes Werewolf
- Fred Brookes + David Parnas + Linda Northrop + Aki Namioka + Dave Thomas + Ricardo Lopez + Martin Fowler.
- Guess who turned into a werewolf!
- Video on YouTube!
- All because of
[Brooks87]
- Also see
[Cox90a]
[Harel92]
2008-06-24 Tue Jun 24 14:06 Cones and acronyms
A couple of essays on software development. Both
refer to the idea of the cone of uncertainty. One has too
many acronyms, but summarizes a lot of accumulated wisdom.
Boehm08
- Barry Boehm
- Making a Difference in the Software Century
- IEEE Computer Magazine V41n3(Mar 2008)pp32-38
- =ESSAY IDEAS ACRONYMIC CATCHPHRASES ONESIZE OSUFA BITAR IKIWISI DAVAS SISOS TANIA
- Rapid change vs
- THWADI::="Thats How We've Always Done It".
- Uncertainty and Emergence. Cone of Uncertainty.
[Armour08]
- BITAR::="Buy Information To Avoid Risk",
Do extra things to reduce uncertainty.
- IKIWISI::="I'll know it when I see it".
So Iterate.
- Dependability
- DAVAS::="Dependability As Value Assured to Stakeholders".
Example of conflicting values in a well known failed project.
- Diversity.
- OSUFA::="One Size Fits All".
Culture makes a difference in the adoption of process standards.
- SISOS::="Software Intensive Systems of Systems". OSUFA leads to failure
- Interdependence.
- TANIA::="There Are No Islands Anymore". No part of a system or of a process is isolated.
- Figure 5, p36: Activities >< Phases >-> Level_of_activity,
CF RUP.
- SISOS need more time for Architecture and Risks.
Armour08
- Phillip G Armour
- The inaccurate conception
- Commun ACM V51n3(Mar 2008)pp13-16
- =ESSAY ESTIMATION UNCERTAINTY LIFECYCLE
- Cone_of_uncertainty::=map[t:time]([1/f(t) .. f(t)]* actual ), for some dcreasing function f. "Describes how estimates get more accurate as a project proceeds".
At that start of new product estimates are between [0.25 .. 4.0] times the actual value. Tightens as uncertainties are removed.
- Express estimates as a distribution mapping qualities to probability of success. S shaped curve.
- commitment is not an estimate.
2008-06-23 Mon Jun 23 16:06 Experiments on TDD and Pair programming
Two recent ideas in programming are (1) test driven development
[Beck01]
[Reifer02]
[ErdogmasMorisioTorchiano05]
and (2) Pair programming. I've documented quite a few papers and articles
about these particular tricks. In test-driven design you write the
tests before you write the code and in pair programming changes to code
are made by one person while another person watches and makes comments.
These two following experiments try to find out how these two techniques work.
JanzenSaidian08
- David S Janzen & Hossein Saidian
- Does Test-Driven Development Really Improve Software Design Quality?
- IEEE Software Magazine V25n2(Mar/Apr 2008)pp77-84
- =EXPERIMENT TEST TDD CODE TECHNICAL QUALITITIES
- Evidence that TDD is associated with simpler and better tested modules.
- Two myths: TDD means (1) write all tests first or (2) automate all the testing.
[JanzenSaiedian05]
- TDD::process=High-level design; TDD_design_and_code; test.
- TDD_design_and_code::= unit_test; code; refactor; O(TDD_design_and_code).
LiuChanNosek08
- Kim Man Lui & Keith C C Chan & John Teofil Nosek
- The Effect of pairs in program design Tasks
- IEEE Trans Software Engineering V34n2(Mar/Apr 2008)pp197-211
- =EXPERIMENT PAIR PROGRAMMING vs LONE PROGRAMMING APTITUDE
- Used aptitude tests to act as a surogate for programming and eliminate language skill effects.
- Pairs substantially outperformed individuals in procedural/algorithmic design tasks.
- Pairs substantially outperformed individuals in deductive problem solving.
- Fewer errors. Faster time.
2008-06-21 Sat Jun 21 08:06 VBScript Samples
I've just been asked
canyou providesample vb scripts
From:
Nsunil
Nsunil didn't give me an EMail address to reply to, so I'll reply here.
This site does have examples of code in many languages but nearly all
of them have been written by students as part of their course work.
See
[ samples/ ]
for these.
When I have written up a language it is to help me learn the
language. So far nobody has tackled any members of the VB (Visual Basic)
family.
[click here
VB if you can fill this hole]
By the way -- this site does not host answers to home work questions.
2008-06-20 Fri Jun 20 14:06 Toulmin Arguments Rebuttals
I've been researching the work of Stephen Toulmin and its
use in Reqirements Engineering. I've reworked
[HaleyLaneyMoffettNuseibeh08]
a little as a result and have added a new pair of directives
(.But and .Close.But) to my MATHS language. Here is the
background reading. See
[ChesnevarMaguitmanLoui00]
for a history.
Toulmin58
- Stephen Edelston Toulmin
- The uses of argument.
- Cambridge [Eng.] University Press, 1958 BC177
- =THEORY INFORMAL LOGIC ARGUMENT RATIONALE
- Developed into text
[ToulminRiekeJanik78]
ToulminRiekeJanik78
- Stephen E Toulmin & Richard Rieke & Allan Janik
- An introduction to reasoning
- Macmillan, c1979. New York BC177 .T59
- =TEXT INFORMAL LOGIC ARGUMENT RATIONALE GRAPHIC
- Based on
[Toulmin58]
- Toulmin_argument::=data "--->" O(qualifier) claim ", " warrant O(backing) O(rebuttal) .
Backing
|
Warrant
|
Data -------------> (Qualifier) Claim
|
Rebuttal
- Toulmin_argument::=following
Net
- Claim::Utterance, conclusions
- Data::Utterance, facts
- Warrant::Utterance, general rule linking the data to the claim.
- Backing::Utterance, credentials when the warrant is not convincing enough.
- Rebuttal::Utterance, restrictions which apply to the claim.
- Qualifier::Phrase, possibly, likely, probably, certainly, presumably, necessarily.
(End of Net)
But
[Loui08]
[HaleyLaneyMoffettNuseibeh08]
(Close But )
Loui08
- Ronald P. Loui
- A Modest Proposal for Annotating the Dialectical State of a Dispute
- SCRIPTed V5n1(2008)#176
[ loui.asp ]
- =ESSAY REBUTS Toulmin diagrams KISS RATIONALE
[ToulminRiekeJanik78]
- Just list the data for a conclusion underneath the conclusion
with the rebuttals etc ?(hidden) beside them.
- Or use a simple tree diagram: children support parents and rebuttals have a heavy horizontal link to what they rebut.
2008-06-18 Wed Jun 18 15:06 Design as Iteration
Here is a collection of papers and articles on the topic of how to design
software.
First DenningYaholkovsky08 bewail the lack of tools that help people
become a team that can solve a wicked problem. WirfsBrock08 suggests some
steps to help design. Glass08b notes the impossibility of supporting a
single designer's intuitive process with current technology. He notes that
design is iterative... a common theme. HadarLeron08 show that
object-oriented design is not obvious but has to be overlaid on top of
intuitive ideas. HallRapanottiJackson08 propose POSE -- a new way to
manage and document the design process. This is the first method that has
explicit backtracking steps the replace previous designs by better ones.
Also one which seems to be able to work with many and all notation.
Finally Patton08a praise iterative design methods that test early and test
often.
DenningYaholkovsky08
- Peter J Denning & Peter Yaholkovsky
- Getting to "We"
- Commun ACM V51n4(Apr 2008)pp19-24
- =ESSAY TOOLS PEOPLE TEAM WICKED PROBLEMS SYNERGY DESIGN Charettes
- Collaboration is when people create synergistic solutions|strategies
- Notes that tools support communication, coordination and cooperation rather than collaboration.
Wirfs-Brock08
- Rebecca J Wirfs-Brock
- Design Strategy
- =ESSAY DESIGN PROBLEMS TECHNIQUES TEAM
- IEEE Software Magazine V25n3(May/Jun 2008)pp14-15
- Design is hard -- you need to choose your battles. Focus on What??
- First share/note stories about hopes,wishes, fears, convictions, ... .
- Sort out certainties, unknowns, nagging concerns.
- In meeting all (write; read; note) stories.
- Find out stakeholder priorities and desired qualities -- it can drive design.
- Distinguishes: core design work | revealing design problems | the rest.
- Revealing problems tend to be wicked.
- Focus on the core first.
- Don't forget domain models.
Glass08b
- Robert L Glass
- Software design and the Monkeys brain
- =ESSAY DESIGN ITERATION CREATION
- Commun ACM V51n6(Jun 2008)pp- 2008)pp21-22
- Research showed mental design process: understand problem; create solution; do(test; modify); tests OK.
- Tools & methods slow process down.
- Unless can record directly the designers brain!
HadarLeron08
- Irit Hadar & Uri Leron
- How Intuitive is Object-Oriented Design
- =EXPERIMENT STUDENTS LEARNING OO DESIGN
- Commun ACM V51n5(May 2008)pp- 2008)#7pp41-46
- Distinguishes two different modes of thought: S1 and S2.
- S1: fast, automatic, effortless, unconcious, and inflexible.
- S2: slow, concious, effortful, but relatively flexible.
- S2 acts a s amonitor and critic of S1.
- Inheritance is backward(S1).
- Surface features (S1) lead to bad OODs.
- Confusing abstract and concrete classes (S1).
- Identifying coding with development (S1).
- It is hard to replace S1 with S2.
HallRapanottiJackson08
- Jon G Hall & Lucia Rapanotti & Michael A Jackson
- Problem Oriented Software Engineering: Solving the Package Router Control Problem
- IEEE Trans Software Engineering V34n2(Mar/Apr 2008)pp226-241
- =DEMO POSE METHOD ENGINEERING DESIGN ANALYSIS ARGUMENTS RATIONALE ITERATION PROCESS
- POSE::="Problem Oriented Software Engineering",
based on Jackson's Problem Frames
[Jackson01]
, using informal or formal satisfaction arguments that target stakeholders, refinement, iteration, backtracking, etc.,
- Models a problem+solution as a set of Domains+Solution+Requirements
D[1],...D[2], S |- R
- A Gentzen Sequent!
- Domains have a name(N) and description(E) that mentions phenomena: controlled(c), observed(o), and unshared(p):
D(p)[o]^c = N : E
- Solutions are a domain.
- Requirements have a name and description that constrains(c) certain phenomena and refers (r) to other phenomena:
R[r]^c = N : E.
- Progress is made by transforming problems (like inference rules in SOS or Natural Deduction).
Each transformation has NAME and an adequacy argument.
- Arguments have a Justification, Includes, Concerns, Phenomena, and Resulting Problems (if any).
- Sample of Problem Transformations
- CONTEXT INTERPRETATION
Justify a new description of a domain.
- REQUIREMENT INTERPRETATION
Justify an expanded requirement
- SOLUTION INTERPRETATION
Justify the expansion of the solution.
Example: nSep. Separation into independent parts.
Example: applying the MVC pattern.
Example: Using an analogic model.
- SEPARABLE PROBLEM
Explain how one problem becomes a set of independent problems
- PROBLEM PROGRESSION
Changes requirements
- SOLUTION EXPANSION
Moves known components into environment and generates a set of problems to be solved.
- Backtracking.
Justify the abandonment of a previous solution and replacement by a new one.
- Has been tested in a safety critical system -- avionics -- using Alloy.
- Development involves learning about the context of the problem as well as about the requirements and solutions.
- Justifications must satisfy the stakeholders. Different stakeholders will need different justifications.
- Development is an iterative activity.
Concerns lead to backtracking.
Patton08a
- Jeff Patton
- Getting Software RITE
- =ADVERT RAPID ITERATIVE TEST EVALUATION RITE vs FORMAL TESTING
- IEEE Software Magazine V25n3(May/Jun 2008)pp20-21
- RITE::="Rapid Iterative Testing and Evaluation".
- RITE_iteration::=do(test; fix).
- Problem: your shiny new software confuses your stakeholders.
- Solution: Acceptance testing.
- Defines formal testing.
- Compares to lite testing of paper low-tech prototypes initially.
- RITE -- pool of users, lots of iterations, electronic share prototypes.
- Not specs but prototypes.
2008-06-17 Tue Jun 17 10:06 Mathematicians and Movies
I guess it all starts with Archimedes running naked through the streets
of Syracuse
[ math.html ]
, bearing in mind that the ancient Greek athletes were naked....
But then you have "A Beautiful Mind" showing the peril of a mind that
can see patterns anywhere... and then "Proof" where the daughter
of a dead and insane mathematician may just be starting to show the same brilliance
and possible instability. In both cases the movies are very well made and
the acting most excellent. But do you really have to be crazy to
do mathematics -- I hope not.
But it is peculiar how you can suddenly see something that becomes in retrospect
entirely obvious -- especially in a field that you know well.
So last night at 3am I realized that my MATHS system may be capable
of expressing Russell's Paradox.... and then at 6am that
I'd already noted the danger of eXtreme BNF -- -- --(XBNF)
defining sets that can not exist. Hence an update to
[ papers/rjb08.xbnf.html ]
a old seminar paper.
By the way, but not unrelated, I just revized the wikipedia entry on
Russell's "Axiom of Reducibility".
2008-06-16 Mon Jun 16 16:06 Finding Defects in software
One of the topics I researched and wrote up while with the British Civil Service (1968-82) was
Software Quality Assurance
-- how can youi be sure that a piece of software has zero defects, even though
it is written by people who make mistakes. We had a half-a-dozen techniques
including
Desk Checking, Peer Review, Walkthroughs, and Fagan's Inspections.
Fagan's technique
[Fagan76]
was one of the few software techniques that generated evidence of its effectiveness.
Here are the key properties of Fagan Inspection:
- Can be carried out on any artifact.
- Looks for major defects that cause the software to misbehave and minor defects
which lead to lower quality but no bug.
- Is organized by a moderator.
- Work is driven by check lists of things to look for.
- Inspectors first work alone and then have a meeting to review and collate what they
have found.
- The producers of the artifact do not take an active part in the hunt for bugs.
- ...
- The moderator collects statistics on the defects found and tunes the check lists,
the rate of inspection, etc. for find as many defects per unit time.
Shull and Seaman have recorded how this evidence helped the technique be adopted
in NASA.
ShulSeaman08
- Forrest Shull & Caroline Seaman
- Inspecting the History of Inspections: an example of evidence-based technology diffusion
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp88-90
- =HISTORY INSPECTION NASA SQA TECHNICAL CODE QUALITY
- How evidence of effectiveness and adaption of method moved Fagan inspections from IBM to throughout NASA during the late 80's and early 90's.
2008-06-14 Sat Jun 14 10:06 Catching up on some reading
If I had had a proper course on logic then I would have learned of Ramsey's work on
the foundations of mathematics when I needed it -- 40 years ago. As it happened,
I've just finished studying the following which shines a brilliant light on a book
("Principia Mathematica") that has had a very powerful influence on my thinking.
The line of thinking lead to MATHS. The good news is that Ramsey's work does not
invalidate MATHS.
RamseyFP60
- Frank Plumpton Ramsey (ed R B Braithwaite)
- Foundations of mathematics and other Logical Essays
- Littlefield Adams, Paterson NJ 1960
- =ESSAYS PHILOSOPHY LOGIC MATHEMATICS TYPES PROBABILITY
- Essays, papers, reviews, and notes dating from the 1920s.
- Published
- The Foundations of Mathematics 1925
- Mathematical Logic 1926
- On a Problem of Formal Logic 1928
- Note on the preceeding paper 1926
- Facts and Propositions 1927
- Unpublished
- Truth and probability 1926
- Further Considerations 1928
- Last Papers 1928
- Appendix: Critical Notice of L Wittgenstein's "Tractatus Logico-Philosophicus"
- PM::="Principia Mathematica",
[WhiteheadRussell63].
- Dispenses with PM's pphilosophical
axiom of reducibility
by using Wittgenstein's Tractatus Logico-Philosophicus.
PM gives a syntactic definition set of special predicative truth functions to avoid paradoxes and then has to assume that all sets (for example) of objects of a given type can be expressed using one of these functions.
Ramsey uses a semantic definition from Wittgenstein that makes any truth function predicative.
- Argues for the need for a theory of types.
- Does not discard axioms of infinity and selection.
- PM's
Axiom of infinity
asserts the existence of an infinite domain, Needed to define infinite numbers.
Because, in PM, numbers measure the size of sets of objects of a particular type.
Indeed a number is a set of all sets with the same size of that type.
So the largest number for a given type is = to the size of the type.
- PM's
Axiom of selection
is equivalent to the Axiom of Choice
[ wikipedia ]
2008-06-13 Fri Jun 13 15:06 Workload and workflow
Understanding (=? documenting) the work needed for various tasks
is a useful step in developing software. Here are two articles
on the two uses of the information.
SmithAJ07
- Alan J Smith
- Workloads (Creation and use)
- Commun ACM V50n11(Nov 2007)pp43-54
- =ESSAY PERFORMANCE QUALITIES BENCHMARK
GilDeelmanEtAl07
- Yolanda Gil & Ewa Deelman & Marc Ellisman & Thomas Fahringer & Geoffrey Fox & Dennis Gannon & Carole Goble & Miron Livny & Luc Moreau & Jim Myers
- Examining the challenges of Scientific Workflows
- IEEE Computer Magazine V40n12(Dec 2007)pp24-32
- =REPORT CONFERENCE NSF DATA PROCESS DFD MODELS SCIENCE
Does anybody know why the Innoculate update process downloads a complete new
executable and runs at normal priority? Is it just one of the
usual suspects for bad software:
- {stupudity, ignorance, malice, ...}.
2008-06-12 Thu Jun 12 17:06 Fear and loathing of upgrades -- and bugs
Below you will find
[ 2008-05-30 Fri May 30 10:05 Fear and Loathing of Upgrades Part 2 ]
[ 2008-05-27 Tue May 27 20:05 Fear and Loathing of Upgrades ]
the previous episodes in the saga of upgrading my Palm Tungsten -- I may
finally have got the handheld and its two laptops to agree on a
collection of categories for Contacts. It only took a couple of weeks.
Meanwhile here are some statistics about bugs: (1) bugs don't fit
a Pareto distribution. (2) You can't tell if a change is clean or buggy
by looking at its statistics. Perhaps Kim&Whitehead&Zhang should try the
time of day when the change was made. The folk theorem is that work done
after 4pm on Friday always needs fixing.
Zhang08
- Hongyu Zhang
- On the Distribution of Software Faults
- IEEE Trans Software Engineering V34n2(Mar/Apr 2008)pp301-302
- =EXPERIMENT STATISTICS PROBABILITY FAULTS BUGS DEFECTS MODULES Eclipse
For x:[0..], Pareto(x)::= 1-(γ/x)**β.
- Weibull(x)::=1 -exp(-(x/γ)**β).
- Weibull predicts % of faults in % of modules better than Pareto in Eclipse.
KimWhiteheadZhang08
- Sunghun Kim & James Whitehead Jr & Yi Zhang
- Clasifying software changes: Clean or Buggy
- IEEE Trans Software Engineering V34n2(Mar/Apr 2008)pp181-196
- =STATISTICS OPEN SOURCE CHANGES SVM
- Has a definition of a buggy change --
a change that is later changed and described as a bug/fix etc.
- Analyses a dozen open source projects.
- Doesn't find a simple way to recognise a change that contains a bug vs a clean change.
2008-06-11 Wed Jun 11 15:06 Map -- Sort -- Reduce
DeanGhemawat08
- Jeffrey Dean & Sanjay Ghemawat
- MapReduce: Simplified Data Processing on Large Clusters
- Commun ACM V51n1(Jan 2008)pp107-113
- =EXPERIENCE FUNCTIONAL PROGRAMMING Google DATA C++ LIBRARY FP
- Very large numbers of problems have been programmed to run on large clusters. Each is written as two (2) functions:
- map: Key><Value -> List(Key>< Value),
- reduce: Key><List(Value) ->List( Value),
- System applies map to some data, sorts data by key and passes it to reduce.
- map ->sort -> reduce
- All the concurrency, distribution, fault tolerance etc. Is provided by the system not the programmer.
- Note: the idea uses functions in LISP and FP(Jim Bachus) and standard in MATHS.
Similar techniques used in UNIX/Linux scripts.
2008-06-10 Tue Jun 10 17:06 Language Design -- English XML BPEL DynAlloy
I designed my first language before I was taught to program. It was a way
of recording operations for a manual calculator. This must have been in
the summer of 1963 or 1964. In my first year at college I learned my first
programming language (something more primitive than FORTRAN I) and designed
my second language as a way to encode flowcharts for input into a computer.
Very primitive. Never implemented. The next attempt was a combination of
logic and programming mostly done while commuting from Clapham to Uxbridge
later
in the 1960's. It was inspired by LISP -- but with fewer parentheses. In
my graduate work I developed a language for drawing graphics in Algol 60 --
PICTALGOL. It was implemented as a library of procedures. It was used in a
few projects in the early 1970's. Meanwhile I started work on ways to
record mathematics and logic in a computer readable form. This lead to
PINAPL ( PINAPL Is Not A Programming Language) in the 1980s and MATHS in
the 1990s onward. I still working on this. I will say nothing of the
shorthand I worked out for taking notes that I started in the 1970's and am
still tinkering with to this day. No mention of the two dozen programming
languages I've learned and used.
So, I'm always interested in new languages and what people say about old
ones. Robert Glass has recently noted the ambiguity of English grammar and
phonetics -- how do you pronounce "Gough"? Spinellis gives a very brief
style guide for using XML well. Louridas shows how a special XML document
type can define a business process. Finally, Frias et al show that an
extension of Alloy enables the faster analysis of specifications.
Glass08
- Robert L Glass
- On the impurity of the English language
- IEEE Software Magazine V25n2(Mar/Apr 2008)pp96+95
- =ESSAY ENGLISH LANGUAGE PHONETICS AMBIGUITY
Spinellis08
- Diomidis Spinellis
- Using and Abusing XML
- IEEE Software Magazine V25n2(Mar/Apr 2008)pp88-89
- =EXAMPLES XML VERBOSE LANGUAGES INTEROPERABLE SCHEMA STYLE
- Don't use XML without defining a DTD.
- Use standard schemas if possible.
- Design own schemas to be used & to express meanings.
Eg. Use meaningful tags with attributes in tags!
Louridas08
- Panagiotis Louridas
- Orchestrating web services with BPEL
- IEEE Software Magazine V25n2(Mar/Apr 2008)pp85-87
- =ADVERT BPEL XML PROCESS WEB/NET SERVICES
- BPEL::xml= "Business Process Execution Language"
- 36 line "Hello World".
- p87: Lists resources.
- process:=partner_links; variables; fault_handlers; sequence.
- First understand the business requirements.
FriasEtAl08
- Marcello F Frias & Carlos G Lopez Pombo & Juan P Galeotti & Nazareno M Aguirre
- Efficient analysis of DynAlloy Specifications
- ACM TOSEM Trans Software Eng & Methodology V17n1(Dec 2007)#4pp1..34
- =DEMO SPEED DynAlloy vs Alloy SPECIFICATION MODEL CHECKING HOARE TRIPLES
- Instead of traces defines {pre}action{post}.
- Much faster than Alloy.
2008-06-09 Mon Jun 9 12:06 Notes on Requirements
There has been a spate of publications on the connections between technological solutions and business needs. I'll list the citations and notes below. But here is my personal list of things I know about Requirements:
- You shouldn't think of requirements as an artifact or as a phase.
There are a process, a discipline, a work in progress
from the start of a project thru to its obsolescence and replacement.
[ CaoRamesh08 ]
Requirements never go away, they mutate as technology and processes are changed.
- Get out of your office and out from behind the machine. Go to where the
problems are. You can learn a lot by just looking. Plan interviews.
Avoid rigid development processes
[ Codefirst07 ]
- What the stakeholders require is not technology but what it can do for them.
Your enterprise only needs technology to support its real business needs.
Data and information is central to meeting enterprise needs.
[ RagowskyLickerGefen08 ]
[ Maiden08 ]
[ DiesteJuristoShull08 ]
[ WagnerPiccoli07 ]
- First provide the data, but also provide the desirable qualities:
usability, safety, security, etc., to fit the enterprises needs.
[ Boegh08 ]
[ TondelJaatenMeland08 ]
[ HaleyLaneyMoffettNuseibeh08 ]
[ Patton08 ]
Technology often has a bigger effect on qualities than on the information provided.
You have to understand the real world situation before you propose solutions.
Understanding has more value than artifacts and documents.
[ DiesteJuristoShull08 ]
- Express user functional requirements as simple and specific stories
[ Desilets08 ]
[ Mugridge08 ]
first. Identify the user. Identify what they need. What qualities?
- Executable artifacts (even bad ones) are more valuable than documents that can't be executed.
[ WingM07 ]
[ Rainsberger07a ]
So tests are a valuable expression of requirements.
[ CaoRamesh08 ]
[ MartinMelnick08 ]
[ Mugridge08 ]
- Can you describe, in detail, what is currently done and how your solution fits into this process?
[ WagnerPiccoli07 ]
Only connect
-- design connections into the current systems information flows.
- There is no logical process that derives technical solutions fit what
stakeholders say they need. You have to invent and create solutions and then
show that the fit the enterprise requirements.
[ Maiden08 ]
- You can use tools to connect documented requirements to code.
[ MohanRamesh07 ]
[ BurgeBrown07 ]
[ Cleland-HuangEtAl07 ]
- Manuals don't introduce new solutions
[ RagowskyLickerGefen08 ]
-- you need to give training and support.
- Throwing a SRS for a new products over a wall for engineers to develop
doesn't work well.
[ SafayiniEtAl08 ]
[ CaoRamesh08 ]
[ WagnerPiccoli07 ]
- Iteration/Evolution often works well. Both the user's needs, the system requirements,
can all the code all evolve together.
[ CaoRamesh08 ]
But beware the requirements creep that kills projects or makes them unprofitable.
RagowskyLickerGefen08
- Arik Ragowsky & Paul S Licker & David Gefen
- Give me Information, Not technology
- Commun ACM V50n12(Jun 2008)23-25
- =POLL INTERVIEWS CIOs =HISTORY MIS IS IT DYSFUNCTIONAL REQUIREMENTS vs TECHNOLOGIES DATA
- Business users value information and information services.
- They perceive IT as providing technology not business value.
Technology is not about fixing the projector in the conference room.
- Too much technology is bad. Vendors do not help by promising too much.
Technical manuals do not help, either.
- Systems/Business analysts should focus on user and managers as partners.
Find out what information services are needed and only then proceed to
Research and Development (R&D) of technology and
technical requirements.
- Avoid solving non-problems. Listen.
- Avoid technical Jargon. Talk business.
Maiden08
- Neil Maiden
- User Requirements and System Requirements
- IEEE Software Magazine V25n2(MAr/Apr 2008)pp60-
- = USER SYSTEM REQUIREMENTS
- Distinguish user requirements from system requirements.
- Need both, separately.
- A user requirement comes from a user and describes a new property of the domain or business process.
Goals.
- A system requirement describes a desirable property of the new system.
The system shall ....
Use cases or other structured text.
- Implementing system requirements should lead to satisfying user requirements --
Satisfaction arguments.
- It is a design task to move from user to system requirements.
SafayiniEtAl08
- Frank Safayini & P Robert Duimering & Kimberley Zheng & Natalia Derbentseva & Christopher Poile & Bing Ran
- Requirements Engineering in New Product Development
- Commun ACM V51n3(Mar 2008)pp77-82
- =CASESTUDY COMPANY INTERACTION COMMUNICATION REQUIREMENTS SAP
- Company divided by functions with outsourced software development. Requirement Engineers separated from Market Sponsors by a Feasibility Analyst.
- Requirement Engineers had helpful knowledge but had a weakness with coordination.
- Requirement Engineers found less help especially with coordination, knowledge, and communication.
- In terms of functions, REs were helped by the software developers. The project manager and feasibility analysts and operations were helped by the REs.
- Examples: when Market Sponsors change requirements halfway thru a project the REs see it as unhelpful,.... In reverse, MS finds RE jargon unhelpful.
- Article includes proposals. Notes that reorganization would be a good idea that would not fly.
- (dick)|-Sounds like the company Dilbert works for.
The lists of unhelpful behaviors should be studied by practitioners.
No reference to Yourdon's analysis of Market vs Engineering speech.
No discussion of possible technologies.
CaoRamesh08
- Lan Cao & Balasubramaniam Ramesh
- Agile requirements engineering practices: an empirical study
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp60-
- =INTERVIEWS 16 FIRMS AGILE REQUIREMENTS BENEFITS CHALLENGES PURPOSES TESTS QUALITIES
- Identified 7 practices each with benefits & challenges.
- Face-to-face communication not documents.
- Iterating (requirements, priorities, planning, reviews, & acceptance tests).
- Prototypes.
- Test driven development(TDD).
- challenges: forgotten qualities, wrong architecture, lack experience of TDD...
DiesteJuristoShull08
- Oscar Dieste & Natalie Juristo & Forrest Shull
- Understanding the customer: What do we know about Requirements Elicitation
- IEEE Software Magazine V25n2(MAr/Apr 2008)pp11-13
- =SURVEY USER REQUIREMENTS ELICITATION
- Many techniques and results, see
[ s2voe.html ]
- Summary:
- Plan interviews in advance! Plan a Structure.
- Include general question when new to a domain.
- Introspective techniques are less useful.
- Sorting techniques not as useful as interviews but sometimes quicker.
Desilets08
- Alain Desilets
- Tell Me a Story
- IEEE Software Magazine V25n2(MAr/Apr 2008)pp14-15
- =EXPERIENCE USER REQUIREMENTS STORIES
- Express user goals as simple, specific, and concrete stories about particular people getting valuable things.
Boegh08
- Jorgen Boegh
- A New Standard for Quality Requirements
- IEEE Software Magazine V25n2(MAr/Apr 2008)pp60-
- =STANDARD QUALITIES MANAGEMENT MODEL MEASUREMENT REQUIREMENTS EVALUATION ISO/IEC 25030 SQuaRE
- ISO 9126 Quality model{ {External, Internal}><{Functionality, Reliability, Usability, Maintainability, Portability}, Quality in Use {Effectiveness, Productivity, Safety, satisfaction }}
- Distinguish: computer system, mechanical part, Human process.
- Computer system: hardware, software, and data -- all with qualities.
- Stakeholder needs ->(definition)->Stakeholder requirements ->(Analysis)-> System Requirements.
- Many more details...
MohanRamesh07
- Kannan Mohan & Balasubramaniam Ramesh
- Tracing variations in software families
- Commun ACM V50n12(Dec 2007)68-73
- =PROJECT KNOWLEDGE MANAGEMENT REQUIREMENTS DESIGNS PRODUCT LINES REUSE WHY
- Analysis & Design of system to help manage product lines for 2 companies.
- Do more than link requirements to designs .
- Figure 1. UML. Variable requirements link to variation points in designs.
Variation points linked to variants, mechanisms, and justifications.
Interactions + conflicts + dependencies + constraints...
- Provide integrated environment that can be used by whole organization: engineering, sales, marketing, etc.
BurgeBrown07
- Janet E Burge & David C Brown
- Software Engineering Using RATionale
- Journal of Systems and Software V81n3(2008)pp 395-413
- =EXPERIMENT =DEMO TOOL REQUIREMENTS DESIGN RATIONALE IDE SEURAT Eclipse Java RATspeak inference
- Faster maintenance for nonexperts (only)
- Who were the subjects?
- What is cost of capturing the rationale?
2008-06-06 Fri Jun 6 06:06 Four thousande plus items in Bibliography
As I post my notes on my reading on software development I
also place them in a searchable bibliography. This started
20 years ago. It now has 4521 items! You can search it
by going to
[ biba.php ]
and inputting a word or phrase -- it will accept regular
expressions as well. Or you can try
[ lab.html ]
for a slightly different search engine.
The search generates a list of items showing the items unique tag
and a set of keywords describing the content. The identifier is
also a link that extracts the item.
Every item is given a unique tag, key or identifier so you can
easily link to it.
At the end of the listing is a link to a search engine that
gathers the texts and citations into a non-standard HTML bibliography
on the topic.
Please use these tools.
2008-06-06 Fri Jun 6 06:06 Security and Requirements
Two articles on security form IEEE Software Magazine. One on Java
techniques and the other a literature survey of the methods.
Lai08
- Charlie Lai
- Java Insecurity: Accounting for subtleties that can compromise code
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp13-19
- =DEMO TECHNICAL Java SECURITY
- Example of sompromisable singleton pattern.
TondelJaatenMeland08
- Inger Anne Tondel & Martin Gilje Jaaten & Per Hakon Meland
- Security requirements for the rest of us: a Survey
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp20-27
- =SURVEY SECURITY REQUIREMENTS
- Table 1: SQUARE, Haley et al, Bostrom et al, CLASP, MICROSOFT, APvrille et al, Fernandez, van Wyk & McGraw, Peterson
- Tasks: definition, objectives, misuse/threats, assets, coding standards, categorize & Prioritze, Inspect & Validate, Process planning.
More below.
2008-06-05 Thu Jun 5 10:06 Security Requirements Engineering
The following paper and article both describe processes for sorting
out security requirements. Jeff Patton's article argues that explicit goals
and metrics for them is helpful for selecting the correct features to
implement next. The paper is much longer and more complex but
worth study, if only to observe the subtle interplay between formal
logic (proving that a system is secure) and informal arguments
(challenging the assumptions that were made in the proof).
HaleyLaneyMoffettNuseibeh08
- Charles B Haley & Robert Laney & Jonathon Moffett & Bashar Nuseibeh
- Security Requirements engineering: A Framework for Representation and Analysis
- IEEE Trans Software Engineering V34n1(Jan/Feb 2008)pp133-153
- =CASESTUDY SECURITY REQUIREMENTS METHOD
- Describes a complex process and set of languages that work from security goals, to assets that are to be protected
(compare
[Stoneburner06]
), to requirements, thence to arguments for a particular system design satisfying the requirements, and so to the assumptions that can be rebutted, and the mitigation of the rebuttals and so forth.
- Security requirements are non-functional requirements and are closely related to the context of the machine being designed.
- Must expose assumptions about the machine and its context.
- Arguments that the system satisfies the requirements lead to lists of assumptions that can be challenged (WHY?) and rebutted.
- Rebuttals lead to mitigators that change the context.
- Hence an iterative process designing a more secure system.
- Uses Jackson Problem Frames
(
[Jackson95c]
[Jackson01]
), Toulmin type arguments, Propositional logic, and a causal logic based on
Event 1 shall cause Event2.
- Outer_argument::jargon=Formal logic showing the design satisfies the requirement and exposing assumptions
- Inner_argument::jargon=Explores assumptions in terms of rebuttals and mitigators.
- Process involves engineers and stakeholders in intense and fruitful discussion.
- (dick)|-Compare the
[Lakatos76]
model of the mathematical process. Also methods used to achieve safety.
Patton08
- Jeff Patton
- Ambiguous Business Value Harms Software Products
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp50-51
- =HARMFUL AMBIGUITY REQUIREMENTS FEATURES vs =ADVERT GOAL + METRIC GQM
- IRACIS::acronym="Increase Revenue, Avoid Costs, Improve Service",
[GaneSarson77].
- Brainstorm->cards; cluster; Vote on priority (ceiling(|clusters|/3) votes per person), metrics, Poster
2008-06-04 Wed Jun 4 20:06 Teams and Technology
What technology should a distributed team use when developing software?
What new technologies can we use in our systems?
ThomasBostromGouge07
- Dominick M Thomas & Robert P Bostrom & Marianne Gouge
- Making Knowledge Work in Virtual Teams
- Commun ACM V50n11(Nov 2007)pp85-90
- =POLL 13 MANAGERS 30 PROJECTS DISTRIBUTED TEAMS COMMUNICATION TECHNOLOGY MATHODS
- ICT::="Information and Communication Technologies".
- More than 20 different ICTs.
- It is not enough to make technology available.
- Problems: team volatility, time pressue, interoperability all lead to work stopages and managerial intervention.
- All teams used audio confeences, EMail, and the phone.
- >70% used: Fax, project management, calendar, IDEs,many-to-many chat, versioning, instant 1-1 messaging,...
- Intervention:=(opportunity | problem) triggers leader actions and changes; aim for higher participation and capacity, leading to project outcomes.
- May have to shut down an ineffective technology as well as promote a better one.
- Triggers: outside the team, inadequate tools, breakdown of trust and relationships, interference in group work, member knowledge.
- Interference:turnover, cultural difference, physical distance, time zones
BrownShipmanVetter07
- Jeff Brown & Bill Shipman & Ron Vetter
- SMS: The Short Messaging Service
- IEEE Computer Magazine V40n12(Dec 2007)pp106-110
- =STANDARD SMS PROTOCOL CELL MOBILE PHONE Shortcodes WAP EMAIL
- SMS::protocol="Short Message Service",
not just for teenagers,
also connects to the web and EMail.
Heyman07
- Karen Heyman
- A new virtual private network for today's mobile world
- IEEE Computer Magazine V40n12(Dec 2007)pp17-19
- =STANDARD SECURITY PROTOCOLS WWW/NET UDP IPsec TCP SSL VPN
2008-06-03 Tue Jun 3 19:06 Having a Fit
Luckily I'm not having a fit about the local IRS office not letting us
get in line for a sailing permit, or about my anti-virus software grabbing 90% of the bandwidth to download a complete new executable on Tuesdays and Thursdays.... But a proposes way of documenting requirements in an executable
form -- a test expressed as a scenario with tabular steps.
MartinMelnick08
- Robert C Martin & Grigori Melnick
- Tests and requirements, requirements and tests: a Mobius Strip
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp54-59
- =ADVERT REQUIREMENTS TESTS FIT TABULAR SCENARIOS
- FIT::tool= See http://fit.c2.com
, Framework for Integrated Testing
[ samples/methods.html#Fit ]
Mugridge08
- Rick Mugridge
- Managing Agile project requirements with storytest-driven development
- IEEE Software Magazine V25n1(Jan/Feb 2008)pp68-75
- =DEMO REQUIREMENTS TESTS FIT TABULAR SCENARIOS
- FitLibrary::= See http://sourceforge.net/projects/fitlibrary/.
- FitNesse::= See http://www.fitness.org/.
- Also see
[ samples/methods.html#Fit ]
[MartinMelnick08]
2008-06-03 Tue Jun 3 10:06 Out Source and Open Source
Four items in this batch. First a report of changes in outsourcing, then
two books and a paper on F/OSS (Free/Open Souce Software. We have a text
book on the technology and system, a political economists view of
why open source has been successful, and a report of open source being used
to teach software evolution/maintenance.
Leavitt07
- Neal Leavitt
- The Changing World of Outsourcing
- IEEE Computer Magazine V40n12(Dec 2007)pp13-16
- =ARTICLE OUT SOURCING TRENDS DISTRIBUTED
- Consolidation. More countries. Smaller tasks/projects/companies. More
complex systems. Not just the cost!
DeekMcHugh07
- Fadi P Deek & James A M McHugh
- Open source: technology and policy
- Cambridge UP NY NY 2008 ISBN 0-521-88L03-X
- =TEXT Open source
Weber05
- Steven Weber
- The success of open source
- Harvard University Press Cambridge MA ISBN 0674018583 CR 0611-1091
- =HISTORY SOCIAL POLITICAL ECONOMICS OPEN SOURCE CODE F/OSS
- (dick)|-Excellent survey by an outsider of the open source phenomenon.
- (dick)|-Last chapter has too much social science jargon.
- (dick)|-Only spotted one error: confused JavaScript with Java.
- (dick)|-Some small omissions: in the 60's software was bundled with the hardware & user groups shared their developed software, KDE may be a pun on Sun's CDE, Wikipedia, ...
PetrenkoEtAl07
- Maksym Petrenko & Denys Poshyvanyk & Vaclav Rajlich & Joseph Buchta
- Teaching Software Evolution in Open Source
- IEEE Computer Magazine V40n11(Nov 2007)pp25-31
- =ADVERT SC EVOLUTION OPEN SOURCE EDUCATION CVS
- SC::="Software Change".
- Software_Change_Process::= Initiation; locate_concept; analyse_impact; (testing & (prefactoring; actualization; change_propagation; postfactoring)); new_baseline.
- CVS -- change version system for source code control and to provide data
for grading. Note: difficult to set up. Students must get special
training and practicebefore being let loose on the real code.
- Students work on realistically sized code and make realistic changes.
- Graduate students act as managers -- either for one team or all teams.
- Grades based on CVS records and interviews.
- Student opinions collected.
2008-06-02 Mon Jun 2 19:06 Fear and Loathing of Complexity
The following reflects my own beliefs:
Santini07
- Simone Santini
- Making computers do more with Less
- IEEE Computer Magazine V40n12(Dec 2007)pp124+122-123
- =ADVERT SIMPLE TECHNOLOGY WEB/NET UPGRADES
- Argues that invisible downloads into a personal machine is a kind of trepass.
- Argues for using the simplest non-invasive technology for software and web pages.
2008-05-30 Fri May 30 10:05 Fear and Loathing of Upgrades Part 2
Below I described how well the Palm Tungsten Software upgraded from an
E to an E2. But when I updated the Palm Desktop on my office laptop (
Part2
) things were not as good. (1) The desktop crasshes if you are viewing a daily calendar and try to look at your to-dos at the same time. (2) most of my categories in the calendar have gone.... Events at work looked like they were
for my wife. Not good.... spending time putting the categories back.
(3) The Media application (Photos and videos) decided that it should
send all its photos to the hand-held, even if they were duplicates. Spent time
removing them.
And my own personal cradle
-- a rather nice Chinese Panda
[ palmpanda1.jpg ]
-- no longer fits the new handheld+cable:-(
Well I wonder what will happen next.
- 16:05 Ugly
First the story so far: Installing the upgraded Palm desktop software lead
to the Palm E2 losing all the categories. Going back to the back machine
deleted them from that back up system.
Oddly each application on the palm behaves differently when you recreate
deleted categories. The "Tasks" application accepts them and places the
records back in the right (old) categories. The "Calendar" accepts them
and assigns the event to categories so that most are right, but some are
wrong. The "Memo" and "Contacts" application on the desktop refiles items
in deleted categories as "Unfiled" so that you have to go thru it and file
them correctly their -- even tho' the handheld has the categories OK!
The cost: 2..3 hours of refiling on the laptop. Then I discovered that if
you force the HotSynch to update the desktop from the palm top, AND if they
have the same categories listed then the Memos and Contacts get filed in
the category. To be precise, this is how I read the warning message that
"File Categories" are not updated when the handheld over-rides the
desk-top.
Note that the data has not been normalized. These are all the kind of
anomalies found in a less than third normal form data base.
Notice that there is clearly no reuse of code or designs between these
different parts of the Palm software.
2008-05-29 Thu May 29 20:05 Economic ideas
I agree with the first idea below: figure the value at risk of data as well
the total cost of ownership. I'm not so sure about Michael Wing's
code-centric view of software.
TallonScannell07
- Paul P Tallon & Richard Scannell
- Information Life Cycle Management
- Commun ACM V50n11(Nov 2007)pp65-69
- =IDEA ECONOMICS DATA RELIABILITY COST VALUE RISK
- Can't mitigate all risk without high cost.
Low costs can mean unacceptable risks.
Keep the total cost of ownership of data ballanced with the value at risk -- cost of losing the data.
- information_life_cycle::= capture application decline.
Value highest in the application phase.
- value at risk: graph frequency vs busines consequence of various events.
WingM07
- Michael Wing
- On the Economics of Software
- ACM SIGSOFT Software Engineering Notes V32n6(Nov 2007)pp8-9
- =IDEAS CODE ECONOMICS PROTOTYPING QUALITY VALUE COST
- Code is one of the most valuable artifacts -- even if it is of bad quality.
The value comes from it being used.
- The cost of code has a complex relation to its quantity.
- Each relase costs twice as much.
2008-05-28 Wed May 28 18:05 Components and Reuse
Here are an article and a paper on components in engineering. The first is
about how a technical solution to a problem leads to new problems. The
second is a comparison of different component frameworks:
OshriNewellPan07
- Han Oshri & Sue Newell & Shan L Pan
- Implementing Component Reuse Strategy in complex environments
- Commun ACM V50n12(Dec 2007)pp63-67
- =CASESTUDY ENGINEERING REUSE PEOPLE MEETINGS DOCUMENTATION HARDWARE R&D RATIONAL
- Engineers unhappy with reuse: exploration became exploitation + too many meetings.
- The design of a component does not record its rationale.
- Proposes that meetings to present new components should be held in laboratory with technical tools to demo ideas.
Problems with redesign feedback loops and time needed to reuse previous work.
- (dick)|-management confused research with development.
LauWang07
- Kung-Kiu Lau & Zheng Wang
- Software Component Models
- IEEE Trans Software Engineering V33n10(Oct 2007)pp709-724
- =SURVEY MODULES ARCHITECTURE EJB COM .NET CORBA PECOS UML2.0 SOFA ...
2008-05-27 Tue May 27 20:05 Fear and Loathing of Upgrades
We spent Memorial Weekend looking for a place to retire: cooler than San
Bernardino, near libraries, entertainment, and affordable on pensions.
One realtor talked about how he wouldn't be tackling any searches of the
Multiple Listing Service until the system was upgraded. I always loathed
the effort involved in upgrades -- inserting endless CDs (UNIXen) or a long
World Wide Wait for downloads (or both)... and the occasional MS windows
freeze when the MS upgrade collides with the touch pad driver on one
laptop....
I Stan Kelly Bootle's dictionaries there used to be a "Riddle Song" with
the line:
- I promised my love an upgrade without any crying.
Plus the punch line
- I was lying.
I particularly fear new software because I am blessed with the ability to
discover bugs. It happens without thought. As the old saying had it
"Nothing is fool proof -- fools are too ingenious".
So I was not looking forward to upgrading my Palm Tungsten E to an E2. It
was forced: the battery charger for the old E was held together with toothpick splints,
the glue on the keyboard had broken, the digitizer was consistently about
1/8 inch low on the bottom left of the screen and horrifically slow on the
middle left of the screen, and the on-off button had arthritis. A system
has to be this bad to force me to upgrade.
So I ordered a replacement from Palm. And expected it to arrive on next
Thursday. And tried to not worry about it. Would the 17Mb of data move
to the new machine? How do I move the encryption software to the new
machine? Would the digitizer have similar fault? What new bugs would I
have to work around.
The
E2
arrived today at about noon. All undamaged... and it took 3 hours
to charge the
battery. The CD updated the Software on the Back up lap top -- and
installed all the data and
the old applications with the first hot-synch! Pretty good going. A
slight glitch when I didn't
set the date and found I had no todos or scheduled events -- the E2 was set
to 2005 -- which crashed the OS:-( Another small crash in the notepad
when testing the digitizer:-( My grafiti shorthand has gone and needed
reprogramming. And I've gained some categories that I don't
want -- and since I can only have 15 all my Vendor contacts moved
into unfiled:-(
In summary -- much better than I feared. We will see what happens next.
See Part2.
2008-05-23 Fri May 23 06:05 Workflow determines a helpful interface
This paper reports an experiment that shows that helpful user interfaces can be automatically constructed from a model of the what the user has to do. The result provides the context for the work which helps non-experts to do the work.
ZouZhangZhao07
- Ying Zou & Qi Zhang & Xulin Zhao
- Improving the usability of e-Commerce Applications Using Business Processes
- IEEE Trans Software Engineering V33n12(Dec 2007)pp837-855
- =EXPERIMENT USER INTERFACE BUSINESS WORKFLOW MODEL XML Java
- Tools derive user interface directly from an encoded model of the workflow and the needed data, forms, and functions.
- Result improves usability for non-expert users.
- Screens show Navigation + Processes + Tasks + Workspace panes/frames.
- The workspace shows only the relevant screens for current Tasks.
2008-05-22 Thu May 22 12:05 Evidence for an old fashioned step being useful
My campus
[ http://www.csusb.edu/ ]
has a long history of fairly painless changes in Information Technology(IT). This includes
the recent implementation of a system wide ERP. Last year the faculty started to use the new CMS system for handling rosters, adds, drops, and grades. The reading below states that on two
other campuses, even though faculty were involved in developing new IT, they did not like
the resulting system -- in one case it has dubbed a failure and completely redeveloped.
Here is the citation:
WagnerPiccoli07
- Erica L Wagner & Gabriele Piccoli
- Moving beyond participation to achieve successful IS design
- Commun ACM V50n12(Dec 2007)pp51-55
- =CASESTUDIES USER PARTICIPATION DESIGN ERP FAILURE ANALYSIS CS372
- Users were really involved with current system not the new one until the project was went live.
- Start by focusing on what users are doing in current system.
- Get user stories of current challenges and successes.
- Analysts must learn to translate user expertise into designs that fit.
- Change SDLC to include iterations after it goes live.
- (dick)|-3 known techniques confirmed.
- (dick)|-presumes "Big Design Up Front", A more incremental approach gets users involved within their current work process.
Now, here is story that explains why CSUSB has not had failures like this.
When I arrived, in 1982,
the registration process was based on a main frame computer and punched cards. Each department had a faculty representative sitting in the gym handing out cards to students. These
card represented seats and acted as tickets. A classic "visual record" system. But I knew that
this was about to change -- I had made sure to court my colleagues in the "Computer Center".
Experience with software development lead me to worry about the change.
To be honest I worry about all upgrades -- I'll write
something on "Fear and Loathing in Upgrades" real soon now.
In this case, the system being
changed was central to the enterprise and it would be a large change. So I was worried.
Then I saw, across the gym, the systems analyst in charge of the project. He was observing what
was going on. He checked on each
of the departmental "booths". He was also frowning. When he came by, I asked him
what he felt. He said there was a lot going on that nobody had mentioned in meetings.
It was at that moment I knew that the new system would be an improvement of the old one.
So, in 1982 computer professional knew something that some current computer
professionals have forgotten -- the importance of studying the current system.
In the 1970's the first step is to analyze the current system -- know what
people do, know what is good about it, know what is bad, know what is supposed to done
vs what actually happens. Perhaps, the movement that proposed skipping this step
and focusing on the "Essential System" may have encouraged many places to abandon a
useful practice.
The other suggestion of expecting changes to be made after the project goes live
has also been a part of software development for decades -- plan to throw one
away, you will anyway.
2008-05-21 Wed May 21 19:05 Unsafe software
Here are a couple of articles on attempts to establish procedures for
assuring the safety or at list trustworthiness of software. Both
articles take a pessimistic view of government procedures and standards.
BishopWagner07
- Matt Bishop & David Wagner
- Risks of E-Voting
- Commun ACM V50n11(Nov 2007)p120
- =REPORT TECHNICAL SOURCE CODE REVIEW VIRAL RISKS SECURITY QUALITIES
- The authors found buffer overruns, hard-coded encryption keys, dumb pseudo-encryption, dumb passwords etc. in all voting systems.
- Federal tests did not disclose the flaws. Code review did.
- Voting systems must be transparent.
- Need for audits.
Thomas07
- Martyn Thomas
- Unsafe Standards
- IEEE Computer Magazine V40n11(Nov 2007)pp109-111
- =REVIEW STANDARDS PROCESS ISO 61508 DO-178
- Based on a recent NRC Report.
- Safety is a systems property not just a software one.
- Three_Es::= Explicit safety claims + Evidence + Expertise.
- We don't have the evidence to substantiate the claims specified in the current standards.
2008-05-20 Tue May 20 19:05 Ruby on Rails
Here is a short introduction to a very popular way to rapidly develop
a web-based application
BachleKirchberg07
- Michael Bachle & Pauk Kirchberg
- Ruby on Rails
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp105-108
- =DEMO RUBY ROR TECHNICAL WEB PLATFORM RAPID PROTOTYPING MVC
- Also compares with Apache Struts, Tapestry, Cocoon, and ASP.NET
2008-05-19 Mon May 19 14:05 Practical research and standards
Robert Glass is something of a gadfly but sometimes he reports something that
is novel, reliable, and has practical implications... in this case about
a well known standard having problems. I've matched it to a report on how
standard software imporvement process had to be tuned to their environment.
I've added a report that confirms one of the blessed Glass's claims:
software projects do not fail as often as some have reported: a 60%
success rate is common.
Glass07a
- Robert L Glass
- A Research project with important practitioner-oriented findings
- Commun ACM V50n11(Nov 2007)pp15-16
- =REPORT EXPERIMENT STANDARD ISO/IEC 9126 QUALITIES DESIGN METRICS
- H Al-Kilidar & K Cox & B Kitchenham, The use and usefulness of the ISO/IEC 9126 standard, Proc ISESE 2005 conference.
- The standard was ambiguous and not easy to use (by student teams).
OktabaEtAl07
- Hanna Oktaba & Felix Garcia & Mario Piattini & Francisco Ruiz & Francisco J Pino & Claudia Alquicira
- Software Process Improvement: the Competisoft Project
- IEEE Computer Magazine V40n10(Oct 2007)pp21-28
- =STANDARD IMPROVEMENT SOUTH AMERICAN SMALL ENTERPRISE CMMI VSE ISO MOPROSOFT
- One size does not fit all: small enterprises need special software improvement methods.
SauerEtAl07
- Chris Sauer & Andrew Gemino & Blaize Horner Reich
- The impact of size and volatility on IT project performance
- Commun ACM V50n11(Nov 2007)pp79-84
- =POLL SUCCESS SIZE CHANGE UK BUDGET SCHEDULE SCOPE
- 2/3 projects succeed (according to their managers).
- CF
[Glass05]
- More effort (person*months) increases risk of failure.
- Changing team increases risk of failure.
- Moving targets increases risk of failure.
2008-05-16 Fri May 16 06:05 Incubating Projects
In the traditional systems life cycle a critical first stage is deciding
what projects to tackle, gathering information that is needed
to develop the software, organizing a team, etc.
It appears the Free/Open Source communities have spontaneously developed
well defined procedures which can turn a single person's
vision in to a project that the community is committed to.
Here is a comparison of the Apache and the Eclipse processes
for incubating projects.
DuenasEtAl07
- Juan C Duenas & Hugo A Prada G & Felix Cuado & Manuel Santillan & Jose L Ruiz
- Apache and Eclipse: Comparing open source project incubators
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp90-98
- =EMPIRICAL COMPARISON 2 F/OSS PROCESSES PROJECT INITIATION LIFE CYCLE
- Incubation is the process of developing and defining new project/subprojects to be further developed and integrated into a the current (evolving) system.
- Apache and Eclipse have well defined processes and share many features (Table 1 page 97)
2008-05-15 Thu May 15 17:05 Started Organizing MATHS Project
I've decided to treat my sabbatical project as a sample project:
[ samples/maths.html ]
so that it will use MATHS (the notations and tools) to develop MATHS
(the tools and notations). I've copied some of the items below
into a new blog.
You can always findout what is going on -- spread over several blogs
by visitting my home/index page
[ index.html ]
, by the way.
2008-05-14 Wed May 14 18:05 The Choice Uncertainty Principle
Lot of exercise today: walkinging and weights first thing, then getting
leaves out of the pool, then walking accross the parking lot carrying this
old Dell for its monthly dose of updates,... But a pleasant morning in
the library checking out Jerry Weinberg's Introduction to General Systems Thinking and Principia Mathematica chapter *93. Brought home a
book of F P Ramsey's papers on logic and philosophy.
Now here is an interesting new working rule from Peter Denning
Denning07b
- Peter J Denning
- The Choice Uncertainty Principle
- Commun ACM V50n11(Nov 2007)pp9-14
- =ESSAY RACE HAZARDS ARBITRATION SYNCHONISATION NON-SEQUENTIAL METASTABLE STATE flipflop Buridan
- CUP::= "No choice between near-simultaneous events can be made unambiguously within a preset deadline".
- 9 refs. Many examples: hardware, software, and mundane.
2008-05-13 Tue May 13 14:05 What people think about software development projects
Here are a couple of papers that are based on "Surveys of the literature".
CarmelAbbot07
- Erran Carmel & Pamela Abbot
- Why 'nearshore' means that distance matters
- Commun ACM V50n10(Oct 2007)pp40-46
- =SURVEY 150 ARTICLES DISTRIBUTED PROCESS LOCATION OUTSOURCE OFFSHORE SHORING SOURCING
- nearshore::= low geographical temporal cultural linguistic political economic historical distance to lower wage software development.
- Some places are both exporters and importers of software work.
UmeshJessupHuynh07
- U N Umesh & Len Jessup & Minh Q Huynh
- Current issues faced by technology entrepreneurs
- Commun ACM V50n10(Oct 2007)pp60-66
- =SURVEY PRESS FINANCE ECONOMICS SKILL OUTSOURCING FIT USABILITY TAMSM
- Market dominance depends on overcoming hurdles rather than the quality of the idea.
- Outsourcing can be both a resource and a challenge.
- hurdles: finance, skill, fit customers, fitting existing products, ease of use, security, useful.
- TAMSM::="Technology Acceptance and Market Success Model". Based on TAM 1989.
Meanwhile -- working on requirements and the available technologies for
my sabbatical project, and sorting out leaks in (1) my accounting
and (2) a bath room tap. Also reviewing the syntax and semantics
of documentation in my MATHS language --
[ maths/notn_13_Docn_Syntax.html ]
[ maths/notn_14_Docn_Semantics.html ]
[ maths/notn_15_Naming_Documentn.html ]
etc. .
2008-05-12 Mon May 12 14:05 YAML -- XML considered harmful
My favorite blog just sent me an excellent article
[ 001114.html ]
which says something that I have been thinking ever since
XML was invented -- that it may not be the best solution for
all your data encoding needs. As evidence the author
gives examples of YAML
[ samples/languages.html#YAML ]
which are both easier to read and still 99% unambiguous.
Like my own MATHS language it use white space to indicate structure. But
it goes further by having no open+close bracketing syntax. It is
all done by indentation. Much the same way CODIL did (does?).
I'm tempted to formalize YAML into my MATHS language as a long
format for complex objects:
- CIRCLE( center=> POINT( x=>1, y=>2 ), radius => 10 )
.Open.YAML
center:
x : 1
y : 2
radius : 10
.Close.YAML
But this will need some thought about current features of MATHS
and how simple implementation might be. Can it be done with the UNIX
standard tool kit -- sed/auk/...?
By the way I've added some links to Polya's book "How to Solve It"
below.
2008-05-09 Fri May 9 17:05 Sabbatical Project -- MATHS
My sabbatical project is not making much progress. The next post
is typical of the reading that I have been doing that indicates
that there may not be a market for a simple, formal notation for
mathematics -- even if designed to have a lot in common with
programming languages. The language exists
[ maths ]
and has stabilized over several years personal use. My project is
to add a new feature heading in the direction of a wiki.
In the project I was hoping to move in the direction of a wiki-style
site that used the language with a lot of people contributing information,
notes, samples, and so on. Yesterday I looked into a "PHP Phrasebook".
It is full of warnings about the bad things can do if they supply data
and some of the things you can do to avoid them. I knew about the
risk of passing HTML code with "<script>" tags and have (for years)
translated HTML-special symbols in MATHS into entities on HTML pages.
What I had not thought about is that URLs can not be trusted. I'm quite
paranoid about clicking on links and attachments for example in EMail.
But I'm starting to wonder if I can trust links in the WikiWikiWeb and the
Wikipedia any more.
This is fairly typical of requirements... a desirable feature comes with a
poison pill. It is also typical that you discover the poison pill after
the project is well under way. It is also an example of a negative
requirement -- something that must not be possible.
MATHS Project Features
- (REQ1): Users should be able to edit MATHS web pages.
- (REQ2): Users must not be able to include links to illegal and/or malicious URLs.
- (NAT1): Some people attempt to include illegal and malicous links in my pages.
- (above)|-Anonymous users may need to have their changes vetted before inserting.
- (above)|-Untrusted users may be limited to local links.
- (above)|-There may be away to join a group of trusted users who will get full access to the system
Note: In the above I distinguish requirements (labeled REQn) from
known facts (NATn). This comes from the SCR project and Michael A
Jacksons recent publications.
Contact me if you have an thoughts.
2008-05-08 Thu May 8 16:05 Mathematics Made Boring
Here is a powerfully expressed argument that mathematics is taught
the wrong way:
- LockhartsLament::= See http://mail.geneseo.edu/pipermail/math-thinking-l/attachments/20080507/b091d446/LockhartsLamentArticle.pdf
To quote from the end of the article
- "SIMPLICIO: Alright, I'm thoroughly depressed. What now?"
(Polya): one antidote for the above Lament is Polya's method of teaching
and doing mathematics
[Polya88]
("How to solve it"). Also see some notes
[ samples/polya.html ]
and
[ maths/logic_20_Proofs100.html#polya ]
on Polya's "New Heuristic".
2008-05-08 Thu May 8 14:05 Alloy and JacksonD06a
I've just updated my previously unannounced bibliographic
item for Daniel Jackson' 2006 text book. Previously it was tagged
"=UNREAD" in my bibliography and didn't have much details. I've
now spent a week studying it and have posted this:
JacksonD06a
- Daniel Jackson
- Software Abstractions: Logic, Language, and Analysis
- The MIT Press Cambridge MA 2006 ISBN 0262101149 CR 0802-0116
- =TEXT Alloy LIGHT FORMAL MODEL CHECKING METHODS TOOLS
- A neat way of finding bugs in specifications and requirements.
- Small_scope_hypothesis::=Most bugs have small counterexamples.
- Notes the difficulty of creating consistent formal models that
have the desired properties.
- Alloy::language=a formal first order relational logic expressed in ASCII with tools in Java.
- Alloy_examples::= See http://softwareabstractions.org.
- Alloy_analyzer::= See http://alloy.mit.edu.
I like the quirky examples: how can I be my own grandfather? How do
hotel key-cards work and what bugs do the have? ...
Alloy is something of a rival to my own MATHS language. It is
a cleverly chosen subset of first order logic that can be analyzed
by a Java program -- you can check for consistency and also check to
see is properties must be true. It relies on finding counter-examples
to assertions in a small universe. The general problem is clearly
intractable. Hence the limit on the help that can be provided by tools
using my own MATHS language -- which is more general.
2008-05-07 Wed May 7 18:05 Tools for teams
I've just improved my very sketchy notes on probability theory
[ maths/math_81_Probabillity.html ]
to the point of sketching definitions of expectation, entropy, mean,
moments, etc.
Meanwhile here are three articles/papers on tools that teams can use:
Frost07
- Randall Frost
- Jazz and the Eclipse Way of Collaboration
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp114-117
- =ADVERT ENVIRONMENT TEAMWORK PROCESS BUG BUILD TRACKING ECLIPSE
- Jazz extends on Eclipse to coordinate many programmers.
RechBognerHaas07
- Jorg Rech & Christian Bogner & Volker Haas
- Using Wikis to Tackle Reuse in Software Projects
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp99-104
- =EXPERIENCE WIKI ARTIFACTS ONTOLOGY SEARCH TAGS RIKI
- Wiki made it easier to save and share documents etc.
FluriEtAl07
- Beat Fluri & Michael Wursch & Martin Pinzger & Harald C Gall
- Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction
- IEEE Trans Software Engineering V33n11(Nov 2007)pp725-743
- =DEMO ALGORITHM TOOL Eclipse plugin AST STRING MATCHING
2008-05-06 Tue May 6 18:05 Experimental prototypes and pair programming
Here are two articles that are worth reading. The first presents
the case for experimental protoypes and describes the risks. A
pretty good summary of experience. The second reports on the research that'
has been done on
pair programming
where two people work on an artifact at once. One has the keyboard
and the other makes comments. Here the value comes from experiments
done with the technique.
Rainsberger07a
- J B Rainsberger
- Just Try It
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp16-17
- =ANECDOTE EXPERIMENTAL DESIGN TEAM PROTOTYPING PEOPLE
- Sometimes it is better to try at an idea than spend time debating it -- running an experimental prototype.
- Risks of dominant programmers.
- Risks of keeping experimental code.
- Need for a clear question and time limit for experiments.
DybaEtAl07
- Tore Dyba & Erik Arishlm & Dag I K Sjoberg & Jo E Hannay & Forrest Shull
- Are two heads better than one? On the effectiveness of pair programming
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp12-15
- =META-ANALYSIS EXPERIMENTS PAIR-Programming QUALITY COST
- Quality tends to be a little better and the time to complete the project is better. The effort (people * time) is slightly worse.
2008-05-05 Mon May 5 13:05 Software Reliabillity Probabillity etc
I've made some small improvements to some pages introducing my
MATHS language:
[ maths/intro_records.html ]
showing how to describe structures with
optional and multiple parts.
For example to state that a cat has 4 legs...
- CAT::=Net{ cat: $ LEG ^ 4 ,...}.
I've gathered an article and a paper on the use of probabillity
theory and statistics to predict the reliability of software.
AlmeringEtAl07
- Vincent Almering & Michiel van Genuchten & Ger Cloudt & Peter J M Sonnemans
- Using Software Reliability Growth Models in Practice
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp82-88
- =EXPERIENCE 5 MODELS TVs RELIABILITY
- The models got better as more data was fitted.
λ(t) :=failure intensity function.
- (GO): λ(t) =a*b*exp(-b*t).
- (delayed S): λ(t) =a*b^2*t*exp(-b*t).
- (log power): λ(t) = α*β*ln^(b-1)(1+t)/(1+t).
- (log Poisson): λ(t) = λ[0] / (λ[0] * θ * t + 1).
DaiXieLongNg07
- Yuan-Shun Dai & Min Xie & Quan Long & Szu-Hui Ng
- Uncertainty Analysis in Software Reliability modelling by Bayesian Approach with Maximum-Entropy Principle
- IEEE Trans Software Engineering V33n11(Nov 2007)pp781-795
- =THEORY PROBABILITY RELIABILITY PREDICTION
- Problems: few tests fail, incorporating prior information, uncertainty in models reduces reliability.
- MEP::= "Maximum-Entropy Principle",
choose an a prior distribution to maximize the entropy given the known data.
- For distribution p, entropy(p):= Expected_value(-ln(p(_))).
- Use Bayesian a postiori formula to encorporate data from tests.
- Use simulation and analysis to predict relibilities of whole system.
- Gives examples.
- Refers to texts for calculations of MEP.
2008-05-02 Fri May 2 10:05 An Example of Bad Requirements Analysis
To some extent I'm writing this entry now to keep our home phone
line busy to shut up the repeated calls by the local
school district substitute system
also known as SmartSearch. If you answert the phone by saying something
then the nice voice identifies itself and invites you to either input
the substitutes ID number folowed by the star key, or by star key
to wait for the substitute to come to the phone. There don't seem
to be any other scenarios.
So if the substitute is out of the house there is no real response
you can make. So cover the phone and wait for the system to go away.
It phones back a few minutes later.
The old system had included the assumption that the substitute could not
come to phone -- you dialed "**3" and it went away for several hours.
The new system does not.
Of course the substitute can program the system to not call -- but this
process takes about 15 minutes and is error prone...
So how do you spot holes in your understanding of the world in
which your software is going to operate?
It is a common problem. And the best solution I've seen is to
construct a model that expresses the structure and logic of the
real world outside the computer. I've spent years looking
at ways to do this. One technique might be
called
literate analysis
and uses a mixture of natural language, mathematics, logic, and
diagrams. I have an old example
[ papers/rjb0xa.lift.html ]
of a model of the famous lift problem. I plan to revise it
sometime real soon now and include manual UML diagrams.
Another approach is to have a set of patterns or an ontology
for requirements. I've just read about two books on this
topic, which I hope to read in detail one day:
[Hruby06]
and
RoemannGreen05
- Michael Roemann & Peter Green (Eds)
- Business systems analysis with ontologies
- Idea Group Pub Hershey PA 2005 ISBN 0804-0350 CR 0804-0353
- =UNREAD =THEORY BUSINESS ANALYSIS BWW RM-ODP ONTOLOGY
- BWW::="Bunge-Wand-Weber".
- Notes
[click here
if you can fill this hole]
(The "plug hole" above invites you supply your thoughts
on the items... I will review, edit and post...).
2008-05-01 Thu May 1 11:05 Users and Human Computer Interfaces
I was very interested in what we used to call user friendly computing
in the 1980's. It was very much a matter of creative design in those
days. Also a battle with inadequate hardware interfaces: no mice or
other pointing devices. But I was able to create
"FRED, the FRiendly EDitor" for beginning Computer Science students.
Since then we have seen the emergence of a dominant WIMP model.
The MIT press have recently published a couple of books challenging
it.
I've just found them in CSUSB
library new books.
EricksonMcDonald08
- Thomas Erickson & David W McDonald (Eds)
- HCI Remixed -- Essays on Works that have influenced the HCI Community
- The MIT Press Caambridge MA 2008 QA76.9.H85H4125 ISBN 978-0-262-05088-3
- =HISTORY =ESSAYS USERS Human Computer Interfaces HCI
- Any book with an essay on Ted Nelson's Computer Lib/Dream Machines must be good!
KaptelinCzerwinski07
- Victor Kaptelin & Mary Czerwinski (Eds)
- Beyond the Desktop Metaphor -- Designing Integrated Digital Work Environments
- The MIT Press Caambridge MA 2007 QA76.9.H85B539 ISBN 978-0-262-11304-5
- =PAPERS USER HCI METAPHOR Lifestreams Haystack Task Gallery GroupBar Scalable Fabric Soylent
(And in the middle of writing the above entries seated in the CSUSB
library the WiFi network went
down and so I had lunch... Now back in my office... and much quieter
than the library, sadly)
2008-04-30 Wed Apr 30 18:04 Requirements worst practices
Neil Maiden claims to interviewed a leading expert in the field
of requirements ... but his advice seems to be the reverse of
the best practices. For example: use fuzzy natural language and weasel
words to avoid committing the developers to
anything. I also like the advice to be very rigorous with the process...
Codefirst07
- Colin Codefirst (alias) & Nail Maiden (ed)
- From the horses mouth
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp21-23
- =JOKE REQUIREMENTS SPECIFICATION WORST PRACTICES
2008-04-29 Tue Apr 29 19:04 Social Processes of Mathematics
I've recently read something a little outside the main thrust of this
blog. Be warned this entry is not, at first, linked through to software
development. I, by accident read a layperson's introduction into a
esoteric bit of pure mathematics: the Poincare Conjecture.
See
[ OShea07 ]
below for the citation. The description of the publication of the
proof of the conjecture, and then it's public presentation -- a
walkthrough that took several days -- and exposed a few small errors
is an example of a social process that iterates towards the truth.
One of the mistakes in early "formal" methods was in glossing over this
part of mathematical work. We stressed the formal correctness of
results rather than the need for people to review the proofs
to correct them.
One of the things I want to do is to develop a more open system that allows
mathematical ( and logical ) work to be published and then worked on by many
people. I envision the creation of documents ( requirments, designs,
code, tests) that can be shared and edited -- and that include
a rich hypertext structure -- definitions linked to usage of terms --
and mathematical notation for convenience.
2008-04-28 Mon Apr 28 18:04 Charrettes in Software Development
First an apology -- the coughs and sneezes and fevers knocked me out for
another week or so. April is something of a write-off.
In the latest weekend edition of the Los Angeles Times I met a word that I
not seen before: charrette and had to search through three dictionaries
to get a definition. A charrette is an intensive group or individual
period of architectural design. It comes from the French for
tumbril -- a cart used to take people to the guillotine for execution.
I found a very good description and history of the term
on the Wikipedia:
- charrette::= See http://en.wikipedia.org/wiki/Charrette
The above description reminds me alot of the intensive
all night work that is done in developing software in some organizations.
However I can only trace one example of the word charrette being used
as part of a software process. And here
[ Mindjet-Labs-Charrettes.aspx ]
a software developer is using his education as an architect to
create a design/requirements workshop.
Perhaps we should seek to apply charrette to eliciting requirements
and blitzing a design.
I would like to see any evidence for the value of this technique
in eliciting requirements and designing interactions.
However if the whole development provcess degenerates in a ride to
the scaffold <audio source=Berlioz\> then we are almost certainly
in a death march project
[ bib.php?search=death.*march&from=blog ]
and definitely breaking the XP practice of a 40-hour week. I thinki we
should deprecate this kind of charrette.
2008-04-11 Fri Apr 11 14:04 Assertions annotating source code
In the previous entry I developed the idea that good code
may need extra comments in it that explain what it is doing and
how it is supposed to do it. See
[ beautiful code ]
below.
I finished with the promise of an example. It took me a chunk of last night.
I'll be using a code fragment in a language like C/C++/Java/etc/. This is
based on code I learned from a colleague 30 years ago... but with a twist.
Here it is without comments
while ( low < high - 1)
{
middle = (low + high) / 2;
if( array[middle] < target )
high = middle;
else if( array[middle] > target )
low = middle;
else low = high = middle;
}
You probably recognize it. But do you really know what the
variables are doing? What properties they must have? The odds
are you'll be wrong.
(Yes, a few test cases would help --
examples always help
).
Now here is the same code with added invariant assertions
// array and target are constant
// if i < j then array[i] > array[j]
// low=-1 and high = sizeof(a)/sizeof(a[0])
while ( low < high - 1)
{
// array[low] > target and array[high] < target
middle = (low + high) / 2;
if( array[middle] < target )
high = middle;
else if( array[middle] > target )
low = middle;
else low = high = middle;
}
Now I haven't proved the above fragment -- proving is an expensive
task reserved for highly reusable algorithms and life-critical
software in my current play-book.
But you have been warned that this binary search is a reversed
version that requires the array to be in decreasing order.
You can also see that the low and high variables are always
just outside the range of elements that might contain the target
Also notice that
// if i < j then array[i] > array[j]
can not be written as a C/C++/Java/etc. Boolean expression. First
of all it has "if_then". Now you can simulate this quite elegantly
by using "<", but you can not handle the implicit quantifiers. The
formula must be true for all valid i and j. In fact, if
N is the number of elements then in MATHS you would write:
- for all i:0..N, j:0..N, i<j ( array[i] > array[j] ).
This ( and the first comment) makes my partly backed idea
below less than half-baked. Back to the oven.
2008-04-10 Thu Apr 10 19:04 Beautiful Code
I've seen several discussions of
beautiful code
in recent blogs and
articles. Here is one that casts doubt on the whole idea of a piece of
code being beautiful:
Wirfs-Brock07b
- Rebecca J Wirfs-Brock
- Does Beautiful code imply Beautiful design?
- IEEE Software Magazine V24n6(Nov/Dec 2007)pp18-20
- =ESSAY BEAUTY CODE DESIGN STYLE LANGUAGE REFACTOR habitabillity
- Can one determine the beauty of a piece of code without knowing it's context?
- Shouldn't identifiers have meaningful names?
- Shouldn't there be some comments giving a clue as to purpose and design
of the code?
This article mentions the need for meaningful identifiers. And
I was reminded of the reaction of a business student doing a first
C++ class last quarter. In my code I tend to use i, j,
k in for loops as subscripts. And x and y for real numbers...
The student thought it too much like algebra. Which was precisely the
comment made 30 years ago by a colleague who used US (Universal Subscript)
where I used i. And then that lead me to think about a research student
sitting in the same office as I did who used ZIET in his code... but
he was German. So I wonder if you can actually chose good names
without knowing the background of your reader!
Worse you can lie when you choose names.
I've seen a very cogent article
[Zokaites02]
that argued that one wants code to
be self-explanatory -- if a comment is needed then the code needs
to be refactored: better variable names, better method/function names, ...
Mainly because comments can not be checked. This does discuss the possible
use of a formal language for comments (for example Ada had the Anna
language) and tools for model checking.
It is also ignores the problem of expressing purpose: what is this code
trying to do. One modern way to to document the purpose of code
is to document the tests that is must pass -- ideally in a form
that enables the tsting. And indeed this is one of the benefits of
Test Driven Development
claimed in
[Beck01]
however tests can only indicate the generl rules governing the
purpose and design of code.
The traditional solution
[Floyd67a]
[Botting75]
has been to include
Invariant Assertions
in the code. The Wikipedia has a short and pretty accurate introduction
[ Assertion (computing) ]
to the topic. And that lead me to an amazing survey of the past and
present of the use of assertions to make code better:
Hoare01
- C A R Hoare
- Assertions: a personal perspective (Draft)
- Microsoft Research Ltd., Cambridge, England (6 Jun 2001)
.See
http://research.microsoft.com/~thoare/6Jun_assertions_personal_perspective.htm
- =HISTORY ESSAY CODE ASSERTIONS INVARIANTS ALGOL60 ELLIOTT CSP Z
- Assertions as annotating designs.
- Assertions and axioms defining semantics.
- Assertions as an executable part of code.
A Partly Baked Idea -- Assertions in C++ and C
Perhaps we could use the 'assert' function inside a comment
to record formal assertions:
- Invariants
//inv assert(....);
- Pre and post conditions/contracts
[Meyer00]
//pre assert(....);
//post assert(....);
- Specification and safety conditions
[Maddux96]
//safe assert(....);
//spec assert(....);
We could easily make this executable to check our reasoning. but
our real purpose is explain the code. I'll see if
I can construct an example, and an explanation of why the 'assert'
still doesn't provide a powerful enough language for assertions.
2008-04-09 Wed Apr 9 20:04 Good intentions and Proofs in Practice
I had intended to make an entry on this blog every week day during my sabbatical.
But yesterday night the coughs came back and I spent the morning trying to
sleep.
But I did make a small change in the previous post in the proof of the
lemma.
Now this is quite typical -- you work for several days on preparing an
accurate and rigorous proof only to find the next day a trivial error in it.
But this is very much the pattern described in
[Lakatos76]
[ maths/logic_20_Proofs100.html#Proofs and Refutations ]
however with a longer timescale: mathematics progresses by the correction
of false proofs and the discovery of mistakes and false assumptions
in apparently good work.
A very similar pattern is described in
OShea07
- Donald O'Shea
- The Poincare Conjecture: In Search of the Shape of the Universe
- Walker & Co NY NY 2007 ISBN 0-8027-1654-7
- =POPULARIZATION MATHEMATICS TOPOLOGY GEOMETRY PROOFS REFUTATIONS
- Compare to similar process noted by
[Lakatos76]
- Need for peer review of mathematical results.
- Use of presentations.
- Mathematics as a social process.
[DeMilloLiptonPerlis79]
- Rise of www.arXive.com.
The other observation coming from this is that in every mathematical field
of any interest there are always a large number of "Low lieing fruit" that
are easily proved results. T