Разработка комплекса программ автоматизации процесса регистрации и обработки данных для конкретной организации

 














Алгоритмические языки и программирование

Разработка комплекса программ автоматизации процесса регистрации и обработки данных для конкретной организации





Лазарев Евгений Николаевич


Содержание


Введение

Постановка технического задания и описание задач

Реализация программного обеспечения

Исходные коды программы и базы данных

Заключение

Глоссарий

Список использованных источников

Список сокращений


Введение


Программный продукт, о котором будет идти речь в данной работе, был создан и внедрен в производство в 2011 году на нефтехимическом предприятии ОАО «Акрилат» в городе Дзержинске. ОАО «Акрилат» является единственным в России производителем акриловых мономеров - акриловой кислоты, бутилакрилата, этилакрилата, метилакрилата с 2004 года. Поскольку предприятие молодое и энергичное, то и подход к решению проблем соответственно был с расчетом «на будущее». Перед программистами, работающими на предприятии, стояли задачи в основном связанные с переходом со старого программного обеспечения на новое, либо создание принципиально нового ПО. В данном, конкретном случае получилось так, что в связи со сменой ГОСТов, программа, занимающаяся оценкой прецизионности (точности) выполнения измерений различных физических величин, стала не актуальна, и расчеты, которые она выполняла, стали неверными. С 1 ноября 2002 года введен в действие ГОСТ Р ИСО 5725-2002 «Точность (правильность и прецизионность) методов и результатов измерений». Отечественные нормативные документы МИ 2335-2003 «Рекомендация. ГСИ. Внутренний контроль качества результатов количественного химического анализа» и МИ 2336-2002 «Рекомендация. ГСИ. Показатели точности, правильности, прецизионности методик количественного химического анализа. Методы оценки» адаптированы на соответствие требованиям ГОСТ Р ИСО 5725. Учитывая значимость нормативных документов для СНГ, их статус повышен до межгосударственных стандартов СНГ: РМГ 61-2002 (вместо МИ 2336) и РМГ 76-2003 (вместо МИ 2335). Однако внедрение этих нормативных документов (ГОСТ Р ИСО 5725, РМГ-61 и РМГ-76) в практическую деятельность испытательных лабораторий вызвало серьезные трудности, одной из причины которых явилась «ручная» статистическая обработка полученных результатов измерений и оценка их качества. Поскольку известно, что до 30% лабораторного времени тратится на «ручную» статистическую обработку полученных данных, то встал вопрос о создании собственного программного продукта, который будет включать в себя не только одну расчетную задачу, но и еще ряд расчетов, производимых ранее вручную, а так же вывод и печать отчетов, установленных центральной заводской лабораторией формах. В результате мы получили целый комплекс поставленных задач, а именно:

·оценка точности (правильности и прецизионности) результатов измерений относительного количественного химического анализа;

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

·контрольные карты для индивидуальных значений и скользящих размахов.

В первом случае, стандарт распространяется на методы измерений непрерывных (в смысле принимаемых значений в измеряемом диапазоне) величин, дающие в качестве результата измерений единственное значение. При этом единственное значение может быть результатом расчета, основанного на ряде измерений одной и той же величины. В стандарте представлены определения величин, которые характеризуют, с количественной точки зрения, способность метода измерений дать верный результат (правильность) или повторить полученный результат (прецизионность). Второй случай есть нечто иное, как получение количественных показателей качества (квантификация) посредством химического анализа, физического теста, сенсорной проверки и т.д. Цель контрольных карт - обнаружить неестественные изменения в данных из повторяющихся процессов и дать критерии для обнаружения отсутствия статистической управляемости. Процесс находится в статистически управляемом состоянии, если изменчивость вызвана только случайными причинами. При определении этого приемлемого уровня изменчивости любое отклонение от него считают результатом действия особых причин, которые следует выявить, исключить или ослабить. Все эти три задачи были объединены в один проект под названием «Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО «Акрилат».


Основная часть


Постановка технического задания и описание задач


В основе перечисленных задач лежит стандарт ГОСТ Р ИСО 5725-2002. Данный стандарт представляет собой полный аутентичный текст международного стандарта ИСО 5725. В нем регламентированы принятые в международной практике основные положения и определения понятий в области оценки точности методов и результатов измерений. Это чрезвычайно важно для процедур оценки соответствия при взаимном признании результатов испытаний и измерений. Так, в качестве основного вида деятельности для оценки качества работы лаборатории признаются межлабораторные сравнительные испытания. В шести стандартах ГОСТ Р ИСО 5725-2002 детально и конкретно изложены основные положения и определения показателей точности методов измерений и результатов измерений, способы экспериментальной оценки показателей точности и использования значений точности на практике. В соответствии с ГОСТ Р 5725-1-2002 - 5725-6-2002 в описании точности количественного химического анализа используется три термина: прецизионность, правильность и точность. В основе требований к программному обеспечению лежит:

·многопользовательский (сетевой) доступ в программу;

·дружественный и интуитивно-понятный пользовательский интерфейс;

·устойчивость к перебоям электроэнергии;

·совместимость программы с операционными системами семейства Windows 2000 и выше;

·обеспечить возможность работы программы на слабопроизводительных «старых» компьютерах под управление ОС Windows 9х;

·сроки выполнения: 2 месяца со дня передачи задания в службу автоматизированного управления предприятия.

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


Рис. 1


Если вся обработка данных происходит на стороне сервера, а клиент выполняет только функции интерфейса с пользователем, то клиентское приложение называют «тонким» клиентом. Если часть обработки данных происходит на стороне клиента - то «толстым» клиентом. Архитектура клиент-сервер включает в себя три основных компонента. Клиент - представляет собой любой процесс компьютера, который запрашивает сервис от сервера. Клиент также называется интерфейсным приложением. Клиентский процесс, базируется на графическом интерфейсе пользователя. Сервер - это компьютерный процесс, предоставляющий сервис клиентам. Сервер также называют серверным приложением. Серверный процесс характеризуется независимостью от местоположения, оптимизацией использования ресурсов, масштабируемостью и способностью к взаимодействию с другими системами. Коммуникационное промежуточное программное обеспечение передачи данных (ППО). Представляет собой любой компьютерный процесс, посредством которого клиенты и серверы взаимодействуют друг с другом. Это ПО называют еще уровнем коммуникаций. ППО обычно привязано к сети. Все клиентские запросы и ответы сервера передаются по сети в форме сообщений, в которых содержатся управляющая информация и данные. Клиентский процесс, базирующийся на графическом интерфейсе пользователя, запрашивает сервисы у серверного приложения. Клиентский процесс и серверный процесс взаимодействуют при помощи промежуточного программного обеспечения (ППО). Клиентский процесс посылает SQL-запрос через коммуникационное ППО. Коммуникационное ППО направляет SQL-запрос процессу сервера БД. Процесс сервера БД получает запрос, проверяет его и выполняет. ППО гарантирует, что сообщения между клиентами и серверами будут правильно маршрутизоваться и доставляться по нужному адресу. Логика обработки данных - это часть кода приложения, которая связана с обработкой данных внутри приложения. Данными управляет собственно СУБД. Для обеспечения доступа к данным используются язык запросов и средства манипулирования данными стандартного языка SQL. Теперь вернемся к теме нашей работы и рассмотрим описание и решение каждой задачи по отдельности. Настоящий стандарт описывает общие принципы планирования совместных межлабораторные экспериментов, предназначенных для количественной оценки прецизионности методов измерений. Детально описывает основной алгоритм количественной оценки прецизионности методов измерений в повседневной практике. Является руководством для персонала, имеющего отношение к планированию эксперимента, осуществлению и анализу результатов измерений. Предполагают, что при планировании и осуществлении эксперимента по оценке прецизионности соблюдены все принципы, установленные ГОСТ Р ИСО 5725-1. Основной метод предусматривает получение и использование одного и того же количества результатов измерений в каждой лаборатории при анализе проб (образцов), соответствующих одним и тем же уровням измеряемой характеристики (испытуемого параметра); т.е. имеется в виду сбалансированный эксперимент с однородными уровнями. Основной метод применяют к процедурам, которые были стандартизованы и регулярно используются во многих лабораториях. Исследования и расчет начинается с внесения в таблицу данных исходных результатов измерений представленной в табл.2.


Форма А - Рекомендуемая форма для сопоставления исходных данныхЛабораторияУровень12 j ...n-1n1 i x=ji L табл.2


Под лабораторией понимается строка i с данными, а под уровнем j - колонка. L - количество лабораторий, n - количество уровней для каждой лаборатории, единичный результат ji назовем пробой x. Итак, после того, как данные внесены мы начинаем расчет для каждой лаборатории, нам необходимо вычислить среднее значение проб:


;


далее рассчитываются показатели разброса (расхождения) в базовых элементах:


;


для анализа данных на наличие выбросов рекомендуется следующая методика. Для идентификации выбросов применяют критерии, приведенные в критериях Кохрена и критериях Граббса. Если значение меры, определяемой статистическим критерием (значением тестовой статистики), меньше (или равно) 5% критического значения тестовой статистики (критического значения при 5% уровне значимости), то тестируемую позицию признают корректной. Если значение тестовой статистики больше 5% критического значения и меньше (или равно) 1% критического значения, то тестируемую позицию называют квазивыбросом и отмечают одной звездочкой. Если значение тестовой статистики больше 1% критического значения, то тестируемую позицию называют статистическим выбросом и отмечают двумя звездочками. Далее проводят исследование с целью выяснения, могут ли квазивыбросы и/или статистические выбросы быть объяснены какой-либо технической ошибкой, например:

