CSC/ECE 517 Fall 2007/wiki2 5 pr

From Expertiza_Wiki
Jump to navigation Jump to search




Introduction

        Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.

        A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system.

The contents of an index card are:

       

  • The class name
  • Its Super and Sub classes (if applicable)
  • The responsibilities of the class.
  • The names of other classes with which the class will collaborate to fulfill its responsibilities.
  • Author
  • Why bother about CRC cards?

  • They are portable. No computers are required so they can be used anywhere. Even away from the office.
  • Reduces the complexity of the design.
  • The allow the participants to experience first hand how the system will work. No computer tool can replace the interaction that happens by physically picking up the cards and playing   the roll of that object.
  • Helps the designer focus on the essentials of the class rather than getting into inner details.
  • The are a useful tool for teaching people the object-oriented paradigm.
  • They can be used as a methodology them selves or as a front end to a more formal methodology.
  • Where to learn about this new and innovative method?

    There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.

    Sites

    1) http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/

    This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards.

    The Tutorial section in this link gives a step by step approach on how to go about making CRC cards and also how to use them.

    Inference:

       -> A very introductory description to CRC cards. 
       -> The right kind of site for beginners. 
       -> Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. 
    


    2) https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&rNum=864389

    In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.

    3) http://www.cs.utexas.edu/users/ndale/ObjectOriented.html //Pdh paper...remember ;)


    4) http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html // describes in details talks abt role play and structure..

    4) http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf

    This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.


    Which exercises can be used to teach them best:

    (i) interactively over the Web http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit

    (ii) to a class of students, via in-class exercises

           http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html
           http://www.agilemodeling.com/artifacts/crcModel.htm
           http://c2.com/doc/crc/draw.html
    

    (iii) for self-study?

           http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit
           http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html 
    

    http://www.excelsoftware.com/quickcrcintro.html

           http://www.extremeprogramming.org/example/crcsim.html
    


    CRC Cards generation tool

    http://www.fileboost.net/directory/development/miscellaneous/quickcrc_windows/007241/review.html http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows.html

           http://www.excelsoftware.com/crccards.html
    


    Yet to add the CRC concepts wrt Java and Ruby!! And ii and iii


    One link i cud get on Ruby n CRC http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards Its a blog but tahts all i cud get:(


    References:

    http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card