Agile FAQs
  About   Slides   Home  

 
Managed Chaos
Naresh Jain's Random Thoughts on Software Development and Adventure Sports
     
`
 
RSS Feed

Recent Thoughts
Tags
Recent Comments

Conceptual Integrity

Conceptual Integrity is the principle that anywhere you look in your system, you can tell that the design is part of the same overall design. This includes low-level issues such as formatting and identifier naming, but also issues such as how modules and classes are designed, etc.

While developers focus a lot on High Cohesion and Low Coupling, they seem to underestimate the importance of Conceptual Integrity. Some times despite the high cohesion and low coupling, the system might not have conceptual integrity. This is because the overall style, themes, mood, does not tie it all together.
For example according to the Pragmatic Programmer, in computer languages, Smalltalk has conceptual integrity, so does Ruby, so does C. C++ doesn’t: it tries to be too many things at once, so you get an awkward marriage of concepts that don’t really fit together well.

No related posts.

  • http://sandeep.shetty.in/ Sandeep Shetty

    I also look for symmetry in my design at all levels (Self-Similarity). Think Kent talks about this in Implementation Patterns. See also GreatDesign

  • http://sandeep.shetty.in/ Sandeep Shetty

    I also look for symmetry in my design at all levels (Self-Similarity). Think Kent talks about this in Implementation Patterns. See also GreatDesign

  • Mynampati Venkat

    I think that Conceptal integrity is hard to pin down and bydefinition it is subjective (“you can tell that the design is part of the same overall design”) besides what does this mean in practice?

  • http://blogs.agilefaqs.com Naresh Jain

    I agree that Conceptual Integrity is subjective between people who come from
    different schools of thoughts. However there are many things as a team you
    can agree upon to make sure there is conceptual integrity on your
    product/potfolio of products:

    * Use same programming conventions
    * Use same programming idioms
    * Have a system metaphor
    * Maintain consistency in the User Experience
    * and so on…

    Hope this helps.


    Licensed under
Creative Commons License