Approach: Top to Down
Source of Information: Market Research, Raw information
Perspective of Architecture Analysis: Informational
Let's assume we have captured raw information for a given problem, through the Market research.
At the most primitive level, categorize them into information categories providing relations and mappings to other information categories, shown below.
Static Models: Information schema doesn't change frequently
Dynamic Models: Information schema keeps changing frequently. Think of self-learning systems using
ML and AI.
Volumetric models: Operating of volume chunks of information for example to render graphical data in
3D formats
Metadata models: Operating on information that needs to be presented to your query audience whether
in the form of exploration (search), analytics or reports. For example Tag Clouds,
used to depict keyword metadata for exploration search, or the visualize free-form text.
Depending on the kind of model, specific solutioning could be done.
For example, we have a static model, with the evolution perspective that could cause changes in architecture, hence solutioning information view and flow for the following usecase.
Example Enhancement to an existing QnA system
Eg: QNA system consisting of a single question with unknown number of options, and possibility of more than one correct answers supporting descriptive answers. A common algorithm that renders this data dynamically in graphical format
Initial Possible schema of information
Question | Option 1 | Option 2 | ...? | Answer 1,2,... ? | UI markup | Settings <*to*>?! === PROBLEM
Let's think of solutions here.
Type: Static Model
Perspective: Evolution
Principle Applied: Open-Close Design Principle, open for extension
Solutioning:
CASE: Part of the system enhancement introduces frequently changing information
Proposed / Existing Storage Model: RDBMS SQL
Technology Vendors: MS SQL Server, Oracle, DB2, mySql
ANS 1 : Pivoting. Create pivot structures such that the dynamic schema which was to be represented as columns, now is represented as rows.
Pivot as a solution
Question | Option | Is Answer | UI markup | Settings
Q1 | Op1 | No | </> | {setting:value,...}
Q1 | Op2 | No | </> | {setting:value,...}
Q1 | Op3 | Yes | </> | {setting:value,...}
ANS 2: Extension Tables, based on the principle of inheritance /composition / aggregation translating to Primary Key - Foreign key relationships, that would create two or more structures in the model depending on if the extension calls for One-to-One, One-to-Many, Many-to-Many relationship
ANS3: Keeping the schema constant, and the RDBMS approach, suggest extension in algorithm that processes the QNA data.
ANS 3.1: Modifying data added in the schema, without change in existing schema, using json / xml data as row data. Suggested "extension" through extension code contracts not refactoring in existing processing algorithm.
Question | AnswerQ1 | options: [{option:'Op1',IsAnswer:'No',UIMarkup: '</>',settings: {setting1:'value', setting2:'value2',...}}]
ANS 3.2: Modifying data added in the schema, without change in existing schema, using links to json/xml templates / data. This solution works well for content management systems.
QuestionBank | Answer
QB1 | link://jsondoc
~~~ jsondoc on Server
[ {question: 'Q1',options: [{option:'Op1',IsAnswer:'No',UIMarkup: '</>',settings: {setting1:'value', setting2:'value2',...}}],{question: 'Q2',
options: [{option:'Op1',
IsAnswer:'No',UIMarkup: '</>',settings: {setting1:'value', setting2:'value2',...}}],...]
CASE: Change Storage Model Type, convert to self-learning system
Type: Dynamic Model, Volumetric Model, Metadata Model
Storage Model: No-SQL DB
Technology Vendors: MongoDB, Cosmos DB, ElasticDBs, Bigdata
ANS : Extending existing structures to incorporate Json / xml data
[ {question: 'Q1',
options: [{option:'Op1',
IsAnswer:'No',
UIMarkup: '</>',
settings: {setting1:'value', setting2:'value2',...}
}]
]
OR
<Question title='Q1'>
<Options>
<Option title='op1'>
<IsAnswer>No</IsAnswer>
<UIMarkup><lasjdf><UIMarkup>
<Settings>
<Setting title='setting1'>value</Setting>
<Setting title='setting2'>value</Setting>
<Settings>
</Option>
</Options>
</Question>
CASE: This is a system for a small set of users supporting upto 100 question banks
Technology Vendors: Access, CSVs, Flat File DBs, Xml Dbs, Excel Dbs, Json file dbs
No comments:
Post a Comment