Проблема ответственного наблюдения при проектировании программных систем

А.И. Разумовский,

с.н.с., к.т.н.,

ИПУ РАН, г. Москва

Известны три взаимосвязанные сущности, определяющие соотнесение вещей: причинность, диктующая или следуемая ей управляемость и наблюдаемость, в процессуальном аспекте обозначаемая как восприятие. Э. Шредингер, ссылаясь на Д. Юма, отмечал, что нет никакой внутренней связи между причиной и следствием, которые могут быть восприняты и поняты человеческим разумом [1]. Следовательно, человеческий фактор является решающим звеном на пути  поиска, принятия решения и, наконец, ответственности за него. Построение логики любого решения требует обозрения каждого элемента в произвольный временной момент, поскольку понимание  существа  проблемы  означает, что  каждый  ее элемент соотнесен с уже  понятым [2]. Как в квантовой механике ответственность за коллапс волновой функции несет наблюдатель [3], так в более широком смысле – наблюдаемость любого элемента проблемы необходима для соблюдения ответственности над ее решением. Наличие или отсутствие ответственности за выбор приводит к качественно противоположным выводам. При отсутствии ответственности проявляется проблема неуправляемости в достижении и верификации результатов. Таким образом, можно предполагать, что повышение роли наблюдения над процессом поэтапного достижения результата позволит значительно повысить управляемость этого процесса.

Проектирование программных систем (ПС) относится к той сфере деятельности человека, где «только закончив работу, вы обладаете полноценным знанием о том, как ее следовало сделать» [4].Проблемы, возникающие при проектировании ПС, так или иначе, связаны с недостаточностью наблюдения и очерчиваются следующей триадой:

·      слабая управляемость информацией проектирования;

·      узость туннеля видимости результатов;

·      стремление к безответственной унификации данных представления и проектирования.

Указанные проблемы имеют две основные причины:

- структурализм, как средство и цель проектирования ПС: чрезмерная унификация, а также шаблоны проектирования препятствуют процессу предметного и творческого осознания сущностных идей в ПС, что ведет к утере контроля над качеством ее функционирования и поддержки;

- стремление к упорядоченности и рационализация подходов к разработке ПС: например, требование проверки информации, полученной от лица, принимающего решение (ЛПР), на непротиворечивость, выхолащивает творческую нить выработки новых идей и подходов; или – требования логического обоснования решающих правил и объяснения полученного решения – способны вызвать понятийный кризис проекта в виде нагромождения безответственных по существу, но приемлемых по форме утверждений и выводов.

Для повышения креативности при проектировании ПС необходимо основать и утвердить базис наблюдения над элементами проекта ПС.  Для этого, прежде всего, следует исключить из процесса проектирования те действия и факторы, которые, во-первых, препятствуют должной оценке текущего состояния проекта в целом и во всех его частях, а во-вторых, уменьшают комфорт проектирования через выделение в его процессе формальных и несущественных требований. Информационную модель жизненного цикла (ЖЦ) ПС изобразим рисунком 1: здесь  рис. 1-а демонстрирует традиционный порядок проектирования, где вырабатывающий и принимающий решения наблюдатель отсутствует в полноте из-за главенствующей роли классов ООП  над алгоритмами . Рис. 1-б отражает фундаментальную связующую роль наблюдателя в плане визуального контроля над любым элементом ПС, включая результат ее функционирования, а также ответственного принятия решения. Такой ответственный наблюдатель руководствуется главным образом личным комфортом при выборе очередного решения, а не тем, насколько его качество соответствует формальной достоверности, надежности и оптимуму.

 

                  

 

рис. 1 Совместная информационная модель ООП-проектирования и функционирования ПС:

а) без ответственного наблюдателя; б) с ответственным наблюдателем

Для создания базиса комфортного наблюдения необходимо, прежде всего, отказаться от принципа Оккама о полноте по необходимости – ибо, как писал А.Пуанкаре: «Логика говорит нам, что на таком-то пути мы, наверное, не встретим препятствий, но она не говорит, каков путь, который ведет к цели. Для этого надо издали видеть цель» [5]. Более того, поскольку разработку ПС следует рассматривать всегда в максимально широком ракурсе, то есть с точки зрения жизненного цикла (ЖЦ), следует отказаться от формирования решения задачи на ранних стадиях проекта –  ведь знаний для его успешного наполнения на ранних стадиях априори недостаточно, и опираться на подобную ограниченную базу опрометчиво и безответственно. Также обратим внимание на использование термина «необходимость», который характеризует факт важности и потребности предмета одновременно, что, при фокусировании внимания на него вне временного согласования или упорядоченности с прочими необходимыми элементами и требованиями разработки, может вести  к потере понимания решаемой задачи и, как следствие, потере креативного контроля над проектом.

