The Origins of Connascence
Connascence is a software quality metric that attempts to measure coupling between entities. The term was used in a computer science context by Meilir Page-Jones in an article of the Communications of the ACM. The article can still be found online.
In 1996, Meilir Page-Jones included a large section on connascence in his book "What every programmer should know about object-oriented design". The book can still be found on amazon.com.
Since Meilir Page-Jones published his book, several other people have adapted and expanded on the concept of connascnence.
The greatest proponent of connascence is probably the late Jim Weirich. Several examples of his contributions to the industry can be found below:
- Connascence Examined. A one hour long talk from 2012 that goes into considerable detail of the various types of connascence.
- Grand Unified Theory of Software Design. A 45 minute talk given at 'Aloha on Rails'.
- The Grand Unified Theory. An earlier talk from 2009. Note: The audio quality on this talk is questionable at times.
- Connascence Examined. Jim Weirich gave an hour long talk at YOW in 2012.
- Ruby Rogues ep. 60. Ruby Rogues is a weekly podcast about programming. This episode features Jim Weirich, and discusses both the SOLID principles and connascence.
Kevin Rutherford has published a series of blog posts about connascence: they have inspired much of the content on this website. He also has a recorded talk, Red, Green, ... now what?!, where he goes over the usage of connascence during a refactoring kata.
In 2013, this google hangout was broadcast that included several luminaries of the software development industry, including Corey Haines, Curtis Cooley, Dale Emery, J. B. Rainsberger, Jim Weirich, Kent Beck, Nat Pryce, and Ron Jeffries.
In 2015 Josh Robb gave a talk titled Connascence & Coupling at codemania. That talk was the inspiration to build this site.
In 2015 Thomi Richards summarized the contents of this website in a talk at Kiwi PyCon.
In 2016 Gregory Brown wrote "Connascence as a Software Design Metric" for the practicingruby.com blog.
The connascence.io website is an open source project hosted on github. Help us make this website awesome! We're interested in any and all contributions you might have, including:
- Spelling and grammatical fixes
- New and better content
- Links to other resources about connascence
- Graphical & design changes
- Translating pages into other languages
- Translating examples into other programming languages
- ...anything else - give us your good ideas!