Towards Formalizing Assumptions on Architectural Level: A Proof-of-Concept
While designing an architecture, architects often make assumptions about different factors like execution environment, structural properties of the artifacts, properties of input/output data etc. Implicit and invalid assumptions have been identified as a primary reason for architectural mismatches. Such mismatches cause nightmares to the people working at the system integration phase. Today’s complex systems operate in dynamic and rapidly changing environments. Implicit assumptions in the reusable components often make it challenging to adopt the components in a changed operational domain. If not documented, assumptions are often forgotten and it is both difficult and expensive to find them out from previously built software. This paper aims to formally capture assumptions at the architecture level so that they can be checked automatically throughout the system development. Automated checking of assumptions would facilitate a practicable assumption management system for complex and large-scale software system development with smooth integration and evolution.