In the 1980’s, Information Engineering Methodology used affinity analysis to produce a Process Affinity Matrix that defines logical applications. It would be great to see if this can be reproduced and visually represented in graph form and extended across more domains of enterprise architecture.
Enterprise architecture is broken down into various domains such as, depending upon the framework used, Process/Function, Data, Application, Technology, Security and Service. Domains have interactions with other domains and the way portions of one domain interact with portions of another domain can be helpful in grouping the contents of both portions. For example, the business processes that interact with the same data can be grouped together and considered to be a logical application. Conversely, data that is used by similar business processes can be grouped into logical subject areas. Analysing how similarly things interact can be extended to/between organisation unit, location, physical application, database, server and so on.
So what? Why bother? Firstly, it can unearth new insights or add greater definition and detail to already understood facets of a business. Second, and more practically, it can be used to scope a suite of projects in a programme of business change. How so? Very often the design and redesign of organisation structures, applications, even the use of office space is done intuitively. Wouldn’t it be good for components of ideal target operating models to be defined mathematically*? And, accepting that there are often practical and political considerations to be accommodated, the projects to achieve the TOM be equally clear.
(* Michael Hunger has advised that the Jaccard Similarity algorithm is the starting point)
It would be great to see if clusters in enterprise architecture can be visually represented in graph form where the greater the affinity the closer together the nodes are. Whilst many organisations invest a lot of information into enterprise architecture applications, none of them can provide the insight I am suggesting.
I can make available anonymised test data (it starts with a CRUD matrix), some basic load scripts and a basic Jaccard Similarity algo script that seems to work.
For later consideration:
a) some things are structured like a ragged hierarchy, such as an organisation hierarchy or process hierarchy (i.e. process comprising levels of sub-process) or a network (e.g. a sub-process that is invoked in more than one process); and
b) weightings. For example, a process that creates records/nodes has a greater significance than those only reading records/nodes. Greater clarity can be achieved if weightings can be accommodated.
Frankly, I am not a developer and the documentation for Cypher and algos means my progress to making this a useful public resource is dismal. Hints, tips, contributions or even a straight-forward solution and will genuinely have my gratitude and acknowledgements.