Настольная база данных

Октябрь 19th, 2006

Алгоритм на каждый день

Наверное, так уж исторически сложилось, что слова “алгоритм” и “компьютер” стали чуть ли не расхожими синонимами: “мы говорим — алгоритм, подразумеваем — компьютер” и наоборот. Да и несолидно как-то человеку, уподобляясь примитивному микропроцессору, следовать жесткому набору инструкций, диссонансно как-то получается с общеизвестной

Диаграммы (SmartDraw) и схемы Варнье–Орра (Bliner)
доктриной “Человек — царь природы”. А между тем некоторые алгоритмы и фундаментальные алгоритмические правила весьма и весьма полезны в вещах совсем обыденных. Вот, к примеру, известная алгоритмическая закономерность — предварительное структурирование информации сокращает объем действий при ее поиске. В идеале достигается колоссальная экономия работы — в N/log(N) раз, где под N условно будем понимать количество некоторых “информационных единиц”, в контексте нашего обсуждения этими “единицами” могут быть как, например, короткие текстовые справки, так и многостраничные статьи. На человеческом языке ту же самую закономерность допустимо озвучить более “прозрачно” — затраты на структурирование информации при занесении ее в структурированный архив с лихвой окупаются высокой эффективностью поиска в архиве. Причем мы ни разу не упомянули слова “компьютер” — процедуры поиска не обязаны автоматизироваться вообще, что никак не скажется на эффективности архива в целом.


По сути, все это — элементарные соображения, добротно и надежно “отрабатывающие” на человечество столетиями. И, как обычно это происходит с очевидными вещами, соотношение между структурой и эффективностью поиска воплотилось в малочисленный и не очень популярный класс программ, для которого и адекватного русскоязычного названия не придумано, из-за чего автор вынужден воспользоваться транслитерацией “аутлайнеры” (в оригинале — outliners). Даже не раскрывая смысла этого термина, на фоне уже упомянутых фактов малой популярности и немногочисленности аутлайнеров стоит упомянуть о еще одном синониме-заблуждении. А именно, из-за того что в силу своей специфики аутлайнеры эффективны в качестве программ-органайзеров, их и считают программами-органайзерами, совершенно игнорируя суть упомянутой ранее алгоритмической закономерности. Впрочем, нет худа без добра — разработчики аутлайнеров столь увлечены “органайзерным заблуждением”, что в небольшом перечне программных реализаций аутлайнеров найти по-настоящему мощную программу, соответствующую амбициозности попытки навести порядок в инфо-Бедламе, особого труда не составляет. Но для разговора о конкретной программе время еще не наступило…

Итак, что же такое аутлайнеры? Иначе этот класс инструментов называют “free-form database” — “базы данных свободной формы”, т. е. свободные от форматных и позиционных ограничений. Звучит страшновато, но на деле придумать что-либо более простое и полезное трудно — по сути аутлайнер представляет собой аналог… механизма управления множеством иерархических файловых систем, каждая из которых хранится в одном физическом файле. К этому добавим “нечувствительность” хорошего аутлайнера к форматам упрятанных в него информационных фрагментов (это могут быть HTML- и rtf-фрагменты, изображения и т. д.) и свойство “нераздувания файла”, т. е. компактности представления (на самом деле такое резкое “приземление” от общих идей к жестким требованиям реальности не прихоть — некоторые реализации аутлайнеров, например, хранят одну иерархию в файле rtf-формата, характеризующемся крайне неэффективным представлением бинарных данных, что одновременно и “раздувает” файл, и приводит к дикой “прожорливости” программы, сводя все ее достоинства к нулю).

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

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

Лучше один раз увидеть…

“Структуры внутри структуры” — диаграммы и схемы Варнье–Орра в аутлайнере MyBase. Тройное структурирование позволяет исключительно эффективно представлять и хранить проектную информацию

Структуры — только теперь не структурирование, как процесс, а собственно описаний структур. Можно заполнить пяток страниц убористым текстом в стиле “отдел А взаимодействует с отделом Б, ответственный за взаимодействие — сотрудник В…” или “выход 5 блока А соединен со входом блока Б…”, но в данном случае куда более удобоваримой является отработанная форма представления — диаграммы. В контексте статьи такое нечеткое, но также очевидное соображение означает, что для повышения ценности сопровождающей проектной информации хороший редактор диаграмм (РД) просто необходим. Как и затраты времени на создание самих диаграмм, заменяющих невнятную многословность описаний. Характеристику “хороший” мы уточним чуть позже, а пока ограничимся более общими соображениями о важности роли программы такого класса.

Как и аутлайнеры, РД представлены далеко не таким обширным перечнем, как, например, текстовые редакторы. Впрочем, в отличие от аутлайнеров здесь есть свои знаменитости, которые у всех на слуху, — та же Visio. История этой программы подтверждает ее важность (корпорация Microsoft не славится склонностью к приобретению неудачных или несущественных разработок), а вот характер популярности показывает, что и здесь не обошлось без синонимов-заблуждений. РД, удачно подходящие для бизнес-иллюстрирования, похоже, начинают ассоциироваться исключительно с этой, без сомнения нужной и важной, но далеко не единственной областью их применения. Частичной “реабилитации” РД добились благодаря росту интереса среди разработчиков к графической нотации UML, но до заслуженной популярности этому классу программ все же далеко.

Говоря о РД, нельзя не упомянуть программы автоматического формирования диаграмм (ПАФД), относящиеся не столько к средствам порождения чего-либо нового, сколько к инструментам реинжиниринга. Несмотря на узкую специфику применения, ПАФД очень популярны в среде программистов, решающих задачи сопровождения масштабного программного кода, — именно на таких задачах роль диаграмм ощутима за счет обеспечиваемой ими возможности визуально “ухватить” алгоритмическую идею, заложенную в код.

