CRC Cards | Glossary

Definition:

CRC Cards was originally proposed by Ward Cunningham and Kent Beck as a teaching tool, brainstorming tool used in the design of object-oriented software. CRC card is Class-Responsibility-Collaboration card, popular among expert designers and recommended by extreme programming supporters.

CRC cards are index cards, which are used by team members to write relevant class/object of their design which are partioned in threes areas. Class Name on top of the card, with Responsibilities of the class in the left and on right list of other collaborators (classes) with which class interacts to fulfil its responsibilities.

Advantage of CRC cards are, it keeps the complexity of the design at a minimum on a small card where designers focuses on essentials of the class, preventing them to getting them into details and implementation. These cards are portable and can be easily laid out on a table and re-arranged  while discussing a design. You create a CRC card by writing out a scenario which identifies the actors and actions which the actors do. Nouns should turn into the classes of the card, verbs typically turn into the responsibilities of the card, and collaborators are the other cards  with which the card will be interacting.

Further Reading:

Book: The CRC card book by David Bellin
https://en.wikipedia.org/wiki/Class-responsibility-collaboration_card
http://agilemodeling.com/artifacts/crcModel.htm

Automated Build | Glossary

Definition:

In Software Development, build is a process to compile source into binary code, packaging binary code and running automated test.   In build process there are steps repeatable, executed in a specific order which is automated using build script or tools at any time is a automated build.

There are different types of build automation servers, On-demand automation where developer runs build script at the command line, Scheduled automation server which is a continuous integration server running a nightly build and Triggered automation server where continuous integration server runs a build on every commit to a version control system.

The advantages of build automation to software development projects includes a necessary precondition for Continuous Integration (CI), Continuous Testing and Continuous Deployment (CD) improving product quality, accelerating the compiling and integration process, eliminating redundant tasks, eliminating dependencies on key personnel and having history of builds and releases in order to investigate issues.

Further Reading:

Book: Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment
Automation Jez Humble, David Farley
Book: Blameless Continuous Integration: A Small Step Towards Psychological Safety of
Agile Teams by Vivek Ganesan

https://en.wikipedia.org/wiki/Build_automation