In my previous post I discussed the core concepts behind Digital Asset Management. In the context of that definition, in this article I document how these concepts translate to the requirements and features that myActivo will implement.
I will then build the implementation plan on GitHub projects so the roadmap is visible to anyone interested in tracking the progress of this project.
I will also use this post to maintain the most current documentation of all the business requirements and features that the platform will be implementing.
I will also borrow concepts from agile software development where I think it fits the needs of the project.
From the point of view of the user, the myActivo platform should meet the following requirements.
- Allow the user to define and store arbitrary asset data structures. These structures will serve as templates for the information that each instantiation of that kind of structure will contain.
- These structures should be capable of nesting inside each other in order to create more complex hierarchies.
- Provide the ability to create template structures and use them as starting point of new ones.
- These data structures will also be used to manage and check all data exchange activities throughout the platform. Any data acquired, analysed or visualised through this platform will be checked against the structures defined in this module.
- Enable the acquisition of data from any source, i.e. spreadsheets, databases, physical devices, etc.
- Allow the user to map this acquired data to the fields defined in the data structures.
- Allow the user to specify whether only the latest data or a historical log of data should be kept. Data records with a log can be used to trace back other aspects of the framework like visualisations or decisions.
- Present the user with all the defined data structures and the data contained in them.
- Allow the user to define calculations and algorithms of arbitrary complexity. The user should be able to input algorithms using various means, Excel-like formulas, visual coding languages or a general programming language like C#.
- Enable the creation of basic charts and graphs based on the raw data and calculations defined in the previous modules.
- Enable the creation of dashboards and report pages. These pages can be defined in a hierarchical structure (i.e. parent-child relationships).
- Allow developers to embed and integrate other visualisation libraries (i.e. PowerBI, Sisense, Qlik, Tableau, etc.)
- Enable the comparison of various options, including the contextual information of each options.
- Record the information of a particular decision, including what, why, who, when and where a decision was made.
- Enable the user to “play back” a particular scenario or context in which a decision was made. Using the point in time in which the decision was made, the system should allow the user to inspect the contextual data and outcome of the various algorithms at that time.
- Allow the user to connect to a range of data sources. As an initial set of options, the system should be able to connect to SQL data bases, REST API’s and Excel/CSV files.
- Keep a log of changes to each data structure over time. This will allow to keep track of the changes a d evolution in these data definitions.
I am aware that the requirements above are ambitious. I might not be able to implement them all in the end, but I believe that asking the question and going through the process of trying to implement something and fail would be worth the time.
At least you, the reader, will be able to learn from my mistakes and know how not to do something.