·ошибкой при выполнении измерения;

·ошибкой в расчетах;

·элементарной опиской при переписывании результата измерений;

·анализом не той пробы (образца).

В случае, когда ошибка появилась при расчетах или переписывании, сомнительный результат должен быть заменен правильным значением; когда ошибка являлась следствием анализа не той пробы, результат должен быть помещен в соответствующий ему базовый элемент. После того, как такого рода коррекция будет произведена, исследование на предмет квазивыбросов или выбросов должно быть повторено. В случае, если объяснение технической ошибки таково, что оно свидетельствует о невозможности замены сомнительного результата измерений, он должен быть исключен как «подлинный» выброс, не имеющий отношения к правильно проводимому эксперименту. Когда какие-либо квазивыбросы или статистические выбросы остаются необъясненными или исключенными в качестве принадлежащих к выпадающей лаборатории, квазивыбросы сохраняют в качестве корректных позиций, а статистические выбросы исключают, если только эксперт по статистике не решит оставить их, имея на это соответствующие основания. Критерий Кохрена предназначен для обработки внутрилабораторных расхождений результатов измерений и должен применяться в первую очередь, после чего должны быть приняты корректирующие меры, в случае необходимости, с повторением измерений (испытаний). Другой критерий (Граббса) главным образом предназначен для обработки межлабораторных расхождений, а также может использоваться (если n > 2) в случаях, когда проверка с применением критерия Кохрена вызвала подозрение в том, что высокая внутрилабораторная вариация обусловлена только одним из результатов измерений в базовом элементе. Критерий Кохрена - в настоящем стандарте предполагается, что между лабораториями существуют лишь небольшие различия во внутрилабораторных расхождениях. Опыт, однако, показывает, что дело обстоит не всегда так, поэтому для проверки справедливости этого предположения нужна количественная оценка. Для данной цели могли бы быть использованы несколько критериев, но был выбран критерий Кохрена. Для совокупности из L стандартных отклонений , рассчитанных исходя из одного и того же количества (n) результатов испытаний в базовых элементах, тестовая статистика Кохрена имеет вид:


;


где - наивысшее значение стандартного отклонения в совокупности:

·в случае, если значение тестовой статистики меньше (или равно) 5% критического значения, тестируемую позицию признают корректной;

·в случае, если значение тестовой статистики больше 5% критического значения и меньше (или равно) 1% значения, тестируемую позицию называют квазивыбросом и отмечают одной звездочкой;

·в случае, если значение тестовой статистики больше 1% критического значения, тестируемую позицию называют статистическим выбросом и отмечают двумя звездочками.

Критические значения для критерия Кохрена представлены в приложении А (таблица 1). Строго говоря, критерий Кохрена применяют лишь в случаях, когда все стандартные отклонения исходят из одного и того же количества (n) результатов измерений, полученных в условиях повторяемости. В фактических случаях это количество может меняться за счет недостающих или исключенных данных. В настоящем стандарте, тем не менее, предполагается, что в должным образом организованном эксперименте такие изменения в количестве результатов измерений из расчета на базовый элемент будут ограничены и ими можно пренебречь, то есть критерий Кохрена можно использовать применительно к количеству результатов измерений n, имеющих место в большинстве базовых элементов. При помощи критерия Кохрена проверяют только наивысшее значение в совокупности стандартных отклонений, и поэтому такая проверка является односторонней. Разброс в дисперсиях может также, разумеется, проявляться в наинизших значениях стандартных отклонений. Однако на малые значения стандартного отклонения может оказывать очень сильное влияние степень округления исходных данных, и поэтому они не очень надежны. Кроме того, представляется нецелесообразным отвергать данные лаборатории из-за того, что ею достигнута более высокая прецизионность в результатах измерений по сравнению с другими лабораториями. Поэтому критерий Кохрена считают адекватным. Если наивысшее значение стандартного отклонения классифицировано как выброс, то оно должно быть исключено, а проверка с использованием критерия Кохрена может быть повторена на оставшихся значениях. Следует заметить, что процедура повторения может привести к излишним исключениям данных в случаях, когда нормальное распределение, принятое за основу, не является достаточно хорошей аппроксимацией. Повторное применение критерия Кохрена предлагается здесь лишь в качестве полезного средства ввиду отсутствия статистического критерия, разработанного для проверки нескольких выбросов вместе. Критерий Кохрена не разрабатывался для данной цели, и выводы при его повторном применении необходимо делать с большой осторожностью. Так же осторожно нужно использовать критерий Кохрена в случаях, когда результаты, характеризующиеся высокими значениями стандартных отклонений (в особенности если они имеют место в пределах лишь одного из уровней), представлены двумя или тремя лабораториями. С другой стороны, если на различных уровнях в пределах одной лаборатории обнаруживается несколько квазивыбросов или статистических выбросов, то это может быть веским указанием на то, что внутрилабораторная дисперсия слишком высока, и данные этой лаборатории должны быть полностью исключены. Далее идет расчет по критерию Граббса с проверкой на один или два выброса. Для проверки, не является ли выбросом наибольшая величина из х расположенных в порядке возрастания совокупности данных xi (i = 1, 2, ..., L) вычисляют статистику Граббса Gp по формуле:


;

Где ;

;


для проверки значимости наименьшего результата наблюдения вычисляют тестовую статистику:


;


·в случае, если значение тестовой статистики меньше (или равно) 5% критического значения, тестируемую позицию признают корректной;

·в случае, если значение тестовой статистики больше 5% критического значения и меньше (или равно) 1% критического значения, тестируемую позицию называют квазивыбросом и отмечают одной звездочкой;

·в случае, если значение тестовой статистики больше 1% критического значения, тестируемую позицию называют статистическим выбросом и отмечают двумя звездочками.

Чтобы проверить, могут ли два наибольших результата наблюдений быть выбросами, вычисляют статистику Граббса:

;

Где ;

;

;


соответственно, чтобы проверить два наименьших результата наблюдений, вычисляют статистику Граббса:


;

Где ;

;


при анализе эксперимента по оценке прецизионности критерий Граббса может быть применен к следующим случаям. Анализ средних значений базовых элементов для заданного уровня j. Сначала к средним значениям базовых элементов уровня j применяют критерий Граббса для одного выброса, как описано выше. Если обнаруживается, что среднее значение базового элемента является выбросом, необходимо исключить его и повторить проверку для другого экстремального среднего значения базового элемента (например, если наивысшее значение является выбросом, то тогда следует проверить наинизшее значение, а наивысшее значение при этом исключить), однако при этом не следует применять критерий Граббса для двух выбросов. Этот последний критерий нужно применить в случае, если при проверке с использованием критерия Граббса для одного выброса обнаруживается, что средние значения базовых элементов не имеют выбросов. Анализ исходных данных в пределах базового элемента, для которого в результате проверки с использованием критерия Кохрена обнаруживается сомнительность значения стандартного отклонения. Критические значения для критерия Граббса представлены в приложении А (таблица 2). Далее производим расчет общего среднего значения и дисперсий. Производим расчет общего среднего значения:


;


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


;


межлабораторная дисперсия равна:

;

Где;

;


для частного случая, когда все приведенные формулы упрощаются и имеют вид:


;

;


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


;

;

;

;

;


дисперсия повторяемости равна:


;


межлабораторная дисперсия равна:


;


дисперсия воспроизводимости составит:


;


среднеквадратичная ошибка (СКО) повторяемости:


;


среднеквадратичная ошибка (СКО) воспроизводимости:

;


предел повторяемости:


;


предел воспроизводимости:


;


где - коэффициенты критического диапазона приведенные в Приложении А (табл. 3). После произведения всех расчетов приступаем к оценке границ погрешностей (показателю точности методики):

·с использованием стандартного образца;

·с использованием метода добавок.

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



ЛабораторияУровень1 i L Табл.3


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


ЛабораторияУровень 1 i L Табл.4


где - аттестованное значение величины добавки к пробе;

- оценка систематической погрешности лаборатории;

- СКО систематической погрешности лаборатории;

- квантиль t - распределения Стьюдента;

полученные значения t сравниваем с процентными точками распределения Стьюдента (при P = 0.95), приложение А (табл.4). При , иначе при . Контроль стабильности результатов измерений. Цель настоящего стандарта - дать общее представление о некоторых способах использования данных о точности в различных практических ситуациях, а именно:

·представить стандартный метод расчета пределов повторяемости (сходимости), воспроизводимости и других пределов, используемых при рассмотрении результатов измерений, полученных при реализации стандартного метода измерений;

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

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

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

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

В этом разделе рассматривают две задачи, решаемые при контроле стабильности результатов измерений внутри лаборатории:

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

·для результатов измерений, используемых при назначении цены сырья и изготовленных изделий (продукции, товаров).

Перед началом расчетов необходимо заполнить соответствующую форму (табл. 5).


Дата/НомерДанные наблюденийРасхожденияПримечание L Табл.5


На основании введенных и рассчитанных данных подсчитываем средние значения

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


;

в случае, если значение тестовой статистики меньше (или равно) 5% критического значения, тестируемую позицию признают корректной.

·в случае, если значение тестовой статистики больше 5% критического значения и меньше (или равно) 1% значения, тестируемую позицию называют квазивыбросом и отмечают одной звездочкой.

·в случае, если значение тестовой статистики больше 1% критического значения, тестируемую позицию называют статистическим выбросом и отмечают двумя звездочками.

