About

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.

Other Resources

Since Meilir Page-Jones published his book, several other people have adapted and expanded on the concept of connascnence.

Jim Weirich

The greatest proponent of connascence is probably the late Jim Weirich. Several examples of his contributions to the industry can be found below:

Kevin Rutherford

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.

Multiple Authors

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.

Josh Robb

In 2015 Josh Robb gave a talk titled Connascence & Coupling at codemania. That talk was the inspiration to build this site.

Thomi Richards

In 2015 Thomi Richards summarized the contents of this website in a talk at Kiwi PyCon.

Gregory Brown

In 2016 Gregory Brown wrote "Connascence as a Software Design Metric" for the practicingruby.com blog.

Patches Welcome!

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!