[Tutor] Designing Tools/books

Alan Gauld alan.gauld at btinternet.com
Thu Mar 5 23:19:32 CET 2009


"amit sethi" <amit.pureenergy at gmail.com> wrote

> problem only seems to come during documentation but i believe this 
> will be a
> pain when i do this professionally.So my question is please guide me 
> to good
> internet resources ,books and tools that talk about design 
> especially with
> python in mind.

I don't know of any that focus strictly on design with Python but the
principles of design are fairly laguage agnostic. Indeed a good test
of a design is whether it is easily translated into another language,
if not it is probably too low level!

Design breaks down to a few core principles
Try searching Wkipedia for terms like:
cohesion, coupling, modularity, encapsulation, interface
Follow the references accompanying those pages.

Some types of problem lend themselves to formal methods,
particularly state machines and logic dominated domains.

Some standard books that are worth reading are:

Design Patterns by the "Gang of Four"
OO Design and Analysis by Grady Booch
OO Design by Peter Coad - this one is greatlyy under rated IMHO

Many people like
Agile Sioftware Development by Robert Martin
but personally I didn't like it much.

Also worth considering is

Writing Effective Usecases by Cockburn
This is one I keep going back to and finding fresh insights each time.
In an Agile world high level use cases are a great way of grouping
development User Stories into deliverable and effective business
scenarios

Finally remember that design documents are not primarily written
for the developers, they should be aimed primarily at the testers,
trainers, project managers, operations and support teams.
They are the people who actually read and use design documents.
Developers create designs and maintainers read the code...

> Also they follow Agile Software development model or any
> other latest development cycle used in the industry .

Agile is very effective on small projects. But then again almost
anything is effective in small projects! As projects get bigger
Agile breaks down and becomes a hindrance on really big
projects. You can use Agile at the programmer level on a big
project but you will likely need a more architectural focussed
approach  to pull it all together. Design is largely independent
of the project management style used. The amount of
documentation produced and its format is almost entirely
driven by the project management style.
Design != Documentation

So a lot will depend on the kind of organisation you intend to
work for, the kind of projects they do and other such factors.

HTH,


-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/ 




More information about the Tutor mailing list