Создание программы-редактора схем

СОДЕРЖАНИЕ

 

           ВВЕДЕНИЕ

       Различные схемы являются неотъемлемой частью любой информационной системы или программного продукта. Существует множество схем создающийся по различным стандартам, в частности  стандарт ГОСТ 19.701 различает следующие схемы:

     1. Схема данных.

    2. Схема программы.

    3. Схема работы системы.

    4. Схема взаимодействия программ.

    5. Схема ресурсов системы.

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

    1. Создавать различные типы схем

      2. Редактировать схемы

      3. Распечатывать схемы

      4.Находить в схеме ошибки и неточности

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

       1.1 Microsoft Office Visio 2007

        Microsoft Office Visio 2007 — программа построения чертежей и диаграмм, помогающая специалистам сферы ИТ и сферы бизнеса визуализировать, исследовать и распространять сложную информацию[1]. Трудный для понимания текст и таблицы можно представить в виде простых и наглядных диаграмм Visio. Вместо статичных рисунков пользователи создают тесно связанные с данными диаграммы Visio, которые отображают данные, легко обновляются и позволяют заметно повысить производительность работы. Широкий спектр диаграмм Office Visio 2007 помогает лучше понять информацию об организационных системах, ресурсах и процессах всего предприятия, принимать решения на основе этой информации и обмениваться ею.

     Microsoft Office Visio 2007 обладает следующими преимуществами:

  1. Визуализация, исследование и публикация систем, ресурсов, процессов и связанных с ними данных[2]. Широкий выбор типов схем Office Visio 2007 обеспечивает эффективную визуализацию, исследование и публикацию процессов, ресурсов, систем и связанных с ними данных.
  2. Визуализация сложной информации путем вывода данных в схемах и выполнение соответствующих действий. Визуализация данных в диаграммах позволяет лучше понять суть данных и выполнять необходимые действия в зависимости от результатов анализа. Используя средство Microsoft Office Visio 2007 «Рисунки, связанные с данными», можно изображать данные в любой диаграмме в виде текста, элементов данных, значков и цветовых обозначений. 
  3. Быстрое создание диаграмм благодаря автоматическому подключению к фигурам Visio. В Office Visio 2007 имеется новая функция автоматического соединения, которая может автоматически подключать, размещать и выравнивать фигуры на схеме, облегчая работу пользователя. Достаточно перетащить фигуру на страницу документа и расположить ее над одной из синих стрелок, которые находятся над фигурой, уже размещенной на странице.
  4. Представление комплексных данных с использованием новых шаблонов и фигур. представления данных благодаря новым и усовершенствованным шаблонам и фигурам. Например, в выпуске Office Visio Профессиональный 2007 можно составлять схемы процессов ИТ-служб с помощью нового шаблона ITIL (Information Technology Infrastructure Library), создавать диаграммы на основе экономичной методологии и визуализировать более эффективные производственные процессы при помощи нового шаблона схемы потока создания стоимости.
  5. Повышение производительности благодаря интеграции схем с данными из разных источников. Источники комплексных визуальных, текстовых и числовых данных. Диаграммы, подключенные к данным, обеспечивают визуальный контекст для данных и дают полное представление о системе или процессе. Связь схем с данными из различных источников стала проще благодаря функции связывания данных в Office Visio Профессиональный 2007. Привязка данных к фигурам диаграммы выполняется с помощью нового мастера автоматического связывания. 
  6. Исследование данных для отслеживания тенденций, выявления проблем и пометки исключений с помощью сводных схем. Шаблон сводной схемы позволяет наглядно представлять и анализировать бизнес-данные в Office Visio Профессиональный 2007 в иерархической форме в виде групп и итогов данных. Имеется возможность детализировать комплексные данные, отображать информацию с помощью средства «Рисунки, связанные с данными», динамически создавать различные представления данных и лучше понимать сложную информацию. Сводные схемы можно вставлять в любую диаграмму Visio, чтобы получать доступ к показателям и отчетам, которые помогут отслеживать текущее состояние процесса или системы. Сводные схемы создаются путем подключения к различным источникам данных, таким как Microsoft Office SharePoint Server 2007, Microsoft Office Project 2007 и Microsoft Office Excel 2007. Возможность создания наглядных отчетов программ Office SharePoint Server 2007 и Office Project 2007 в форме сводной схемы повышает эффективность контроля ресурсов и проектов, управляемых с помощью этих программ. 
  7. Эффективное распространение информации с помощью профессионально оформленных схем. Для создания диаграмм Visio профессионального качества достаточно выбрать цвет или эффект (текст, заливку, тень, линии, формат соединителей) для всей диаграммы с использованием новой функции «Тема». На выбор в Visio предлагается ряд встроенных тем, но можно создавать и собственные темы. В Office Visio 2007 используются те же встроенные темы, что и в других программах системы Microsoft Office 2007.

        1.2 Редактор блок-схем

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

         Системные требования программы  очень скромные и она запускается  практически на любом компьютере  с любой версией Windows .

         Останавливаясь подробнее на  опциях редактора, следует отметить  наиболее важные из них:

     1. Использование шаблонов при создании блок-схем.

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

          3. Экспорт блок-схем в процедуры и функции языков программирования.

          4. Экспорт блок-схем в различные графические форматы.

     1.3 FCEditor

     Основанная  идея этой программы- изобразить блок-схему из блоков с произвольным по величине (имеется в виду текст) содержанием. В большинстве редакторов, если и имеется возможность автоматически менять размер компонентов, то все стрелки и переходы все равно надо расставлять вручную. В FCEditor это делается автоматически. Возможности FCEditor:

     1. импорт схемы из программного кода;

     2. автоматическое выравнивание блоков и стрелок;

     3. возможность изменения типа блоков;

     4. копирование и вставка блоков схемы;

     5. отдельная схема для каждой процедуры;

     6. возможность вставки разрывов страниц;

     7. экспорт схемы в графический файл;

     8. экспорт схемы в код.

       Таким образом, несмотря на небольшой вес  FCEditor является достаточно многофункциональной программой-редактором схем.

       1.4 Вывод по аналитическому обзору

       Рассмотрев существующие программы-редакторы схем, мы можем их обобщить, каждая из них:

      1. Может использовать шаблоны для создания схем.

            2. Может экспортировать созданную схему в различные форматы.

            3. Обладает автоматической «подгонкой» блоков и стрелок.

              4. Может создавать разные типы схем.

       Однако  у проанализированных программ-редакторов схем есть недостатки- они неприспособленны для российский графических стандартов. Также в FCEditor и «Редактор блок-схем» нет встроенного анализатора ошибок, который мог бы проверять смысловые неточности при создании схемы.

       Проектируемая нами программа должна обладать положительными свойствами, описанными выше, а также  должна иметь возможность строить  схемы по российским стандартам, например ГОСТ 19.701. В создаваемую программу должен быть включён анализатор смысловых ошибок.

 

      2 Выбор технических средств

      Программа написана на базе .NET Framework 3.5

      Технические средства выбираем исходя из системных  требований .NET Framework 3.5

      Операционные системы: Windows Server 2003, Windows Server 2008, Windows Vista, Windows XP

      Процессор: Pentium с тактовой частотой 400 MГц или  аналогичный процессор (рекомендуется Pentium с тактовой частотой 1ГГц или  аналогичный процессор)

      ОЗУ: не менее 96 МБ (рекомендуется 256 МБ)

      Жесткий диск: может потребоваться до 500 МБ доступного дискового пространства для установки .NET Framework 3.5 + 1мб дискового пространства для программы Редактор Схем.

      Клавиатура  и мышь:  стандартные

      Экран: разрешение 800 x 600, 256 цветов (рекомендуется разрешение 1024 x 768, 32-разрядный)  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

      3 Диаграммы

      3.1 Функциональная модель

      Методология функционального моделирования IDEF0 является достаточно простым инструментом, который позволяет разработчикам корпоративных информационных систем изучить сферу деятельности заказчика и решать задачи по повышению эффективности этой деятельности[3].

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

       Диаграммы декомпозиции используются для моделирования типовой ситуации, когда любое действие, операция, функция могут быть разбиты (декомпозированы) на более простые действия, операции, функции. Представляя функции графически, в виде блоков, можно как бы заглянуть внутрь блока и детально рассмотреть ее структуру и состав.

       В нашем случае имеется 2 уровня декомпозиции, в которых более подробно рассмотрен процесс создания блок-схемы, они  представлены ниже

       Уровень А-0 диаграммы IDEF0 представлен на рис. 3.1.

       

       Рисунок. 3.1 – Уровень А-0 IDEF0-диаграммы 

       Уровень А0 диаграммы IDEF0 представлен на рис. 3.2.

       

       Рисунок 3.2 – Уровень А0 IDEF0-диаграммы 

       Уровень А1 диаграммы IDEF0 представлен на рис. 3.3.

       

       Рисунок 3.3 – Уровень А1 IDEF0-диаграммы 
 
 

       Уровень А2 диаграммы IDEF0 представлен на рис. 3.4.

       

       Рисунок 3.4 – Уровень А2 IDEF0-диаграммы 

       Уровень А3 диаграммы IDEF0 представлен на рис. 3.5.

       

       Рисунок 3.5 – Уровень А3 IDEF0-диаграммы

       В данной системе диаграммы IDEF0 помогли выявить основные функции системы и нормативные документы с которыми нужно согласовываться при проектировании программы, в частности было выявлено что схемы должны соответствовать ГОСТам, и исходя из этого вывода все блоки программы были разработаны в соответствии с этими ГОСТами. Было выявлено что схема определенного типа может состоять только из некоторой совокупности блоков. Для этого блоки были сгруппированы по категориям.

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

       Функция  «Определить вид схемы» была реализована с помощью выпадающего списка на главное форме приложение под названием «Тип схемы» (рис. 3.6):

       Функция «Создать блок в схеме» была реализована  с помощью панели с различными блоками в левой части главной формы приложения (рис 3.6), а также с помощью некоторых выбираемых опций в дочерней форме «Свойства элемента» (рис 3.7), которые позволяют выбрать толщину линий блока, а также удалить блок.

       Функция «Создать связи между блоками» была реализована с помощью панели с различными видами связей-стрелок  в нижней левой части формы (рис 3.6), а также с помощью некоторых выбираемых опций в дочерней форме «Свойства элемента» (рис 3.7), которые позволяют сделать наконечники в начали и\или в конце стрелки, сделать стрелку пунктирной, а также удалить её.

       Функция «Отредактировать подписи к блокам и связям» была реализована с помощью полей с надписями на дочерних формах «Свойства элемента» (рис 3.7) которые появляются, если нажать правой кнопкой на нужный элемент.

       Функция «Запустить проверку ошибок»  была реализована с помощью кнопки «Проверить» в верхней части главной формы приложения, список найденных ошибок отображается в нижней части главной формы (рис 3.6).

       Рисунок 3.6 – Интерфейс программы 

       Рисунок 3.7 – Интерфейс программы

       3.2 Функционально-стоимостной анализ IDEF0-схемы

       Для расчета стоимости функции (СФ) необходимо наличие следующей информации:

       1. стоимость функции (СФ), – денежный эквивалент/время;

       2. стоимость механизма (СМ), – денежный эквивалент/время;

       3. время выполнения функции (ВФ) – время;

       4. периодичность выполнения функции (ПФ) – раз/время;

       5. стоимость управления (СУ) – денежный эквивалент/время;

       6. периодичность управления (ПУ) – раз/время.

       Расчет  производиться по следующей формуле 

       СФ = СМ * ВФ * ПФ + СУ * ПУ * ВФ.

       Управление  у нас является отдельным блоком. Его стоимость посчитаем отдельно. Поэтому расчет будем проводить по формуле СФ = СМ * ВФ * ПФ.

       0. Спроектировать схему программы:

       2210+9600+2880=14690 р в месяц

       1. Подготовить условия для создания схемы:

       240+1920+50= 2210 р в месяц

       11. Согласовать с заказчиком условия создания схемы:

       60 р/час*2часа* 2раз/месяц=240 р в месяц

       12. Найти программные средства для создания схемы:

                   120р/час*2 дня*1 раз/месяц=1920 р в месяц

       13. Определить вид схемы:

       50р/час*1 час*1 раз/месяц= 50 р в месяц

       2. Разработать структуру схемы:

                   120р/час*2 недели *1 раз/месяц= 9600 р в месяц

       3. Редактировать схему:

                   120р/час*1 день*3 раз/месяц=2880 р в месяц 

       Функционально-стоимостной  анализ (ФСА, Activity Based Costing, АВС) - это технология, позволяющая оценить реальную стоимость продукта или услуги безотносительно к организационной структуре компании.[3]

       По  существу, метод ФСА работает по следующему алгоритму:

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

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

       Следующим этапом проектирования системы является построение DFD диаграммы.

       3.3 Диаграмма потоков данных

       DFD позволяет уже на стадии функционального  моделирования определить базовые требования к данным[4]. На диаграмме потоков данных показываются работы, которые входят в состав описываемого бизнес-процесса, а также показываются входы и выходы каждой из работ. Данные входы и выходы представляют собой информационные, либо материальные потоки. При этом выходы одной работы могут являться входами для других. Наличие в диаграммах DFD элементов для описания источников, приемников и хранилищ данных позволяет более эффективно и наглядно описать процесс документооборота.

       В данной системе с помощью DFD диаграммы были выявлены связи между некоторыми классами. Было выявлено, что схема доступная для редактирования может проверяться на любом этапе ее проектирования. Таким образом, процедура проверки корректности схем была встроена в класс окна ответственного за редактирование схемы. Было выявлено, что схемы нужно сохранять для последующего редактирования или в файл .jpg. Таким образом, мы выяснили, что вся схема должна быть сохранена в формат, отрывая который можно восстановить схему полностью. На основе полученного требования было принято решение использовать сериализацию объектов, т.е. сохранения всех объектов схемы и их состояний на жесткий диск. Для этого был выбран класс XmlSerializer, который позволяет сохранять состояние объектов в формате XML и затем восстанавливать объекты из этого формата. Для сохранения в .jpg была использована стандартная процедура сохранения изображения в файл. 

     DFD диаграмма представлена на рис. 3.8.

       Рисунок 3.8 – Уровень А0 DFD-диаграммы. 

       Существует  так же альтернативный способ выявления  требуемой функциональности системы. Выявить функциональность системы можно с помощью диаграммы прецедентов.

       3.4 Диаграмма прецедентов

       Диаграммы прецедентов представляют собой  один из пяти типов диаграмм, применяемых  в UML для моделирования динамических аспектов системы[4]. Диаграммы прецедентов играют основную роль в моделировании поведения системы, подсистемы или класса. Каждая такая диаграмма показывает множество прецедентов, актеров и отношения между ними.

       Диаграммы прецедентов применяются для  моделирования вида системы с  точки зрения прецедентов (или вариантов  использования). Чаще всего это предполагает моделирование контекста системы, подсистемы или класса либо моделирование требований, предъявляемых к поведению указанных элементов.

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

       Диаграмма прецедентов  представлена на рис. 3.9.

       

       Рисунок 3.9 – Диаграмма прецедентов

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

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

       2.5 Диаграмма последовательностей

       Диаграмма взаимодействия отражает поток событий, происходящих в рамках варианта использования. В верхней части диаграммы показаны действующие лица и объекты, требуемые системе для выполнения варианта использования[5].Стрелки соответствуют сообщениям, передаваемым между действующим лицом и объектом или между объектами для выполнения требуемых функций, связь между ними изображена во времени, т.е. последовательно. Следует отметить, что на диаграмме взаимодействия показаны именно объекты, а не классы. Классы представляют собой типы объектов.

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

       Диаграмма последовательностей представлена на рис. 3.10.

