Monday, September 5, 2022

Requirements Gathering ... and how to define a "thing"

Gathering requirements is one of the hardest and most important aspects of software development.


The world is full of ideas, and when one person tries to communicate an idea to another person, They’re stuck with having to pick a specific word to identify each thing that they’re talking about.


So when one person uses a word to describe a thing, if the person they’re speaking with is familiar with that word they will think of the same thing when they hear it. 


But if they’re not familiar with it, or have a different understanding, the result is that they are actually thinking about a different thing.


Same word, different thing.


This is a fundamental problem with language. Human language, spoken language, written language, programming languages, all languages.


A different approach


For the first time in history, though, we have a tool in the computer that allows us to take an entirely different approach.


In about the same amount of time that it would take to describe a thing, in 2022 we can simply create a digital instance of the thing being described. Just one.


The critical aspect of this one, digital example of the idea, is that the things being described exist (or don’t exist) within the digital model being built, regardless of what you call it.


Each person might actually call it something different, but within the model _it_ only exists once. And it’s relationships to the other things being discussed are also relationships that exist independently of what you call the various participants in that relationship.


In this way, answers to simple questions become possible, even trivial to answer – whereas, with a linguistic description of an idea there will always be ambiguity about whether two different words refer to the same thing or to two different things, making it difficult to even just count how many “things” are being discussed.  


Knowing how many things are involved is not typically an important piece of information. But… 


Being *able* to answer that question versus having absolutely no mechanism to even begin to answer such a question reflects a deep, deep flaw in literally any linguistic description of a complex idea.


Structure of the digital twin


The digital twin, or model, or single source of truth as we call it - is actually two separate things mixed into one.


In other words, in order to take a piece of language and extract from it a digital model of the ideas being discussed, there are two parts of that conversation.


In the first part of the conversation, we have to agree about what the structure of that model will be. Literally every single idea will have a slightly different structure.


In fact, the structure Of that model essentially act as a fingerprint for the idea.


Once we can agree on that model though, we can then begin to take the Content of the idea and enter it into that model.


But this is an iterative process, so anytime the contact doesn’t fit into the model, it prompts another discussion About and potentially changes to the structure of the model. The scheme of the idea.  


The last part of the process then, is to write a report against the single source of truth, which can reassemble the words back into a linguistic description of the idea.


What essential however, is that the linguistic description is not the source. It is a product that is produced from the source, which is a digital, multi dimensional representation of the idea itself. 


No comments:

Post a Comment