Схемы Варнье–Орра

В 1977 г. будущий основатель и “однофамилец” известной сегодня исследовательско-консалтинговой организации KOI (Ken Orr Institute) Кен Орр сформулировал следующее краткое определение и метода “проектирования структурированных систем” (Structured Systems Design — SSD), и требований, приводящих потенциальный объект проектирования в соответствие со спецификой метода:

“SSD — это метод логического анализа и проектирования; он может быть применен для любого вида (класса) систем с использованием любых языковых средств описания, компьютеризированного или вообще без применения компьютеров… что-либо считается структурированным тогда и только тогда, когда:

1) это “нечто” обладает иерархической организацией;

2) отношения между любыми функциональными частями этого “нечто” описываются базовыми логическими формами — последовательностью, чередованием или повторением”.

Материализация SSD сегодня более известна под названием схем (структурных диаграмм) Варнье–Орра (Warnier–Orr), но не стоит обманываться сравнительной формой использованного здесь эпитета “более” — на самом деле, похоже, что методы SSD далеки от популярности. И, надо сказать, незаслуженно, несмотря на наличие в названии “немодного” прилагательного “структурированный”. Немодного потому, что мы живем в дни полной и окончательной победы “объектного” над “структурным”. Впрочем, достоинств SSD никто еще не отменял…

Древнее определение Орра прекрасно соответствует весьма специфическому классу объектов проектирования — проектным процессам. Действительно, именно эти процессы состоят из последовательности чередующихся и повторяющихся действий. Действия эти, в свою очередь, характеризуются затратами (весьма нескромными в масштабных проектах) и временем. Поэтому в серьезных проектах работа всегда начинается с проектирования именно… проектного процесса (да простит читатель автору такую ужасную тавтологию, которой избежать принципиально невозможно). И роль схем Варнье–Орра в данной области идеально соответствует описанной ранее роли аутлайнеров — это тоже “алгоритмы для целевой машины — человека”.

Внешне весьма схожие с блок-схемами, схемы Варнье–Орра на деле являются псевдокодом, в графической форме представляющим некий алгоритм. Понятийный аппарат, на основе которого строится описание, мы уже приводили — иерархия, последовательность, повторение и чередование. Для каждого из этих понятий предусмотрена элементарная форма графического представления, на данном этапе для нас несущественная. Мы пока ограничимся сведениями о том, что в современных программных реализациях SSD схемы Варнье–Орра обладают гибридными способностями, объединяющими… электронные таблицы и механизмы иерархического проектирования (планирования).

Конкретизация

Этот раздел придется начинать с малоприятного известия — к сожалению, ни одна из описываемых далее программ не является бесплатной. Найти им адекватную замену в мире freeware также практически невозможно — в этом автор убедился лично. Впрочем, такую пилюлю можно хоть немного подсластить — программы недороги и, в основном, распространяются на условиях shareware.

Аутлайнер, удостоенный чести быть представленным нашему читателю, автором выбирался тщательно. В результате из небольшого списка претендентов была отобрана программа MyBase компании с труднопроизносимым названием WJJSOFT. MyBase обладает фактически всеми качествами, которые можно востребовать от хорошего аутлайнера, — “прозрачным” интерфейсом, практически не требующим усилий для изучения, мощным встроенным rtf-редактором, контейнерным механизмом хранения бинарных данных (аналог attachment в клиентских программах электронной почты), исключающим “раздувание” файлов — информационных хранилищ, и наконец, самым главным технологическим нюансом, о чем было обещано рассказать в начале статьи. А именно, отличной интеграцией с общесистемными механизмами, в первую очередь — с OLE. Этот “нюанс”, по сути, означает, что MyBase играет роль полноценного хранилища, позволяющего не сохранять в отдельных файлах рабочие материалы, созданные другими программами.

Два следующих элемента, о которых шла речь ранее, — редакторы диаграмм. Они представлены выбранными автором программами SmartDraw и Source- Code2Flowchart, относящимися к двум кратко определенным ранее классам РД — для проектирования и реинжиниринга. Обе программы одновременно недороги (около $60, предусмотрены различные варианты лицензирования, в том числе и корпоративные) и исключительно хороши для своей цены. SmartDraw позволяет создавать диаграммы самых разных классов (включая и специализированные, для проектирования ПО) и функционально фактически ничем не уступает своему именитому конкуренту — Visio. SourceCode2Flowchart — продукт в своем роде уникальный, поддерживающий автоматической генерацией диаграммы, отображающей алгоритм, процедуры документирования и реинжиниринга готовых программ, разработанных на языках С/С++/Pascal/Delphi/Java/Perl/PHP.

И наконец, последний элемент инфраструктуры — программа Bliner, сочетающая исключительно полноценную реализацию схем Варнье–Орра с возможностями электронных таблиц. Она также из ценового диапазона “до $100″ и, как и результаты предыдущей “селекции”, органично вписывается в общесистемные возможности ОС Windows.

Автор совершенно умышленно отклонял возникавшую неоднократно мысль “разжевать” каждую программу по отдельности, несмотря на то, что благодаря уникальности соотношения цена/качество все они того заслуживают. Сделано это из-за того, что все программы совершенно элементарны в освоении. Что получается в результате построения инструментального “гибрида” с весьма приемлемой стоимостью (порядка $250), лучше слов демонстрируют снимки экранов. А вот соотнести стоимость такого “решения” и важность получаемого с его помощью результата — улучшения качества сопровождающей проектной информации (косвенно — и проектной документации) — автор оставляет читателю.

Андрей Зубинский

Категория: Развитие мышления | Автор: other_source |

Оставить комментарий