See
[ Invitation to Contribute ]
below.
2009-07-01 Wed Jul 1 10:34 Patterns for Implementers
As noted in the previous but one item
[ blog009.html#Difference Engine ]
it is a lot easier and less risky to work within a range of known, tested, and
standardized set of solutions to understood problems. Notice these don't
have to be the best
solution. What is important is that the solutions have been used, several times,
successfully in the past. These are nowadays called
Patterns
of course. This usage of the word "pattern" goes back to
[Alexander79]
which describes tested solutions that resolve conflicting forces architecture.
Again note that an untested solution to a problem is not a pattern. It is untested and
so risky. It takes several applications of the solution before it becomes a pattern. It may or
may not evolve into a component in a library, or a feature in a language, but it still is preferable
to an untested solution in practical software development. For example, ideas like stacks and queues
where used again and again until they started to appear in libraries like C++'s STL. Another set
of patterns, that once grabbed the limelight, is the "Gang of Four" (GoF)
[Gammaetal94]
object oriented patterns. I cover GoF and GRASP patterns using Larman's text
[Larman02]
in my CSCI375 class with
[ cs375/patterns.html ]
as a simplified guide or cheatsheet.
So, using tested patterns is precisely what successful engineers try to do.
Indeed I inherited two books from my father of standard mechanical solutions to problems. With
"Spons'" you don't have to reinvent the log cabin or a device to convert rotation into sliding motion.
So, we need to expand the collection of patterns available to software developers.
And then teach beginners to use them creatively.
The following attempts to help. It is on Safari so most computer professionals can get it online.
It is not the easiest book to read... it starts with the big theory and then develops a lot of details.
Let us hope that some of these are helpful enough to become standards.
Beck06
- Kent Beck
- Implementation Patterns
- Addison-Wesley Pro, Boston MA, 2006 ISBN 0321413091 CR 0903-0209 Safari
[ 9780321413093 ]
- =THEORY PATTERNS Class State Behavior Collections Frameworks Performance TECHNICAL CODE = EXPERIENCE JUnit HotDraw
- Lots of detailed advice on object-oriented coding.
Request for input on Adrenaline Junkies and Template Zombies
Anybody able to contribute some notes on
[DeMarcoHruschkaEtAl08]
?
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
is 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.
Previous Archived Blog Entries
(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 ]
Latest
[ blog.html ]
Glossary and Links
- above::=using the above statements....
- 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.
- dick::=indicates my own opinion in and of a bibliographic item.
- given::=the data and input into a proof, construction or other thinking.
- goal::=the current conclusion, target or unknown of the thinking, construction, or proof.
- 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.
- languages::= See http://cse.csusb.edu/dick/samples/languages.html,
information on computer languages.
- latest::= See http://csci.csusb.edu/dick/blog.html,
- 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.
- 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.
- 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.
- papers::= See http://cse.csusb.edu/dick/papers,
pre-publication drafts, local seminars, unpublished essays, etc..
- people::= See http://cse.csusb.edu/dick/samples/people.html,
- 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).
- 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.
- samples::= See http://cse.csusb.edu/dick/samples/, samples of documents prepared using
MATHS.
- se::= See http://cse.csusb.edu/dick/samples/se.html,
links to things about software engineering and software development.
- source::= See http://cse.csusb.edu/dick/blog.mth,
I use my own MATHS language to write these blogs.
- standards::= See http://cse.csusb.edu/dick/samples/standards.html,
- STANDARD::= See http://cse.csusb.edu/dick/maths/math_11_STANDARD.html,
my personal standard definitions for MATHS.
- subjects::= See http://cse.csusb.edu/dick/samples/subjects.html,
- tools::= See http://cse.csusb.edu/dick/samples/tools.html,
- vita::= See http://cse.csusb.edu/dick/VITAble.html,
[ short.vita ]
(plain text).
- 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.
- Z::= See http://cse.csusb.edu/dick/samples/z.html,
specification language.