Выбрасываем все значения с двумя звездочками. Рассчитываем СКО повторяемости:


;


и СКО воспроизводимости:


;


производим расчет средней линии:


;

;


предел действия:

;

;

;

предел предупреждения:

;

;

;

пример расчета с графиком представлен в приложении Б (пример 1). Контрольные карты для индивидуальных значений и скользящих размахов (карты Шухарта). карта Шухарта требует данных, получаемых выборочно из процесса через примерно равные интервалы. Интервалы могут быть заданы либо по времени (например, ежечасно), либо по количеству продукции (каждая партия). Обычно каждая подгруппа состоит из однотипных единиц продукции или услуг с одними и теми же контролируемыми показателями, и все подгруппы имеют равные объемы. Для каждой подгруппы определяют одну или несколько характеристик, таких как среднее арифметическое подгруппы X и размах подгруппы R или выборочное стандартное отклонение S. карта Шухарта - это график значений определенных характеристик подгрупп в зависимости от их номеров. Она имеет центральную линию (CL), соответствующую эталонному значению характеристики. При оценке того, находится ли процесс в статистически управляемом состоянии, эталонным обычно служит среднее арифметическое рассматриваемых данных. При управлении процессом эталонным служит долговременное значение характеристики, установленное в технических условиях, или ее номинальное значение, основанное на предыдущей информации о процессе, или намеченное целевое значение характеристики продукции или услуги. карта Шухарта имеет две статистические определяемые контрольные границы относительно центральной линии, которые называются верхней контрольной границей (UCL) и нижней контрольной границей (LCL). В некоторых ситуациях для управления процессами невозможно либо непрактично иметь дело с рациональными подгруппами. Время или стоимость, требуемые для измерения при одиночном наблюдении, столь велики, что проведение повторных наблюдений даже не рассматривают. Это обычно происходит, когда измерения дорогостоящие (например, при разрушающем контроле) или выход продукции все время относительно однороден. В других ситуациях нельзя получить более одного значения, например показание прибора или значение характеристики партии исходных материалов, поэтому приходится управлять процессом на основе индивидуальных значений. При использовании карт индивидуальных значений рациональные подгруппы для обеспечения оценки изменчивости внутри партии не применяют, и контрольные границы рассчитывают на основе меры вариации, полученной по скользящим размахам обычно двух наблюдений. Скользящий размах - это абсолютное значение разности измерений в последовательных парах, т. е. разность первого и второго измерений, затем второго и третьего и т. д. На основе скользящих размахов вычисляют средний скользящий размах R, который используют для построения контрольных карт. Также по всем данным вычисляют общее среднее X. В таблице 6 приведены формулы расчета контрольных границ для карт индивидуальных значений. Пример расчета с графиком представлен в приложении Б (пример 2).


СтатистикаСтандартные значения не заданыСтандартные значения заданыЦентральная линияUCL и LCLЦентральная линияUCL и LCLИндивидуальное значение XXX ± 2,66*R____________Скользящий размах rR3.267*R_______________Табл. 6

Из вышеизложенного материала составим для каждой задачи основную блок-схему. Для задачи оценки точности (правильности и прецизионности) результатов измерений относительного количественного химического анализа блок-схема представлена на рисунке 2 и рисунке 3. Для задачи контроля стабильности результатов измерения имеет вид - рис.4. Для расчета контрольных карт для индивидуальных значений и скользящих размахов, блок-схема будет выглядеть так - рисунок 5 и рисунок 6. Опираясь на основные требования к создаваемому программному обеспечению, а в частности многопользовательский доступ, был выбран сервер баз данных Firebird 2.5. Немного о данном сервере: Firebird SQL server - система управления базами данных, основанная на открытом исходном коде Interbase 6.0. Сервер Firebird разрабатывается под различные платформы: Linux, Solaris, Windows, Unix, MacOS, под 64-х и 32-х битную операционные системы. Может использоваться даже не очень мощное оборудование, особенно под Linux. И как в любой СУБД, на производительность влияют: количество памяти, скорость работы дисковой подсистемы, и т. д. Рекомендации для выбора аппаратного обеспечения зависят от требования к системе, прогнозируемого размера базы данных, количества пользователей, и т. д. Допустимо начинать с минимальной конфигурации, расширяя её по мере надобности. Firebird SQL Server распространяется бесплатно и не имеет лицензионных ограничений. В качестве преимуществ Firebird можно отметить многоверсионную архитектуру, обеспечивающую параллельную обработку оперативных и аналитических запросов (это возможно потому, что читающие пользователи не блокируют пишущих), компактность (дистрибутив 5Mb), высокую эффективность и мощную языковую поддержку для хранимых процедур и триггеров. В качестве средства разработки и администрирования была выбрана среда под наименованием IBExpert. IBExpert - поддерживает Firebird, Interbase, Yaffil. Редакторы DDL и DML. Визуальный построитель запросов. Автозавершение кода, Metadata Extractor, отладчик хранимых процедур, а также множество других возможностей. Бесплатный для жителей постсоветского пространства, для остальных - от 179 евро. В итоге, мы получили бесплатный набор инструментов для создания и работы базы данных.

Дамп базы данных выглядит следующим образом.


Коэффициенты Граббса. CREATE TABLE GRABBS_COEFFICIENT ( P_OPREDELENIE SMALLINT NOT NULL, BIGGER_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, BIGGER_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, LOVER_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, LOVER_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */);TABLE KOHREN_COEFFICIENT (P_OPREDELENIE SMALLINT NOT NULL, N2_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N2_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N3_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N3_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N4_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N4_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N5_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N5_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N6_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N6_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */);TABLE LABOR (VARCHAR(25) NOT NULL);TABLE METOD (VARCHAR(30) NOT NULL, COMMENT VARCHAR(250)); CREATE GENERATOR GEN_PRECISION_METOD_OCENCA_ID; CREATE TABLE PRECISION_METOD_OCENCA (ID INTEGER NOT NULL, NOMER INTEGER NOT NULL, PROBA SMALLINT NOT NULL, X DOUBLE PRECISION NOT NULL, XG DOUBLE PRECISION, K DOUBLE PRECISION NOT NULL);TABLE Q_COEFFICIENT (N SMALLINT NOT NULL, Q FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */);TABLE REGISTER_PROTOCOL_OCENCA (ID INTEGER NOT NULL, CURDATE DATE NOT NULL, LABOR VARCHAR(25) NOT NULL, METOD VARCHAR(15), COMMENT VARCHAR(250), X_SR_GEN DOUBLE PRECISION, L SMALLINT, N_SR FLOAT, SKO_RECURRENCE DOUBLE PRECISION, SKO_RECUR DOUBLE PRECISION, C FLOAT, LIMIT_RECURRENCE DOUBLE PRECISION, LIMIT_RECUR DOUBLE PRECISION, DELTA DOUBLE PRECISION, KT DOUBLE PRECISION, UNIT VARCHAR(20), G_KOHR DOUBLE PRECISION, G_KOHR_1_PER DOUBLE PRECISION, G_KOHR_5_PER DOUBLE PRECISION, CHECK_1_PIP_G_MIN DOUBLE PRECISION, CHECK_1_PIP_G_MAX DOUBLE PRECISION, CHECK_1_PIP_BIG_1PER DOUBLE PRECISION, CHECK_1_PIP_BIG_5PER DOUBLE PRECISION, CHECK_2_PIP_G_MIN DOUBLE PRECISION, CHECK_2_PIP_G_MAX DOUBLE PRECISION, CHECK_2_PIP_LOWER_1PER DOUBLE PRECISION, CHECK_2_PIP_LOWER_5PER DOUBLE PRECISION, TIP SMALLINT, GRANICA_TIP SMALLINT, SOST SMALLINT, N SMALLINT, N2 SMALLINT, VIEV SMALLINT);TABLE SHUHART_SP_IND (ID INTEGER NOT NULL, CURDATE DATE, LABOR VARCHAR(30), OTDEL VARCHAR(50), POKAZATEL VARCHAR(50), KONTROL VARCHAR(50), PERIOD VARCHAR(50), X DOUBLE PRECISION, R DOUBLE PRECISION, UCL_X DOUBLE PRECISION, UCL_R DOUBLE PRECISION, LCL DOUBLE PRECISION);TABLE SHUHART_SP_KSRI (ID INTEGER NOT NULL, CURDATE DATE, LABOR VARCHAR(25), METOD VARCHAR(30), PARAMETR VARCHAR(50), FACTOR VARCHAR(50), PERIOD VARCHAR(50), L DOUBLE PRECISION, USLG DOUBLE PRECISION, USLPR DOUBLE PRECISION, R_OTN DOUBLE PRECISION); ALTER TABLE SHUHART_SP_KSRI ADD CONSTRAINT PK_SHUHART_SP_KSRI PRIMARY KEY (ID); ALTER TABLE SHUHART_SP_KSRI ADD CONSTRAINT FK_SHUHART_SP_KSRI_LABOR Дамп базы данных выглядит следующим образом. Коэффициенты Граббса. CREATE TABLE GRABBS_COEFFICIENT ( P_OPREDELENIE SMALLINT NOT NULL, BIGGER_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, BIGGER_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, LOVER_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, LOVER_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */);TABLE KOHREN_COEFFICIENT (P_OPREDELENIE SMALLINT NOT NULL, N2_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N2_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N3_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N3_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N4_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N4_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N5_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N5_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N6_1PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */, N6_5PER FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */);TABLE LABOR (VARCHAR(25) NOT NULL);TABLE METOD (VARCHAR(30) NOT NULL, COMMENT VARCHAR(250)); CREATE GENERATOR GEN_PRECISION_METOD_OCENCA_ID; CREATE TABLE PRECISION_METOD_OCENCA (ID INTEGER NOT NULL, NOMER INTEGER NOT NULL, PROBA SMALLINT NOT NULL, X DOUBLE PRECISION NOT NULL, XG DOUBLE PRECISION, K DOUBLE PRECISION NOT NULL);TABLE Q_COEFFICIENT (N SMALLINT NOT NULL, Q FLT_DOMAIN /* FLT_DOMAIN = DOUBLE PRECISION CHECK (VALUE>=0) */);TABLE REGISTER_PROTOCOL_OCENCA (ID INTEGER NOT NULL, CURDATE DATE NOT NULL, LABOR VARCHAR(25) NOT NULL, METOD VARCHAR(15), COMMENT VARCHAR(250), X_SR_GEN DOUBLE PRECISION, L SMALLINT, N_SR FLOAT, SKO_RECURRENCE DOUBLE PRECISION, SKO_RECUR DOUBLE PRECISION, C FLOAT, LIMIT_RECURRENCE DOUBLE PRECISION, LIMIT_RECUR DOUBLE PRECISION, DELTA DOUBLE PRECISION, KT DOUBLE PRECISION, UNIT VARCHAR(20), G_KOHR DOUBLE PRECISION, G_KOHR_1_PER DOUBLE PRECISION, G_KOHR_5_PER DOUBLE PRECISION, CHECK_1_PIP_G_MIN DOUBLE PRECISION, CHECK_1_PIP_G_MAX DOUBLE PRECISION, CHECK_1_PIP_BIG_1PER DOUBLE PRECISION, CHECK_1_PIP_BIG_5PER DOUBLE PRECISION, CHECK_2_PIP_G_MIN DOUBLE PRECISION, CHECK_2_PIP_G_MAX DOUBLE PRECISION, CHECK_2_PIP_LOWER_1PER DOUBLE PRECISION, CHECK_2_PIP_LOWER_5PER DOUBLE PRECISION, TIP SMALLINT, GRANICA_TIP SMALLINT, SOST SMALLINT, N SMALLINT, N2 SMALLINT, VIEV SMALLINT);TABLE SHUHART_SP_IND (ID INTEGER NOT NULL, CURDATE DATE, LABOR VARCHAR(30), OTDEL VARCHAR(50), POKAZATEL VARCHAR(50), KONTROL VARCHAR(50), PERIOD VARCHAR(50), X DOUBLE PRECISION, R DOUBLE PRECISION, UCL_X DOUBLE PRECISION, UCL_R DOUBLE PRECISION, LCL DOUBLE PRECISION);TABLE SHUHART_SP_KSRI (ID INTEGER NOT NULL, CURDATE DATE, LABOR VARCHAR(25), METOD VARCHAR(30), PARAMETR VARCHAR(50), FACTOR VARCHAR(50), PERIOD VARCHAR(50), L DOUBLE PRECISION, USLG DOUBLE PRECISION, USLPR DOUBLE PRECISION, R_OTN DOUBLE PRECISION); ALTER TABLE SHUHART_SP_KSRI ADD CONSTRAINT PK_SHUHART_SP_KSRI PRIMARY KEY (ID); ALTER TABLE SHUHART_SP_KSRI ADD CONSTRAINT FK_SHUHART_SP_KSRI_LABORPROBAShuhart_val_ksriNOMER = :Nomer and W_OTN = :W_otn_max:Proba;= 1;(Gk > G1_per) thenPROBAShuhart_val_ksriNOMER = :Nomer and W_OTN = :W_otn_max:Proba;from Shuhart_val_ksriW_OTN = :W_otn_max;= 2;(Gk <= G5_per) then= 0;;TERM;

