Connascence is a software quality metric invented by Meilir Page-Jones to allow reasoning about the complexity caused by dependency relationships in object oriented design (much like coupling did for structured design).
Connascence quantifies the degree and type of dependency between software components, evaluating their strength (difficulty of change) and locality (proximity in the codebase). Two objects are connascent if object A cannot be changed without changing object B.
The methodology details mine common ways of how code logic can be coupled, which are either static or dynamic. The static ones are name, type, meaning, position and algorithm. The dynamic ones are execution, timing, values and identity. A static type can be discovered by visually looking a the codebase. A dynamic type is detected at runtime and is more complex to determine.
Connascence quantifies the degree and type of dependency between software components, evaluating their strength (difficulty of change) and locality (proximity in the codebase). Two objects are connascent if object A cannot be changed without changing object B.
The methodology details mine common ways of how code logic can be coupled, which are either static or dynamic. The static ones are name, type, meaning, position and algorithm. The dynamic ones are execution, timing, values and identity. A static type can be discovered by visually looking a the codebase. A dynamic type is detected at runtime and is more complex to determine.