SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

teaching:labs:xp:2004b:talkdesignprinciples [2018/05/09 01:59] (current)
Line 1: Line 1:
 +
 +=====  Bashar'​s [[talks|talk]] about Design Principles =====
 +
 +====  Resources ====
 +
 +  * There are two very nice sources of information about this topic. ​
 +    * **Robert C. Martin** published some **[[http://​www.objectmentor.com/​resources/​listArticles?​key=topic&​topic=Design%20Principles|articles about Design Principles ]]** online. Most of the principles are defined by himself.
 +    * **Radu Marinescu** held an excellent **[[http://​labs.cs.utt.ro/​labs/​ip2/​html/​2002/​index.html|lecture on Good Object-Oriented Design ]]** in Timi&#​351;​oara,​ Romania. See the slides for Lecture 2 and 3. They mainly present the ideas found in Robert C. Martin'​s articles.
 +    * You may also have a look at Ward Cunningham'​s Wiki. See [[wikiwikiweb>​oodesignprinciples|WikiWikiWeb:​OoDesignPrinciples]] and [[wikiwikiweb>​principlesofobjectorienteddesign|WikiWikiWeb:​PrinciplesOfObjectOrientedDesign]],​ [[wikiwikiweb>​principlesofobjectorienteddesign|WikiWikiWeb:​PrinciplesOfObjectOrientedDesign]],​ [[wikiwikiweb>​uncleboboncodingstandards|WikiWikiWeb:​UncleBobOnCodingStandards]]
 +  * **Basic OO Principles: OCP, LSP, DIP** \\  //The goal is to make your software open to extension and closed to modification (OCP). This can be accomplished if we ensure, that any subtype can be used everywhere in place of its supertype (LSP). Then a concrete implementation depends on the supertype used by a client class and the client class need not depend on the concrete implementation (DIP).// ​
 +    * [[http://​www.objectmentor.com/​resources/​articles/​ocp.pdf|The Open Closed Principle ]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​lsp.pdf|The Liskov Substitution Principle ]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​dip.pdf|The Dependency Inversion Principle ]]
 +    * Good OOD, [[http://​labs.cs.utt.ro/​labs/​ip2/​html/​2002/​lectures/​2/​lecture2.ppt|Lecture 2]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​Principles_and_Patterns.PDF|Principles and Patterns ]], pp. 4-14
 +  * **Class Cohesion an Coupling Principles: ISP, SRP, LoD** \\  //Many client specific interfaces are better than one general purpose interface (ISP). There should never be more than one reason for a class to change (SRP). "Only talk to your immediate friends."​ (LoD)//
 +    * [[http://​www.objectmentor.com/​resources/​articles/​isp.pdf|The Interface Segregation Principle ]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​srp|The Single Responsibility Principle]]
 +    * [[http://​www.ccs.neu.edu/​home/​lieber/​LoD.html|Law of Demeter Home Page ]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​Principles_and_Patterns.PDF|Principles and Patterns ]], pp. 14-16
 +    * Good OOD, [[http://​labs.cs.utt.ro/​labs/​ip2/​html/​2002/​lectures/​3/​lecture3.ppt|Lecture 3]]
 +    * K.J. Lieberherr, I.M.Holland:​ [[http://​labs.cs.utt.ro/​labs/​ip2/​html/​2002/​lectures/​3/​res/​Lieberherr-LawOfDemeter.pdf|Assuring Good Style for Object-Oriented Programs ]]
 +  * **Package Cohesion Principles: REP, CCP, CRP** \\  //The granule of reuse is the granule of release (REP). Classes that change together, belong together (CCP). Classes that arent reused together should not be grouped together (CRP).//
 +    * [[http://​www.objectmentor.com/​resources/​articles/​granularity.pdf|Granularity ]]
 +    * Good OOD, [[http://​labs.cs.utt.ro/​labs/​ip2/​html/​2002/​lectures/​3/​lecture3.ppt|Lecture 3]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​Principles_and_Patterns.PDF|Principles and Patterns ]], pp. 16-18
 +  * **Package Coupling Principles: ADP, SDP, SAP** \\  //The dependencies betwen packages must not form cycles (ADP). Depend in the direction of stability (SDP). Stable packages should be abstract packages (SAP).//
 +    * [[http://​www.objectmentor.com/​resources/​articles/​granularity.pdf|Granularity ]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​stability.pdf|Stability ]]
 +    * Good OOD, [[http://​labs.cs.utt.ro/​labs/​ip2/​html/​2002/​lectures/​3/​lecture3.ppt|Lecture 3]]
 +    * [[http://​www.objectmentor.com/​resources/​articles/​Principles_and_Patterns.PDF|Principles and Patterns ]], pp. 18-27
 +  * **Links Added by Bashar**:
 +    * [[http://​www.research.umbc.edu/​~tarr/​dp/​spr04/​cs446.html|DP & OOP Lectures ]]
 +  * **Links Added later**:
 +    * [[http://​www.iste.uni-stuttgart.de/​se/​links/​design_rules/​principles.html]] (in german)
 +
 +
 +
 +
 +====  People ====
 +
 +  * [[http://​www.pmg.lcs.mit.edu/​~liskov/​|Barbara Liskov]], [[extwiki>​|c2]]
 +  * [[http://​www.inf.ethz.ch/​personal/​meyer/​|Bertrand Meyer]], [[extwiki>​|c2]]
 +  * [[http://​www.ccs.neu.edu/​home/​lieber/​|Karl Lieberherr]],​ [[extwiki>​|c2]]
 +  * [[http://​www.objectmentor.com/​aboutUs/​bios/​Robert%20C.%20Martin|Robert Cecil Martin]], [[extwiki>​|c2]]
 +  * John Lakos, [[extwiki>​|c2]]
 +  * [[http://​www.cs.utt.ro/​~radum/​|Radu Marinescu]]
 +=== Attachments ===
 +  * {{talkdesignprinciples.extreme-principles.ppt?​32|extreme-principles.ppt}}
  
teaching/labs/xp/2004b/talkdesignprinciples.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2020