/* Following GRANT statetements are generated automatically */SELECT, DELETE ON SHUHART_VAL_KSRI TO PROCEDURE CALC_KOHR_SHUHART; GRANT SELECT ON KOHREN_COEFFICIENT TO PROCEDURE CALC_KOHR_SHUHART;or alter procedure CALC_PRECISION_METOD_OCENKA (integer,_RECURRENCE double precision)variable T1 double precision;variable T double precision;variable L smallint;variable K double precision;variable "P(0,95)_F" double precision;variable Q double precision;variable TC double precision;variable DELTA double precision;variable SUMM_QUADR_DIFF double precision;variable KT double precision;sum(K) / count(*) as Q,(*) as LPrecision_metod_ocencaNOMER = :Nomer:Q, :L;_QUADR_DIFF = 0;KPrecision_metod_ocencaNOMER = :Nomer:K_QUADR_DIFF = SUMM_QUADR_DIFF + Calc_sqr(K - Q);= Calc_sqrt(SUMM_QUADR_DIFF / (L * (L - 1)));= Q / TC;TStudent_coefficientF = :L - 1:T1;(T <= T1) then DELTA = 2 * LIMIT_RECURRENCE;DELTA = 2 * Calc_sqrt(Calc_sqr(LIMIT_RECURRENCE) + Calc_sqr(TC));= Calc_sqrt(2) * DELTA;Register_protocol_ocencaDELTA = :Delta,= :KtID = :Nomer;;TERM;

/* Following GRANT statetements are generated automatically */SELECT ON PRECISION_METOD_OCENCA TO PROCEDURE CALC_PRECISION_METOD_OCENKA; GRANT SELECT ON STUDENT_COEFFICIENT TO PROCEDURE CALC_PRECISION_METOD_OCENKA; GRANT SELECT,UPDATE ON REGISTER_PROTOCOL_OCENCA TO PROCEDURE CALC_PRECISION_METOD_OCENKA;or alter procedure CALC_R_OTN (integer)(double precision,double precision,double precision,_OTN double precision)Calc_sqrt((1.0000/(2*count(PROBA)))*(sum(Calc_sqr(W_OTN)))) as R_OTNShuhart_val_ksriNOMER = :Nomer:R_otn;= 1.128 * R_OTN;= 3.686 * R_OTN;= 2.834 * R_OTN;

/*update Shuhart_sp_ksriL = :L,= :Uclg,= :Uclp,_OTN = :R_otn ID = :Nomer;*/

suspend;

end


2 Реализация программного обеспечения

автоматизация регистрация данные

Теперь приступим непосредственно к созданию базы данных, таблиц и процедур. База данных будет иметь следующие параметры:

·расширение *.GDB - для совместимости с Interbase;

·кодировка Win1251 - для отображения русских букв;

·третий SQL диалект;

·размер страницы 4096 байт идентичный размеру кластера на жестком диске, где располагается база данных.

Таблицы будут иметь два вида:

·справочные таблицы;

·рабочие таблицы.

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


НаименованиеОписаниеGRABBS_COEFFICIENTКоэффициенты ГраббсаKOHREN_COEFFICIENTКоэффициенты КохренаLABORНаименование лабораторийMETODНаименование методикQ_COEFFICIENTКоэффициенты критического диапазонаSTUDENT_COEFFICIENTПроцентные точки распределения СтьюдентаUNITЕдиницы измеренияТабл.6


Рабочие таблицы, в свою очередь, разделятся еще на два вида, «мастер» и «деталь» таблицы. В «мастер»-таблицах мы будем хранить получаемые единичные расчетные данные по каждой решаемой задаче, а так же основные данные по составляемым протоколам, такие как дата, номер, примечания и т.д. В «деталь»-таблицы будут заноситься основные расчетные данные, первичная информация по химическим пробам, на основании которых будут производиться расчеты. В таблице 7 представлен перечень этих таблиц:


НаименованиеОписаниеREGISTER_PROTOCOL_OCENCA«мастер»-таблица для задач оценки точности результатов измеренийVALUE_LIST_OCENCA«деталь»-таблица для задач оценки точности результатов измеренийPRECISION_METOD_OCENCA«деталь»-таблица для задач оценки точности результатов измерений в оценке границ погрешностиSHUHART_SP_KSRI«мастер»-таблица для задач расчета карт контроля стабильности результатов измерений SHUHART_VAL_KSRI«деталь»-таблица для задач расчета карт контроля стабильности результатов измеренийSHUHART_SP_IND«мастер»-таблица для контрольных карт индивидуальных значенийSHUHART_VAL_IND«деталь»-таблица для контрольных карт индивидуальных значенийТабл.7


Связь между «мастер»-«деталь» таблицами происходит методом наложения ограничения ссылочной целостности, так называемого FOREIGN KEY (внешнего ключа) на поле «деталь»-таблицы. В нашем случае ограничение ссылочной целостности накладываются на поле NOMER во всех «деталь»-таблицах имеющее ссылку на поле ID в «мастер»-таблицах, это значит, что при удалении или изменении записи в «мастер»-таблице, тоже самое будет происходить и в «деталь»-таблице автоматически, т.е. если удалить запись с ID равным единице из главной таблицы, то записи в подчиненной таблице где NOMER равен единице удалятся автоматически. Одним из положительных моментов в разработке базы данных на сервере Firebird, оказалась возможность создавать сложные хранимые процедуры для обработки данных полностью на стороне сервера. Для нашего случая, это как раз то, что нужно, потому что «клиенту» вовсе не обязательно, да и ненужно видеть результаты промежуточных расчетов, которых у нас много. Одним из недостатков в программировании хранимых процедур явилось отсутствие встроенных функций возведения числа в квадрат и извлечение квадратного корня из числа, но и эта проблема нашла решение на стороне сервера. При помощи функций определенных пользователем UDF, к базе данных можно подключить динамически-подключаемую библиотеку DLL, которую создадим сами в среде Delphi. В данную библиотеку мы заложим функции возведения числа в квадрат и извлечение квадратного корня. Исходный код этой DLL выглядит так:

