A computing system (10, 2100) for versioning software models, comprising: a logic subsystem and a memory, wherein the logic subsystem is configured to: store, in the memory, a plurality of software models that each describe aspects of a network connected device or a software service, the plurality of software models comprising a first version of a selected software model; execute the software service via a software solution configured to interact with the network connected device, wherein the selected software model integrates the network connected device with the software service; receive a second version of the selected software model; validate the second version of the selected software model via validation logic by applying one or more versioning rules to the second version of the selected software model; and based on the application of the one or more versioning rules, execute a versioning action on the selected software model, wherein the versioning action is based on a strict versioning approach, the strict versioning approach including that the software solution is coded for specific software interface versions, or the versioning action is based on a relaxed versioning approach, the relaxed versioning approach including that the software solution is coded for ranges of software interface versions and the software solution supports new software interface versions at runtime without additional code and/or configuration changes. a logic subsystem and a memory, wherein the logic subsystem is configured to: store, in the memory, a plurality of software models that each describe aspects of a network connected device or a software service, the plurality of software models comprising a first version of a selected software model; store, in the memory, a plurality of software models that each describe aspects of a network connected device or a software service, the plurality of software models comprising a first version of a selected software model; execute the software service via a software solution configured to interact with the network connected device, wherein the selected software model integrates the network connected device with the software service; receive a second version of the selected software model; validate the second version of the selected software model via validation logic by applying one or more versioning rules to the second version of the selected software model; and based on the application of the one or more versioning rules, execute a versioning action on the selected software model, wherein the versioning action is based on a strict versioning approach, the strict versioning approach including that the software solution is coded for specific software interface versions, or the versioning action is based on a relaxed versioning approach, the relaxed versioning approach including that the software solution is coded for ranges of software interface versions and the software solution supports new software interface versions at runtime without additional code and/or configuration changes. the selected software model integrates the network connected device with the software service; receive a second version of the selected software model; validate the second version of the selected software model via validation logic by applying one or more versioning rules to the second version of the selected software model; and based on the application of the one or more versioning rules, execute a versioning action on the selected software model, wherein the versioning action is based on a strict versioning approach, the strict versioning approach including that the software solution is coded for specific software interface versions, or the versioning action is based on a relaxed versioning approach, the relaxed versioning approach including that the software solution is coded for ranges of software interface versions and the software solution supports new software interface versions at runtime without additional code and/or configuration changes.