Рисунок 3.10 – Диаграмма последовательностей 

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

       Классы, к которым принадлежат объекты, взаимодействующие в диаграмме  последовательностей можно более  детально рассмотреть в диаграмме  классов.

     3.6 Диаграмма классов

       Диаграмма классов отражает взаимодействие между  классами системы. Классы можно рассматривать как типы объектов[5]. Классы содержат данные и действия, влияющие на эти данные. На диаграмме изображают связи между классами, реализующие варианты использования. Каждый класс на диаграмме изображается в виде прямоугольника, в котором указывают имя класса, его атрибуты (некоторая информация, характеризующая класс) и операции (действия), выполняемые классом.

       Диаграмма классов приведена на рис. 3.11.

Рисунок 3.11 – Диаграмма классов 

       В данной диаграмме классов не отображены все блоки присутствующие в программе. Класс «Блок определенного типа» представляет любой блок существующий в программе, т.к. все блоки отличаются друг от друга только процедурой отрисовки а все остальные поля и методы они копируют у порождающего их класса «Шаблон блока».

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

       Ниже  приведены интерфейсы классов представленных на диаграмме классов:

       Интерфейс класса Конфигурация Схемы

            public class Configuration

            {

                public List<BlockTemplate> shapes;

                public List<ArrowTemplate> arrows; 

                   public void Save(string fileName);

         public void Open(string fileName);          

             public void Restore();

            }

       Интерфейс класса Шаблон Стрелки

       public abstract class ArrowTemplate

       {      

               public bool isChangeable = false;

               public bool isMovable = false;   

               public bool needEndCap = true;

               public bool needStartCap = false;

               public bool isDashed = false;

               public int thickness = 1;

               public BlockTemplate blockConnectedToFirstNode = null;

               public BlockTemplate blockConnectedToLastNode = null;

               public int slotNumConnectedToFirstNode = -1;

               public int slotNumConnectedToLastNode = -1;

               public ArrowNodePoint[] nodes;

             public Point[] points;

               protected Pen arrowPen;

               protected Pen selectedArrowPen;

               public ArrowTemplate(int thickness)

               public void findNearestBlockToConnectToNode(List<BlockTemplate> blocks, int nodeNum)

              public void deteteConnectionWithBlock()

               public abstract void moveNode(int dx, int dy, int nodeNumber);

               public abstract void arrangeMiddleNodes();

               public abstract bool pointInside(int x, int y);

               public abstract void draw(Graphics g);

               public void moveArrow(int dx, int dy)

               public void changeLineThickness(int thickness)

               public void changeStyle_DashedOrRegular(bool dashed)

               public void changeArrowEndCap(bool endCap, bool startCap)

               public bool arrowInsideRect(int x, int y, int width, int height)    

           }

       Интерфейс класса Шаблон Блока