Sqr_Sqrt; - наименование библиотеки- используемые модули,

Classes;

{$R *.res} прекомпилятор

function calc_sqr(X: double): double; export; stdcall;:=x*x;;calc_sqrt(X: double): double; export; stdcall;:= sqrt(X);; здесь объявляем то, что будет использоваться в базе данных

calc_sqr;_sqrt;.

После компиляции данного кода получаем файл Sqr_Sqrt.dll, который подключаем к базе данных, используя скрипты:

DECLARE EXTERNAL FUNCTION CALC_SQRPRECISIONDOUBLE PRECISION BY VALUE_POINT 'Calc_Sqr' MODULE_NAME 'Sqr_Sqrt.dll' - для вычисления квадрата числа;EXTERNAL FUNCTION CALC_SQRTPRECISIONDOUBLE PRECISION BY VALUE_POINT 'Calc_Sqrt' MODULE_NAME 'Sqr_Sqrt.dll' - для вычисления квадратного корня числа. Далее в таблице 8 приведен перечень хранимых процедур используемых данной базой данных.


НаименованиеОписаниеCALC_CARDSРасчет КК ШухартаCALC_DISPERSIONРасчет дисперсийCALC_G_KOHRРасчет тестовой статистики Кохрена на выбросыCALC_KOHR_SHUHARTРасчет статистики Кохрена для КК ШухартаCALC_PRECISION_METOD_OCENKAРасчет оценки границ погрешностиCALC_R_OTNРасчет скользящих размаховCALC_X_SR_SKOРасчет средних значений лабораторий и СКОCHECK_1_PIPПроверка на один выбросCHECK_2_PIPПроверка на два выброса SELECT_2MAX_X_SRВыбор двух максимальных средних значений лабораторийSELECT_2MIN_X_SRВыбор двух максимальных средних значений лабораторийINSERT_NEWREC_PRECISIONВставка новой записи «мастер»-таблицыINSERT_NEWREC_VAL_LIST_OCENKAВставка новой записи «деталь»-таблицыUPDATE_REG_PROTОбновление «мастер»-таблицыТабл.8


Не обошлось в базе данных и без исключений, поскольку имеем дело с математическими расчетами. Одним из таких исключений является попытка начать расчеты без наличия первичной информации (проб), т.е. нет данных - нет расчетов. Ввод данного ограничения предупреждает случайное деление на ноль. Итак, база данных готова, но для конечного пользователя (лаборанта), это мало о чем говорит. Нужна программная оболочка для работы с данными. Такой «оболочкой» называется клиентская часть приложения, о которой пойдет речь в следующей главе. Разработка клиентской части приложения. Клиентской называется часть приложения, с которой напрямую взаимодействует конечный пользователь. Это может быть либо приобретенное компанией серийное коммерческое программное обеспечение, либо прикладная программа, разработанная внутри компании с помощью инструментальных средств третьих фирм. Для того, чтобы воспользоваться многочисленными новейшими инструментальными средствами, предназначенными для создания клиентской части приложений, которые доступны сегодня на рынке программного обеспечения, программисты должны уметь программировать на таких языках, как C++, Pascal, Visual Basic и т.д. Сегодня большинство вновь разрабатываемых клиентских прикладных программ является GUI-приложениями - они содержат графический интерфейс пользователя. Большинство из доступных сегодня инструментальных средств являются дружественными по отношению к пользователю и объектно-ориентированными. В них широко используются пиктограммы, различного рода мастера, а также технология drag-and-drop. Наиболее популярными средствами для создания приложений являются C++ Builder и Delphi фирмы Borland, а также Visual J++ и Visual C++ компании Microsoft. Для реализации данного проекта было принято решение выбрать Delphi 7 компании Borland. Во-первых, данный продукт имеется в наличии у организации, а во-вторых, имеется опыт работы с данной IDE-средой по созданию приложений для Windows, к примеру, моя курсовая работа. Немного о Borland Delphi. Delphi - это среда быстрой разработки приложений под управлением ОС Windows, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый Object Pascal. Не менее важно то, что Delphi обладает высокоразвитыми средствами для работы с базами данных. Базы данных позволяют эффективно управлять информацией. Delphi позволяет эффективно создавать приложения, работающие с базами данных. Проектирование программного комплекса начнем с определения назначения форм, модулей и компонентов для доступа к базам данных. В таблице 9 приведены названия и описание всех форм и модулей.


НаименованиеОписаниеChemical_analysis.dprЗдесь хранится информация о формах и модулях, а так же содержатся операторы инициализации и запуска программы на выполнениеCardReportFormПечатная форма протокола контрольных карт ШухартаDataModFormОсновной модуль программы для связи с базой данных и обработки информации.ErrorRangeFormОценка границ погрешностиGrabbsFormСправочник по коэффициентам ГраббсаKardReportFormПечать КК для индивидуальных значенийKoeffQFormСправочник коэффициентов критических диапазоновKohrenFormСправочник коэффициентов КохренаLaborFormСправочник наименований лабораторийMainFormГлавная форма программы, форма менюMetodFormСправочник методикProtokolOcenkaFormФорма протокола для задачи оценки точности результатов измеренийProtokolReportFormПечатная форма протокола для задачи оценки точности результатов измеренийSelectFormФорма выбора лабораторииShuhartProtFormФорма протокола для задачи контроля стабильности результатов измеренийShuhartRepFormПечатная форма контрольной картыShuhartSpisokKSRIФорма списка набранных и рассчитанных протоколов для задач контроля стабильности результатов измеренийShuhProtokolFormПечатная форма протокола для задачи контроля стабильности результатов измеренийShuhSpIndFormФорма списка набранных и рассчитанных протоколов для КК индивидуальных значенийShuhValIndFormФорма протокола КК индивидуальных значенийSpisokProtOcenkaFormФорма списка протокоова для задачи оценки точности результатов измеренийStudentFormСправочник процентных точек распределения СтьюдентаTuningFormНастройка параметров расчетаUnitFormСправочник единиц измеренияТабл.9


Особое внимание хочется уделить модулю DataModForm. Ведь именно в нем происходят основные процессы взаимодействия между клиентской частью программы и сервером базы данных. Поскольку одной из особенностей среды Delphi является работа с данными, то для нашего случая у нее есть библиотека компонентов для доступа к базам данных Interbase по названием IBX. С помощью IBX можно работать с любыми версиями InterBase, Firebird и Yaffil. Это означает, что все версии IBX работают (и будут продолжать работать) со всеми версиями InterBase, Firebird и Yaffil, во всех средах разработки Delphi. На рисунке 7 показана данная форма с компонентами IBX.

Первым является IBDatabase. Это центральный компонент для соединения с базой данных. Один компонент может быть связан только с одной базой данных в конкретный момент времени. Настройка данного компонента вызывается двойным щелчком кнопки мыши на компоненте. В результате появляется окно настроек, показанное на рисунке 8. В секции Connection мы указываем тип соединения с сервером базы данных Firebird и физическим местоположением базы данных. В секции DataBase Parameters указываем имя пользователя и пароль для доступа к данным, в нашем случае доступ к программе осуществляется под одним пользователем, имеющим права администратора сервера. Так же указываем кодировку отображения символов WIN1251 - русская кодировка и снимаем авторизацию при каждом запуске программы (Login Prompt = false).

Рис. 7


Вторым является IBTransaction. Вне контекста транзакции в Interbase и Firebird нельзя выполнить никаких действий с данными и метаданными базы данных. IBTransaction1.DefaultDatabase:=IBDatabase1. Особое внимание необходимо уделить обработке транзакций, ведь именно они играют решающую роль в многопользовательском режиме работы программы, от них зависит, будут ли сохранены вносимые лаборантом данные, будут ли сохранены полученные в результате расчета данные. Транзакция - группа логически объединённых последовательных операций по работе с данными, обрабатываемая или отменяемая целиком. В свойствах IBTransaction1, я настроил транзакции следующим образом:

·read_committed - невоспроизводимое (или неповторяемое) чтение. Транзакция может читать только те изменения, которые были подтверждены другими транзакциями. Например, если транзакции A и B стартовали и поменяли записи, то они не видят изменения друг друга. Транзакция А увидит изменения транзакции B только тогда, когда транзакция B завершится по commit. Перечитывание данных в транзакции может выдавать разные результаты;

·rec_version - именно этот режим является умолчательным и рекомендуется для нормальной работы в режиме read committed;

·nowait - режимы обработки конфликтов блокировок. Если транзакция стартует в режиме wait (по умолчанию), и при выполнении операции (как правило, изменения данных, за исключением режима no_rec_version) обнаруживается конфликт, то операция «замораживается» до разрешения конфликта. В режиме nowait сообщение о конфликте выдается приложению немедленно (возникает ошибка), а операция, которая привела к конфликту, отменяется. В случае взаимоблокировки двух wait-транзакций сервер автоматически обнаруживает эту ситуацию, и разблокирует одну из транзакций (как будто она стартовала как nowait) через интервал времени, определенный в IBCONFIG параметром DEADLOCK_TIMEOUT, который по умолчанию равен 10 секундам.

