Cyclic Redundancy Code. A small integer value computed from a sequence of octets used to detect errors that result when the sequence of octets is transmitted from one machine to another. Typically, packet switching network hardware computes a CRC and appends it to a packet when transmitting. Upon reception, the hardware verifies the contents of the packet by recomputing the CRC and comparing it to the value sent. A CRC detects more errors that a checksum that uses additive methods. Basically, the errors occur when the calculation does not pass, indicating corrupted data.

CRC is superior to a simple checksum in that it is much more unstable when errors screw up a checksum, all you have to do is switch a 1 to a 0, then later, switch a 0 to a 1 in the same position. Not common, but common up to be irritating when it passes. To get an identical CRC, you would have to really really hose your transmission, then cross your fingers and pray that the random values you pass have the same CRC value as what you started with.

CRC also stands for the Chemical Rubber Company, who put out the CRC Handbook of Chemistry and Physics.

It is an acronym for Class-Responsibility-Collaboration, too.

This comes from an technique used in Object-Oriented Analysis and Design (OOAD) called 'CRC-cards'. CRC-cards were invented by Ward Cunningham (he got famous for inventing the wiki) and Kent Beck in the late 80ies. They were working at Tektronix (Portland, Oregon) back then.

How does it work? You use small cards of which each one represents a class. Instead of writing attributes and methods on that card, you put responsibilities and collaborations on it.
A responsibility is a description of the classes purpose on a higher level.
A collaboration is understood as the class(or the classes), which is (are) necessary to fulfill the responsibility.

The main advantage of CRC-cards is, that they can be rearranged and reordered very easily. If you and your teammate have to discuss something regarding the class-model of your application, it is easier to use the cards then to draw large diagrams on huge pieces of paper. In discussion, you often get to the point, where you have to change the design radically, which is not easy if all classes are on the same sheet. :-)
Another advantage is, that the designer has to think on a high level of the classes usage and so it resembles "The Real World" much more.

Log in or register to write something here or to contact authors.