Далее сформулируем требования к организации процесса проектирования ПС:

·      создать максимально комфортные условия выработки упорядоченных оценок и решений;

·      оценку важности решений вести с учетом ее последующего изменения.

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

Практика двойного представления (соорганизации), описанная в работе [6], позволяет усилить восприятие информационных элементов, а также увеличить множество возможных связей, через создание наряду с формированием множества естественных описаний элементов. Оставаясь в рамках естественных описаний, комфортнее, а, следовательно – легче, получить адекватную оценку, а также осуществить соединение между собой элементов, представленных неформально.

Изначально и на протяжении всего ЖЦ ПС для креативного проектирования требуется представление об элементах проекта ПС, как независимых, то есть в восприятии однородных. Однородность элементов необходима, как антипод формальным правилам, формирующим неверные приоритеты и контексты восприятия, а также как снятие ограничений в эпистемологическом и феноменологическом аспектах. Множество однородных элементов может развиваться в процессе проектирования как множество стремящихся к идеалу объектов, то есть  полностью удовлетворяющих требованиям и пожеланиям, которые часто описать затруднительно, но которые существуют как некий предел. Также, с другой стороны, такое множество будет иметь обратный предел, имеющий смысл экспериментального содержания, т.е. это множество элементов пространства проектирования, которые заведомо имеют неустоявшиеся роли, неполные, неявные, нечеткие, неточные значения, опытным образом устанавливаемые или отвергаемые.

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

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

Идеальное представление о системе должно быть включено в сам процесс проектирования с начальных стадий его ЖЦ. Можно это сделать посредством наблюдения над результатом функционирования ПС:  на рис.1. Внесение в проект неопределенных элементов, таких как результат функционирования  явным образом, позволит ориентировать восприятие на этот результат и получить проектирование ПС "в развитии", где результат присутствующий в явном виде и верный лишь условно, тем не менее, станет свидетельствовать об определенной завершенности выполненных проектных действий. А также будет играть роль комфортного психологического основания  к совершению перехода к очередному этапу разработки ПС. В последующем, можно, действуя в подобном ключе, располагая результатами иного качества и образца, осуществлять поиск дальнейших путей развития и оптимизации имеющихся построений.

В плане когнитивно-контекстного проектирования (ККП) ПС важен не метод в виде последовательности шагов, а поддержка обстановки или контекста комфортного наблюдения, которое сможет способствовать, во-первых, триаде качеств – понимание, познание, креативность, а во-вторых, повышению уровня ответственности каждого из указанных качеств.

Процесс ККП является итерационно-накопительным. Результатом каждой итерации будет функционирующая ПС, по качеству работы которой составляется план последующей итерации. Итерация содержит три стратегические единицы:

·      аналитические условия (АУ);

·      когнитивно-контекстная среда  (ККС);

·      перманентное принятие решения (ППР).

Здесь опорой, формирующей порядок ответвленного наблюдения, является визуализатор ККС. Соответственно, посредством визуализатора ККС проводится наблюдение над информационными элементами (ИЭ) проекта: их создание, преобразование, запись и воспроизведение из хранилища. Воспроизведение ведется в непрерывном циклическом ключе, но также может быть организовано и выборочно, предметно. Расположение ИЭ в визуализаторе представляется индивидуально удобно настраиваемым образом. ППР, в результате которого происходит появление (создание) очередной версии ПС, вырабатывает и принимает решение. Это ППР не является достоверным и формально оптимальным, однако такое решение удовлетворительно верно с точки зрения наблюдателя и подкрепляется его ответственностью как лица вырабатывающего и принимающего решение (ЛВПР). Смысл и значение ППР нельзя недооценивать, ибо оно обеспечивает не только быстрое продвижение проекта, но и позволяет легко изменять принятые решения. Важно подчеркнуть, что все ИЭ в процессе ЖЦ ПС в ККП являются экспериментальными.