Третьим является либо датасет (IBDataSet, IBQuery), либо IBSQL он связывается с базой данных и транзакцией:

·IBDataSet.Database:=IBDatabase1;

·IBDataSet.Transaction:=IBTransaction1.

Четвертый - источник данных для датасета, т.е. универсальный TDataSource. DataSource1.DataSet:=IBDataSet. Пятым является DBGrid, находящийся на формах отображения данных. Он связывается только с DataSource. DBGrid.DataSource:=DataSource. Настройка вызова хранимых на стороне сервера процедур происходит при помощи компонента IBStoredProc. Теперь рассмотрим главную форму программы под названием MainForm. С нее и начинается работа программного комплекса, рисунок 9.


Рис. 9


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

Рис. 10


После внесения всех проб производим первичный расчет, проверку на выбросы, расчет дисперсий, а так же печать протокола, путем нажатия на кнопки с соответствующими названиями, рисунок 11. В нижнем правом углу формы документа видим табличные и рассчитанные значения Кохрена и Граббса. Далее производим расчет погрешностей (показателя точности методики) с использованием стандартного образца, рисунок 12 и выводим на печать полученный протокол, рисунок 13.

Аналогичным образом делаются расчеты для других задач. Теперь рассмотрим, как это выглядит изнутри. В DataModForm кладется компонент TDataSet, который связывается с необходимой таблицей в базе данных с одной стороны, и, с табличным полем DBGrid, с другой стороны, который, в свою очередь, отображает эти данные. TDataSet позволяет манипулировать этими данными: добавлять, удалять и редактировать при помощи компонента TDBNavigator. При нажатии кнопок навигатора происходит то или иное действие. Когда мы создаем новый или открываем для редактирования уже существующий протокол, транзакция стартует. После занесения в DBGrid числовых значений расчет начинается по нажатию кнопок, которые вызывают события OnClick(), осуществляющие передачу параметров и вызов соответствующих хранимых процедур на сервере. Количество вызываемых процедур определяется выбором рабочей области, а назначение - наименованием кнопок. Когда все расчеты завершаются успешно - данные сохраняются и транзакция подтверждается, после чего можно осуществлять печать протоколов расчета, строить графические схемы, контрольные карты. Ниже приведен пример программного кода модуля DataModForm.


procedure DataModuleCreate(Sender: TObject);

procedure DataModuleDestroy(Sender: TObject);RegProtOcenka_DataSetNewRecord(DataSet: TDataSet);ValueListOcenka_DataSetNewRecord(DataSet: TDataSet);ErrorRange_DataSetNewRecord(DataSet: TDataSet);ErrorRange_DataSetBeforePost(DataSet: TDataSet);RegProtOcenka_DataSetBeforeEdit(DataSet: TDataSet);RegProtOcenka_DataSetAfterDelete(DataSet: TDataSet);ValueListOcenka_DataSetAfterDelete(DataSet: TDataSet);ErrorRange_DataSetAfterDelete(DataSet: TDataSet);Metod_DataSetAfterPost(DataSet: TDataSet);Unit_DataSetAfterPost(DataSet: TDataSet);ShuhartValKSRI_DataSetNewRecord(DataSet: TDataSet);ShuhartSpisokKSRI_DataSetNewRecord(DataSet: TDataSet);ShuhartValKSRI_DataSetBeforePost(DataSet: TDataSet);ShuhartValKSRI_DataSetAfterPost(DataSet: TDataSet);ShuhartValKSRI_DataSetAfterDelete(DataSet: TDataSet);ShuhartValKSRI_DataSetAfterEdit(DataSet: TDataSet);ShuhartSpInd_DataSetNewRecord(DataSet: TDataSet);ShuhValInd_DataSetNewRecord(DataSet: TDataSet);ShuhartSpInd_DataSetAfterPost(DataSet: TDataSet);ShuhValInd_DataSetAfterDelete(DataSet: TDataSet);

{ Private declarations }

{ Public declarations };: TDataModForm;Labor, ProtocolOcenka, ShuhartValueKSRI, CardRep, ShuhartValIdn;

{$R *.dfm}TDataModForm.DataModuleCreate(Sender: TObject);.Open;.StartTransaction;;TDataModForm.DataModuleDestroy(Sender: TObject);.Close;;TDataModForm.RegProtOcenka_DataSetNewRecord(DataSet: TDataSet);_NewRec_StoredProc.ExecProc;_DataSetID.AsInteger:=RegProtOcenka_NewRec_StoredProc.Params[0].AsInteger;_DataSetCURDATE.AsDateTime := Date;_DataSetLABOR.AsString := Labor_DataSetLABOR.AsString;_DataSetN_SR.AsInteger := 3;_DataSetN.AsInteger := 1;_DataSetC.AsFloat := 0;_DataSetTIP.AsInteger := 0;_DataSetGRANICA_TIP.AsInteger := 0;_DataSetSOST.AsInteger := 0;_DataSetN2.AsInteger := 2;_DataSet.Post;.CommitRetaining;_DataSet.Edit;;TDataModForm.ValueListOcenka_DataSetNewRecord(DataSet: TDataSet);_NewRec_StoredProc.Params[0].AsInteger := RegProtOcenka_DataSetID.AsInteger;_NewRec_StoredProc.ExecProc;_DataSetNOMER.AsInteger := RegProtOcenka_DataSetID.AsInteger;_DataSetPROBA.AsInteger := Val_NewRec_StoredProc.Params[1].AsSmallInt;_DataSetX1.AsFloat := 0;_DataSetX2.AsFloat := 0;_DataSetX3.AsFloat := 0;_DataSetX4.AsFloat := 0;_DataSetX5.AsFloat := 0;_DataSetX6.AsFloat := 0;;TDataModForm.ErrorRange_DataSetNewRecord(DataSet: TDataSet);_StoredProc.Params[1].AsInteger := RegProtOcenka_DataSetID.AsInteger;_StoredProc.ExecProc;_DataSetNOMER.AsInteger := RegProtOcenka_DataSetID.AsInteger;_DataSetPROBA.AsInteger := ErrorRangeNewrec_StoredProc.Params[0].AsSmallInt;_DataSetX.AsFloat := 0;_DataSetXG.AsFloat:= 0;;TDataModForm.ErrorRange_DataSetBeforePost(DataSet: TDataSet);_DataSetK.AsFloat := ErrorRange_DataSetX.AsFloat -_DataSetXG.AsFloat -_DataSetC.AsFloat;;TDataModForm.RegProtOcenka_DataSetBeforeEdit(DataSet: TDataSet);.Show;;TDataModForm.RegProtOcenka_DataSetAfterDelete(DataSet: TDataSet);.CommitRetaining;;TDataModForm.ValueListOcenka_DataSetAfterDelete(: TDataSet);_StoredProc.Params[0].AsInteger := RegProtOcenka_DataSetID.AsInteger;_StoredProc.ExecProc;.CommitRetaining;_DataSet.Close;_DataSet.Open;;TDataModForm.ErrorRange_DataSetAfterDelete(DataSet: TDataSet);.CommitRetaining;;

TDataModForm.Metod_DataSetAfterPost(DataSet: TDataSet);.CommitRetaining;_DataSet.Close;_DataSet.Open;_DataSet.Last;;TDataModForm.Unit_DataSetAfterPost(DataSet: TDataSet);.CommitRetaining;_DataSet.Close;_DataSet.Open;_DataSet.Last;;TDataModForm.ShuhartValKSRI_DataSetNewRecord(DataSet: TDataSet);_DataSetNOMER.AsInteger := ShuhartSpisokKSRI_DataSetID.AsInteger;_PROBA_StoredProc.Params[0].AsInteger := ShuhartSpisokKSRI_DataSetID.AsInteger;_PROBA_StoredProc.ExecProc;_DataSetPROBA.AsInteger := NEW_PROBA_StoredProc.Params[1].AsSmallInt;;TDataModForm.ShuhartSpisokKSRI_DataSetNewRecord(: TDataSet);_StoredProc.ExecProc;_DataSetID.AsInteger := NewID_StoredProc.Params[0].AsInteger;_DataSetCURDATE.AsDateTime := Date;_DataSet.Post;.CommitRetaining;_DataSet.Edit;.Show;;TDataModForm.ShuhartValKSRI_DataSetBeforePost(DataSet: TDataSet);_DataSetW.AsFloat := ShuhartValKSRI_DataSetX1.AsFloat - ShuhartValKSRI_DataSetX2.AsFloat;ShuhartValKSRI_DataSetW.AsFloat < 0 then_DataSetW.AsFloat := - ShuhartValKSRI_DataSetW.AsFloat;_DataSetW_OTN.AsFloat := (ShuhartValKSRI_DataSetW.AsFloat * 100)/((ShuhartValKSRI_DataSetX1.AsFloat + ShuhartValKSRI_DataSetX2.AsFloat)/2);;TDataModForm.ShuhartValKSRI_DataSetAfterPost(DataSet: TDataSet);.CommitRetaining;;TDataModForm.ShuhartValKSRI_DataSetAfterDelete(: TDataSet);_StoredProc.Params[0].AsInteger := ShuhartSpisokKSRI_DataSetID.AsInteger;_StoredProc.ExecProc;.CommitRetaining;_DataSet.Close;_DataSet.Open;;TDataModForm.ShuhartValKSRI_DataSetAfterEdit(DataSet: TDataSet);.CommitRetaining;;TDataModForm.ShuhartSpInd_DataSetNewRecord(DataSet: TDataSet);_StoredProc.ExecProc;_DataSetID.AsInteger := NewIdInd_StoredProc.Params[0].AsInteger;_DataSetCURDATE.AsDateTime := Date;_DataSet.Post;.CommitRetaining;_DataSet.Edit;.Show;;TDataModForm.ShuhValInd_DataSetNewRecord(DataSet: TDataSet);_DataSetNOMER.AsInteger := ShuhartSpInd_DataSetID.AsInteger;_StoredProc.Params[0].AsInteger := ShuhartSpInd_DataSetID.AsInteger;_StoredProc.ExecProc;_DataSetN.AsInteger := NewNoInd_StoredProc.Params[1].AsInteger;;TDataModForm.ShuhartSpInd_DataSetAfterPost(DataSet: TDataSet);.CommitRetaining;;TDataModForm.ShuhValInd_DataSetAfterDelete(DataSet: TDataSet);_StoredProc.Params[0].AsInteger := ShuhartSpInd_DataSetID.AsInteger;_StoredProc.ExecProc;.CommitRetaining;_DataSet.Close;_DataSet.Open;

