ВІЗУАЛІЗАЦІЯ ТА АНАЛІЗ ДІАГРАМИ СТАНІВ MVI В ANDROID
09.12.2022 20:06
[1. Інформаційні системи і технології]
Автор: Воропаєва Ксенія Андріївна, студентка, Харківський національний університет радіоелектроніки, м Харків
Для того, щоб простіше було розвивати і підтримувати код продукту, складну логіку можна розбити на безліч станів і описати правила переходів між ними. У результаті ми отримуємо кінцевий автомат. Частина бізнес-логіки, що описує зміну станів у MVI-архітектурі, може бути реалізована як кінцевий автомат. Це дасть змогу представити вашу логіку у вигляді графа переходів для подальшої візуалізації та аналізу.
MVI (Model-View-Intent) - архітектурний патерн, який слідує підходу "односпрямований потік даних" (unidirectional data flow). Дані передаються від Model до View в одному напрямку. MVI-архітектура добре поєднується з абстракцією FSM, у MVI у моделі один вхід та один вихід, так само як у FSM. Якщо з'єднати вихід View з входом FSM і навпаки можна об'єднати дві концепції, зробити це зручно дозволяє бібліотека VisualFSM.
Візуалізація дозволяє швидше розуміти складні бізнес-процеси, полегшує пошук помилок, допомагає додавати нову функціональність і проводити рефакторинг. Якщо потрібно додати або усунути додатковий діалог або екран, то, дивлячись на схему, простіше зрозуміти, які переходи та стану потрібно змінити. З іншого боку, дивлячись на схему, можна будувати висновки про оптимальності схеми, планувати об'єднання чи навпаки виділяти частини окремі FSM. У тестуванні повна схема станів і переходів допомагає тестувальнику описати сценарії перевірки.
Тестові інструменти дозволяють виконувати такі поширені перевірки, як перевірка на досяжність всіх станів і перевірка безлічі термінальних станів (для виявлення незапланованих тупикових станів). Також можна отримати граф у вигляді списку ребер або словника суміжності для реалізації інших перевірок у unit-тестах. Зіставивши повний граф переходів та граф фактичних переходів, виконаних на CI у процесі проходження функціональних тестів, можна виявити переходи та стани, не вкриті автотестами. Запис фактичних переходів під час виконання Ui тестів можна зробити файл за допомогою реалізації TransitionCallbacks інтерфейсу.