Рассмотрим в качестве примера разработку алгоритма чтения графических данных формата языка виртуальной реальности VRML.

Проектирование алгоритма чтения данных формата VRML содержит 4 основных этапа. Будем представлять ККП стратегически тремя областями (это могут быть, например, три окна, одновременно имеющихся на экране монитора): АУ, ККС, ППР. На первом этапе АУ определяются следующим образом:

·      определение имен графических примитивов данных;

·      определение приоритетов графических примитивов;

·      количественная декомпозиция графических примитивов.

ККС может содержать отдельно описание  требований этапа и непосредственно визуализацию данных тестового файла VRML (рис. 2):

- функция чтения данных без идентификации по именам примитивов;

- заполнение массивов индексов и координат точек полигонов.

 

рис. 2 Визуализация данных файла VRML в редакторе Notepad

ППР содержит результат и инструкции для следующего этапа:

·      минимально исполнимый код чтения данных без визуализации графики на экране;

·      определить взаимосогласование примитивов в данных файла.

АУ второго этапа определяются ППР предыдущего:

·      создание структур данных, объединяющих в себе данные, разнесенные в файле и относящиеся к одному примитиву;

·      согласовать между собой “близкие“ императивно данные VRML-полигоны, точки, свойства,  трансформации.

Требование ККС этого этапа таково - добавить функцию, заполняющую экземпляр структуры объединяющего элемента указателями на массивы координат и индексов точек.

Визуализация ККС одновременно содержит как текст файла VRML, так и результат вывода на экран прочитанной графической информации (рис. 3).

 

                 

рис. 3 Визуализатор 2 этапа разработки алгоритма чтения данных VRML

Поскольку пока данные прочитывались последовательно, то ППР 2 этапа определяет уточнение для операции чтения файла – найти реализацию иерархического включения элемента.

Для 3 этапа поиска алгоритма формируем АУ:

- реализовать свойства parent и child  для элемента данных VRML.

Требования ККС этого этапа:

·      добавить в код функции идентификации children рекурсивный ее вызов;

·      добавить в код функцию учета трансформации объекта, а также графических свойств и нормалей.

Визуализатор будет выглядеть, как показано на рис.4.

 

             

рис. 4  Визуализатор 3 этапа разработки алгоритма чтения данных VRML

Поскольку еще не все дочерние объекты преобразованы при чтении данных, то ППР определит необходимость провести проверку встраивания в файл дополнительного child-объекта.

Заключительный – 4-ый – этап определяется следующим АУ:

- добавить в текст файла новый child-объект, изменив его трансформацию.

Выполняем необходимое требование ККС:

- добавить в код функцию контроля записи  координат каждого из объектов файла.

На рис. 5 показано содержание визуализатора этого этапа.

 

рис. 5 Визуализатор 4 этапа разработки алгоритма

Наконец, сформируем ППР на случай продления ЖЦ ПС:

- провести аналогичную проверку на учет других графических и геометрических свойств.

Итак, мы завершили построение тестовой ПС чтения простого файла формата VRML. Подводя итоги, следует отметить следующее:

       используя ККП, удается связать при ответственном наблюдении графические результирующие данные визуализации 3D-объекта и исходные данные в формате VRML;

       имеется возможность провести проверку качества алгоритма при наблюдении результата на основе произвольных изменений исходных данных;

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

Литература

1.  Schrodinger E. - Science and the Human Temperament, 1935, 153 p.

2.  Маслоу А.Г. Мотивация и личность. - СПб.: Евразия, 1999, 479 с.

3.  Пригожин И.Р., Стенгерс И. Время, хаос и квант: К решению парадокса времени. - М.: Прогресс, 1999.

4.  Демарко Т., Листер Т. Человеческий фактор: успешные проекты и команды: пер. с англ. 2-е изд. М.: Символ плюс, 2009. 256 с.

5.  Пуанкаре А. О науке. М., 1983 – 560 с.

6.  Разумовский А.И. Соорганизация элементов информационного пространства проектирования алгоритмов и программных систем / Труды материалов  международной конференции CAD/CAM/PDM-2010, М.: ИПУ РАН, 2010.  с. 40-43

 

 

 

статистика