Resources

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m (Reverted edits by Ebybymic (Talk); changed back to last version by Jenny Harlow)
 
(32 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
This section contains a compiled list of object orientated design texts, papers and other resources. It also contains references to library pages, so students of [[Main Page|COSC427]] can access the texts with ease. All resources on this page should be listed in chronological order from oldest to newest in terms of their production/publication date.
 
This section contains a compiled list of object orientated design texts, papers and other resources. It also contains references to library pages, so students of [[Main Page|COSC427]] can access the texts with ease. All resources on this page should be listed in chronological order from oldest to newest in terms of their production/publication date.
  
=== Texts ===
+
== Texts ==
This sections contains a comprehensive list of books about OO, including a very brief description of each.
+
This section contains a comprehensive list of books about OO, including a very brief description of each. If you discover a suitable text, please list it here. Currently the texts are listed in chronological order.
  
* [[Christopher Alexander 1977]] - ''A Pattern Language: Towns, Buildings, Construction''
+
{|
* [[Christopher Alexander 1979]] - ''The Timeless Way of Building''
+
|-
* [[Gang of Four 1995]] - ''Design Patterns: Elements of Reusable Object-Oriented Software'' - This book forms the core work on design patterns.
+
| '''Book page''' || '''Title''' || '''Synopsis''' ||  '''Library'''
* [[Alan Davis 1995]] - ''201 Principles of Software Development''
+
|-
* [[Arthur Riel 1996]] - ''Object-Oriented Design Heuristics'' - In this text, Riel introduces a set of OO heuristics which are good starting place for developing an understanding of OO design patterns and maxims.
+
| [[Robert Pirsig 1974]] || ''Zen and the Art of Motorcycle Maintenance'' || Attain enlightenment || On-line
* [[Party of Five 1996]]
+
|-
* [[Richard Gabriel 1996]]
+
| [[Christopher Alexander 1977]] || ''A Pattern Language: Towns, Buildings, Construction'' || A enlightening text that everyone should delve into at least once ||
* [[Martin Fowler 1997]] - ''Analysis Patterns: Reusable Object Models''
+
|-
* [[Martin Fowler 1999]] - ''Refactoring : improving the design of existing code''
+
| [[Christopher Alexander 1979]] || ''The Timeless Way of Building'' || '''NEED COMMENT''' ||
* [[Andrew Hunt 1999]] - ''The Pragmatic Programmer: From Journeyman to Master''
+
|-
* [[Fowler and Scott 2000]]  
+
| [[Rebecca Wirfs-Brock 1990]] || ''Designing object-oriented software'' || Classic introductory OO text, if your OO background has holes in it. || PSL
* [[Kent Beck 2000]]
+
|-
* [[Cay Horstmann 2002]]
+
| [[Alan Davis 1995]] || ''201 principles of software development'', ||  A long list of principles, more about software engineering than design, but overlapping Cosc427. || PSL
* [[Robert Cecil Martin 2002]]: ''Agile Software Development: Principles, Patterns and Practices''
+
|-
* [[Mitchell and Kim 2002]]
+
| [[Gang Of Four 1995]] || ''Design patterns : elements of reusable object-oriented software'' || The original design patterns book. || PSL, Wal
* [[Shalloway and Trott 2002]]
+
|-
* [[Martin Fowler 2003]] - ''Patterns of Enterprise Application Architecture''
+
| [[Peter Coad 1995]] || ''Object models : strategies, patterns, and applications'' || Notable for the ''strategies'' that offer guidance on how to approach OO development. || PSL
* [[Martin Fowler 2003b]] - ''UML Distilled''
+
|-
* [[Robert Cecil Martin 2003]] - ''UML for Java programmers''
+
| [[PLoP 1995]] || ''Pattern languages of program design'' || First Pattern Languages of Programs conference || PSL
* [[Martin Fowler 2004]]
+
|-
* [[Steve McConnell 2004]]
+
| [[Arthur Riel 1996]] || ''Object-oriented design heuristics'' || A list of rules to guide OO design. || PSL, Wal
* [[Freeman and Freeman 2004]]
+
|-
* [[Robert Cecil Martin 2008]]: ''Clean Code: A Handbook of Agile Software Craftsmanship''
+
| [[Party Of Five 1996]] || ''Pattern-oriented software architecture : a system of patterns'', || This book broadens the scope of patterns to architectural patterns. || PSL, Wal
 +
|-
 +
| [[Richard Gabriel 1996]] || ''Patterns of software'' || Deep thoughts about the patterns movement. || Wal
 +
|-
 +
| [[Martin Fowler 1997]] || ''Analysis patterns : reusable object models'' || This book applies the patterns approach to analysis. || PSL, Wal
 +
|-
 +
| [[William Brown 1998]] || ''Antipatterns : refactoring software, architectures, and projects in crisis'' || Common pitfalls, and their solutions. || PSL
 +
|-
 +
| [[Martin Fowler 1999]] || ''Refactoring : improving the design of existing code'' || Guidance for improving the design of working systems. || PSL, Wal
 +
|-
 +
| [[Andrew Hunt 1999]] || ''The Pragmatic Programmer: From Journeyman to Master'' || OOD techniques for improving your coding. ||
 +
|-
 +
| [[Fowler and Scott 2000]] || '''NEED TITLE''' || '''NEED COMMENT''' ||
 +
|-
 +
| [[Kent Beck 2000]] || '''NEED TITLE''' || '''NEED COMMENT''' ||
 +
|-
 +
| [[Bruce Eckel 2002]] || ''Thinking in Java, 3rd Ed'' || Excellent general Java book, with some idioms || On-line
 +
|-
 +
| [[Cay Horstmann 2002]] || ''Object-oriented design & patterns'' || Introductory OO and patterns book, with some insights on low-level design issues, such as the use of equals() in the presence of inheritance. || Wal
 +
|-
 +
| [[Mitchell and McKim 2002]] || ''Design by contract, by example'' || This is a good intro to DBC, if you don't mind reading Eiffel code examples. || Wal
 +
|-
 +
| [[Shalloway and Trott 2002]] || ''Design patterns explained'' || A gentler variant of the GoF book. || Wal
 +
|-
 +
| [[Christopher Alexander 2002]] || ''The nature of order'' || A new religion. || Central
 +
|-
 +
| [[Robert Cecil Martin 2002]] || ''Agile Software Development: Principles, Patterns and Practices'' || '''NEED COMMENT''' ||
 +
|-
 +
| [[Kent Beck 2003]] || ''Test-driven Development: By Example'' || Guide how to use unit tests to elicit requirements and improve designs  || PSL, Wal
 +
|-
 +
| [[Martin Fowler 2003]] || ''Patterns of enterprise application architecture'' || Architectural patterns emphasising relational DBs & web interfaces || PSL, Wal
 +
|-
 +
| [[Robert Cecil Martin 2003]] || ''UML for Java programmers'' || Good, readable, opinionated introductory UML book.  Notable for discussion of OOD principles. (See Bob Martin's web site too.) || PSL, Wal
 +
|-
 +
| [[Martin Fowler 2004]] || ''UML distilled : a brief guide to the standard object modeling language, 3rd ed.'' || Easy to read intro to UML, if you're rusty. ||  PSL, Wal
 +
|-
 +
| [[Steve McConnell 2004]] || ''Code complete, 2nd ed'' || Distilled wisdom about software engineering, with an OO programming emphasis. || Wal
 +
|-
 +
| [[James Copelien 2004]] || ''Organizational patterns of agile software development'' || The organizational patterns book || On-line
 +
|- [[Freeman and Freeman 2004]] || '''NEED TITLE''' || '''NEED COMMENT''' ||
 +
|-
 +
| [[David West 2004]] || ''Object thinking'' || An apologia for extreme programming and a fascinating discussion of philosophy and OO.
 +
|-
 +
| [[Robert Cecil Martin 2008]] || ''Clean Code: A Handbook of Agile Software Craftsmanship'' || '''NEED COMMENT''' ||
 +
|-
 +
| [[Bertrand Meyer 1997]] || ''Object-oriented software construction'' || Seminal work on DbC || PSL, Wal
 +
|-
 +
| [[Kent Beck 2007]] || ''Implementation Patterns'' || Programming patterns, begorrah! || Wal
 +
|}
  
=== Papers ===
+
== Papers ==
 
Important papers in OO design are collated below.
 
Important papers in OO design are collated below.
  
=== Other Resources ===
+
{|
 +
|-
 +
| '''Paper''' || '''Title''' || '''Synopsis''' || '''Library'''
 +
|-
 +
| [[Johnson and Foote 1988]] || ''Designing reusable classes'', || Important early paper on OOD. || CSSE
 +
|-
 +
| [[Ken Auer 1995]] || ''Reusability through self-encapsulation'', || A pattern language for encapsulation. || CSSE
 +
|-
 +
| [[Robert Cecil Martin 1996a]] || ''The Open Closed Principle'' || Claims OCP is most important principle || On-line
 +
|-
 +
| [[Robert Cecil Martin 1996b]] || ''Granularity'' || Defines several package principles || On-line
 +
|-
 +
| [[Robert Cecil Martin 1996c]] || ''The Dependency Inversion Principle'' || Low level classes should depend on high level classes || On-line
 +
|-
 +
| [[Robert Cecil Martin 1996d]] || ''The Interface Segregation Principle'' || One perspective on cohesion || On-line
 +
|-
 +
| [[Robert Cecil Martin 1996e]] || ''The Liskov Substitution Principle'' || Better articulation of Liskov's law || On-line
 +
|-
 +
| [[Robert Cecil Martin 1997a]] || ''Stability'' || Dependencies should follow stability || On-line
 +
|-
 +
| [[Robert Cecil Martin 1997b]] || ''Design Patterns for Dealing with Dual Inheritance Hierarchies in C++'' || The parallel hierarchies problem || On-line
 +
|}
 +
 
 +
== Other Resources ==
 
Any further OO resources are listed in this section.
 
Any further OO resources are listed in this section.
  
 +
=== Websites ===
 
* [[Ward's wiki]] - The first wiki and an inspiration for this course.
 
* [[Ward's wiki]] - The first wiki and an inspiration for this course.
 
* [http://www.martinfowler.com Martin Fowler's Website] - Provides information on a variety of different types of patterns and other domain knowledge.
 
* [http://www.martinfowler.com Martin Fowler's Website] - Provides information on a variety of different types of patterns and other domain knowledge.
 +
* [http://www.martinfowler.com/bliki/ Martin Fowler’s Bliki].
 +
* [http://www.objectmentor.com/omSolutions/solutions_index.html Bob Martin’s OO principles].
 +
* [http://www.objectmentor.com/resources/omi_reports_index.html Bob Martin et al's papers & resources].
 +
* [http://hillside.net/ The Hillside Group]
 +
* [http://www.smallmemory.com/almanac/ Pattern Almanac 2000] - A very extensive list of books and papers published prior to 2000 on software patterns.
 +
* [http://www.dofactory.com/Patterns/Patterns.aspx Dofactory design patterns] - Summary of GOF design patterns in C#, with code examples.
 +
* [http://users.rcn.com/jcoplien/ James Coplien’s website] - A good source of links and material.
 +
* [http://refactoring.com Refactoring]
 +
* [http://www.antipatterns.com Antipatterns]
 +
* [http://web.mit.edu/6.170/www/ MIT software engineering course]
 +
* [http://www.stevemcconnell.com/ Steve McConnell's page]
 +
* [http://www.janiry.com/bruce-eckel/ "Thinking In..." Series, Bruce Eckel]
  
=== Libraries ===
+
=== Local Websites ===
 +
* [http://www.cosc.canterbury.ac.nz/resources/software/java/books/index.html Local Copy: "Thinking In..." Series, Bruce Eckel]
 +
* [http://www.cosc.canterbury.ac.nz/resources/software/java/ Local Java Page]
 +
* [http://www.cosc.canterbury.ac.nz/resources/software/java/junit/doc/ JUnit doc]
 +
* [http://www.cosc.canterbury.ac.nz/resources/software/java/junit/javadoc/index.html JUnit javadoc]
 +
* [http://www.cosc.canterbury.ac.nz/resources/software/java/j2se/version/docs/index.html Java API]
 +
 
 +
=== Lecture Notes ===
 +
* [[media:324Lectures.pdf|2008's 324 Lecture Notes]]
 +
 
 +
== Libraries ==
 
This section contains a list of people (or entities), and a reference to the texts they have accessible.
 
This section contains a list of people (or entities), and a reference to the texts they have accessible.
  
 
* [[Wals library]] - Wals library contains a substantive collection of texts and also lists who they are currently on loan to.
 
* [[Wals library]] - Wals library contains a substantive collection of texts and also lists who they are currently on loan to.
* [[PS Library]] - Texts available in the Physical Science Library at the University of Canterbury.
+
* [[PS Library]] - Texts available in the Physical Science Library at the University of Canterbury - [http://library.canterbury.ac.nz/ library].
 
* [[AlexsLibrary]] - Alex has a growing collection of texts that you may obtain from him.
 
* [[AlexsLibrary]] - Alex has a growing collection of texts that you may obtain from him.
 +
 +
== See Also ==
 +
* [[OO gurus]]
 +
* [[OO tools]]
 +
 +
[[Category: Resources]]

Latest revision as of 03:23, 25 November 2010

This section contains a compiled list of object orientated design texts, papers and other resources. It also contains references to library pages, so students of COSC427 can access the texts with ease. All resources on this page should be listed in chronological order from oldest to newest in terms of their production/publication date.

Contents

Texts

This section contains a comprehensive list of books about OO, including a very brief description of each. If you discover a suitable text, please list it here. Currently the texts are listed in chronological order.

Book page Title Synopsis Library
Robert Pirsig 1974 Zen and the Art of Motorcycle Maintenance Attain enlightenment On-line
Christopher Alexander 1977 A Pattern Language: Towns, Buildings, Construction A enlightening text that everyone should delve into at least once
Christopher Alexander 1979 The Timeless Way of Building NEED COMMENT
Rebecca Wirfs-Brock 1990 Designing object-oriented software Classic introductory OO text, if your OO background has holes in it. PSL
Alan Davis 1995 201 principles of software development, A long list of principles, more about software engineering than design, but overlapping Cosc427. PSL
Gang Of Four 1995 Design patterns : elements of reusable object-oriented software The original design patterns book. PSL, Wal
Peter Coad 1995 Object models : strategies, patterns, and applications Notable for the strategies that offer guidance on how to approach OO development. PSL
PLoP 1995 Pattern languages of program design First Pattern Languages of Programs conference PSL
Arthur Riel 1996 Object-oriented design heuristics A list of rules to guide OO design. PSL, Wal
Party Of Five 1996 Pattern-oriented software architecture : a system of patterns, This book broadens the scope of patterns to architectural patterns. PSL, Wal
Richard Gabriel 1996 Patterns of software Deep thoughts about the patterns movement. Wal
Martin Fowler 1997 Analysis patterns : reusable object models This book applies the patterns approach to analysis. PSL, Wal
William Brown 1998 Antipatterns : refactoring software, architectures, and projects in crisis Common pitfalls, and their solutions. PSL
Martin Fowler 1999 Refactoring : improving the design of existing code Guidance for improving the design of working systems. PSL, Wal
Andrew Hunt 1999 The Pragmatic Programmer: From Journeyman to Master OOD techniques for improving your coding.
Fowler and Scott 2000 NEED TITLE NEED COMMENT
Kent Beck 2000 NEED TITLE NEED COMMENT
Bruce Eckel 2002 Thinking in Java, 3rd Ed Excellent general Java book, with some idioms On-line
Cay Horstmann 2002 Object-oriented design & patterns Introductory OO and patterns book, with some insights on low-level design issues, such as the use of equals() in the presence of inheritance. Wal
Mitchell and McKim 2002 Design by contract, by example This is a good intro to DBC, if you don't mind reading Eiffel code examples. Wal
Shalloway and Trott 2002 Design patterns explained A gentler variant of the GoF book. Wal
Christopher Alexander 2002 The nature of order A new religion. Central
Robert Cecil Martin 2002 Agile Software Development: Principles, Patterns and Practices NEED COMMENT
Kent Beck 2003 Test-driven Development: By Example Guide how to use unit tests to elicit requirements and improve designs PSL, Wal
Martin Fowler 2003 Patterns of enterprise application architecture Architectural patterns emphasising relational DBs & web interfaces PSL, Wal
Robert Cecil Martin 2003 UML for Java programmers Good, readable, opinionated introductory UML book. Notable for discussion of OOD principles. (See Bob Martin's web site too.) PSL, Wal
Martin Fowler 2004 UML distilled : a brief guide to the standard object modeling language, 3rd ed. Easy to read intro to UML, if you're rusty. PSL, Wal
Steve McConnell 2004 Code complete, 2nd ed Distilled wisdom about software engineering, with an OO programming emphasis. Wal
James Copelien 2004 Organizational patterns of agile software development The organizational patterns book On-line
David West 2004 Object thinking An apologia for extreme programming and a fascinating discussion of philosophy and OO.
Robert Cecil Martin 2008 Clean Code: A Handbook of Agile Software Craftsmanship NEED COMMENT
Bertrand Meyer 1997 Object-oriented software construction Seminal work on DbC PSL, Wal
Kent Beck 2007 Implementation Patterns Programming patterns, begorrah! Wal

Papers

Important papers in OO design are collated below.

Paper Title Synopsis Library
Johnson and Foote 1988 Designing reusable classes, Important early paper on OOD. CSSE
Ken Auer 1995 Reusability through self-encapsulation, A pattern language for encapsulation. CSSE
Robert Cecil Martin 1996a The Open Closed Principle Claims OCP is most important principle On-line
Robert Cecil Martin 1996b Granularity Defines several package principles On-line
Robert Cecil Martin 1996c The Dependency Inversion Principle Low level classes should depend on high level classes On-line
Robert Cecil Martin 1996d The Interface Segregation Principle One perspective on cohesion On-line
Robert Cecil Martin 1996e The Liskov Substitution Principle Better articulation of Liskov's law On-line
Robert Cecil Martin 1997a Stability Dependencies should follow stability On-line
Robert Cecil Martin 1997b Design Patterns for Dealing with Dual Inheritance Hierarchies in C++ The parallel hierarchies problem On-line

Other Resources

Any further OO resources are listed in this section.

Websites

Local Websites

Lecture Notes

Libraries

This section contains a list of people (or entities), and a reference to the texts they have accessible.

  • Wals library - Wals library contains a substantive collection of texts and also lists who they are currently on loan to.
  • PS Library - Texts available in the Physical Science Library at the University of Canterbury - library.
  • AlexsLibrary - Alex has a growing collection of texts that you may obtain from him.

See Also

Personal tools