Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Lua, etc
 
Plan your application before you start

Plan aheadPlanning your project / application ahead of time can save you so much heartache and wasted time that it's untrue - but there is still a tendency for people to jump right into to coding without thinking "how will this work". And you should think "How will this work" in many ways.

These seven diagram types owe more than a passing resemblance to UML (Unified Modelling Language) where every system is described as a model ... but I have not (and do not) attempt to produce full sets of drawings with all the correct box shapes for the sort of simple systems we work with. However, it is extremely useful to be able to think through things to the extent that you would be ABLE to produce the diagrams - or an overview of them - if asked.


What diagrams do we have?

1. Diagrams showing what the various data sets are, and which person / people / roll produces and uses them

2. Diagrams showing each of the classes of object that we use, with a heirarcy of what inherits from what, where the abstract classes lie, where the methods are defined and over-ridden

3. Diagrams showing each type of object - what variables it contains, including other objects, and how many of each it contains.

4. Diagrams showing how objects are created, modified as they pass through the system, and eventually destroyed

5. Diagrams showing the life of software through from source and download distribution through compiled versions, version control systems, testing and live servers right through to the backups that the whole system could be restored from

6. Diagrams showing how transactions work - where user input is made, which computer(s) are contacted with what traffic through which protocols.

7. Diagrams that show the detail of how code sections work.

I was asked, last week, what order I would produce these diagrams in / think through my design, and that's marked on the white-board picture at the top too. In practice, they'll tend to be developed in parallel - broad brush strokes and important key design first, then more detail. However - in general terms: 1, 4, 6, 3, 2, more 4, 7, 5. In other words ...

a) Why are we doing this?
b) How will it look to the user?
c) How will it run - what elements where?
d) What is the object structure?
e) What is the code detail?
f) How will the development, deployment and backup systems work?

If you can have an idea of the answers to these questions before you start too much detailed coding (though you may try a few 'spike solutions' for your algorithms) they you will save yourself a lot of blind alleys and you'll probably come out with a good, well-rounded system!
(written 2009-12-02, updated 2009-12-09)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q907 - Object Orientation and General technical topics - Object Orientation: Design Techniques
  [4628] Associative objects - one object within another. - (2016-01-20)
  [4449] Spike solution, refactoring into encapsulated object methods - good design practise - (2015-03-05)
  [4430] The spirit of Java - delegating to classes - (2015-02-18)
  [4374] Test driven development, and class design, from first principles (using C++) - (2014-12-30)
  [4098] Using object orientation for non-physical objects - (2013-05-22)
  [3978] Teaching OO - how to avoid lots of window switching early on - (2013-01-17)
  [3928] Storing your intermediate data - what format should you you choose? - (2012-11-20)
  [3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
  [3878] From Structured to Object Oriented Programming. - (2012-10-02)
  [3844] Rooms ready for guests - each time, every time, thanks to good system design - (2012-08-20)
  [3798] When you should use Object Orientation even in a short program - Python example - (2012-07-06)
  [3763] Spike solutions and refactoring - a Python example - (2012-06-13)
  [3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
  [3607] Designing your application - using UML techniques - (2012-02-11)
  [3454] Your PHP website - how to factor and refactor to reduce growing pains - (2011-09-24)
  [3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
  [3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
  [3063] Comments in and on Perl - a case for extreme OO programming - (2010-11-21)
  [2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
  [2953] Turning an exercise into the real thing with extreme programming - (2010-09-11)
  [2889] Should Python classes each be in their own file? - (2010-07-27)
  [2878] Program for reliability and efficiency - do not duplicate, but rather share and re-use - (2010-07-19)
  [2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
  [2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
  [2747] Containment, Associative Objects, Inheritance, packages and modules - (2010-04-30)
  [2741] What is a factory? - (2010-04-26)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2501] Simples - (2009-11-12)
  [2380] Object Oriented programming - a practical design example - (2009-08-27)
  [2327] Planning! - (2009-08-08)
  [2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
  [2169] When should I use OO techniques? - (2009-05-11)
  [1538] Teaching Object Oriented Java with Students and Ice Cream - (2008-02-12)
  [1528] Object Oriented Tcl - (2008-02-02)
  [1435] Object Oriented Programming in Perl - Course - (2007-11-18)
  [1224] Object Relation Mapping (ORM) - (2007-06-09)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1047] Maintainable code - some positive advice - (2007-01-21)
  [836] Build on what you already have with OO - (2006-08-17)
  [831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
  [747] The Fag Packet Design Methodology - (2006-06-06)
  [656] Think about your design even if you don't use full UML - (2006-03-24)
  [534] Design - one name, one action - (2005-12-19)
  [507] Introduction to Object Oriented Programming - (2005-11-27)
  [236] Tapping in on resources - (2005-03-05)
  [80] OO - real benefits - (2004-10-09)

Y116 - Python - Applying OO design techniques and best practise
  [4718] Defining an object that is a modified standard type in Python - (2016-11-02)
  [4359] How to avoid too many recalculations within an object - (2014-12-21)
  [4118] We not only teach PHP and Python - we teach good PHP and Python Practice! - (2013-06-18)
  [4028] Really Simple Class and Inheritance example in Python - (2013-03-04)
  [2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
  [2485] How do I set up a constant in Python? - (2009-10-31)
  [2407] Testing code in Python - doctest, unittest and others - (2009-09-16)
  [2363] Alpaca Case or Camel Case - (2009-08-16)
  [1181] Good Programming practise - where to initialise variables - (2007-05-09)
  [945] Code quality counts - (2006-11-26)
  [668] Python - block insets help with documentation - (2006-04-04)
  [340] Code and code maintainance efficiency - (2005-06-08)


Back to
Integrated public Transport - what could be done for Melksham
Previous and next
or
Horse's mouth home
Forward to
An update on legal changes from the FSB?
Some other Articles
Flying tonight
A reluctance to move from old shoes to new
Using JSPs, Tag Libraries, Java Beans, Tomcat in one short example
An update on legal changes from the FSB?
Plan your application before you start
Integrated public Transport - what could be done for Melksham
Melksham Market - Tuesdays, 09:00 to 14:00
Global and Enable - two misused words!
Status Page / breaks of service in early December
Through the arches
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2019: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/2523_Pla ... start.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat