[Skip Navigation] [Text Version] [Remove Frame] [Home] blog Wed Jul 1 10:35:40 PDT 2009

Contents


    RJBottings Web Log -- A Long View of Software Development

      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

      1. Kent Beck
      2. Implementation Patterns
      3. Addison-Wesley Pro, Boston MA, 2006 ISBN 0321413091 CR 0903-0209 Safari [ 9780321413093 ]
      4. =THEORY PATTERNS Class State Behavior Collections Frameworks Performance TECHNICAL CODE = EXPERIENCE JUnit HotDraw
      5. 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

    1. above::=using the above statements....

    2. 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.

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

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

    6. 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.

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

    9. 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.

    10. 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.
    11. 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.

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

    14. 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).

    15. 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.

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

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

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

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

    24. 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.

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

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

  1. CR::="Computer Reviews", [ http://www.reviews.com/ ] and [ browse_reviewers.cfm?reviewer_id=115728 ]

End