Как стать автором
Обновить

Цеттелькастен, опять

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.4K

Приходится иногда сталкиваться с ситуацией, когда на этапе проектирования добавляется защита от всего подряд. Подменяя необходимость анализа, верой в универсальность наработанных методов. В результате получается нечто сложнореализуемое, состоящие из нагруженных компонентов. Что неизбежно приводит к негативным последствиям. Поэтому, уже давно хочу написать программу позволяющую правильно оценить осведомлённость в решаемой задаче. А для этого, было бы правильно обзавестись ТЗ, чтобы не получилось чего-то плохого.

За основу программы хочу взять метод работы с карточками Цеттелькастен, немного его модифицировав. Каждому объекту (задаче/явлению) должна соответствовать своя карточка. Каждая карточка имеет два столбца ссылок, один столбец содержит свойства (признаки) рассматриваемого объекта, второй столбец – факторы влияющие на объект.

Правило работы с карточками простое: не объект определяет набор своих признаков, а признаки определяют объект. Кот мяукает и именно поэтому он кот. А ещё, чтобы считаться котом он должен иметь определённый окрас, черты характера и особенность зрения. Объект можно определить только по совокупности признаков.

 Признаки объекта появляются не сами по себе, есть факторы влияния, определяющие набор признаков. Например, за окрас отвечает среда обитания и наследственность, которые не позволяют коту быть зелёным. И если у объекта есть свойство, но нет влияющего на это свойство фактора, то можно рассчитывать на существование неизвестных рисков, которые необходимо устранить.

Такой подход работает и без программы, показывая часть слабых мест в сформировавшемся представлении о проекте. Программа должна находить неочевидные свойства объектов, что позволит выявлять неизвестные факторы влияния. Это возможно если сам объект будет выступать в качестве фактора влияния для других объектов, передавая им свои свойства и получая новые свойства.

Каждая карточка является своеобразным классом, и для её использования нужно создавать экземпляр класса. Например, есть класс «Кот», а есть конкретный экземпляр «Кот Василий» у которого класс «Кот» выступает в качестве фактора влияния. При этом, если в экземпляре объекта потребуется добавить новые свойства, то такие изменения возможны только в базовой карточке объекта. В таком случае, чем больше базовый объект будет использоваться, тем больше будет перечень свойств объекта, а значит он сможет передать больше свойств другому объекту.

Но в отличии от базовой карточки, её конкретный экземпляр содержит не сами свойства, а конкретные значения этих свойств, если они есть. Кот Василий в таком случае будет наглым, любопытным, рыжим, обладать ночным зрением и будет уметь мяукать. Значения свойств, это точно такие же объекты имеющие свои карточки. В данном случае значение – это контекстно зависимые свойства тех объектов, которые были использованы в качестве свойств текущей карточки.

В процессе наполнения базы данных программы, формируются структуры со сложными связями между элементами. Для наглядного представления этих структур можно использовать два дерева проекта. Одно из них отображает базовые структуры представления о объектах. Во втором дереве отображается представление конкретных объектов, структура представления которых построена на основе базовых структур.

Анализ проводится путём постепенного разворачивания ветки дерева проекта относящейся к конкретному объекту, с целью уточнения значений и связей. Анализ завершается, когда все возможные пути заканчиваются значениями. При этом, все значения должны согласовываться с другими объектами над которыми был проведён анализ ранее. Если нужен такой анализ. 

На этом, проработанное т.з. всё. Если возникнет такое желание, то с черновым вариантом программы можно ознакомится скачав исходник на C#. Предупреждаю сразу, код выполнен в стиле «что вижу то пою». Черновик создавался для написания т.з. 

Что дальше. Из очевидного, нужно проработать возможность использования числовых значений, а также вопрос связанного летоисчисления. Хотелось бы также реализовать возможность вычислений, хотя бы на уровне арифметики, а также проработать вопрос количественного анализа.

В очень далёкой перспективе, где-то ближе к никогда, сделать онлайн сервис. Такая система начнёт полноценно работать только при массовом использовании и большом выборе разнообразных базовых структур. При этом, если ударится в блокчейн, каждая структура идеальный NFT-токен. Ведь карточку или структуру не только нужно создать, за ней нужно следить. И чем качественней результат, тем выше заинтересованность. Оно ведь как-то должно работать. 

Теги:
Хабы:
Всего голосов 6: ↑3 и ↓3+2
Комментарии6

Публикации

Истории

Ближайшие события