What I'd like to see is some sort of framework that allows us to specify the behaviors of our software, along with the data movement and handling so that end users would have an understanding of how the software should work. Maybe some automated way of producing a "contract" based on the code. Then we could resolve disputes without ever needing to examine the source
Steve, we're using specification through example (SBE) through Specflow to create that contract between the business and the developers as to what the agreed behavior is. We generate a document (Using Pickles) over those features every time we build the software, integrated with our automation test results (TFS 2015) that is published to a public location so the business, ourselves and anyone interested basically can validate the product is still doing what it was meant to be doing on a per check-in basis. It's fairly high level so for example, but a feature for us may be written as:
"Given Mary Jane has signed up for an Insurance Policy last year
And that Policy has a Trauma Benefit
When Mary Jane makes an acceptable Trauma Claim this year
And the Claim Payment ETL runs
Then her Trauma Benefit will pay out to the value of the Policy after that ETL run"
It's written in a language that the business can readily understand and that illustrates the behavior of the software / data layers. Of course you go into more detail so for example, a follow up scenario will be "How do you determine what is an acceptable Life Claim?" until you have described and documented it to a very high degree. What that is effectively doing is handing over the creation of the Policy Owner, the Policy, the Insured Party, their Benefits, etc. over to our data generation layer at each line and where necessary executing the code / components that make the software behave and do what it needs to. And the business has a searchable document published to SharePoint that has nice big green ticks next to each feature (Providing nobody broke anything!)
With this we cover everything from SQL Server Database Engine, SSIS packages, SSRS Reports (UI testing through Coded UI) and up to the SSAS layer using at the moment TFS2015 and a great deal of Powershell. Automate where you can ...
Major changes always goes to those living documents first before we even touch the code and whenever we build new features this is our starting point - we write those features and agree them with the business. That also forms the basis of our regression testing, etc.
It's a beautiful system to see in operation and if you'd like to chat through it and the benefits, happy to have a conversation about it.