end;.


Печать отчетов и построение контрольных карт нам предоставляет набор визуальных компонентов под названием QReport и QRChart. Подведем небольшой итог. При помощи среды Delphi, в достаточно небольшой срок , приблизительно 60 рабочих часов, из которых большую часть времени заняло создание печатных форм отчетов (протоколов) и контрольных карт мне удалось создать Windows приложение, являющееся клиентом для базы данных, и, соответствующее заявленным требованиям в техническом задании. Одним из огромных плюсов такого подхода к решению поставленной задачи является переносимость программного кода из одной версии Delphi в другую, более новую, возможность, в случае каких-либо изменений не переписывать всё заново, а редактировать и перекомпилировать приложение, сделав его лучше. Исходный код программы и база данных находяться в приложении В. Внедрение. Одним из важных моментов в работе программиста является этап внедрения программного продукта, написанное им самим, когда казалось бы все отлажено, все ошибки, возникающие в процессе отладки программы, исправлены, одним словом - работает, но локально. Начнем с определения компьютера, который будет выполнять роль сервера базы данных. Он должен соответствовать следующим системным требованиям:

·процессор: не ниже Pentium IV;

·ОЗУ: не менее 1Гб;

·накопитель информации объединенный в Raid-массив;

·наличие LAN;

·операционная система 32х - разрядная Windows, Linux;

·блок бесперебойного питания.

Установка сервера Firebird происходит просто из дистрибутива программы. После установки Firebird необходимо скопировать нашу динамическую библиотеку Sqr_Sqrt.dll в директорию Firebird. К клиентским компьютерам системные требования таковы:

·процессор: не ниже Pentium II;

·ОЗУ: не менее 64Мб;

·жесткий диск не менее 500 Мб;

·наличие LAN;

·операционная система: 32х - разрядная Windows 9х и выше.

·клавиатура, мышь, SVGA - монитор.

Установка программы осуществляется путем установки клиентской части сервера Firebird из дистрибутива Firebird, либо копированием библиотеки gds32.dll в системную директорию, и копированием исполняемого файла программы Chemical_analysis.exe в любое место. Для начала программа была установлена на три клиентских компьютера в три лаборатории завода. Пуск прошел удачно, программа заработала одновременно на всех компьютерах, но при попытке сохранения протоколов иногда возникала ошибка взаимной блокировки транзакций - «DEADLOCK». Это означает, что одно из действий, проводимых в транзакции, не может быть выполнено. Следовательно, такая транзакция должна быть отменена (rollback). Следует избегать длительных транзакций, которые могут попасть в такую ситуацию - единственным выходом из нее будет попытка начать транзакцию снова и повторить все действия. Уменьшить число возможных конфликтов обновления можно, сократив время выполнения транзакции. Например, сначала принимаются данные от пользователя, и если он подтверждает введенную информацию, приложение стартует транзакцию, быстро передает данные на сервер, и завершается. Чем быстрее пройдет транзакция, тем больше у нее шансов завершиться успешно, поэтому в программе было увеличено количество подтверждений транзакций в рамках каждой задачи. В остальном пожелания со стороны «заказчиков» были по дизайну форм, отчетов и графиков (шрифт побольше, кнопки покрупнее, печать с просмотром и т.д.).


SET TERM;or alter procedure CALC_DISPERSION (integer,smallint)variable L smallint;variable Q double precision;variable T1 double precision;variable T2 double precision;variable T3 double precision;variable T4 double precision;variable T5 double precision;variable S_QUADR_R_LOW double precision;variable S_QUADR_L double precision;variable S_QUADR_R double precision;variable SKO_RECURRENCE double precision;variable SKO_RECUR double precision;variable LIMIT_RECURRENCE double precision;variable LIMIT_RECUR double precision;variable X_SR_GEN double precision;sum(N * X_SR) as T1,(N * Calc_sqr(X_SR)) as T2,(N) as T3,(Calc_sqr(N)) as T4,((N - 1) * Calc_sqr(SKO)) as T5,(*) as L,(X_SR)Value_list_ocencaNOMER = :Nomer:T1, :T2, :T3, :T4, :T5, :L, :X_sr_gen;_QUADR_R_LOW = T5 / (T3 - L);_QUADR_L = ((((T2 * T3) - Calc_sqr(T1)) / (T3 * (L - 1))) - S_QUADR_R_LOW)

* ((T3 * (L - 1)) / (Calc_sqr(T3) - T4));_QUADR_R = S_QUADR_R_LOW + S_QUADR_L;_RECURRENCE = Calc_sqrt(S_QUADR_R_LOW);_RECUR = Calc_sqrt(S_QUADR_R);QQ_coefficientN = :N:Q;(Q is null) thenException_null;;_RECURRENCE = SKO_RECURRENCE * Q;_RECUR = SKO_RECUR * Q;Register_protocol_ocencaSKO_RECURRENCE = :Sko_recurrence,_RECUR = :Sko_recur,_RECURRENCE = :Limit_recurrence,_RECUR = :Limit_recur,_SR_GEN = :X_sr_gen,= :LID = :Nomer;;TERM

/* Following GRANT statetements are generated automatically */SELECT ON VALUE_LIST_OCENCA TO PROCEDURE CALC_DISPERSION;SELECT ON Q_COEFFICIENT TO PROCEDURE CALC_DISPERSION;SELECT,UPDATE ON REGISTER_PROTOCOL_OCENCA TO PROCEDURE CALC_DISPERSION;

/* Existing privileges on this procedure */EXECUTE ON PROCEDURE CALC_DISPERSION TO SYSDBA;TERM ^ ;or alter procedure CALC_X_SR_SKO (integer)variable X1 double precision;variable X2 double precision;variable X3 double precision;variable X4 double precision;variable X5 double precision;variable X6 double precision;variable DIFF1 double precision;variable DIFF2 double precision;variable DIFF3 double precision;variable DIFF4 double precision;variable DIFF5 double precision;variable DIFF6 double precision;variable N smallint;variable X_SR double precision;variable SKO double precision;variable ID integer;ID, X1, X2, X3, X4, X5, X6value_list_ocencaNOMER = :nomer:ID, :x1, :x2, :x3, :x4, :x5, :x6= 0;(X1 <> 0) then n = n + 1;(X2 <> 0) then n = n + 1;(X3 <> 0) then n = n + 1;(X4 <> 0) then n = n + 1;(X5 <> 0) then n = n + 1;(X6 <> 0) then n = n + 1;(n <= 1) thenexception_null;;_SR = (X1 + X2 + X3 + X4 + X5 + X6) / n;(X1 <> 0) then diff1 = X_SR - X1; else diff1 = 0;(X2 <> 0) then diff2 = X_SR - X2; else diff2 = 0;(X3 <> 0) then diff3 = X_SR - X3; else diff3 = 0;(X4 <> 0) then diff4 = X_SR - X4; else diff4 = 0;(X5 <> 0) then diff5 = X_SR - X5; else diff5 = 0;(X6 <> 0) then diff6 = X_SR - X6; else diff6 = 0;= calc_sqrt((calc_sqr(diff1) + calc_sqr(diff2) +_sqr(diff3) + calc_sqr(diff4) +_sqr(diff5) + calc_sqr(diff6)) / (n - 1));value_list_ocencaN = :N,_SR = :X_SR,= :SKOID = :ID;

/*suspend;*/^TERM

/* Following GRANT statetements are generated automatically */SELECT,UPDATE ON VALUE_LIST_OCENCA TO PROCEDURE CALC_X_SR_SKO;

/* Existing privileges on this procedure */EXECUTE ON PROCEDURE CALC_X_SR_SKO TO SYSDBA;


Заключение


В заключительной части своей работы хочется обобщить основные понятия. Термин «сервер баз данных» обычно используют для обозначения всей СУБД, основанной на архитектуре «клиент-сервер», включая и серверную, и клиентскую части. Такие системы предназначены для хранения и обеспечения доступа к базам данных. Доступ к базе данных от прикладной программы или пользователя производится путем обращения к клиентской части системы. В качестве основного интерфейса между клиентской и серверной частями выступает язык баз данных SQL. Это язык по сути дела представляет собой текущий стандарт интерфейса СУБД в открытых системах. Собирательное название SQL-сервер относится ко всем серверам баз данных, основанных на SQL. Соблюдая предосторожности при программировании, можно создавать прикладные информационные системы, мобильные в классе SQL-серверов. Серверы баз данных, интерфейс которых основан исключительно на языке SQL, обладают своими преимуществами и своими недостатками. Очевидное преимущество - стандартность интерфейса.

