Conceptual Integrity
Estimated time to read: 2 minutes
Overview¶
Conceptual Integrity is about creating consistent software, making decisions about how the system will be designed and implemented.
Achieving Conceptual Integrity¶
There are multiple ways to achieve conceptual integrity.
Communication¶
Adopting certain agile development practices like daily stand-up meetings and sprint retrospectives, where team members can agree to use certain libraries or methods when addressing certain issues, can help to maintain the consistency of the code. For example, team members can all follow a particular naming convention.
Code Reviews¶
In addition to communication, another way to ensure conceptual integrity is code reviews. Code reviews are systematic examinations of written code. It's often used to find mistakes in the software, but also to keep different developers consistent with each other.
Developers evaluate each other's' code line by line to uncover issues. Additionally, using certain design principles and programming constructs can also help in maintaining conceptual integrity.
Well-defined Architecture / System Design¶
While software design is typically associated with guiding the internal design of software running as a single process, software architecture describes how software, running as multiple processes, work together, and how they relate to each other.
Much like using certain design principles, having a strong software design or architecture to guide how your software is organised creates consistency.
Unifying Concepts¶
Unifying concepts is also another approach to maintaining conceptual integrity. It is taking seemingly different things and finding common ground so that each concepts can be seen and treated in similar ways.
Commit Team¶
Having a small core group that accepts commits to the code base is another approach in achieving conceptual integrity. This is similar to exercising code reviews, but it restricts the review to only core members of your software team. These members will be responsible for ensuring that any software changes follow the overall architecture and design of the software. Restricting this decision to only either a single person or a small group will solve any design issues and lead to consistency.