методика, разработанная,
чтобы преодолеть разрыв между оператором функций модели и когнитивного
анализа задач. Целью является выявление узлов в модели функция оператора,
которые высоко сложные когнитивные задачи, которые должны осуществляться
более глубоко с CTA. Приложение, разработанное Klein
Associates and
Aptima
<#"607133.files/image005.gif">
Рис. 4. Вопросно-ответная модель данных.
Ко всем названным возможностям можно (и целесообразно) относиться с
позиций традиционного программирования. Такой подход заложен в развитие
комплекса NetWIQA, предполагающее разработку новых плагинов (расширений) с
использованием вопросно-ответного типа данных.
Проясним использование вопросно-ответной модели данных в её простейшей
версии, приведённой на рис. 4. и представляющей собой именованный блок В
совокупности пар вопросов и ответов {Qn, An}, в которой за каждым элементом
пары стоит запись с отмеченными выше характеристиками.модель данных позволяет
(визуально) моделировать объявления переменных в том плане, в котором
объявления используется в языках программирования. Образцы форм визуализации
приведены на рис. 5.
Рис. 5. Примеры визуализации QA-данных
Рассмотрим ещё одну интерпретацию совокупности пар данных, для которой
вопросно-ответная интерпретация может рассматриваться как частный случай.
Первую составляющую каждой пары можно рассматривать как «условие», а вторую
составляющую - как «следствие». В такой версии интерпретации каждая пара
записей модели, представленной на рис. 1.4.1, кодирует импликацию: Если «условиеi»,
то «следствиеk» причём, с богатой атрибутикой, как для
«условия», так и для «следствия».
В искусственном интеллекте импликация, связывающая «условие» и
«следствие», получила название «продукция» и используется для моделирования
знаний. Продукционная модель знаний считается базовой формой для представления
правил (закономерностей) в экспертных системах. В продукционную модель в явном
виде встроена логика, что позволяет моделировать рассуждения (а значит и выводы
на базе продукционных закономерностей), решая задачи в рамках экспертных
систем.
Отметим, что роль «следствий» в продукциях, составляющих базу знаний,
выполняют либо декларативные конструкты (например, такие как «советы» или
«рекомендации»), либо императивные конструкты (например, такие как «команды»
или «реагирование» в разных формах).
К понятию «продукция» по содержанию и применениям близко понятие
«прецедента», определяющее типовое реагирование в определённых условиях. К
месту заметить, что «продукции» связывают с моделированием знаний, в то время
как с «прецедентами» связывают представления единиц опыта в формах,
обеспечивающих их повторное использование.
Ещё одну версию интерпретации QA-данных переведём на уровень «абстракции
данных», в их следующих версиях:
«вопрос» -> "имя переменной для простого типа данных,
используемого в традиционном программировании" и "ответ" -»
"значение этой переменной";
«определённая композиция вопросов» -> « данные составного типа
(например, данные типа массив, запись, множество, массив записей или таблица,
стек, очередь или другой составной тип данных)» и «соответствующая композиция
ответов" -> "текущее значение данных этого типа».
Представленные версии интерпретации демонстрируют, что QA-модель данных
может быть использована для эмуляции данных многих известных типов,
используемых в традиционном программировании. А значит, существующие средства
NetWIQA разумно дополнить специализированными средствами, обеспечивающими
разработку приложений, в основе которых лежит программирование с использованием
QA-данных. Следует отметить, что автоматическое именование вопросов и ответов,
порождающее их уникальные имена, вводит их естественную адресацию, позволяющую
обращаться к QA-данным и их составным частям по именам.
В следующей таблице укажем какие функции из представленного выше
функционального базиса отсутствуют в системе WIQA.
Таблица 2.
№ п/п
|
Функции
|
WIQA
|
Базис
|
1
|
Защита
|
+
|
+
|
2
|
Восстановление/резервное
копирование
|
-
|
+
|
3
|
Индексы
|
+
|
+
|
4
|
Представления (Views)
|
+
|
+
|
5
|
Обеспечение целостности
|
-
|
+
|
6
|
Параллелизм
|
+
|
+
|
7
|
Транзакции/Журналы
|
+/-
|
+
|
8
|
Репликации
|
-
|
+
|
9
|
Масштабирование
|
-
|
10
|
Выборка и модификация
данных
|
+
|
+
|
2.2 Цель
проекта и назначение программного средства
Целью данного проекта является создание библиотеки
методов когнитивного анализа задач.
.2.1
Условия эксплуатации
Среда рассчитана на круглосуточную работу с поддержкой
сетевых подключений к общей базе данных.
Погодные условия в помещении, где работает система,
должны удовлетворять требованиям, предъявляемым аппаратурой, которая участвует
в процессе функционирования программной среды.
Загрузку программы осуществлять согласно принципам
загрузки подсистем-расширений среды NetWIQA.
Закрытие программы осуществляется только через
соответствующие пункты меню, панели инструментов, заголовка окна или иными
способами, не противоречащими принципам работы операционной системы. Для
гарантированной работы программной среды на одно рабочее место требуется один
персональный компьютер, один оператор, который отвечает нижеследующим
требованиям:
· обладание навыками работы в среде
NetWIQA, понимание её внутренней структуры и умение обращаться с плагинами,
которые составляют значительную часть функциональности среды;
· понимание системы прав NetWIQA и
умение их настраивать;
2.2.2
Требования к качеству
Требования к качеству программного изделия включают в
себя следующие параметры: надёжность, практичность, эффективность,
сопровождаемость, мобильность.
Надёжность. Набор атрибутов, относящихся к способности
программного обеспечения сохранять свой уровень качества функционирования при
установленных условиях за установленный период времени.
Среда рассчитана на хранение данных в общей базе. Во
время одновременной работы нескольких пользователей с базой данных необходимо
обеспечить синхронизацию операций. Необходимо разработать механизм отслеживания
устаревших идентификаторов, операции над которыми невозможны и уведомления
пользователя об этом.
При обращении к данным и выполнении операций над ними
используются системные функции среды NetWIQA. Возможность выполнения операции
зависит от наличия или отсутствия прав у пользователя, от имени которого
совершается операция. При создании первоначальной структуры подзадачи базы
данных необходимо наделить всех пользователей, входящих в группу, правами на
запись в рамках подзадачи. Следует предоставить пользователям возможность
запуска средства, позволяющего редактировать эти права и на этапе после
создания подзадачи.
Практичность. Набор атрибутов, относящихся к объёму
работ, требуемых для использования и индивидуальной оценки такого использования
определённым или предполагаемым кругом пользователей.
• Обеспечить вызов функций и окон приложения из
множества мест, как то: из главного меню, из панели инструментов окна, из
контекстного меню элемента интерфейса;
• Свести к минимуму время поиска необходимой
информации и навигации по программе.
Эффективность. Набор атрибутов, относящихся к
соотношению между уровнем качества функционирования программного обеспечения и
объёмом используемых ресурсов при установленных условиях.
• Программная среда должна иметь полную сетевую
поддержку пользователей при физическом соединении компьютеров на скорости менее
10 мБит/сек;
• Программная среда должна полностью функционировать
на компьютерах, начиная от пятого поколения (x586 и выше).
Сопровождаемость. Набор атрибутов, относящихся к
объёму работ, требуемых для проведения конкретных модификаций.
Вносимые в работу программы изменения и исправления
должны обеспечивать совместимость старых версий программы с новыми. Должна
обеспечиваться совместимость на уровне внутренней структуры подзадач, то есть
созданная в одной версии задача должна открываться и другими версиями.
Мобильность. Набор атрибутов, относящихся к
способности программного обеспечения быть перенесённым из одного окружения в
другое.
• Обеспечить независимость приложения от аппаратных
средств и посторонних программных средств;
• Обеспечить функционирование подсистемы совместно с
любыми другими подсистемами, установленными в инструментально-технологической
среде NetWIQA.
2.2.3
Требования к составу и параметрам аппаратно-программных средств
Проект должен быть реализован на языке программирования C#, а также в встроенном псевдокодовом
языке в вопросно-ответной среде WIQA.Среда
разработки -Visual Studio 2010. Допускается использование библиотек, функций,
компонентов и алгоритмов других разработчиков.
Программа должна быть реализована в качестве отдельного
плагина(библиотеки). Взаимодействие с серверной частью NetWIQA осуществляется с
помощью внутренних функций среды. База данных располагается на стороне сервера.
На локальном компьютере могут храниться какие-либо данные, нужные для сохранения
настроек программы и иной вспомогательной информации
Гарантированная работа среды рассчитана на основе среды NetWIQA версии не
ниже 3.3. Для установки вопросно-ответного процессора NetWIQA требуется наличие
операционной системы Windows 2000/NT/XP/2003 и примерно 75 Мб свободного
дискового пространства (при полной установке системы). Кроме того, необходимо
выделить дополнительное дисковое пространство на компьютере с серверной частью
системы, необходимое для записи данных в базу данных и складирования файлов с
дополнительной информацией о единицах QA-протокола и других элементах
вопросно-ответной базы данных. Для работы с подсистемами тестирования и
предикации на компьютере должна быть установлена BDE (Borland Database Engine).
Для работы с подсистемой документирования и экспорта данных вопросно-ответного
протокола в doc-формат на компьютере с клиентским местом должен быть установлен
Microsoft Word.
Минимальная диагональ монитора - 15’’ с рабочим разрешением 800x600
пикселей при частоте вертикальной развёртки 85 Гц.
Рекомендованная диагональ монитора - 17’’ с рабочим разрешением от
1024x768 пикселей и выше при частоте вертикальной развёртки от 100 Гц.
2.2.4
Требования к информационной и программной совместимости
Хранение данных осуществляется централизованно, в
рамках базы данных, хранящейся на сервере. Данные представлены в виде обычных
вопросно-ответных единиц NetWIQA. Корневой каталог, каталоги пользователей и
иные каталоги программы представляют собой единицы с типом «задача» в терминах
объектов базы данных NetWIQA. Структура расположения вопросно-ответных единиц и
задач относительно друг друга должна соответствовать принятым стандартам среды.
Использование атрибутов вопросно-ответных единиц и задач должно совпадать с их
первоначальным назначением, с целью обеспечения возможности производить
операции с данными средствами любых других подсистем среды NetWIQA.
2.2.5
Требования к программной документации
В документации к разработанной системе должны быть
отражены этапы:
· описание процесса установки
подсистемы в среде NetWIQA;
· описание процесса первоначального
конфигурирования подсистемы;
· процесс работы подсистемы;
· удаление подсистемы из среды NetWIQA;
· дополнительные возможности
подсистемы.
Допускается расширение указанного списка, а также
создание своих глав и слияние нескольких пунктов в один.
2.2.6
Требования к уровню реализации
Разработанная подсистема должна обеспечить ввод,
изменение, удаление любой рабочей информации, при этом соответствуя требованиям
информационно и программной совместимости.
Реализовать поддержку одновременной работы нескольких
операторов с учётом требований к надёжности проекта.
Интерфейс реализован на русском языке.
Для стандартных операций работы с текстом (вырезать,
копировать, вставить, выделить всё, удалить) обеспечить их выполнение по
нажатию горячих клавиш. Соответствие комбинаций клавиш операциям производить в
соответствии с традиционными комбинациями (Ctrl+C, Ctrl+V, и т. п.).
2.3
Обобщённая постановка задачи
Целью данного дипломного проекта является сбор информации по метолам
когнитивного анализа, выделение необходимых методов для реализации их в
библиотеке методов. Дописание нереализованных функций в системе WIQA.
2.4
Расширенная постановка задачи
.4.1 Цель
проекта и назначение программного средства
Целью данного проекта является доработка
вопросно-ответной системы NetWIQA,
создание библиотеки методов когнитивного анализа решения задач.
2.4.2
Назначение и область применения
Программное средство, описанное в дипломном проекте предназначено, в
основном, для разработчиков, взаимодействующих между собой в вопросно-ответном
процессоре NetWIQA. Пользователь данного программного средства должен обладать
навыками работы в вопросно-ответной среде NetWIQA и входящими в её состав
плагинами и другими вспомогательными приложениями. Программный продукт
применяется когда требуется выполнит задачу по когнитивному анализу.
2.4.3
Требования к аппаратно-программным средствам
Проект должен быть реализован на языке высокого уровня C# и на языке псевдокодирования,
реализованного в вопросно-ответной среде WIQA.
Требования к аппаратной части должны соответствовать требованиям
вопросно-ответного процессора NetWIQA. Для установки вопросно-ответного
процессора NetWIQA требуется наличие операционной системы Windows
2000/NT/XP/2003 и примерно 75 Мб свободного дискового пространства (при полной
установке системы). Кроме того, необходимо выделить дополнительное дисковое
пространство на компьютере с серверной частью системы, необходимое для записи
данных в базу данных и складирования файлов с дополнительной информацией о
единицах QA-протокола и других элементах вопросно-ответной базы данных. Для
работы с подсистемами тестирования и предикации на компьютере должна быть
установлена BDE (Borland Database Engine). Для работы с подсистемой
документирования и экспорта данных вопросно-ответного протокола в doc-формат на
компьютере с клиентским местом должен быть установлен Microsoft Word. Для
нормальной работы с клиентским рабочим местом монитор должен поддерживать
разрешение не менее чем 1024x768 пикселей.
Для установки системы необходимо запустить инсталляционный файл
NetWIQA.exe, при этом набор прав пользователя в операционной системе должен
включать:
§ возможность записи в каталог, в который будет устанавливаться
система;
§ возможность записи в системный каталог операционной системы;
§ возможность записи в системный реестр;
§ возможность регистрации COM-серверов.
2.4.4
Условия эксплуатации
Программа рассчитана на эксплуатацию совместно с вопросно-ответным
процессором NetWIQA. Среда рассчитана на эпизодическую работу, осуществляемую
время от времени, хотя ограничений на круглосуточную работу не имеет. Загрузка
программы может осуществляться только в рамках клиентского приложения NetWIQA,
так как является его подсистемой.
Для правильной работы программа осуществляет чтение информации из базы
вопросно-ответной среды, и может повторно считывать информацию, а также
модифицировать её во время своей работы. Выход из программы может быть совершён
как из пункта меню, так и через стандартную кнопку закрытия в заголовке главного
окна.
Для гарантированной работы программной среды на одно рабочее место
требуется один персональный компьютер, один оператор с навыками:
§ знание основ и принципов работы персонального компьютера;
§ знание основ и принципов функционирования вопросно-ответной среды
NetWIQA;
§ пользователь операционной системы Windows 98/ME/2000/XP.
Количество пользователей в одной рабочей группе программы ограничено
количеством 30 человек. Это необходимо для оптимального отображения связей
между пользователями в наглядном виде, при котором графические элементы не
накладываются и не мешают друг другу.
Работа группы пользователей свыше 30 человек возможна, но режим
визуального отображения тогда не сможет отразить всю группу в полной мере.
.4.5
Требования к надёжности программного средства
Для нормальной работы программного средства необходимо, что бы оно
отвечало следующим требованиям:
§ программа не должна во время работы порождать конфликты с иными
плагинами, работающими параллельно с базой вопросно-ответной среды NetWIQA;
§ установка программы и её начальное конфигурирование должно быть
несложным, а сам процесс установки должен быть документирован;
§ записи, производимые программой в базу не должны приводить к её
повреждению, и не должны повреждать или удалять данные, которые используются в
работе другими плагинами NetWIQA;
2.4.6
Программная документация
Данное программное средство должно иметь документацию, содержащую
следующую информацию:
§ описание назначения и возможностей программы;
§ описание минимальных требований к аппаратным средствам
компьютера;
§ руководство по установке программы;
§ описание всех инструментов и возможностей программы;
§ руководство по использованию программы.
В программной документации наряду с текстовой информацией, должны
присутствовать иллюстрации, которые будут служить дополнительными поясняющими
элементами.
В случаях, когда для совершения какой-либо операции требуется совершение
чётко сформулированной последовательности действий, эта последовательность
должна быть описана в инструкции по использованию программы.
3.
Проектирование и реализация
3.1
Обоснование выбора технологии реализации
Для программной реализации задачи проекта отдано предпочтение среде
разработки Visual Studio2010, а также встроенный язык псевдокода в вопросно-ответной
среде WIQA. Выбор среды разработки Visual Studio2010 был неслучаен. Дело в том, что реализация
подсистемы для инструментально-технологической среды WIQAможет быть осуществлена только с использованием С#.
Это связано с тем, что сама среда скомпилирована именно C# компилятором, и все её расширения
должны быть скомпилированы точно также. Реализация же подсистемы на ином языке
программирования, нежели С#, значительно затруднена из-за особенностей
реализации доступа подсистемы к параметрам среды во время работы программы.
Последнее время С и C++ являются наиболее используемыми языками для
разработки коммерческих и бизнес приложений. Эти языки устраивают многих
разработчиков, но в действительности не обеспечивают должной продуктивности
разработки. К примеру, процесс написания приложения на C++ зачастую занимает
значительно больше времени, чем разработка эквивалентного приложения, скажем,
на VisualBasic. Сейчас существуют языки,
увеличивающие продуктивность разработки за счет потери в гибкости, которая так привычна
и необходима программистам на C/C++. Подобные решения являются весьма
неудобными для разработчиков и зачастую предлагают значительно меньшие
возможности. Эти языки также не ориентированы на взаимодействие с появляющимися
сегодня системами и очень часто они не соответствуют существующей практике
программирования для Web.
Многие разработчики хотели бы использовать современный язык, который позволял
бы писать, читать и сопровождать программы с простотой VisualBasicи в то же время давал мощь и гибкость
C++, обеспечивал доступ ко всем функциональным возможностям системы,
взаимодействовал бы с существующими программами и легко работал с возникающими Webстандартами.
Учитывая все подобные пожелания, Microsoft разработала новый язык - С#. В
него входит много полезных особенностей - простота, объектная
ориентированность, типовая защищенность, "сборка мусора", поддержка
совместимости версий и многое другое. Данные возможности позволяют быстро и
легко разрабатывать приложения, особенно СОМ+ приложения и Webсервисы. При создании С#, его авторы
учитывали достижения многих других языков программирования: C++, С, Java, SmallTalk, Delphi, VisualBasicи т.д. Надо заметить что по причине того, что C# разрабатывался с чистого листа, у его авторов была
возможность (которой они явно воспользовались), оставить в прошлом все
неудобные и неприятные особенности (существующие, как правило, для обратной
совместимости), любого из предшествующих ему языков. В результате получился
действительно простой, удобный и современный язык, по мощности не уступающий
C++, но существенно повышающий продуктивность разработок.
Дополнительная реализация в языке псевдокодирования было выбрано по
причине того, что он позволяет писать программы, с одной стороны, доступные для
понимания человеком, а с другой стороны - пригодные для интерпретации
программой. Таким образом, эти программы предназначены как для
интеллектуального процессора человека, так и для компьютера. Интерпретатор
псевдокодовых вопросно-ответных программ позволяет осуществлять интерпретацию и
пошаговое выполнение таких программ.
3.2
Реализация метода когнитивного анализа PARI
Метод когнитивного подхода к анализу задачи, названный методом PARI (Предусловие - Действие - Результат
- Интерпретация), смешивает процессы рассуждения над поставленной задачей со
структурой диагностирования возможных вариантов разрешения проблемы, то есть
представляет проблему, формулирует диагностический план, выдвигает гипотезу,
проверяет, интерпретирует результаты, выдвигает гипотезу и проверяет снова.
Структура элемента PARI - анализа
Для создания структуры элемента был разработан класс Pari_Variant
Рис. 6.
Он содержит следующие атрибуты:
SomeAction - описание действия для решения проблемы
SomePrecursor - описание предпосылок к действию
SomeResult - описание результата действия
SomeInterpretation - интерпретация результата
Theme - детальное описание проблемы
Атрибуты объединяются в единое целое при помощи списка List<string>methods
Для работы с ними были написаны методы:
publicstringGetMethod(intindex) -
получение определенного атрибута списка по индексу.Serialize() - получает
строчку в удобном для дальнейшей обработке виде. Она объединяет атрибуты
объекта класса, разделенные определенными символами.
publicvoidSetMethod(intindex, stringmethod)- задает значение определенному
атрибуту списка.
Так же было создано несколько конструкторов класса Pari_VariantPari_Variant() - для создания нового объекта класса
publicPari_Variant(stringserialized) - для создания нового объекта
класса, и задания его элементов из сериализованной строки.
public Pari_Variant(string theme, string action, string
precursor, string result, string interpretation) - для создания нового объекта и задания его элементов
Форма ввода элемента PARI - анализа
Для ввода элемента и обработки результата была разработана
форма Pari_AnalysisForm
Рис7.
В ней создается объект класса Pari_Variant
Класс Pari_Analysis
Этот класс создан для обработки всех вариантов решения проблемы метода PARI
Рис. 8.
Он содержит:
Variants - список вариантов типа PariVariant
Problem - описание проблемы
Были реализованы следующие методы:
publicvoid AddVariant(Pari_Variant variant) - добавление нового
вариантаRemoveVariant(int index),
publicvoid RemoveVariant(string theme) - удаление варианта по индексу или темеReplaceVariant(int index, string
theme, string action, string precursor, string result, string interpretation) -
перемещение варианта
publicstring Serialize() - получает строчку в удобном для дальнейшей
обработке виде. Она объединяет атрибуты объекта класса, разделенные
определенными символами.
Конструкторы класса Pari_Analysis
publicPari_Analysis () - для создания нового объекта
класса
publicPari_Analysis(stringconstructionString) - для создания нового объекта
класса, и задания его элементов из сериализованной строки.
Основная форма PARI - анализа
Рис. 9.
Форма нужна для обработки объектов класса Pari_Analysis
Для работы с вариантами был разработан элемент Pari_VariantUserControl
Рис. 10.
Он необходим для отображения информации о варианте на форме. Для
обработки событий добавления, редактирования и удаления были написаны
соответствующие процедуры.
3.2.1
Реализация метода когнитивного анализа PARI на псевдокодовом языке
Z 1 PARI-Анализ
Q 1.1 &branch_qaid&
Q 1.1.1 0
Q 1.2 &history_branch_qaid&
Q 1.2.1 0
Q 1.3 PROCEDURE &PARI_CreateStructure&
Q 1.3.1 PARI dummy
Q 1.3.2 &t_int& :=
QA_GetQAId(¤t_project&, "PARI dummy")
Q 1.3.3 &t_int& :=
QA_GetParent(¤t_project&, &t_int&)
Q 1.3.4 &branch_qaid& :=
QA_GetParent(¤t_project&, &t_int&)
Q 1.3.5 &history_branch_qaid& :=
QA_CreateNode(¤t_project&, &branch_qaid&, 3,
"")
Q 1.3.6 ENDPROC &PARI_CreateStructure&
Q 1.4 PROCEDURE &PARI_main&
Q 1.4.1 &t_str& :=
QA_GetQAText(&history_branch_qaid&)
Q 1.4.2 SETHISTORYENTRIES(&t_str&)
Q 1.4.3 CALL &ShowHistory&
Q 1.4.4 IF &LastHistoryFormResult& == -1 THEN RETURN
Q 1.4.5 IF &LastHistoryFormResult& == 0 THEN
¤t_action_qaid& := QA_CreateNode(¤t_project&,
&history_branch_qaid&, 3, "") ELSE
¤t_action_qaid& := &LastHistoryFormResult&
Q 1.4.6 &t_str& :=
QA_GetQAText(¤t_action_qaid&)
Q 1.4.7 PARI_DESERIALIZE(&t_str&)
Q 1.4.8 &t_int& := PARI_SHOWMAINFORM()
Q 1.4.9 &t_str& := PARI_GETSERIALIZED()
Q 1.4.10 IF &t_int& == 0 THEN
QA_UpdateNode(¤t_project&, ¤t_action_qaid&,
&t_str&)
Q 1.4.11 IF &t_int& != 0 RETURN
Q 1.4.12 IF &LastHistoryFormResult& == 0 THEN
QA_UpdateNode(¤t_project&, &history_branch_qaid&,
ADDTOHISTORY(QA_GetQAText(&history_branch_qaid&), &t_str&,
¤t_action_qaid&))
Q 1.4.13 IF &LastHistoryFormResult& != 0 THEN
QA_UpdateNode(¤t_project&, &history_branch_qaid&,
TRYUPDATETOPICINHISTORY(QA_GetQAText(&history_branch_qaid&),
&t_str&, ¤t_action_qaid&))
Q 1.4.14 FINISH
Q 1.5 &t_int&
Q 1.5.1 0
Q 1.6 &t_str&
A 1.6.1 ""
Q 1.7 &LastHistoryFormResult&
Q 1.7.1 -1
Q 1.8 PROCEDURE &ShowHistory&
Q 1.8.1 &LastHistoryFormResult& := SHOWHISTORYFORM()
Q 1.8.2 LABEL &SH_deletedLoopStart&
Q 1.8.3 &t_int& := GETDELETEDHISTORYENTRIESCOUNT()
Q 1.8.4 IF &t_int& == 0 THEN GOTO
&SH_deletedEnd&
Q 1.8.5 &t_int& := POPONEDELETEDHISTORYENTRY()
Q 1.8.6 QA_DeleteNode(¤t_project&,
&t_int&)
Q 1.8.7 GOTO &SH_deletedLoopStart&
Q 1.8.8 LABEL &SH_deletedEnd&
Q 1.8.9 ENDPROC &ShowHistory&
Q 1.8.10 QA_UpdateNode(¤t_project&,
&history_branch_qaid&, GETHISTORYENTRIES())
Q 1.9 &LastHistoryFormResult&
Q 1.9.1 0
Q 1.10 ¤t_action_qaid&
Q 1.10.1 0&PARI_CreateStructure& - создает структуру анализа&PARI_main& - запускает форму PARI - анализа&ShowHistory& -
запускает форму создания, редактирования и удаления PARI анализа.
3.3
Реализация метода когнитивного анализа TAPPS
Структура элемента TAPPS
- анализа
Для создания структуры элемента был разработан класс TAPPS_Variant
Рис. 11.
Он содержит следующие атрибуты:
Steps- список шагов метода
StepsSum- сумма шагов
NAME - имя
участника
Для работы со списком шагов были разработаны методы:
publicstaticintCompare(TAPPS_Varianta, TAPPS_Variantb) - сравнение значений сумм шагов двух вариантов анализа
publicstringGetConstructionString() - получение строки, объединяющей в
себе атрибуты элемента класса, использует функцию GetString
privatestring GetString(List<string> list)
- вспомогательная функция для GetConstructionString
privateList<string>GetRecordsList(stringinput) - получает список записей данного
класса из строки
publicList<string> GetSteps() - возвращает список
шаговGetSumm() - возвращает сумму шагов(stringsteps),
publicvoidSetSteps(List<string>steps)- задет значение списка
шагов, полученных из строки или списка
Конструкторы класса TAPPS_Variant:
publicTAPPS_Variant(stringconstructionString) - для создания нового объекта
класса, и задания его элементов из сериализованной строки.
publicTAPPS_Variant(stringname, List<string>steps) - для создания нового объекта и
задания его элементов из списка
publicTAPPS_Variant(stringname, stringsteps) - для создания нового объекта и
задания его элементов из строки
Форма ввода элемента TAPPS - анализа
Для ввода элемента и обработки результата была разработана форма TAPPS_AnalysisForm
Рис. 12.
В ней создается объект класса TAPPS_Variant
Класс TAPPS_Analysis
Этот класс создан для обработки всех вариантов решения проблемы метода TAPPS
Рис. 13.
Он содержит:
Variants - список вариантов типа TAPPS_Variant
Problem - описание проблемыAddVariant(string name,
List<string> steps), publicvoid AddVariant(string name, string steps),
publicvoid AddVariant(TAPPS_Variant variant) - добавление нового вариантаRemoveVariant(int index), publicvoid RemoveVariant(string
name) - удаление варианта по индексу
или имени участникаReplaceVariant(int index, string
name, string steps) - перемещение варианта
publicvoid Order Variants() - сортировка вариантовSerialize() - получает
строчку в удобном для дальнейшей обработке виде. Она объединяет атрибуты
объекта класса, разделенные определенными символами.
Конструкторы класса TAPPS_Analysis
publicTAPPS_Analysis () - для создания нового объекта
класса
publicTAPPS_Analysis(string construction String) - для создания нового объекта класса, и задания его
элементов из сериализованной строки.
Основная форма TAPPS - анализа
Рис14.
Форма нужна для обработки объектов класса TAPPS_Analysis
Для работы с вариантами был разработан элемент TAPPS_VariantUserControl
Рис15.
Он необходим для отображения информации о варианте на форме. Для
обработки событий добавления, редактирования и удаления были написаны
соответствующие процедуры.
Универсальная форма истории анализа
Эта форма разработана для хранения результатов проведенных анализов
Рис. 16.
Она содержит:
List<Tuple<string, int>>history, deleted - списки текущих и удаленных элементовDeletedEntries - удаление элемента из
историиLeftEntries - добавление нового элемента в историю
public HistoryEntriesForm(string history Entries) - конструктор формы
Разработка модуля для работы с WIQA
В соответствии с требованиями работы функций в WIQA был разработан класс ExtFunctions
Он содержит объекты классов Pari_Analysis и TAPPS_Analysis
Были написаны следующие функции:
, STRING, string GetDeletedHistoryEntries() - Получает строку со списком
удаленных записей из истории мероприятий. Формат списка:
\"Имя1#QAID1#Имя1#QAID2#...ИмяN#QAIDN\",INTEGER,int
PopOneDeletedHistoryEntry() - Получает QAID первой удаленной из истории записи
и удаляет её из списка удалённых, уменьшая тем самым количество удаленных
записей.,INTEGER,int
GetDeletedHistoryEntriesCount() - Получает количество удаленных записей из
истории.
SETHISTORYENTRIES, STRING, string SetHistoryEntries(string
entries) - Задает список
записей истории. Возвращает старое
значение., STRING, string
GetHistoryEntries(string entries) - Получает список записей
истории., INTEGER, intShowHistoryForm() - Показывает модальное окно, через которое можно запросить
создание нового мероприятия, редактирование, просмотр или удаление уже
созданного из истории.
ADDTOHISTORY, STRING, string AddToHistory(string history,
string content, int qaid) - Добавляет запись к истории записей мероприятий., STRING, string
TryUpdateTopicInHistory(string history, string content, int qaid) - Изменяет тему в истории мероприятий для только
что отредактированного мероприятия.", STRING, string
ShowMessage(string msg) - показывает сообщение., STRING, string
ConcatStrings(string s1, string s2) - сливает
содержимое двух строк в одну и возвращает её как результат._SHOWMAINFORM, INTEGER, int PARI_ShowMainForm() - показывает модальную форму редактирования PARI-анализа. Возвращает 0, если была нажата
клавиша ОК. Возвращает 1, если была нажата Отмена.
PARI_GETSERIALIZED, STRING, string PARI_GetSerialized() - получает сериализованный экземпляр PARI-анализа._DESERIALIZE, STRING, string
PARI_Deserialize(string serializedPari) - десериализует строку в экземпляр PARI-анализа. Возвращает
пустую строку, если всё прошло в штатном режиме. В случае возникновения
исключения возвращает строку с исключением._SETNEW, STRING, string
PARI_SetNew() - задает новый экземпляр текущего PARI-анализа._SHOWMAINFORM,
INTEGER, int TAPPS_ShowMainForm() - показывает модальную форму редактирования
TAPPS-анализа. Возвращает 0, если была нажата клавиша ОК. Возвращает 1, если была
нажата Отмена.
TAPPS_GETSERIALIZED, STRING, string TAPPS_GetSerialized() - получает сериализованный экземпляр TAPPS-анализа._DESERIALIZE, STRING, string
TAPPS_Deserialize(string serializedTapps) - десериализует строку в экземпляр TAPPS-анализа. Возвращает
пустую строку, если всё прошло в штатном режиме. В случае возникновения
исключения возвращает строку с исключением._SETNEW, STRING, string
TAPPS_SetNew() - задает новый экземпляр текущего TAPPS-анализа.
3.3.1
Реализация метода когнитивного анализа TAPPS на псевдокодовом языке
Z 2 Техника
"Мысли вслух"
Q 2.1 &branch_qaid&
Q 2.1.1 0
Q 2.2 &history_branch_qaid&
Q 2.2.1 0
Q 2.3 PROCEDURE &TAPPS_CreateStructure&
Q 2.3.1 TAPPS dummy
Q 2.3.2 &t_int& :=
QA_GetQAId(¤t_project&, "TAPPS dummy")
Q 2.3.3 &t_int& :=
QA_GetParent(¤t_project&, &t_int&)
Q 2.3.4 &branch_qaid& :=
QA_GetParent(¤t_project&, &t_int&)
Q 2.3.5 &history_branch_qaid& :=
QA_CreateNode(¤t_project&, &branch_qaid&, 3,
"")
Q 2.3.6 ENDPROC &TAPPS_CreateStructure&
Q 2.4 PROCEDURE &TAPPS_main&
Q 2.4.1 &t_str& :=
QA_GetQAText(&history_branch_qaid&)
Q 2.4.2 SETHISTORYENTRIES(&t_str&)
Q 2.4.3 CALL &ShowHistory&
Q 2.4.4 IF &LastHistoryFormResult& == -1 THEN RETURN
Q 2.4.5 IF &LastHistoryFormResult& == 0 THEN
¤t_action_qaid& := QA_CreateNode(¤t_project&,
&history_branch_qaid&, 3, "") ELSE
¤t_action_qaid& := &LastHistoryFormResult&
Q 2.4.6 &t_str& :=
QA_GetQAText(¤t_action_qaid&)
Q 2.4.7 TAPPS_DESERIALIZE(&t_str&)
Q 2.4.8 &t_int& := TAPPS_SHOWMAINFORM()
Q 2.4.9 &t_str& := TAPPS_GETSERIALIZED()
Q 2.4.10 IF &t_int& == 0 THEN
QA_UpdateNode(¤t_project&, ¤t_action_qaid&,
&t_str&)
Q 2.4.11 IF &t_int& != 0 RETURN
Q 2.4.12 IF &LastHistoryFormResult& == 0 THEN
QA_UpdateNode(¤t_project&, &history_branch_qaid&,
ADDTOHISTORY(QA_GetQAText(&history_branch_qaid&), &t_str&,
¤t_action_qaid&))
Q 2.4.13 IF &LastHistoryFormResult& != 0 THEN
QA_UpdateNode(¤t_project&, &history_branch_qaid&,
TRYUPDATETOPICINHISTORY(QA_GetQAText(&history_branch_qaid&),
&t_str&, ¤t_action_qaid&))
Q 2.4.14 FINISH
Q 2.5 &t_int&
Q 2.5.1 0
Q 2.6 &t_str&
A 2.6.1 ""
Q 2.7 &LastHistoryFormResult&
Q 2.7.1 0
Q 2.8 PROCEDURE &ShowHistory&
Q 2.8.1 &LastHistoryFormResult& := SHOWHISTORYFORM()
Q 2.8.2 LABEL &SH_deletedLoopStart&
Q 2.8.3 &t_int& := GETDELETEDHISTORYENTRIESCOUNT()
Q 2.8.4 IF &t_int& == 0 THEN GOTO
&SH_deletedEnd&
Q 2.8.5 &t_int& := POPONEDELETEDHISTORYENTRY()
Q 2.8.6 QA_DeleteNode(¤t_project&,
&t_int&)
Q 2.8.7 GOTO &SH_deletedLoopStart&
Q 2.8.8 LABEL &SH_deletedEnd&
Q 2.8.9 ENDPROC &ShowHistory&
Q 2.8.10 QA_UpdateNode(¤t_project&,
&history_branch_qaid&, GETHISTORYENTRIES())
Q 2.9 &LastHistoryFormResult&
Q 2.9.1 0
Q 2.10 ¤t_action_qaid&
Q 2.10.1 0&TAPPS_CreateStructure& - создает структуру анализа&TAPPS_main& - запускает форму TAPPS - анализа&ShowHistory& -
запускает форму создания, редактирования и удаления TAPPS - анализа.
3.4
Реализация метода когнитивного анализа GDTA на псевдокодовом языке
псевдокодовый когнитивный моделирование библиотека
Это когнитивный метод анализа задач, который ориентируется
(сосредотачивается) на то, чтобы раскрыть понимание ситуации - SA, связанной с
требованием в задании.
Понимание ситуации SA - это восприятие элементов в среде в пределах
конкретного пространства и времени, понимания их значения, проекции их
состояния в ближайшее будущее, и прогноза того, как различные действия будут
влиять на выполнение целей.
Q 1.1.1 Идентификация ключевых лиц, принимающих решение
Q 1.1.2 Идентификация главных целей и связанных с ней подцелей для каждого лица
принимающего решение
Q 1.1.2.1Определите цель высшего порядка (основную)
Цель высшего уровня отражает полную цель лица, принимающего решения.
Q 1.1.2.1.1 Главная цель
Q 1.1.2.1.1.1 &Cel_id& := QA_GetQaId(&Current_Project&, "Главная цель")
A 1.1.2.1.1.1.1 35255
Q 1.1.2.1.1.2 INPUT &s&
Введите главную цель
A 1.1.2.1.1.2.1 "Glavnaya chel"
Q 1.1.2.1.1.3 QA_CreateNode
(¤t_project&, &Cel_id&, 3, &s&)
Q 1.1.2.1.1.4 GOTO &L1&
A 1.1.2.1.1.1 gl
Q 1.1.2.1.2 LABEL &L1&
Q 1.1.2.2Определите ряд главных целей, которые должны быть выполнены, чтобы
достигнуть полной цели
Как правило 3-6 главными целями можно описать полную
Q 1.1.2.2.1 INPUT &count_cel&
Введие число вспомогательных целей
A 1.1.2.2.1.1 1
Q 1.1.2.2.2 Вспомогательные цели
Q 1.1.2.2.2.1 ¤t_count_cel& := 0
A 1.1.2.2.2.1.1 0
Q 1.1.2.2.2.2 &Cel_id1& :=
QA_GetQaId(&Current_Project&, "Вспомогательные цели")
A 1.1.2.2.2.2.1 35258
Q 1.1.2.2.2.3 LABEL &L2&
Q 1.1.2.2.2.4 INPUT &s1&
Введите вспомогательную цель, которая поможет вам для достижения главной
A 1.1.2.2.2.4.1 "vspom chel"
Q 1.1.2.2.2.5 QA_CreateNode
(¤t_project&, &Cel_id1&, 3, &s1&)
Q 1.1.2.2.2.6 ¤t_count_cel& :=
¤t_count_cel& + 1
Q 1.1.2.2.2.7 IF
¤t_count_cel&<&count_cel& THEN GOTO &L2&
Q 1.1.2.2.2.8 GOTO &L3&
A 1.1.2.2.2.1 vspom chel
Q 1.1.2.2.3 LABEL&L3&
Q 1.1.2.3Определите список подцелей для каждой из главных целей
Для каждой цели это число будет переменным, в зависимости от сложности
цели.
Q 1.1.2.4Для более сложных областей у подцелей также может быть любое число
связанных подцелей
Q 1.1.3 Выделение первичного решения для каждой подцели
Q 1.1.3.1 Принимающее решение лицо, должно разработать решения для
достижения определенной цели.
Эти решения - по существу вопросы
Q 1.1.3.2 Принимающее решения лицо должно ответить на вопросы, чтобы
достигнуть указанной цели.
Эти вопросы требуют синтеза информации, чтобы понять ситуацию и как это
будет воздействовать на свою связанную цель.
Q 1.1.3.3 Ответы на цели
Q 1.1.3.3.1 &Cel_id2& := QA_GetQaId(&Current_Project&, "Ответы на цели")
A 1.1.3.3.1.1 0
Q 1.1.3.3.2 ¤t_count_ans& := 0
A 1.1.3.3.2.1 0
Q 1.1.3.3.3 LABEL &L5&
Q 1.1.3.3.4 INPUT &s5&
Введите ответ на подцель
A 1.1.3.3.4.1
Q 1.1.3.3.5 QA_CreateNode
(¤t_project&, &Cel_id2&, 3, &s5&)
Q 1.1.3.3.6 ¤t_count_ans& :=
¤t_count_ans& + 1
Q 1.1.3.3.7 ¤t_count_ans&<&count_cel&
THEN GOTO &L5&
Q 1.1.3.3.8 GOTO &L6&
Q 1.1.3.4 LABEL &L6&
Q 1.1.4 Получение информации об SA требовании для принятия этих решений и
выполнения каждой подцели
Q 1.1.4.1 Необходимо понять исходные данные
Q 1.1.4.2Выполните интеграцию элементов исходных данных
Q 1.1.4.3 Проектирование
Понимание как интегрированная информация (данные) измениться в течении
долгого времени
Q 1.1.5 FINISH
Рис. 17. UMLмодель метода GDTA
.5
Реализация метода когнитивного анализа DNA на псевдокодовом языке
Network-Assess (DNA)
Общая цель метода познавательного анализа задач состоит в том, чтобы
обеспечить легкую процедуру для того, чтобы она выявила элементы знаний и
умений от экспертов, и представить разнообразные виды знания, требующих
рассуждать и функционировать в любом домене. Метод DNA предназначается, чтобы
идентифицировать иерархически структурированную базу знаний элементов программы
в учебных целях (Shute, Torreano, & Willis, в нажатии). Его основная цель
состоит в том, чтобы произвести опытную модель для интеллектуальных учебных
систем. Программа DNA все еще усовершенствуется. Предполагается, что это будет
стоящий инструмент для того, чтобы проанализировать учебные требования для
другого, а также более общие цели.
Q 1.2.1 Настройка
Q 1.2.1.1 Ученый разработчик предоставляет информацию о домене, который
должен быть проанализирован, характеристики намеченной совокупности учеников,
так же как список целей для сеанса обучения, оценки
Q 1.2.1.3После получения всей этой информации от учебного разработчика модуль
“Настройка” генерирует краткое рекомендательное письмо, адресуемое возможным
экспертам, и ряд дискет, которые содержат все необходимые программные файлы,
чтобы выполнить DNA. Рекомендательное письмо и дискеты передаются одному или
более экспертам, которые будут использовать DNA, чтобы формировать рисунок
программу.
Q 1.2.1.4 Письмо
Q 1.2.1.4.1 &Pozn_id& :=
QA_GetQaId(&Current_Project&, "Письмо")
A 1.2.1.4.1.1 34320
Q 1.2.1.4.2 INPUT &s3&
Напишите краткое рекомендательное письмо
A 1.2.1.4.2.1 ""
Q 1.2.1.4.3 QA_CreateNode
(¤t_project&, &Pozn_id&, 3, &s3&)
Q 1.2.2 Анализ
Q 1.2.2.1 &Pozn_Iter& := 0
A 1.2.2.1.1 2
Q 1.2.2.2 INPUT &Pozn_isConsensus&
Эксперты получают вопросы сформулированные в письме
Введите количество вопросов
A 1.2.2.2.1 2
Q 1.2.2.3 Эксперты последовательно отвечают на вопросы
"Что?", "Как?" и "Почему?"
Q 1.2.2.4 LABEL &Pozn_IterStart&
Q 1.2.2.5 Ответы экспертов
Q 1.2.2.5.1 &Pozn_id1& :=
QA_GetQaId(&Current_Project&, "Ответыэкспертов")
A 1.2.2.5.1.1 34324
Q 1.2.2.5.2 INPUT &s4&
Введите ответ на вопрос
Q 1.2.2.5.3 QA_CreateNode
(¤t_project&, &Pozn_id1&, 3, &s4&)
Q 1.2.2.5.4 GOTO &L4&
Q 1.2.2.6 LABEL &L4&
Q 1.2.2.7 &Pozn_Iter& := &Pozn_Iter& + 1
Q 1.2.2.8 IF &Pozn_Iter&<&Pozn_isConsensus&
THEN GOTO &Pozn_IterStart&
Q 1.2.2.9 Ответы полученные от эксперта формируют концептуальные
графики
Q 1.2.3 Сеть
Q 1.2.3.1 Необходимо выполнить преобразование CE, выявляемые во время
анализа в графические узлы, которые эксперты пространственно располагают и
соединяют, чтобы сформировать иерархии знаний, концептуальные графики, или
порождающие правила
Q 1.2.3.2 DNA позволит экспертам распознать разрывы в знании и навыках,
которые они обеспечили в их разложении.
Q 1.2.4 Оценка
Q 1.2.4.1 Данный модуль будет использоваться, чтобы проверить записи CE
и концептуальных графиков, сгенерированных экспертами. Это будет выполнено при
наличии других экспертов в анализе домена данных и концептуальных графиков,
сгенерированные экспертом или группой экспертов.
1.2.5 FINISH
Рис18. UML модель метода DNA
3.6 Анализ
проделанной работы
Было выполнено задание по данному дипломному проекту, создана библиотека
методов когнитивного анализа задач. Было запрограммировано 4 метода, которые
представлены в таблице 3.
Таблица 3.
Название метода
|
Количество строк на C#
|
Количество строк на
псевдокоде
|
Decompose,
Network, and Asses (DNA)
|
|
55 строк
|
Goal-Directed
Task Analysis (GDTA)
|
|
76 строк
|
PARI Method
(Precursor (reason for action), Action, Result, Interpretation (of result)
|
345
|
62
|
Think Aloud
technique Problem Solving (TAPPS)
|
454
|
58
|
4.
Безопасность и экологичность проекта
4.1
Исходные данные
Таблица 4. Исходные данные
№п/п
|
Наименование
|
Фактическое значение
|
1
|
Тема дипломного проекта
|
Библиотека методов
когнитивного анализа задач.
|
2
|
Фамилия И.О. студента,
учебная группа
|
Давлетбердин А.Х., ЭВМду-41
|
3
|
Вид технологического
процесса
|
Эксплуатация ПЭВМ
|
4
|
Вид оборудования,
паспортные данные
|
ПЭВМ
|
5
|
Напряжение, режим нейтрали
электрической сети
|
Электропитание
осуществляется от трехфазной сети с частотой 50 Гц и напряжением 220 В. Сеть
трехфазная с заземленной нейтралью.
|
6
|
Характеристика
производственного помещения по электроопасности
|
По степени опасности
относится к допустимым условиям труда в соответствии с ГОСТ 12.1.030-81
|
7
|
Характеристика среды
помещения
|
■ Температура помещения в переходный период 18-220С,
в холодный период 20-220С, в теплый период 23-250С. ■ Подвижность воздуха от 0,1 до 0,2 м/с. ■ Влажность
воздуха 50-65%. ■ Воздействие химических веществ отсутствует. ■ Запыленности и загазованности воздуха нет. Выполняются легкие
физические работы (I категория)
|
8
|
Признаки отнесения объекта
проектирования к опасным объектам
|
Нет
|
9
|
Категория производства по
взрывопожарной опасности
|
В соответствии с НПБ 105-03
помещение относится к категории В (помещение содержит горючие и трудногорючие
жидкости, твердые горючие и трудногорючие вещества в малом количестве и
материалы, способные только гореть при взаимодействии с кислородом воздуха)
|
10
|
Характеристика взрыво-,
пожароопасных зон
|
Класс пожароопасных зон
относится к П-2-А (зона, в которой обращаются твердые горючие вещества)
согласно ПУЭ (правила устройства электроустановок).
|
11
|
Категория взрывоопасных
смесей
|
Нет
|
12
|
Профессия рабочего,
эксплуатирующего объект проектирования
|
Оператор ПЭВМ
|
13
|
Классы условий труда в
соответствии с картой аттестации рабочего места: по вредности по
травмоопасности
|
2 класс - допустимый
(факторы среды и трудового процесса не превышают установленных норм, а
возможные изменения функционального состояния организма, вызванные
усталостью, утомлением,)
|
.2
Перечень нормативной литературы
. Санитарные правила и нормы. СанПиН 2.2.2./2.4.1340-03 Гигиенические
требования к персональным электронно-вычислительным машинам и организации
работы.
. «Руководство по гигиенической оценке факторов рабочей среды и трудовых
процессов. Критерии и классификация условий труда». Р 2.2.2006-05.
. ГОСТ 12.0.003-74.ССБТ. (СТ СЭВ 790-77) Опасные и вредные
производственные факторы. Классификация. М.: Изд-во стандартов, 1996.
. ГОСТ 12.1.003-83.ССБТ. Шум. Общие требования безопасности. М.: Изд-во
стандартов.1996.
. ГОСТ 12.1.004-91.ССБТ. Пожарная безопасность. Общие требования. М.:
Изд-во стандартов, 1996.
. ГОСТ 12.1.005-88.ССБТ. Общие санитарно-гигиенические требования к
воздуху рабочей зоны. М.: Изд-во стандартов, 1996.
. ГОСТ 12.1.006-88.ССБТ. Электромагнитные поля радиочастот. Допустимые
уровни на рабочих местах и требования к проведения контроля. М.: Изд-во
стандартов, 1998.
. ГОСТ 12.1.019-79.ССБТ (СТ СЭВ 4880-84). Электробезопасность. Общие
требования. М.: Изд-во стандартов, 1996.
. ГОСТ 12.1.030-81.ССБТ. Электробезопасность. Защитное заземление
зануление. М.: Изд-во стандартов, 1996.
. ГОСТ 12.1.038-82.ССБТ. Электробезопасность. Предельно-допустимые
значения напряжений прикосновения и токов. М.: Изд-во стандартов, 1996.
. Правила устройства электроустановок. М.: Энергия, 1987.
. Общесоюзные нормы технологического проектирования ОНТП 24-86., М.: МВД
СССР, 1986.
. СНиП 2.01.02-85. Противопожарные нормы. М.: Стройиздат,1986.
. СНиП 2.04.05-86. Отопление, вентиляция, кондиционирование воздуха. М.:
Стройиздат, 1988.
. СНиП 23-05-95. Естественное и искусственное освещение. Анализ
проектирования. М.: Энерго, 1996.
. Р 2.2.013-94. Гигиена труда. М.: Госкомсанэпиднадзор России, 1994.
. Правила пожарной безопасности в Российской Федерации - ППБ 01 03.
. Нормы пожарной безопасности - НПБ 88-2001. Установки пожаротушения и
сигнализации. Нормы и правила проектирования.
.3 Анализ потенциальных опасностей
На рис. 19 приведена принципиальная блок-схема обеспечения безопасности
объекта проектирования.
Рис. 19. Принципиальная блок-схема обеспечения безопасности объекта проектирования
4.3.1 Анализ вредных и опасных производственных факторов
Опасный производственный фактор - это производственный фактор,
воздействие которого в определенных условиях приводит к травме или к другому
внезапному ухудшению здоровья.
Воздействие вредного производственного фактора в определенных условиях
приводит к заболеванию или снижению работоспособности.
Классификация опасных и вредных производственных факторов (ГОСТ
12.0.003-74). Опасные и вредные производственные факторы подразделяются по природе
действия на следующие группы:
физические;
химические;
биологические;
психофизические.
Все факторы, за исключением психофизических обусловлены воздействием
техники и рабочей среды. Психофизиологические факторы связаны с влиянием
тяжести и напряженности труда, что в конечном итоге тоже может привести к
заболеваниям.
Так как на рабочем месте, рассматриваемом в рамках данного дипломного
проекта, химические и биологические опасные и вредные производственные факторы
оказывают незначительное, по сравнению с физическими факторами, влияние, в
рассмотрение они браться не будут.
При работе с ПЭВМ на пользователя оказывают влияние следующие физические
опасные и вредные производственные факторы:
повышенный уровень шума на рабочем месте;
повышенная или пониженная влажность;
повышенное значение напряжения в электрической цепи;
повышенный уровень электромагнитных излучений;
отсутствие или недостаток естественного света;
недостаточная освещенность рабочей зоны;
повышенная яркость света;
пониженная контрастность;
повышенная пульсация светового потока; повышенная или пониженная
подвижность воздуха; повышенный уровень ионизирующих излучений в рабочей зоне;
повышенный уровень статического электричества;
повышенная напряженность электрического поля;
повышенная напряженность магнитного поля;
прямая и отраженная блесткость;
повышенный уровень ультрафиолетовой радиации;
повышенный уровень инфракрасной радиации.
Психофизические опасные и вредные производственные факторы по характеру
действия подразделяются:
физические перегрузки (статические и динамические);
нервно-психические перегрузки (умственное напряжение и перенапряжение,
монотонность труда, эмоциональные перегрузки, утомление, эмоциональный стресс,
эмоциональная перегрузка).
4.3.2 Микроклимат
Показателями, характеризующими микроклимат в производственном помещении,
являются:
температура воздуха;
относительная влажность воздуха;
скорость движения воздуха;
интенсивность теплового излучения.
В помещениях с вычислительной техникой при выполнении работ операторского
типа, связанных с нервно-эмоциональным напряжением, по ГОСТ 12.1.005-88
необходимо соблюдать оптимальные величины показателей, приведенные в табл. 4.
Таблица 5. Оптимальные величины показателей
метеоусловий в помещениях с вычислительной техникой.
Период
|
Температура воздуха, °С
|
Относительная влажность, %
|
Скорость движения воздуха,
м/с
|
Холодный
|
21-23
|
40-65
|
0.1
|
Теплый
|
22-24
|
40-60
|
0.2
|
Нормы подачи свежего воздуха в помещения, где расположены компьютеры.
Таблица 6.
Характеристика помещения
|
Объемный расход подаваемого
в помещение свежего воздуха, м3 /на одного человека в час
|
Объем до 20м3 на
человека 20…40м3 на человека Более 40м3 на человека
|
Не менее 30 Не менее 20
Естественная вентиляция
|
Колебания температуры воздуха допускаются до 4%.
Несоблюдение требований к микроклимату помещений влечет за собой
следующие негативные последствия:
потери рабочего времени из-за увеличенного числа ошибок в работе,
функциональные расстройства или хронические заболевания органов дыхания,
нервной системы, иммунной системы,
высокая температура способствует быстрому утомлению оператора, может
привести к перегреву организма, что вызывает тепловой удар,
низкая температура может вызвать местное или общее охлаждение организма,
стать причиной простудного заболевания.
Для создания нормальных условий труда в производственных помещениях
обеспечивают нормативные значения параметров микроклимата - температуры
воздуха, относительную влажность и скорость движения, а также интенсивности
теплового излучения.
В ГОСТ 12.1.005-88 указаны оптимальные и допустимые показатели
микроклимата в производственных помещениях. Оптимальные показатели
распространяются на всю рабочую зону, а допустимые устанавливают раздельно для
постоянных и непостоянных рабочих мест в тех случаях, когда по технологическим
техническим или экономическим причинам невозможно обеспечить оптимальные нормы.
Мероприятия по обеспечению оптимальных метеоусловий соответствуют ГОСТ
12.1.005-88 и СНиП 2.04.05-86 и других мероприятий по обеспечению микроклимата
не требуется.
4.3.3 Электробезопасность
Электробезопасность на рабочем месте ПЭВМ обеспечивается:
А.Соответствием конструкцией электроустановок
Б. применением технических средств и способов защиты;
В. организационными и техническими мероприятиями (ГОСТ 12.1.009-76)
А. Конструкция должна соответствовать условиям эксплуатации и
обеспечивать защиту персонала от соприкосновения с токоведущими и движущимися
частями, оборудования - от попадания внутрь посторонних твердых тел и
воды.(ПУЭ)
Б. основными техническими способами и средствами защиты от поражения
электрическим током, используемыми отдельно или в сочетании дуг с другом
являются:
защитное заземление
зануление
выравнивание потенциалов
малое напряжение(~42В,=110В)
электрическое разделение сетей
защитное отключение
изоляция токоведущих частей (рабочая, дополнительная, усиленная,
двойная);
компенсация токов замыкания на землю;
оградительные устройства;
изолирующие защитные и предохранительные приспособления.
Наиболее распространенными техническими средствами являются защитное
заземление и зануление.
Защитным заземлением называется преднамеренное электрическое соединение с
землёй или её эквивалентом металлически нетоковедущих частей, которые могут
оказаться под напряжением
Защитному заземлению подлежат металлические части ЭУ, доступные для
прикосновения ч. И не имеющие других видов защиты, обеспечивающих ЭБ.
Защитное заземление или зануление выполняют:
во всех помещениях при переменном напряжении 380В, постоянном 440В
в помещениях с повышенной опасностью, особо опасных и в наружных
установках при переменном напряжении от42 до380В, и постоянном 110-440В
Т.об., ЭУ напряжением до 42 переменного и до110 постоянного тока не
требуют защитного заземления и зануление, за исключением случаев, специально
оговариваемых ПУЭ.
Областью применения защитного заземления является 3-х фазные 3-х
проводные сети …до 1000в с изолированной нейтралью и сети ….выше 1000в с любым
режимом нейтрали.
Этот заземлитель располагается вблизи источника питания или (в отдельных
случаях) около стены здания, в котором он находится.
Таким образом, зануление напряжения прикосновения и ограничивает время, в
течении которого человек, прикоснувшийся к корпусу, может попасть под действие
напряжения.
Защитным отключением называется быстродействующая защита, обеспечивающая
автоматическое отключение ЭУ при возникновении в ней опасности поражения …(ГОСТ
12.1.009-76). Принцип защиты заключён в ограничении времени протекании через
тело человека опасного тока. Устройство защитного отключения (УЗО) непрерывно
контролирует сеть и при изменении её параметров, вызванным подключением
человека в сеть, отключает сеть или её участок.
В организационные и технические мероприятия по обеспечению ЭБ(ГОСТ
12.1.019-79) заключается в:
соответственном обучении, инструктаже и допуске к работу ЭУ лиц,
прошедших медосвидельствование;
выполнение ряда технических мер при проведении работ с отключением
напряжения действующих ЭУ или вблизи их (запирание приводов, снятие
предохранителя, отсоединение концов питающих линий);
- соблюдением особых требований при работе на токоведущих частях ЭУ,
находящихся под …или вблизи них (выполнение работ по нарядам не, менее чем
двумя лицами, организации надзора за проведением работ, с применением
электрозащитных средств и т. д.).
Опасное и вредное воздействие на людей электрического тока проявляется в
виде электротравм и профессиональных заболеваний. Степень опасного и вредного
воздействий на человека электрического тока зависит от:
рода и величины напряжения и тока;
частоты электрического тока;
пути прохождения тока через тело человека (наибольшая опасность возникает
при непосредственном прохождении тока через жизненно важные органы (сердце,
легкие, головной мозг).);
продолжительности воздействия на организм человека (с течением времени
резко падает сопротивление кожи человека, более вероятным становится поражение
сердца и накапливаются другие отрицательные последствия);
условий внешней среды.
Нормы на допустимые токи и напряжения прикосновения в электроустановках
должны устанавливаться в соответствии с предельно допустимыми уровнями
воздействия на человека токов и напряжений прикосновения и утверждаться в
установленном порядке согласно ГОСТ 12.1.038-82.
Напряжение прикосновения и токи приведены при продолжительности
воздействия не более 10мин. в сутки и установлены, исходя из реакции ощущения.
Таблица 7. Воздействие постоянного и переменного тока на человека
Значение тока, проходящего
через человека, мA
|
Характер воздействия
|
|
Переменный ток, 50 Гц
|
Постоянный ток
|
0,5 - 1,5
|
Начало ощущения, легкое
дрожание пальцев рук
|
Не ощущается
|
2,0 - 3,0
|
Сильное дрожание пальцев
рук, ощущение доходит до запястья
|
Не ощущается
|
5,0 - 7,0
|
Легкие судороги в руках,
болевые ощущения в руках
|
Зуд, ощущение нагрева
|
8,0 - 10,0
|
Руки трудно, но еще можно
оторвать от электродов, сильные боли в пальцах, кистях рук и предплечьях
|
Усиление ощущения нагрева
|
20 - 25
|
Паралич рук, оторвать их от
электродов невозможно, очень сильные боли, дыхание затруднено
|
Ещё большее усиление
нагрева, незначительное сокращение мышц рук
|
50 - 80
|
Остановка дыхания. Начало
фибрилляции сердца
|
Сильное ощущение нагрева,
сокращение мышц рук, судороги, затруднение дыхания
|
90 - 100
|
Остановка дыхания, при
длительности3 сек.и более остановка сердца
|
Остановка дыхания
|
Согласно ГОСТ 12.1.038-82, человек начинает ощущать протекающий через
него ток в 0,3 мА (50 Гц), 0,4 мА (400 Гц) и 1 мА (постоянный). Это пороговый
ощутимый ток. Ток 10 - 15 мА (50 Гц) называется пороговым неотпускающим.
Действие электрического тока на живую ткань в отличие от других
материальных факторов носит своеобразный и разносторонний характер. Проходя
через организм, электрический ток производит действия:
термическое - нагрев тканей, перегрев кровеносных сосудов и крови, что
вызывает в них серьезные функциональные нарушения;
электролитическое - разложение крови и плазмы, значительные нарушения их
физико-химических составов и тканей в целом;
биологическое - раздражение и возбуждение живых тканей организма, что
может сопровождаться непроизвольными судорожными сокращениями мышц, в том числе
мышц сердца и легких; при этом могут возникнуть различные нарушения в
организме, включая нарушение и даже полное прекращение деятельности сердца и
легких, а также механических повреждений тканей в результате непроизвольных
судорожных сокращений мышц.
Любое нарушение правил электробезопасности может привести к электротравме.
.3.4
Пожарная безопасность
Мероприятия по обеспечению пожарной безопасности ППБ-01-03.
.1. Пожарная безопасность рабочего места ПЭВМ должна обеспечиваться
системами предотвращения пожара и противопожарной защиты, в том числе
организационно-техническими мероприятиями.
Системы пожарной безопасности должны характеризоваться уровнем
обеспечения пожарной безопасности людей и материальных ценностей.
.2. Рабочее место ПЭВМ должно иметь систему пожарной безопасности,
направленную на предотвращение воздействия на людей опасных факторов пожара, в
том числе их вторичных проявлений на требуемом уровне.
.3. Опасными факторами, воздействующими на людей и материальные ценности,
являются:
пламя и искры;
повышенная температура окружающей среды;
токсичные продукты горения и термического разложения;
дым;
пониженная концентрация кислорода.
К вторичным проявлениям опасных факторов пожара, воздействующим на людей
и материальные ценности, относятся:
осколки, части разрушившихся аппаратов, агрегатов, установок, конструкций;
радиоактивные и токсичные вещества и материалы, вышедшие из разрушенных
аппаратов и установок;
электрический ток, возникший в результате выноса высокого напряжения на
токопроводящие части конструкций, аппаратов, агрегатов;
опасные факторы взрыва по ГОСТ 12.1.010, происшедшего вследствие пожара;
огнетушащие вещества.
.4. Предотвращение пожара должно достигаться предотвращением образования
горючей среды и (или) предотвращением образования в горючей среде (или внесения
в нее) источников зажигания.
.5 Предотвращение образования горючей среды должно обеспечиваться одним
из следующих способов или их комбинаций:
максимально возможным применением негорючих и трудногорючих веществ и
материалов;
максимально возможным по условиям технологии и строительства ограничением
массы и (или) объема горючих веществ, материалов и наиболее безопасным способом
их размещения;
изоляцией горючей среды (применением изолированных отсеков, камер, кабин
и т. п.);
поддержанием безопасной концентрации среды в соответствии с нормами и
правилами и другими нормативно-техническими, нормативными документами и
правилами безопасности;
достаточной концентрацией флегматизатора в воздухе защищаемого объема
(его составной части);
поддержанием температуры и давления среды, при которых распространение
пламени исключается;
максимальной механизацией и автоматизацией технологических процессов,
связанных с обращением горючих веществ;
установкой пожароопасного оборудования по возможности в изолированных
помещениях или на открытых площадках;
применением устройств защиты производственного оборудования с горючими
веществами от повреждений и аварий, установкой отключающих, отсекающих и других
устройств.
.6 Предотвращение образования в горючей среде источников зажигания должно
достигаться применением одним из следующих способов или их комбинацией:
применением машин, механизмов, оборудования, устройств, при эксплуатации
которых не образуются источники зажигания;
применением электрооборудования, соответствующего пожароопасной и
взрывоопасной зонам, группе и категории взрывоопасной смеси в соответствии с
требованиями ГОСТ 12.1.011 и Правил устройства электроустановок;
применением в конструкции быстродействующих средств защитного отключения
возможных источников зажигания;
применением технологического процесса и оборудования, удовлетворяющего
требованиям электростатической искробезопасности по ГОСТ 12.1.018;
устройством молниезащиты зданий, сооружений и оборудования;
устранением контакта с воздухом пирофорных веществ;
уменьшением определяющего размера горючей среды ниже предельно
допустимого по горючести;
.7 Противопожарная защита должна достигаться применением следующих
способов или их комбинацией:
применением средств пожаротушения и соответствующих видов пожарной
техники;
применением автоматических установок пожарной сигнализации и
пожаротушения;
устройствами, обеспечивающими ограничение распространения пожара;
организацией с помощью технических средств, включая автоматические,
своевременного оповещения и эвакуации людей;
Организационно-технические мероприятия должны включать:
организацию пожарной охраны,
организацию ведомственных служб пожарной безопасности
4.4
Мероприятия по обеспечению безопасных условий труда
.4.1
Мероприятия по защите от опасных производственных факторов
Для защиты персонала от попадания под опасное напряжение при неисправной
изоляции необходимо предусмотреть защитное заземление, выполняемое в
соответствии с ГОСТ 12.1.019-79.
Предупреждение коротких замыканий в электрической сети обеспечивается
правильным выбором проводов (выбор сечения, токоведущих шин, марки проводов,
видов изоляции); профилактические осмотры, ремонты. Для быстрого отключения в
комнате используются плавкие предохранители.
Согласно ГОСТ 12.1.019-79, электрооборудование помещения относится к 01
классу защиты от поражения электрическим током, т.е. имеется рабочая изоляция,
элемент для заземления и провод без зануляющей шины для подсоединения к
источнику питания.
Для защиты от различного рода излучений пользователь должен обладать
рабочей зоной при работе со своей ПЭВМ, в которой не должны оказываться рабочие
части других ПЭВМ. В соответствии с СанПиН 2.2.2./2.4.1340-03 площадь на одно
рабочее место пользователей ПЭВМ с ВДТ должна составлять не менее 6 м2.
При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеотерминалами
должно быть не менее 2 м, а расстояние между боковыми поверхностями
видеотерминалов - не менее 1,2 м.
Периодически проводить профилактическую проверку заземления, изоляции,
проводов.
Для отключения электроснабжения помещения применять рубильник.
Сеть штепсельных розеток для питания аппаратуры сделать по магистральной
схеме. Для питания непосредственно ЭВМ использовать специальные pазветвители с
устройством защиты от перегрузок и локальным выключателем.
Регулярно проводить инструктажи по технике безопасности.
.4.2
Мероприятия по защите от чрезвычайных ситуаций
В качестве основных направлений в решении задач
обеспечения защиты от чрезвычайных ситуаций могут рассматриваться следующие:
а) прогнозирование и оценка возможных последствий
чрезвычайных ситуаций;
б) планирование мероприятий по предотвращению или
уменьшению вероятности возникновения чрезвычайных ситуаций, а также сокращению
масштабов их последствий;
в) обеспечение устойчивой работы объектов народного
хозяйства в чрезвычайных ситуациях;
г) обучение населения действиям в чрезвычайных
ситуациях;
д) ликвидация последствий чрезвычайных ситуаций.
5.
Организационно-экономическая часть
5.1 Оценка
технического уровня и качества библиотеки методов когнитивного принятия решения
Цель дипломного проекта - доработка функциональности системы WIQA, создание библиотеки методов.
Важнейшей задачей является анализ экономической эффективности внедряемой
системы. Её своевременное решение дает возможность сравнивать различные
варианты автоматизации и установить оптимальный вариант, оценить его влияние на
изменение показателей деятельности организации.
При оценке технического уровня и качества сравниваются однотипные среды
коллективного взаимодействия. Для оценки технического уровня и качества нового
изделия применяется система показателей качества, в которую входят обобщающие
единичные показатели. Эти показатели рассчитываются по следующей методике:
Определяется относительный единичный показатель качества по формуле
или
-
относительный i-й единичный показатель качества изделия по сравнению с j-ым
образцом;
-
абсолютное значение i-го единичного показателя у аналогичного j-ого образца;
-
абсолютное значение i-го единичного показателя у выпускаемого изделия.
Принимается
к расчету та формула, по которой увеличение относительного показателя соответствует
улучшению качества.
С учетом коэффициентов весомости, установленных экспертным путем,
определяется интегральный обобщающий показатель качества по формуле:
где
- интегральный k-й обобщающий показатель качества j-го
образца;i - коэффициент весомости i-го единичного показателя;- число
единичных показателей, характеризующих обобщающий.
Уровень качества выпускаемого изделия (УК) по сравнению с каким-либо j-м
образцом определяется по формуле:
где
mk - коэффициент весомости k-го обобщающего показателя качества;-
число обобщающих показателей качества в системе.
Если
> 1, то выпускаемое изделие превосходит по качеству
j-й аналог (образец).
Оценка
технического уровня и качества библиотеки методов(сравнивается с аналогом).
Таблица
8.
Наименование
|
Коэфф. весомости
|
Абс. значения
|
Относ. показ.
|
Интегр. показ.
|
|
обобщ.
|
един.
|
проект
|
аналог
|
|
един.
|
обобщ.
|
1. Возможности
|
0,30
|
|
|
|
|
|
0,37
|
1.1 Варианты представления
данных
|
|
0,10
|
60
|
40
|
1,50
|
0,15
|
|
1.2 Встроенные функции
|
|
0,50
|
65
|
1,30
|
0,65
|
|
1.3 Возможность
расширенного использования
|
|
0,20
|
80
|
70
|
1,14
|
0,23
|
|
1.4 Организация доступа к
базе
|
|
0,20
|
55
|
55
|
1,00
|
0,20
|
|
|
|
1,00
|
|
|
|
1,23
|
|
2. Удобство
|
0,20
|
|
|
|
|
|
0,24
|
2.1 Интерфейс
|
|
0,30
|
60
|
45
|
1,33
|
0,40
|
|
2.2 Удобство работы с
данными
|
|
0,30
|
50
|
35
|
1,43
|
0,43
|
|
2.3 Функциональность
|
|
0,40
|
70
|
50
|
1,40
|
0,56
|
|
|
|
1,00
|
|
|
|
1,39
|
|
3. Экономичность
|
0,10
|
|
|
|
|
|
0,08
|
3.1 Экономичность проекта
|
|
1,00
|
60
|
80
|
0,75
|
0,75
|
|
4. Безопасность
|
0,15
|
|
|
|
|
|
0,23
|
4.1 Безопасность операций
|
|
0,60
|
85
|
45
|
1,89
|
1,13
|
|
4.2 Общая безопасность
проекта
|
|
0,40
|
60
|
60
|
1,00
|
0,40
|
|
|
|
1,00
|
|
|
|
1,53
|
|
5. Системные требования
|
0,25
|
|
|
|
|
|
0,21
|
5.1 Требования к
аппаратным средствам
|
|
0,30
|
80
|
70
|
1,14
|
0,34
|
|
5.2 Требования к
программным средствам
|
|
0,60
|
40
|
70
|
0,57
|
0,34
|
|
5.3 Объём свободного места
на НЖМД
|
|
0,10
|
90
|
60
|
1,50
|
0,15
|
|
|
|
1,00
|
|
|
|
0,84
|
|
|
1,00
|
|
|
|
|
|
1,16
|
По результатам расчетов, уровень качества производимого программного
продукта библиотеки методов составил 1,16, а это означает, что он по своим
техническим и качественным характеристикам превосходит аналогичный программный
продукт.
5.2 Расчёт
экономической эффективности от разработки библиотеки методов
Выводы об экономической эффективности, ожидаемой от внедрения проекта,
делают в зависимости от соотношения экономии приведённых затрат к сравнению с
базовым вариантом.
Приведённые затраты (П3) представляют собой
сумму себестоимости продукции (С) и капитальных затрат (К), приведенных к
одному году с помощью нормативного коэффициента эффективности капитальных
вложений (Ен), который отражает нижний допустимый уровень
эффективности:
П3 = С + К * Ен
Для информационных технологий Ен=0,3 что
характеризует максимально допустимый нормативный срок окупаемости (Тн)
Тн=1/Ен=1/0,3=3,3 года
При определении годового экономического эффекта должна
быть обеспечена сопоставимость базового и нового вариантов по:
объему производимой продукции (работы);
качественным параметрам;
фактору времени;
социальным факторам производства и использования
продукции, включая влияние на окружающую среду.
Для расчета приведенных затрат по базовому и
проектному вариантам определяются:
капитальные затраты или стоимость основных
производственных фондов и оборотных средств с учетом затрат на НИОКР (проектные
работы) и остаточной стоимости заменяемого оборудования;
стоимость продукции или затраты на производство и
реализацию продукции.
Годовой экономический эффект рассчитывается по
формуле:
Э=(С1+К1Ен)β-(С2+К2Ен),
где С1, С2 - себестоимость
годового объема производства по базовому варианту и по проекту, руб.;
К1, К2 - капитальные вложения по
базовому варианту и по проекту, руб.;
Ен - нормативный коэффициент эффективности
капитальных вложений, принимается 0,3;
Β - коэффициент эквивалентности для
приведения показателей базового варианта к сопоставимому с проектом виду по
объему производства (βа, качественным параметрам (βкач), фактору времени (βt)
β = βа* βкач*
βt
βа=А2/А1;
βкач=Пкач2/Пкач1;
βt=(1+Е)t;
где А1, А2 - годовые объемы производства по базовому
варианту и по проекту;
Пкач1, Пкач2 - показатели
качества;
Е - норматив приведения, принимается 0,1;- число лет
от момента, когда были осуществлены
вложения, до расчетного года, принимается 0,5.
βа - коэффициент эквивалентности по объему производства
- объем выполняемых работ не изменился, следовательно βа принимается равным 1.
βкач - коэффициент эквивалентности по
качественным параметрам (таблица 6.1) βкач= 1,16
βt - коэффициент эквивалентности фактора времени - (1+0,1)1
= 1,1.
Следовательно, коэффициент эквивалентности β
= 1*1,16*1,1 = 1,276
Капитальные затраты рассчитываются отдельно по
базовому и проектному вариантам:
) Стоимость оборудования - оборудование, на котором
разрабатывается и вводится в эксплуатацию данный дипломный проект, является
персональным компьютером, его параметры указании в таблице 10:
Таблица 9. Параметры и цены персонального компьютера
Наименование
|
Тип
|
Кол-во (шт.)
|
Цена (руб.)
|
Монитор
|
Aser 17"
|
1
|
4000
|
Материнская плата
|
ASUS A7N8X Socket A
|
1
|
2000
|
Процессор
|
AMD Sempron(tm) 2200+
|
1
|
1700
|
ОЗУ
|
Samsung DDR PC3200 - 512 MB
|
1
|
850
|
Жёсткий диск
|
Seagate 120Gb
|
1
|
1500
|
Флоппи дисковод
|
FDD 3.5" 1,44 Mb
|
1
|
250
|
Видеокарта
|
AGP ATI
(Sapphire) Radeon 9550 128Mb
|
1
|
1500
|
Корпус
|
MidiTower 300W
|
1
|
1000
|
Принтер
|
Epson Stylus C48
|
1
|
2500
|
Клавиатура
|
Win 95/2000 PS/2
|
1
|
150
|
Мышь
|
Genius
|
1
|
50
|
Суммарная стоимость оборудования по дипломному проекту
составляет -15500 руб. По базовому варианту для выполнения работы требуется
более мощный компьютер стоимостью 19500 руб.
Цены на оборудование принимаются по прайс-листам фирмы
«SiM».
2) Затраты на приобретение программного обеспечения- в
данном дипломном использовалось программное обеспечение описанное в таблице 10:
Таблица 10.
Программное обеспечение
Наименование
|
Цена (руб.)
|
Microsoft Windows 7
|
11100
|
Microsoft Word XP
|
4500
|
Суммарная стоимость программного обеспечения по
дипломному проекту составляет 11100 руб.
Для базового варианта необходимо приобрести
программное обеспечение указанное в таблице 11:
Таблица 11. Программное обеспечение
Наименование
|
Цена (руб.)
|
Microsoft Windows XP
|
5000
|
Microsoft Word XP
|
1500
|
Microsoft Visual Studio 2010
|
13000
|
Суммарная стоимость программного обеспечения по
базовому варианту составляет - 19500 руб.
3) Оборотные средства - капитальные затраты в
оборотные средства, берутся из расчета 0,5-0,7 от капитальных затрат в основные
производственные фонды. Копф = 19500 руб. (для базового варианта) и
15500 руб. (для проектного варианта), следовательно:
Кос(проект) = 0,5*15500 = 7750 руб.
Кос(базовый вариант) = 0,5* 19500 = 9750
руб.
Сведем все полученные данные в таблице 12.
Таблица 12. Капитальные затраты, в руб.
Наименование затрат
|
Проект
|
Базовый вариант
|
Стоимость оборудования
|
Коб = 15500
|
Коб = 19500
|
Затраты на приобретение
программного обеспечения
|
Кпо = 11100
|
Кпо = 19500
|
Итого ОПФ Копф=Коб+Кпо
|
Копф=26600
|
Копф=39000
|
Оборотные средства Кос
= 0,5 ¸ 0,7 Копф
|
Кос = 7750
|
Кос = 9750
|
Всего капитальные затраты К
= Копф + Кос
|
К =34350
|
К =48750
|
Себестоимость продукции (работы) определяется по следующим
статьям расходов:
) Расходные материалы - учитывая специфику
выполняемых работ, данный вид затрат будет состоять из затрат на магнитные
носители (дискеты), бумагу (для вывода документации на печать) картридж (для
принтера) и прочий расходный материал (различные канцелярские товары,
необходимые в основном на начальных этапах разработки программного продукта,
которые будем измерять единицей комплект). Все материалы средства, которые были
затрачены на их покупку описаны в таблице 13.
Таблица 13. Расходные материалы
Наименование
|
Кол-во
|
Цена (руб.)
|
Кол-во
|
Цена (руб.)
|
|
Проектный вариант
|
Базовый вариант
|
Бумага
|
1 пачка
|
150
|
1 пачка
|
150
|
Картридж
|
1 шт.
|
400
|
1 шт.
|
400
|
Прочий расходный материал
|
_
|
100
|
_
|
100
|
Суммарная стоимость расходные материалы по проектному
варианту составляет - 650 руб.
Суммарная стоимость расходные материалы по базовому
варианту составляет - 650 руб.
2) Затраты на затраченную при разработке данного
продукта электроэнергию будут равны - потребляемая мощность компьютера,
умноженная на количество часов и на стоимость одного КВт/ч. В среднем тариф,
установленный энергетической комиссией г. Ульяновска для частных лиц составляет
2,16 руб. за 1 КВт/ч, при этом учитываем, что благодаря использованию уже
готовых программных решений в базовом варианте, предполагается сократить срок
разработки сократятся на 0,25. Следовательно затраты на электроэнергию будут
составлять:
Зт = 0,5 КВт * 960 часов * 2,16 руб. = 1037
руб. - проект;
Зт = 0,5 КВт * 720 часов * 2,16 руб. = 778
руб.- базовый проект;
) Основная заработная плата - средний разряд
работника примем за 7. По единой тарифной сетке по оплате труда работников
бюджетной сферы определим, что размер основной заработной платы программиста за
месяц составит 9000 рублей.
)Дополнительная заработная плата - дополнительная
заработная составляет 10% от основной заработной планы, следовательно:
Здоп = 0,1 * 9000 руб. = 900 руб. - проект;
Здоп = 0,1 * 9000 руб. = 900 руб. - базовый
вариант;
)Начисления на заработную плату (единый социальный
налог) - учитывая размер оплаты труда работника рассчитывается размер
отчислений на социальное страхование, куда входит единый социальный налог и
отчисления в фонд социального страхования (от несчастных случаев). В сумме
отчисления на социальное страхование составляют 29,6%, что равно:
првн = 9900 руб. * 0,296 = 2930,4 руб. -
проект;
првн= 9900 руб. * 0,296 = 2930,4 руб. -
базовый вариант;
) Амортизация оборудования - в ходе
изготовления программного продукта использовалось оборудование общей стоимостью
26600 руб. Расчёт амортизации на одно изделие (программный продукт) ведём по
формуле:
Ра=Куд*(На/100)
где Ра - расходы на амортизацию, руб.,
На- норма амортизации (На = 25%)
Куд=(К/Тшт) *Фэ
где К - общая стоимость оборудования, руб.,
Фэ - эффективный фонд использования оборудования, ч,
Тшт - суммарное время использования
оборудования и аппаратуры.
Примем следующие исходные данные: что Фэ =
2016ч (количество рабочих часов за 1 год, если принимать рабочий день восьми
часовой), Тшт = 960 ч, К = 26600 руб. Учитывая исходные данные и формулы (1) и
(2) получим следующие величины:
Куд= (26600 / 2016) *960 = 12666 руб. -
проект;
Куд= (39000 / 2016) *720 = 13928 руб. -
базовый вариант;
Ра = 12666 руб. * 0,25 = 3166 руб. -
проект;
Ра = 13928 руб. * 0,25 = 3482 руб. -
базовый вариант;
Для подсчёта себестоимости продукта необходимо все
предыдущие.
Расчётные данные объединить в таблице 14.
Таблица 14. Расчёт себестоимости работ
Наименование затрат
|
Проект
|
Базовый вариант
|
Затраты на сырьё, материалы
и покупные изделия
|
650
|
650
|
Затраты энергии на
технологические цели
|
1037
|
778
|
Основная заработная плата
(с учётом времени разработки)
|
45000
|
45000
|
Дополнительная заработная
плата (с учётом времени разработки)
|
3500
|
2625
|
Начисления на заработную
плату (с учётом времени разработки)
|
14650
|
11546
|
Амортизация оборудования
|
3166
|
3482
|
Полная себестоимость
|
68003
|
64081
|
Итоговые данные для вычисления экономического эффекта представлены на
табл. 15.
Таблица 15. Итоговые данные
Переменная
|
Проект
|
Базовый вариант
|
Себестоимость работ, C
|
68003
|
64081
|
Капитальные вложения, K
|
34350
|
48750
|
Нормативный коэффициент
эффективности капитальных вложений, Ен
|
0,3
|
Коэффициент
эквивалентности, β
|
-
|
1,276
|
Оценка экономического эффекта, получаемого за годовое функционирование:
Э
= (68003 + 34350 * 0,3) * 1,276 - (64081 + 48750 * 0,3) = 99921 - 78706 =21215
.3 Выводы
Полученный экономический эффект за одну единицу программного продукта
составил 21215 руб., который в соответствии со всеми затратами на производство
единичного программного продукта можно считать положительным.
Следовательно, её применение является выгодным, а сама разработка
позволяет снизить себестоимость решения поставленной перед предприятием.
Список
литературы
1. Chipman,
S. F., Schraagen, J. M., & Shalin, V. L. (2000) Introduction to cognitive
task analysis. In J. M Schraagen, S. F. Chipman & V. J. Shute (Eds.),
Cognitive Task Analysis (pp. 3-23). Mahwah, NJ: Lawrence Erlbaum Associates.
2. Clark,
R. E. (2006). Training aid for cognitive task analysis. Technical report
produced under contract ICT 53-0821-0137-W911NF-04-D-0005 from the Institute
for Creative Technologies to the Center for Cognitive Technology, University of
Southern California.
. Clark,
R. E., & Estes, F. (1996) Cognitive task analysis, International Journal of
Educational Research, 25, 403-417.
. Feldon,
D. F., & Clark, R. E. (2006). Instructional implications of cognitive task
analysis as a method for improving the accuracy of experts’ self-report. In G.
Clarebout & J. Elen (Eds.), Avoiding simplicity, confronting complexity:
Advances in studying and designing (computer-based) powerful learning
environments (pp. 109-116). Rotterdam, The Netherlands: Sense Publishers.
. http://mentalmodels.mitre.org/cog_eng/ce_methods_I.htm#conceptual_graph
. Shute,
V., Sugrue, B., & Willis, R. E. "Automating Cognitive Task
Analysis." In Cognitive Technologies for Knowledge Assessment Symposium
Proceedings, AERA, Chicago, IL: 1997.
. Shute,
V. J. & Torreano, L. A. "Formative Evaluation of an Automated
Knowledge Elicitation and Organization Tool." In Authoring Tools for
Advanced Technology Learning Environments: Toward Cost-Effective Adaptive,
Interactive, and Intelligent Educational Software. T. Murray, S. Blessing, &
S. Ainsworth, Eds. Kluwer: 2002.
. Shute,
V. J., Torreano, L. A., & Willis, R. E. DNA: Providing the Blueprint for
Instruction. In Chipman, Shalin & Schraagen, Eds. Cognitive Task Analysis.
New Jersey: Lawrence Erlbaum, 2000. 71-86.
. http://www.cs.bath.ac.uk/~hci/TKS/aboutTKS.html
. Hamilton,
F. "Predictive Evaluation Using Task Knowledge Structures." In
Proceedings of CHI '96 (1996).
. Hourizi,
R. & Johnson, P. "Unmasking Mode Errors: A New Application of Task
Knowledge Principles to the Knowledge Gaps in Cockpit Design." Proceedings
of Interact '01, The Eighth IFIP Confernece on Human Computer Interaction,
Tokyo (2001).
. Johnson,
H. & Johnson, P. "Task Knowledge Structures: Psychological Basis and
Integration into System Design." Acta Psychologica Vol 78 (1991): 3-26.
. Johnson,
P., Johnson, H., and Hamilton, F. Getting the Knowledge into HCI: Theoretical
and Practical Aspects of Task Knowledge Structures. In Chipman, Shalin &
Schraagen, Eds. Cognitive Task Analysis. New Jersey: Lawrence Erlbaum, 2000.
201-214.
. Keep,
J. & Johnson, H. "HCI and Requirements Engineering - Generating
Requirements in a Courier Despatch Management System." SIGCHI Vol 29.1
(1997).
. Wild,
P. J., Johnson, P., & Johnson, H. "An Hour in the Life: Towards Requirements
for Modeling Multiple Task Work." To appear in Proceeding of CHI 2003. TKS
is used to understand multi-tasking.
. http://en.wikipedia.org/wiki/Task_analysis
. Aiken,
L. R. (1982). Writing multiple choice items to measure higher order educational
objcctivcs. Educational and Psychological Measurement, 42, 3, 803-806.
. Aiken,
L. R. (1994). Psychological testing and assessment (8th edition).
Boston, MA: Allynand Bacon.
. Bejar,
I. I., Chaffin, R. & Embretson, S. E. (1991). Cognitive and psychometric
analysis of analogical problem solving. New York, NY: Springer-Verlag.
. Berk,
R.A. (Ed., 1984). A guide to criterion-referenced test construction.
Baltimore, MD: The Johns Hopkins University Press.
. Canot,
J. A. (1987). Developing multiple choice test items. Training and
Development Journal, 41,5,85-88.
22. Ellis,
J. A., & Wulfcck, W. H. (1982). Handbook for testing in Navy schools (NPRDC SR 83-2). San
Diego, CA: Navy Personnel Research and Development Center.
. Embretson,
S. E. (1985). Test design: Developments in psychology andpsychometrics. Orlando,
FL: Academic Press, Inc.
24. Goldstein,
I. L., Zedeck, S., & Schneider, B. (1992). An exploration of the job analysis-
content validity process. In N. Schmitt and W. C. Borman (Eds), Personnel
Selection in Organizations. San Francisco, CA: Jossey-Bass Publishers, (pp.
3-34).
. Gronlund,
N. E. (1993). How to make achievement tests and assessments (5th
edition). Boston, MA: Allyn and Bacon.
. Haladyna,
Т. M. (1994). Developing
and validating multiple-choice test items. Hillsdale, NJ: Lawrence Erlbaum
Associates.
. Susan
G. Hutchins, Peter L. Pirolli, and Stuart K. Card. A NEW PERSPECTIVE ON USE OF
THE CRITICAL DECISION METHOD WITH INTELLIGENCE ANALYSTS. // URL:.
http://www.dtic.mil/cgi-bin/GetTRDoc?Location=U2&doc=GetTRDoc.pdf&AD=ADA466054
. Flanagan,
J.C. (1954), The critical incident technique, Psychol. Bull., 51,
327-358.
. Hoffman,
R.R. (1987), The problem of extracting the knowledge of experts from the
perspective of experimental psychology, AI Mag., 8, 53-67.
. Hoffman,
R.R., Crandall, B.W., and Shadbolt, N.R. (1998), Use of the critical decision
method to elicit expert knowledge: a case study in cognitive task analysis
methodology, Hum. Factors, 40, 254-276.
. Hutton,
R.J.B. and Militello, L.G. (1996), Applied cognitive task analysis (ACTA): a
practitioner's window into skilled decision making, in Engineering
Psychology and Cognitive Ergonomics: Job Design and Product Design, Vol. 2,
Harris, D., Ed., Ashgate, Aldershot, U.K., pp. 17-23.
. Klein,
G. and Militello, L. (in press), The knowledge audit as a method for cognitive
task analysis, in How Professionals Make Decisions, Brehmer, B.,
Lipshitz, R., and Montgomery, H., Eds., Lawrence Erlbaum Associates, Mahwah,
NJ.
34. ДОРОФЕЮК
А.А., ПОКРОВСКАЯ И.В., ЧЕРНЯВСКИЙ А.Л. Экспертные методы анализа и
совершенствования систем управления // Автоматика и телемеханика. 2004. №10. С.
172 - 188.
. МАКСИМОВ
В.И., КОРНОУШЕНКО Е.К., РАЙКОВ А.Н. Информационные системы и когнитивные модели
интеллектуальной поддержки принятия государственных решений/ В монографии:
Новая парадигма развития России (Комплексное исследование проблем устойчивого
развития). - М.: Издательства «Академия», МГУК, - 1999. - С. 328-340.
. АНИСИМОВ
О.С., ЖИРКОВ О.А., ЕФРЕМОВ В.А. От когнитивного ситуационного центра к
электронному деловому театру (тезисы доклада) / Элект. СASC-2006, Шестая
Международная конференция “Когнитивный анализ и управление развитием
ситуацией”. Институт проблем управления РАН, М.: 11-12 октября, 2006, www.mtas.ru.
37. ЖИРКОВ
О.А. Электронный деловой театр для обучения коллективному принятию решений в
условиях неопределенности. Конгресс “Информационные технологии в образовании”
“ИТО-2006”, М.: 6-10 ноября, 2006, www.ito.su.
38. David
H. Jonassen, Martin Tessmer, Wallace H. Hannum. Task analysis methods for
instructional design. - Routledge, 1999. - 275 pp.
39. Gitomer,
D. H., Steinberg, L. S., & Mislevey, R. J. (1994). Diagnostic assessment of
troubleshooting skill in an intelligent tutoring system. Tech Report
RR-94-21-ONR. Arlington, VA: Office of Naval Research.
40. Halt,
E. P., Gott, S. P., & Pokorny, R. A. (1995). A procedural guide to cognitive task
analysis: The PARI methodology. Tech. Report AL/HR-TR-1995-0108. Brooks Air
Force Base, TX: Human Resources Directorate.
. Jonassen,
D. H. (1997). Instructional design model for well-structured and ill-structured
problem-solving learning outcomes. Educational Technology: Research and
Development 45 (1).
42. Lajoie,
S. P., & Lesgold, A. (1992). Apprenticeship training in the workplace: Computer-coached
practice environment as a new form of apprenticeship. In M. J. Farr & J.
Psotka (Eds.), Intelligent instruction by computer: Theory and practice, pp.
15-36.. Washington, DC: Taylor & Francis.
43. Means,
В., & Gott, S. P. (1988). Cognitive task analysts as a basis for tutor
development: Articulating abstract knowledge representations. In J. Psotka, L.
D. Massey, & S. A. Mutter (Eds.), Intelligent tutoring systems: Lessons
learned. Hillsdale, NJ: Lawrence Erlbaum Associates.
44. Munsie,
S. D., & LaJoie, S. P. (1997, March). A collaborative approach to cognitive
task analysis: Extracting expert knowledge using PARI-RT. Paper presented at
the annual meeting of the American Educational Research Association, Chicago,
IL.
Приложение
Pari.Analysis.cs
using System.Linq;System.Text;SupportLibrary.PARI {_Analysis
{Problem{ get; set; }<Pari_Variant> variants =
newList<Pari_Variant>();Pari_Analysis () {
}Pari_Analysis(string constructionString) {[] parts =
constructionString.Split(newchar[] { '|' });= parts[0];(int i = 1; i <
parts.Length; i++).Add(newPari_Variant(parts[i]));
}Serialize() {result = Problem + '|';(int i = 0; i <
variants.Count; i++)+= variants[i].Serialize() + '|';=
result.Remove(result.Length - 1);result;
}<Pari_Variant> Variants { get {
returnnewList<Pari_Variant> (variants.ToArray()); } }AddVariant(string
theme, string action, string precursor, string result, string interpretation)
{.Add(newPari_Variant(theme, action, precursor, result, interpretation));
}AddVariant(Pari_Variant variant) {.Add(variant);
}RemoveVariant(int index) {.RemoveAt(index);
}RemoveVariant(string theme) {_Variant variant = (from v in
variants where v.Theme == theme select v).FirstOrDefault();.Remove(variant);
}ReplaceVariant(int index, string theme, string action,
string precursor, string result, string interpretation) {(index);.Insert(index,
newPari_Variant(theme, action, precursor, result, interpretation));
}
}
}
Pari.AnalysisForm.cs
using System;System.Windows.Forms;SupportLibrary.PARI
{_AnalysisForm : Form {_Variant PariVariant;_Variant Variant
{ get { return PariVariant; } }Pari_AnalysisForm(Pari_Variant
PariVariant) {();.PariVariant = PariVariant;=
System.Windows.Forms.DialogResult.Cancel;_textBox.Text = PariVariant.Theme;();
}Fill() {_textBox.Text = PariVariant.SomeAction;_textBox.Text
= PariVariant.SomeResult;_textBox.Text =
PariVariant.SomePrecursor;_textBox.Text = PariVariant.SomeInterpretation;
}_Variant Pari_Variant {{ return PariVariant; }
}IsFilled() {((PariVariant.Theme == "") ||
(PariVariant.SomeAction == "") || (PariVariant.SomeResult ==
"") ||
(PariVariant.SomePrecursor == "") ||
(PariVariant.SomeInterpretation == ""));;
}ok_button_Click(object sender, EventArgs e) {(!IsFilled())
{.Show(this, "Заполните, пожалуйста, всеполя", "Ошибка!");;
}= System.Windows.Forms.DialogResult.OK;();
}cancel_button_Click(object sender, EventArgs e) {();
}variantText_textBox_Leave(object sender, EventArgs e)
{.Theme = variantText_textBox.Text;
}action_textBox_Leave(object sender, EventArgs e)
{.SomeAction = action_textBox.Text;
}precursor_textBox_Leave(object sender, EventArgs e)
{.SomePrecursor = precursor_textBox.Text;
}result_textBox_Leave(object sender, EventArgs e)
{.SomeResult = result_textBox.Text;
}interpretation_textBox_Leave(object sender, EventArgs e)
{.SomeInterpretation = interpretation_textBox.Text;
}
}
}
Pari.Variant.cs
using
System;System.Collections.Generic;System.Linq;System.Text;SupportLibrary.PARI
{_Variant {Theme { get; set; }methodsCount = 4;<string> methods =
newList<string>(newstring[4] { "", "", "",
""});Pari_Variant() {
}Pari_Variant(string serialized) {[] parts =
serialized.Split(newchar[] { '@' });(parts.Count() != 5)("Количество строковых описаний методов
изменения идеи должно быть равно " + methodsCount.ToString() +
". Методам должно
предшествовать строка с подробным описанием проблемы", "serialized");
Theme
= parts[0];
for (int i = 1; i < parts.Length; i++)[i - 1] = parts[i];
}Pari_Variant(string theme, string action, string precursor,
string result, string interpretation)
{= theme;[0] = action;[1] = precursor;[2] = result;[3] =
interpretation;
}GetMethod(int index) {methods[index];
}SetMethod(int index, string method) {
methods[index] = method;
}
///<summary>
///Что вы сделаете для решения проблемы?
///</summary>SomeAction {{ return methods[0]; }
set { methods[0] = value; }
}
///<summary>
///Почему вы выполните данное действие? Введите предпосылки.
///</summary>SomePrecursor {{ return methods[1]; }{
methods[1] = value; }
}
///<summary>
///Что принесет результат в отношении определения места повреждения?
///</summary>SomeResult {{ return methods[2]; }
set { methods[2] = value; }
}
///<summary>
///Что результат говорит о проблеме?
///</summary>SomeInterpretation {{ return methods[3];
}{ methods[3] = value; }
}Serialize() {result = Theme + '@';(int i = 0; i <
methods.Count; i++)+= methods[i] + '@';= result.Remove(result.Length -
1);result;
}
}
}
Pari.VariantEditForm.cs
using
System;System.Collections.Generic;System.Windows.Forms;SupportLibrary.PARI
{(int index);(int index);_VariantEditForm : Form {_Analysis
pari;<Pari_VariantUserControl> variantUCs;Pari_VariantEditForm(Pari_Analysis
pari) {();.pari = pari;= System.Windows.Forms.DialogResult.Cancel;_textBox.Text
= pari.Problem;();
}_Analysis PARI
{ get { return pari; } }FillVariants() {<Pari_Variant>
variants = pari.Variants;= newList<Pari_VariantUserControl>(variants.Count);(int
i = 0; i < variants.Count; i++).Add(newPari_VariantUserControl(variants[i],
i, DeleteVariant,
EditVariant));_panel.Controls.Clear();_panel.Controls.AddRange(variantUCs.ToArray());
}ok_button_Click(object sender, EventArgs e) {(pari.Problem
== "") {.Show(this, "Заполните, пожалуйста, проблему.", "Ошибка!");;
}= System.Windows.Forms.DialogResult.OK;();
}cancel_button_Click(object sender, EventArgs e) {();
}DeleteVariant(int index) {result = MessageBox.Show("Вы действительно хотите
удалить этот вариант?", "Подтверждение удаления", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2);(result ==
System.Windows.Forms.DialogResult.Yes) {.RemoveVariant(index);();
}
}EditVariant(int index) {_AnalysisForm analysisForm =
newPari_AnalysisForm(pari.Variants[index]);(analysisForm.ShowDialog() ==
System.Windows.Forms.Dialog Result.OK)();
}add_button_Click(object sender, EventArgs e) {_AnalysisForm
analysisForm = newPari_Analysis Form(newPari_Variant("",
"", "", "",
""));(analysisForm.ShowDialog() == System.Windows.Forms.Dialog
Result.OK) {.AddVariant(analysisForm.Variant);();
}
}problem_textBox_Leave(object sender, EventArgs e) {.Problem
= problem_textBox.Text;
}
}
}
Pari.VariantUserControl.cs
using System;System.Windows.Forms;SupportLibrary.PARI
{_VariantUserControl : UserControl {Index { get; set; }_Variant
variant;delete;edit;Pari_VariantUserControl(Pari_Variant variant, int index,
DeleteVariant deleteAction, EditVariant editAction) {();.Text = variant.Theme;.variant
= variant;= index;= deleteAction;= editAction;
}edit_button_Click(object sender, EventArgs e) {(Index);.Text
= variant.Theme;
}remove_button_Click(object sender, EventArgs e) {(Index);
}
}
TAPPS.Form.cs
using System;System.Collections.Generic;System.Windows.Forms;SupportLibrary.TAPPS
{(int index);(int index);_Form : Form {_Analysis
tapps;<TAPPS_VariantUserControl> variantUCs;TAPPS_Form(TAPPS_Analysis
tapps) {();.tapps = tapps;= System.Windows.Forms.DialogResult.Cancel;_textBox.Text
= tapps.Problem;();
}_Analysis TAPPS { get { return tapps; } }FillVariants()
{<TAPPS_Variant> variants = tapps.Variants;=
newList<TAPPS_VariantUserControl>(variants.Count);(int i = 0; i <
variants.Count; i++).Add(newTAPPS_VariantUserControl(variants[i], i, Delete
Variant,
EditVariant));_panel.Controls.Clear();_panel.Controls.AddRange(variantUCs.ToArray());
}ok_button_Click(object sender, EventArgs e) {(tapps.Problem
== "") {.Show(this, "Заполните, пожалуйста, проблему.", "Ошибка!");;
}= System.Windows.Forms.DialogResult.OK;();
}cancel_button_Click(object sender, EventArgs e) {();
}order_button_Click(object sender, EventArgs e)
{.OrderVariants();();
}DeleteVariant(int index) {result = MessageBox.Show("Вы действительно хотите
удалить этот вариант?", "Подтверждение удаления", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2);(result ==
System.Windows.Forms.DialogResult.Yes) {.RemoveVariant(index);();
}
}EditVariant(int index) {_AnalysisForm editForm =
newTAPPS_AnalysisForm tapps.Variants[index]);(editForm.ShowDialog() ==
System.Windows.Forms.DialogResult.OK)();
}add_button_Click(object sender, EventArgs e) {_AnalysisForm
editForm = newTAPPS_AnalysisForm(newTAPPS_Variant("",
newList<string>()));(editForm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{.AddVariant(editForm.Variant);();
}
}problem_textBox_Leave(object sender, EventArgs e) {.Problem
= problem_textBox.Text;
}
}
}
TAPPS.Variant.cs
using
System;System.Collections.Generic;System.Linq;System.Text;SupportLibrary.TAPPS
{_Variant {<string> Steps;Name { get; set; }StepsSum;TAPPS_Variant(string
constructionString) {= newList<string>();[] parts =
constructionString.Split(newchar[] { '@' });= parts[0];(int i = 1; i <
parts.Length; i++).Add(parts[i]);= Steps.Count;
}GetConstructionString() {result = Name + '@' +
GetString(Steps);result;
}GetString(List<string> list) {result =
"";(list.Count == 0)result;(int i = 0; i < list.Count; i++)+=
list[i] + "@";= result.Remove(result.Length - 1);result;
}TAPPS_Variant(string name, string steps)
{= name;(steps);
}TAPPS_Variant(string name, List<string> steps)
{= name;(steps);
}SetSteps(List<string> steps) {.Steps = steps;.StepsSum
= Steps.Count;
}SetSteps(string steps) {.Steps =
GetRecordsList(steps);.StepsSum = Steps.Count;
}<string> GetRecordsList(string input) {[] lines =
input.Split(newchar[] { '@' });<string> result =
newList<string>();(int i = 0; i < lines.Length;
i++).Add(lines[i]);result;
}<string> GetSteps() {Steps;
}GetSumm() {Steps.Count;
}Compare(TAPPS_Variant a, TAPPS_Variant b) {b.StepsSum -
a.StepsSum;
}
}
}
TAPPS.Analysis.csSystem;System.Collections.Generic;System.Linq;System.Text;SupportLibrary.TAPPS
{_Analysis {Problem { get; set; }<TAPPS_Variant> variants =
newList<TAPPS_Variant>();TAPPS_Analysis () {
}TAPPS_Analysis(string constructionString) {[] parts =
constructionString.Split(newchar[] { '|' });= parts[0];result =
"";(int i = 1; i < parts.Length; i++)+=
parts[i];.Add(newTAPPS_Variant(result));
}Serialize() {result = Problem + '|';(int i = 0; i <
variants.Count; i++)+= variants[i].GetConstructionString() + '|';=
result.Remove(result.Length - 1);result;
}<TAPPS_Variant> Variants { get {
returnnewList<TAPPS_Variant>(variants.ToArray()); } }AddVariant(string
name, List<string> steps) {.Add(newTAPPS_Variant(name, steps));
}AddVariant(string name, string steps)
{.Add(newTAPPS_Variant(name, steps));
}AddVariant(TAPPS_Variant variant) {.Add(variant);
}RemoveVariant(int index) {.RemoveAt(index);
}RemoveVariant(string name) {_Variant variant = (from v in
variants where v.Name == name select v).FirstOrDefault();.Remove(variant);
}ReplaceVariant(int index, string name, string steps)
{(index);.Insert(index, newTAPPS_Variant(name, steps));
}OrderVariants() {<TAPPS_Variant> variantComparer =
newComparison <TAPPS_Variant> (TAPPS_Variant.Compare);.Sort(variantComparer);
}
}
TAPPS.AnalysisForm.csSystem;System.Collections.Generic;System.Windows.Forms;SupportLibrary.TAPPS
{_AnalysisForm : Form {_Variant variant;oldCellValue;_Variant Variant
{ get { return variant; } }TAPPS_AnalysisForm(TAPPS_Variant
variant) {();.variant = variant;();= System.Windows.Forms.DialogResult.Cancel;
}FillDataGrid(DataGridView grid, List<string> list)
{(int i = 0; i < list.Count; i++)
{.Rows.Add(newDataGridViewRow());.Rows[i].Cells[0].Value = list[i];
}
}FillGrids() {_textBox.Text =
variant.Name;(steps_dataGridView, variant.GetSteps());
}<string> GetDataFromGrid(DataGridView grid)
{.Focus();<string> result = newList<string>();(int i = 0; i <
grid.Rows.Count - 1; i++) {.Add(grid[0, i].Value.ToString());
}result;
}ok_button_Click(object sender, EventArgs e)
{(variantText_textBox.Text == "") {.Show(this, "Заполните, пожалуйста, имяучастника.", "Ошибка!");;
}.Name =
variantText_textBox.Text;.SetSteps(GetDataFromGrid(steps_dataGridView));=
System.Windows.Forms.DialogResult.OK;();
}cancel_button_Click(object sender, EventArgs e) {=
System.Windows.Forms.DialogResult.Cancel;();
}steps_dataGridView_CellBeginEdit(object sender,
DataGridViewCellCancelEventArgs e) {(e.ColumnIndex == 1) {value = ((DataGridView)sender)[e.ColumnIndex,
e.RowIndex].Value;= (value == null) ? "" : value.ToString();
}
}steps_dataGridView_CellEndEdit(object sender,
DataGridViewCellEventArgs e) {parseResult = 0;(e.ColumnIndex == 1)
{(!Int32.TryParse((string)((DataGridView)sender)[e.ColumnIndex,
e.RowIndex].Value, out parseResult)) {
((DataGridView)sender)[e.ColumnIndex, e.RowIndex].Value =
oldCellValue;
}
}
}System;System.Collections.Generic;System.Windows.Forms;SupportLibrary.TAPPS
{_AnalysisForm : Form {_Variant variant;oldCellValue;_Variant Variant
{ get { return variant; } }TAPPS_AnalysisForm(TAPPS_Variant
variant) {();.variant = variant;();= System.Windows.Forms.DialogResult.Cancel;
}FillDataGrid(DataGridView grid, List<string> list)
{(int i = 0; i < list.Count; i++) {.Rows.Add(newDataGridViewRow());.Rows[i].Cells[0].Value
= list[i];
}
}FillGrids() {_textBox.Text =
variant.Name;(steps_dataGridView, variant.GetSteps());
}<string> GetDataFromGrid(DataGridView grid)
{.Focus();<string> result = newList<string>();(int i = 0; i <
grid.Rows.Count - 1; i++) {.Add(grid[0, i].Value.ToString());
}result;
}ok_button_Click(object sender, EventArgs e)
{(variantText_textBox.Text == "") {.Show(this, "Заполните, пожалуйста, имяучастника.", "Ошибка!");;
}.Name = variantText_textBox.Text;.SetSteps(GetDataFromGrid(steps_dataGridView));=
System.Windows.Forms.DialogResult.OK;();
}cancel_button_Click(object sender, EventArgs e) {=
System.Windows.Forms.DialogResult.Cancel;();
}steps_dataGridView_CellBeginEdit(object sender,
DataGridViewCellCancelEventArgs e) {(e.ColumnIndex == 1) {value =
((DataGridView)sender)[e.ColumnIndex, e.RowIndex].Value;= (value == null) ?
"" : value.ToString();
}
}steps_dataGridView_CellEndEdit(object sender,
DataGridViewCellEventArgs e) {parseResult = 0;(e.ColumnIndex == 1)
{(!Int32.TryParse((string)((DataGridView)sender)[e.ColumnIndex,
e.RowIndex].Value, out parseResult)) {
((DataGridView)sender)[e.ColumnIndex, e.RowIndex].Value =
oldCellValue;
}
}
}
TAPPS_VariantEditUserControl.cs
using System;System.Windows.Forms;SupportLibrary.TAPPS
{_VariantUserControl : UserControl {Index {get; set;}_Variant
variant;delete;edit;TAPPS_VariantUserControl(TAPPS_Variant variant, int index,
DeleteVariant deleteAction, EditVariant editAction)
{();.Text = variant.Name;.variant = variant;= index;=
deleteAction;= editAction;_label.Text = "S: " +
variant.GetSumm().ToString();
}edit_button_Click(object sender, EventArgs e)
{(Index);.Text = variant.Name;
}remove_button_Click(object sender, EventArgs e)
{(Index);
}
}
}
Остальной код библиотеки
.cs
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;DecisionSupportLibrary
{: Form
{result = -1;Result { get { return result; } }DeletedEntries
{
{(deleted.Count == 0)"";result = "";(int
i = 0; i < deleted.Count; i++)+= deleted[i].Item1 + '#' +
deleted[i].Item2.ToString() + '#';= result.Remove(result.Length - 1);result;
}
}LeftEntries
{
{(history.Count == 0)"";result = "";(int
i = 0; i < history.Count; i++)+= history[i].Item1 + '#' +
history[i].Item2.ToString() + '#';= result.Remove(result.Length - 1);result;
}
}<Tuple<string, int>> history, deleted =
newList<Tuple<string,int>>();HistoryEntriesForm(string
historyEntries)
{();[] parts = historyEntries.Split(newchar[] { '#' });=
newList<Tuple<string, int>>(parts.Length / 2);(int i = 0; i <
parts.Length / 2; i++).Add(newTuple<string,int>(parts[2 * i],
Convert.ToInt32(parts[2 * i + 1])));(int i = 0; i < history.Count;
i++)_listBox.Items.Add(history[i].Item1);
}addNew_button_Click(object sender, EventArgs e)
{= 0;();
}edit_button_Click(object sender, EventArgs e)
{(historyEntries_listBox.SelectedIndex >= 0)
{= history[historyEntries_listBox.SelectedIndex].Item2;();
}
}delete_button_Click(object sender, EventArgs e)
{index = historyEntries_listBox.SelectedIndex;(index >= 0)
{(MessageBox.Show(this, "Вы действительно хотите
удалить эту запись из истории?", "Запрос подтверждения", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
System.Windows.Forms.DialogResult.Yes)
{.Add(history[index]);_listBox.Items.RemoveAt(index);.RemoveAt(index);
}
}
}historyEntries_listBox_SelectedIndexChanged(object sender,
EventArgs e)
{(historyEntries_listBox.SelectedIndex != -1)
{_button.Enabled = true;_button.Enabled = true;
}
{_button.Enabled = false;_button.Enabled = false;
}
}
}
}
ExtFunctions.cs
using
System;System.Text;SupportLibrary;SupportLibrary.PARI;SupportLibrary.TAPPS;FuncLib
{{_Analysis pari = newPari_Analysis();_Analysis tapps =
newTAPPS_Analysis();deletedHistoryEntries;historyEntries;[,] functions = {
{"GETDELETEDHISTORYENTRIES", "STRING",
"string GetDeletedHistoryEntries() - Получает строку со списком удаленных записей из истории мероприятий. Формат списка: \"Имя1#QAID1#Имя1#QAID2#...ИмяN#QAIDN\""},
{"POPONEDELETEDHISTORYENTRY", "INTEGER",
"int PopOneDeletedHistoryEntry() - Получает QAID первой удаленной из истории
записи и удаляет её из списка удалённых, уменьшая тем самым количество удаленных записей."},
{"GETDELETEDHISTORYENTRIESCOUNT",
"INTEGER", "int GetDeletedHistoryEntriesCount() - Получает количество удаленных записей
из истории."},
{"SETHISTORYENTRIES", "STRING",
"string SetHistoryEntries(string entries) - Задает список записей
истории. Возвращает старое
значение."},
{"GETHISTORYENTRIES", "STRING",
"string GetHistoryEntries(string entries) - Получает список записей
истории."},
{"SHOWHISTORYFORM", "INTEGER", "int ShowHistoryForm() - Показывает модальное окно, через
которое можно запросить создание нового мероприятия, редактирование, просмотр
или удаление уже созданного из истории."},
{"ADDTOHISTORY", "STRING", "string
AddToHistory(string history, string content, int qaid) - Добавляет запись
к истории
записей мероприятий."},
{"TRYUPDATETOPICINHISTORY", "STRING",
"string TryUpdateTopicInHistory(string history, string content, int qaid)
- Изменяет тему в истории мероприятий для только
что отредактированного мероприятия."},
{"SHOWMESSAGE", "STRING", "string
ShowMessage(string msg) - показывает сообщение."},
{"CONCATSTRINGS", "STRING", "string
ConcatStrings(string s1, string s2) - сливает
содержимое двух строк в одну и возвращает её как результат."},
{"PARI_SHOWMAINFORM", "INTEGER",
"int PARI_ShowMainForm() - показывает модальную форму редактирования PARI-анализа. Возвращает 0, если была нажата клавиша ОК. Возвращает 1, если
была нажата Отмена."},
{"PARI_GETSERIALIZED", "STRING", "string
PARI_GetSerialized() - получает сериализованный экземпляр PARI-анализа."},
{"PARI_DESERIALIZE", "STRING",
"string PARI_Deserialize(string serializedPari) - десериализует строку
в экземпляр PARI-анализа. Возвращает пустую строку, если всё
прошло в штатном режиме. В случае возникновения исключения возвращает строку с
исключением."},
{"PARI_SETNEW", "STRING", "string PARI_SetNew()
- задает новый экземпляр текущего PARI-анализа."},
{"TAPPS_SHOWMAINFORM", "INTEGER", "int
TAPPS_ShowMain Form() - показывает модальную форму редактирования
TAPPS-анализа. Возвращает 0, если была нажата клавиша ОК. Возвращает 1, если
была нажата Отмена."},
{"TAPPS_GETSERIALIZED", "STRING", "string
TAPPS_GetSerialized() - получает сериализованный экземпляр
TAPPS-анализа."},
{"TAPPS_DESERIALIZE", "STRING",
"string TAPPS_Deserialize(string serializedTapps) - десериализует строку
в экземпляр TAPPS-анализа. Возвращает пустую строку, если всё
прошло в штатном режиме. В случае возникновения исключения возвращает строку с
исключением."},
{"TAPPS_SETNEW", "STRING", "string
TAPPS_SetNew() - задает новый экземпляр текущего TAPPS-анализа."},
};LibName = "SupportLib";SHOWMESSAGE(string msg)
{.Windows.Forms.MessageBox.Show(msg);"";
}GetExceptionString(Exception exc) {exc.Message +
"\r\n" + exc.StackTrace;
}GetLibName() {LibName;
}[,] GetFunctions() { functions;
}
///<summary>
/// Сливает содержимое двух строк в одну и возвращает её как результат.
///</summary>CONCATSTRINGS(string s1, string s2) {s1 +
s2;
}
#region history
///<summary>
/// Получает строку со списком удаленных записей из истории мероприятий.
/// Формат списка: "Имя1#QAID1#Имя1#QAID2#...ИмяN#QAIDN"
///</summary>
///<returns></returns>GETDELETEDHISTORYENTRIES()
{;
}
///<summary>
/// Получает QAID первой удаленной из истории записи и удаляет её из
списка удалённых, уменьшая тем самым количество удаленных записей.
///</summary>
///<returns></returns>POPONEDELETEDHISTORYENTRY()
{= deletedHistoryEntries.Remove(0, deletedHistoryEntries.IndexOf('#') +
1);index = deletedHistoryEntries.IndexOf('#');(index == -1) {result =
Convert.ToInt32(deletedHistoryEntries);= "";result;
} else {QA_index = deletedHistoryEntries.Substring(0,
index);= deletedHistoryEntries.Remove(0, index + 1);result =
Convert.ToInt32(QA_index);
return result;
}
}
///<summary>
/// Получает количество удаленных записей из истории.
///</summary>
///<returns></returns>GETDELETEDHISTORYENTRIESCOUNT()
{count = (deletedHistoryEntries.Split(newchar[] { '#' }).Length / 2);
return count;
}
///<summary>
/// Задает список записей истории мероприятий.
///</summary>
///<param
name="entries"></param>SETHISTORYENTRIES(string entries)
{result = historyEntries;= entries;result;
}
///<summary>
/// Показывает модальное окно, через которое можно запросить создание
нового мероприятия, редактирование или просмотр уже созданного из истории,
запросить удаление созданных мероприятий.
///</summary>
///<returns>Возвращает -1 в случае отмены, возвращает 0 в случае
выбора кнопки создания нового мероприятия, возвращает значение >0 с индексом
QA-единицы, в которой хранятся данные истории.</returns>
publicstaticint SHOWHISTORYFORM() {historyForm =
newHistoryEntriesForm(historyEntries);.ShowDialog();=
historyForm.DeletedEntries;= historyForm.LeftEntries;historyForm.Result;
}
///<summary>
/// Получает список записей истории мероприятий.
///</summary>
///<returns>Возвращает список записей истории
мероприятий</returns>
publicstaticstring GETHISTORYENTRIES() {historyEntries;
}
///<summary>
/// Добавляет запись к истории записей мероприятий.
///</summary>
///<param name="history"></param>
///<param name="content"></param>
///<param name="qaid"></param>
///<returns></returns>ADDTOHISTORY(string
history, string content, int qaid)[] parts = content.Split(newchar[] { '|'
});history + (history == "" ? "" : "#") +
parts[0] + '#' + qaid;
}
///<summary>
/// Изменяет тему в истории мероприятий для только что отредактированного
мероприятия.
///</summary>
///<param name="history"></param>
///<param name="content"></param>
///<param name="qaid"></param>
///<returns></returns>TRYUPDATETOPICINHISTORY(string
history, string content, int qaid) {result = newStringBuilder();[] parts =
history.Split(newchar[] { '#' });(int i = 0; i < parts.Length / 2; i++) {(i
!= 0).Append('#');(int.Parse(parts[i * 2 + 1]) == qaid) {[] p =
content.Split(newchar[] { '|' });.Append(result.ToString() == "" ?
"" : "#");.Append(p[0] + '#');.Append(qaid);
} else {.Append(parts[i * 2]);.Append('#');.Append(parts[i *
2 + 1]);
}
}result.ToString();
}
#endregion;
#region PARI
///<summary>
/// Показывает модальную форму редактирования PARI-анализа.
///</summary>
///<returns>Возвращает 0, если была нажата клавиша ОК. Возвращает
1, если была нажата Отмена.</returns>
publicstaticint PARI_SHOWMAINFORM() {_VariantEditForm form =
newPari_VariantEditForm(pari);(form.ShowDialog() ==
System.Windows.Forms.DialogResult.OK)0;1;
}
///<summary>
///Получает сериализованный экземпляр PARI-анализа.
///</summary>
///<returns></returns>PARI_GETSERIALIZED()
{pari.Serialize();
}
///<summary>
///Десериализует строку
в экземпляр PARI-анализа.
///</summary>
///<param name="serializedPari">Строка с сериализованным экземпляром</param>
///<returns>Возвращает пустую строку, если всё прошло в штатном
режиме. В случае возникновения исключения возвращает строку с
исключением.</returns>
publicstaticstringPARI_DESERIALIZE(stringserializedPari) {
try {((serializedPari == "") || (serializedPari ==
null))= newPari_Analysis();= newPari_Analysis(serializedPari);"";
} catch (Exception exc) {GetExceptionString(exc);
}
}
///<summary>
/// Получает текущее количество вариантов-альтернатив в текущем
PARI-анализе
///</summary>
///<returns></returns>PARI_GETVARIANTSCOUNT()
{pari.Variants.Count;
}
///<summary>
/// Задаёт проблему PARI-анализа
///</summary>
///<returns>Возвращает старую проблему</returns>
publicstaticstring PARI_SETNEWPROBLEM(string problem) {result
= pari.Problem;.Problem = problem;result;
}
///<summary>
///Получает проблему PARI-анализа
///</summary>
///<returns>Возвращает старую тему</returns>SWOT_GETPROBLEM() {pari.Problem;
}
///<summary>
///Создает новый PARI-анализ
///</summary>
///<returns></returns>PARI_SETNEW() {=
newPari_Analysis();"OK";
}
#endregion
///<summary>
/// Показывает модальную форму редактирования TAPPS-анализа.
///</summary>
///<returns>Возвращает 0, если была нажата клавиша ОК. Возвращает
1, если была нажата Отмена.</returns>
publicstaticint TAPPS_SHOWMAINFORM() {_Form form =
newTAPPS_Form(tapps);(form.ShowDialog() ==
System.Windows.Forms.DialogResult.OK)0;1;
}
///<summary>
///Получает сериализованный экземпляр TAPPS-анализа.
///</summary>
///<returns></returns>TAPPS_GETSERIALIZED()
{tapps.Serialize();
}
///<summary>
///Десериализует строку
в экземпляр TAPPS-анализа.
///</summary>
///<param name="serializedTapps">Строка с сериализованным экземпляром</param>
///<returns>Возвращает пустую строку, если всё прошло в штатном режиме.
В случае возникновения исключения возвращает строку с
исключением.</returns>
publicstaticstringTAPPS_DESERIALIZE(stringserializedTapps) {
try {((serializedTapps == "") || (serializedTapps
== null))= newTAPPS_Analysis();= newTAPPS_Analysis(serializedTapps);"";
} catch (Exception exc) {GetExceptionString(exc);
}
}
///<summary>
/// Получает текущее количество вариантов-альтернатив в текущем
TAPPS-анализе
///</summary>
///<returns></returns>TAPPS_GETVARIANTSCOUNT()
{tapps.Variants.Count;
}
///<summary>
/// Задаёт проблему TAPPS-анализа
///</summary>
///<returns>Возвращает старую проблему</returns>
publicstaticstring TAPPS_SETNEWPROBLEM(string problem)
{result = tapps.Problem;.Problem = problem;result;
}
///<summary>
///Получает проблему TAPPS-анализа
///</summary>
///<returns>Возвращает старую тему</returns>TAPPS_GETPROBLEM() {tapps.Problem;
}
///<summary>
///Создает новый TAPPS-анализ
///</summary>
///<returns></returns>TAPPS_SETNEW() {=
newTAPPS_Analysis();"OK";
}
#endregion
}
}
Похожие работы на - Библиотека методов когнитивного анализа задач
|