В идеале, хотя пока это не совсем так, клиентские части любой SQL-ориентированной СУБД могли бы работать с любым SQL-сервером вне зависимости от того, кто его произвел. Недостаток тоже довольно очевиден. При таком высоком уровне интерфейса между клиентской и серверной частями системы на стороне клиента работает слишком мало программ СУБД. Это нормально, если на стороне клиента используется маломощная рабочая станция. Но если клиентский компьютер обладает достаточной мощностью, то часто возникает желание возложить на него больше функций управления базами данных, разгрузив сервер, который является узким местом всей системы. Одним из перспективных направлений СУБД является гибкое конфигурирование системы, при котором распределение функций между клиентской и пользовательской частями СУБД определяется при установке системы. Упоминавшиеся выше хранимые процедуры особенно важны в системах управления базами данных, основанных на архитектуре «клиент-сервер».

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

Во-вторых, механизм удаленного вызова скрывает различия между взаимодействующими компьютерами. Физически неоднородная локальная сеть компьютеров приводится к логически однородной сети взаимодействующих программных компонентов. В результате пользователи не обязаны серьезно заботиться о разовой закупке совместимых серверов и рабочих станций. В нашем случае на стороне клиента СУБД работает только такое программное обеспечение, которое не имеет непосредственного доступа к базам данных, а обращается для этого к серверу с использованием языка SQL. Преимуществом для пользователей является то, что они могут постепенно заменять компоненты системы на более совершенные, не утрачивая работоспособности системы. В частности, в этом кроется решение проблемы постепенного наращивания вычислительных, информационных и других мощностей компьютерной системы.

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

атомарность - при любых обстоятельствах будут либо выполнены все операции транзакции, либо не выполнена ни одна, целостность данных при завершении транзакции;

независимость - транзакции, инициированные разными пользователями, не вмешиваются в дела друг друга;

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

Механизм транзакций, поддерживаемый сервером баз данных, намного более эффективен, чем аналогичный механизм в настольных СУБД, т.к. сервер централизованно контролирует работу транзакций. Кроме того, в «файл-серверной» системе сбой на любой из рабочих станций может привести к потере данных и их недоступности для других рабочих станций, в то время, как в «клиент-серверной» системе сбой на клиенте, практически, никогда не сказывается на целостности данных и их доступности для других клиентов.

Сервер баз данных предоставляет мощные средства защиты данных от несанкционированного доступа, невозможные в настольных СУБД. При этом, права доступа администрируются очень гибко - до уровня полей таблиц. Кроме того, можно вообще запретить прямое обращение к таблицам, осуществляя взаимодействие пользователя с данными через промежуточные объекты - представления и хранимые процедуры. Так что администратор может быть уверен - никакой слишком умный пользователь не прочитает то, что ему читать неположено.


Глоссарий


№ п/пПонятиеОпределение1DDLЯзык описания данных. Семейство компьютерных языков, используемых в компьютерных программах для описания структуры баз данных.2DMLЯзык управления данными. Семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.3GUIГрафический пользовательский интерфейс.4IDEСистема программных средств, используемая программистами для разработки программного обеспечения.5LANЛокальная вычислительная сеть6LCLНижняя контрольная граница7MDIMultiple document interface - многодокументное приложение8SQLуниверсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.9UCLВерхняя контрольная граница10Базовый элементСовокупность результатов испытаний на одном уровне, полученных одной лабораторией.11Контрольная карта ШухартаВ управлении производством, визуальный инструмент, график изменения параметров процесса, оцениваемых по выборке, во времени.12Наблюдаемое значениеЗначение характеристики, полученное в результате единичного наблюдения13ПрецизионностьCтепень близости друг к другу независимых результатов измерений, полученных в конкретных установленных условиях. Эта характеристика зависит только от случайных факторов и не связана с истинным значением или принятым опорным значением.14ПравильностьХарактеризует степень близости среднего значения, полученного на основании большой серии результатов измерений к истинному или в случае его отсутствия к принятому опорному значению. Показателем правильности обычно является значение систематической погрешности.15ТочностьСтепень близости результата анализа к истинному или принятому опорному значению.Список использованных источников


1Аболрус С. Программирование на языке Pascal, 3-е изд. СПб.: Символ, 2003 г. - 328 с.

Архангельский А.Я. Программирование в Delphi 6. M.: ЗАО Издательство БИНОМ, 2003 г. - 1120 с.:ил.

Архангельский А.Я. Приемы программирования в Delphi на основе VCL. M.: ЗАО Издательство БИНОМ, 2009 г. - 944 с.:ил.

Белов В.В., Чистякова В.И. Программирование в Delphi: процедурное, объектно-ориентированное, визуальное. Учебное пособие для вузов. М.:Горячая линия-Телеком, 2009 г. - 240 с.

5Бондарь А.Г. InterBase и Firebird. Практическое руководство для умных пользователей и начинающих разработчиков. СПб.: БХВ-Петербург, 2007 г. - 592 с.

Борри Хелен. Firebird: руководство разработчика баз данных в подлиннике. 2-е изд., испр. СПб.: БХВ-Петербург, 2007 г. - 1104 с.

Востриков С.М., Ковязин А.Н. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных. - СПб.: Питер, 2005 г. - 496 с.

ГОСТ Р ИСО 5725-1-2002 - Точность (правильность и прецизионность) методов и результатов измерений. Основные положения и определения. М.: ИПК Издательство стандартов, 2009 г. - 32 с.

ГОСТ Р ИСО 5725-2-2002 - Основной метод определения повторяемости и воспроизводимости стандартного метода измерений. М.: ИПК Издательство стандартов, 2009 г. - 51 с.

ГОСТ Р ИСО 5725-3-2002 - Промежуточные показатели прецизионности стандартного метода измерений. М.: ИПК Издательство стандартов, 2009 г. - 27 с.

ГОСТ Р ИСО 5725-4-2002 - Основные методы определения правильности стандартного метода измерений. М.: ИПК Издательство стандартов, 2009 г. - 32 с.

ГОСТ Р ИСО 5725-5-2002 - Альтернативные методы определения прецизионности стандартного метода измерений. . М.: ИПК Издательство стандартов, 2009 г. - 48 с.

ГОСТ Р ИСО 5725-6-2002 - Использование значений точности на практике. М.: ИПК Издательство стандартов, 2009 г. - 51 с.

Грабер Мартин. SQL. Справочное руководство. Второе издание. М.: Лори, 2006 г. - 354 с.

Ездаков А.Л. Функциональное и логическое программирование, 2-е изд. M.: ЗАО БИНОМ, 2011 г. - 119 с.:ил.

Жулева С.Ю., Соколова Ю.С. Разработка приложений в среде Delphi. М.: Горячая Линия-Телеком, 2011 г. - 144 с.

Карвин Б. Программирование баз данных SQL. Типичные ошибки и их устранение. М.: Рид Групп, 2012 г. - 336 с.

Кириллов В.В., Громов Г.Ю. Введение в реляционные базы данных. СПб.: БХВ-Петербург, 2009 г. - 464 с.

Климова Л.М. Pascal 7.0. Практическое программирование. Решение типовых задач. М.: Кудиц-Образ, 2003 г. - 528 с.

Кузнецов С.Д. Базы данных. Модели и языки. M.: ЗАО Издательство БИНОМ, 2008 г. - 720 с.:ил.

Кузнецов С.Д. Основы баз данных. 2-е изд., испр. M.: ЗАО Издательство БИНОМ, 2007 г. - 484 с.:ил.

Культин Н.Б. Delphi в задачах и примерах. - 3-е изд. СПб.: БХВ-Петербург, 2012 г. - 288 с.

Маркин А.В. Построение запросов и программирование на SQL. М.: Диалог-МИФИ, 2008 г. - 320 с.

МИ 2335-2003 - Внутренний контроль качества результатов количественного химического анализа. ФГУП УНИИМ Госстандарта России, 2004 г. - 65 с.

МИ 2336-2002 - Государственная система обеспечения единства измерений. Показатели точности, правильности, прецизионности методик количественного химического анализа. ФГУП УНИИМ Госстандарта России, 2002 г. - 51 с.

Осипов Д.Л. Базы данных и Delphi. Теория и практика. СПб.: БХВ-Петербург, 2011 г. - 752 с.

Просветов Г.И. Программирование. Задачи и решения. Учебно-практическое пособие. М.: Альфа-Пресс, 2011 г. - 112 с.

Радкевич Я.М., Схиртладзе А.Г. Метрология, стандартизация и сертификация 5-е изд., перераб. и доп. М.:Юрайт, 2012 г. - 813 с.

Сергеев А.Г., Терегеря В.В. Метрология, стандартизация и сертификация. М.:Юрайт, 2012 г. - 820 с.

Фленов М.Е. Библия Delphi 3-е изд., перераб.и доп. СПб.: БХВ-Петербург, 2011 г. - 688 с.

Шкрыль А.А. Разработка клиент-серверных приложений в Delphi. СПб.: БХВ-Петербург, 2006 г. - 480 с.:ил.


Список сокращений


БД - база данных

КК - контрольная карта

ПО - программное обеспечение

ППО - промежуточное программное обеспечение

СКО - среднее квадратическое отклонение

СУБД - система управления базами данных


Алгоритмические языки и программирование Разработка комплекса программ автоматизации процесса регистрации

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2018 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