Разработка dll-библиотеки
Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.06.2015 |
Размер файла | 676,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
ГЛАВА 1. ПРЕДНАЗНАЧЕНИЕ И ПРИНЦИП ПРИМЕНЕНИЯ МАТЕМАТИЧЕСКОГО МОДУЛЯ
1.1 Определение программного модуля
1.2 Определение математического модуля
1.3 Принцип применения математического модуля
1.3.1 Определение библиотеки
1.3.2 Принципы использования dll-библиотеки
1.3.3 Преимущества и недостатки использования dll-библиотек
1.4 Разработка технического задания
1.4.1 Общие требования
1.4.2 Поставленные требования к программному коду:
1.4.3 Требования к разрабатываемой библиотеке:
ГЛАВА 2. РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Общая характеристика математических моделей
2.2 Описание коэффициентов моделей
2.3 Разработка структуры классов
ГЛАВА 3. ОПИСАНИЕ БИБЛИОТЕК МАТЕМАТИЧЕСКОГО МОДУЛЯ В MS VISUAL STUDIO
3.1 Описание среды разработки MS Visual Studio
3.2 Возникновение языка C#
3.3 Возможности языка C#
3.4 Реализация библиотеки классов в среде разработки MS Visual Studio
3.5 Отладка и тестирование библиотеки
3.6 Выводы о результатах работы программы
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ВВЕДЕНИЕ
На сегодняшний день показатель надежности современной техники является крайне важным критерием в оценке ее возможностей, времени работы и устойчивости. От этого показателя сильно зависят такие показатели, как качество, эффективность, безопасность, риск, готовность, живучесть. Любое техническое устройство должно иметь достаточно высокий показатель надежности, чтобы иметь возможность своего нормального и долгосрочного использования.
Надежность техники определяется на этапах ее проектировании и производстве. Любая техника, удовлетворяющая требованиям долговечности и надежности, еще при проектировании получает коэффициент интенсивности отказов при большинстве типов воздействий и экспериментально оценивается, чтобы показать, что полученный коэффициент не хуже заданных при построении технического задания. И это еще не все. Также необходимо разработать и использовать методы, которые позволят устройству показывать высокое время эксплуатации без отказов и сбоев. Все это невозможно реализовать, если не владеть основами теории надежности. Достичь подобных результатов не представляется возможным без использования законов теории надежности.
Необходимость изучения и использования теории надежности инженерами большинства отраслей делает эту науку очень востребованной в современных реалиях производства.
Теория надежности -- это наука, объектом изучения которой являются правила и законы отказов любых технических устройств. Она изучает:
- критерии и показатели надежности различных видов техники;
- способы анализа и синтеза техники по показателям коэффициентов надежности устройства;
- способы получения техники большего качества путем увеличения ее надежности и срока службы;
- научные методы использования техники, которые обеспечивают высокий показатель надежности при ее эксплуатации.
В настоящее время проблема надёжности РЭС заметно обострилась. Объясняется это следующим:
- РЭС заметно усложнились в схемотехническом отношении.
- Ужесточились условия, в которых эксплуатируется современная радиоэлектронная аппаратура. Они часто характеризуются большим перепадом температур, высоким или низким давлением, наличием механического воздействия и т.д.
- Повысились требования к точности функционирования РЭС.
- Повысилась «цена» отказа РЭС: она может привести к серьезным техническим и экономическим потерям.
- В ряде случаев человек-оператор не имеет непосредственного контакта с РЭС (электронные датчики контроля хода технологических процессов в агрессивных средах, РЭС на непилотируемых летательных объектах и т.п.).
В итоге, расчет показателя надежности является обязательным этапам в разработке и изготовлении любой техники для увеличения устойчивости эксплуатации в долгосрочном периоде, повышения времени безаварийного использования, и, в конечном итоге, повышения качества выпускаемой продукции и более экономичной работы различных технических устройств и предприятий. Экономичность является прямым следствием из надежности.
ГЛАВА 1. ПРЕДНАЗНАЧЕНИЕ И ПРИНЦИП ПРИМЕНЕНИЯ МАТЕМАТИЧЕСКОГО МОДУЛЯ
1.1 Определение программного модуля
Программный модуль -- это отдельная часть программного кода, фрагмент программы, который полностью самостоятельно выполняет свою задачу, оформленный в виде отдельного файла с исходным кодом или поименованной непрерывной её части. Эти модули предназначаются для использования в других программах или же для расширения возможностей как, например, библиотека плагинов. Разбиение всей программы на отдельные модули позволяет решение общей, сложной задачи разделить на решение нескольких, более простых. Что в свою очередь увеличивает скорость и качество разработки, когда каждый занимается своим модулем программы, а затем их собирают в единый проект. В общем случае модули проектируются таким образом, чтобы предоставлять программистам удобную для многократного использования функциональность (интерфейс) в виде набора функций, классов, констант. Модули можно объединять в пакеты, а несколько пакетов можно объединять в библиотеки. Возможность изменения или обновления одного модуля не затрагивая всей программы и остальных модулей является главным удобством использования модульной архитектуры. Также разделение программы на модули позволяет распределить нагрузку, в случае большой потребности ПО в ресурсах, при запуске разных модулей на разных серверах, используя так называемую распределенную архитектуру.
Модульное программирование подразумевает разбивание всей программы на различные функциональные блоки, которые называют модулями. Каждый модуль имеет свое назначение, определенный размер, а также определенный интерфейс работы с другими модулями. Можно, конечно, использовать монолитный способ написания программы, но, в случае написания больших проектов, этот способ является совершенно неприемлемым. Главным вопросом в использовании модульной архитектуры является принцип разделения программы на модули.
В основе использования модульной архитектуры лежат три основных концепции:
- Принцип утаивания информации Парнаса. Каждый модуль скрывает в себе одно проектное решение. Такой подход к разделению программы на модули подразумевает разделение технического задания на список проектных решений, которые достаточно трудно реализовать, и их, скорее всего, придется много раз менять. После чего каждому модулю в качестве функционала приписывают такие проектные решения.
- Аксиома модульности Коуэна. Модуль -- это независимая программная единица, служащая для выполнения некоторой определенной функции программы и для связи с остальной частью программы. Программная единица должна удовлетворять следующим условиям:
- блочность организации, т. е. возможность вызвать программную единицу из блоков любой степени вложенности;
- синтаксическая обособленность, т. е. выделение модуля в тексте синтаксическими элементами;
- семантическая независимость, т. е. независимость от места, где программная единица вызвана;
- общность данных, т. е. наличие собственных данных, сохраняющихся при каждом обращении;
- полнота определения, т. е. самостоятельность программной единицы.
- Сборочное программирование Цейтина. Модули -- это программные кирпичи, из которых строится программа. В этой концепции основной идеей является принцип, что модули - это своего рода строительные кирпичи любой программы и что из этих самых кирпичей строится вся программа. Выделяют три основные предпосылки к использованию модульной архитектуры:
- стремление к выделению независимой единицы программного знания. В идеальном случае всякая идея (алгоритм) должна быть оформлена в виде модуля;
- потребность в разделении особенно крупного программного проекта;
- возможность разных участков проекта выполняться параллельно.
Также имеются дополнительные определения программного модуля.
- Модулем называется совокупность команд, к которым имеется возможность обращения по имени.
- Модулем называется совокупность операторов в коде программы, которая имеет ограничивающие операторы и определяющий возможность доступа идентификатор.
Функциональная спецификация модуля должна включать:
- Описание синтаксической спецификации параметров, подаваемых на его вход, которое позволит, используя текущий язык программирования, правильный доступ к его функциональным возможностям ;
- Описание, что делает каждая функция в модуле на каждый входной параметр.
Модули также разделяют на три категории:
- «Маленькие» (функциональные) модули. Они, обычно, реализуют одну или несколько функций. Во всех языках программирования высокого уровня имеется поддержка основного и простейшего модуля: процедуры и функции.
- «Средние» (информационные) модули, реализующие, в обычном случае, сравнительно небольшое количество операций или функций над так называемым информационным объектом, который считается за пределами модуля неизвестным. Наиболее известные примеры информационных модулей это классы в таких языках программирования как С, С++, С#, Java и другие.
- «Большие» (логические) модули, которые объединяют в себе некоторое количество как «маленьких» так и «средних» модулей. Примером "больших" модулей в языках программирования могут послужить пакеты или сборки в таких языках программирования, как Java.
1.2 Определение математического модуля
программный модуль библиотека visual
Математический модуль - это программный модуль, отвечающий за расчет определенных коэффициентов, характеристик и параметров, необходимых для работы программы. Обычно математический модуль ведет либо все расчеты, которые проводит программа, либо некоторую тематическую часть, в случае большой сложности программы или очень большого объема вычислений.
Соответственно математический модуль - это программная реализация набора математических формул, реализующих расчеты всех поставленных для модуля задач. Иначе говоря, математический модуль реализует всю требуемую от него математику. В обычном случае подобный модуль содержит все математические расчеты программы, но в случае больших проектов, подобных модулей может быть много, и каждый реализует свой блок математических расчетов, разделенных по определенным тематикам. Например, один блок реализует расчет решения задачи одной категорией методов, второй блок соответственно реализует расчет другой категорией методов и так далее. Подобные блоки достаточно удобно объединять в математические библиотеки для удобства их использования в программе.
В программной реализации подобные модули могут выглядеть как:
- Набор функций, описанных в отдельном файле, и представляющие собой реализацию каждой отдельной формулы, необходимой для получения решения для поставленной к модулю задачи. Соответственно, каждая функция принимает на вход определенный формулой набор параметров, и возвращает в качестве ответа полученное решение. Подобный список функций удобно использовать в небольших проектах, чтобы не усложнять структуру программы.
- Класс или набор классов, которые содержат методы расчета решения поставленной задачи по каждой заданной формуле. Методы принимают в себя необходимые для расчета коэффициенты и в качестве возвращаемого значения представляют решение вычисления по данной формуле. Каждый класс может иметь внутри себя методы для расчета формул объединенных одной тематикой. Например, класс Резистор, который содержит методы расчета надежности и интенсивности отказов всех типов резисторов. Подобная структура удобна в случае реализации больших проектов, которые, например, осуществляют расчеты надежности для всех радиоэлектронных элементов современных радиоэлектронных систем. При такой организации доступ к нужной формуле осуществляется через указание класса, в котором находится метод, реализующий расчет данной формулы. Для этого не придется искать нужную формулу в огромном списке функций. Соответственно, подобный вид организации сильно упрощает разработку больших вычислительных систем.
1.3 Принцип применения математического модуля
1.3.1 Определение библиотеки
Обычно подобные модули объединяют в программные библиотеки. Библиотека в разработке ПО - совокупность подпрограмм или модулей, В определенных языках используются как совокупность нескольких модель, в других как один единственный модуль. По принципу использования операционной системой подразделяются на статические и динамические библиотеки.
Определение динамической библиотеки
Динамическая библиотека - файл, содержащий машинный код. При создании процесса, требующего динамическую библиотеку, или при запросе уже существующего процесса, библиотека загружается в память операционной системой. Благодаря этому библиотеку могут использовать в работе сразу несколько процессов. Также это позволяет экономить память, так как библиотека будет загружаться не для каждой программы, а только один раз, при этом позволяя свое использование нескольким программам. В операционных системах семейства Windows такие библиотеки имеют расширение dll. В зависимости от назначения различают:
- библиотеки, которые используются только одной программой, без которых их функционирование невозможно. Обычно содержат обязательные функции для выполнения данной программы. Недостатком подобных библиотек является тот факт, что без них невозможно нормальное функционирование программы;
- библиотеки, которые используются одной программой и расширяющие ее возможности, внося дополнительные функции. Примером таких библиотек могут послужить библиотеки плагинов, которые расширяют функционал программы;
- библиотеки общего пользования. В большинстве своем содержат функции, которые используют сразу большое количество процессов.
При написании программы программисту достаточно указать транслятору (компилятору или интерпретатору) путь к библиотеке и имя функции. Ни исходный текст функции, ни её исполняемый код в состав программы не войдут. Во время написания программного кода программисты нужно лишь указать компилятору или интерпретатору путь к библиотеке, после чего указать имя функции. При создании объектного кода ни исходный текст библиотеки, ни ее исполняемый код в состав программы входить не будут.
Достоинства динамических библиотек:
- возможность использования одной библиотеки несколькими процессами, что приводит к уменьшению использованной памяти;
- Легкость внесения исправлений и изменений. Достаточно исправить нужный код в библиотеке, и приложение будет использовать уже измененный вариант.
Их недостатки:
- возможность нарушения API (при внесении изменений в библиотеку существующие программы могут перестать работать);
- конфликт версий динамических библиотек (разные программы могут ожидать разные версии библиотек);
- Возможность доступа к одной и той же функции по одному и тому же адресу разными процессами.
Определение статической библиотеки
Статическая библиотека - файл с исходным кодом или объектный файл, который предназначен для вставки на этапе компоновки в программный код. Примером могут послужит библиотеки stdlib.h и stdio.h в языке программирования С. Библиотеки, распространяемые в виде исходного кода, преобразуются компилятором в объектные файлы. Подобные библиотеки, которые имеют вид исходного кода, используются компилятором и преобразуются компилятором в объектные файлы. После чего происходит объединение полученных объектных файлов библиотек и объектных файлов программы в единый исполняемый файл. Существуют также библиотеки, распространяющиеся уже в виде объектных файлов. Такие библиотеки уже готовы к компоновке. В таких случаях компоновщик соединяет библиотеку и программу в виде объектного файла сразу во время создания исполняемого файла.
Достоинства статичных библиотек:
- Все функции, необходимые программе включаются в один большой файл. Такой подход удобен для разработки небольших проектов.
Их недостатки:
- Полученный в результате работы компоновщика исполняемый файл занимает большой объем памяти;
- Если в ходе разработки потребовалось внести изменения и коррективы в статичную библиотеку, то придется пересобрать весь проект, что может занимать довольно большой промежуток времени.
Проблемы разработки библиотеки
Возможность разработки библиотек вместо создания отдельных прикладных программ предоставила разработчикам проблемы прикладного и системного характера. К числу основных проблем, возникающих на различных этапах конструирования библиотеки, относятся проблемы систематизации, документирования, тестирования и переносимости.
Проблема систематизации библиотек являет собой их разделение на отдельные блоки и подблоки. Их разделяют в зависимости от необходимого функционала и предметной области. В эти критерии также входят выбор стандарта именования модулей, с учетом возможного обновления библиотеки, единых стандартов входных и выходных параметров, общей системы контроля ошибок и многие другие.
Использование в разработке библиотеки с качественным документированием позволяет значительно ускорить процесс разработки, связанный с использованием в коде этой библиотеки, облегчить доступ к необходимым в данный момент разработки модулям и подмодулям, а также упростить организацию взаимодействия между программами. В решении данной проблемы помогают средства унификации и автоматизации составления документации, применение шаблонов, например для титульных листов или фрагментов текста.
Тестирование библиотеки проводится в сравнении выходных данных отдельных моделей при заданных наборах тестовых входных и выходных данных. Качества тестирования в таком случае зависит от качества и полноты тестовых наборов. Также на этапах тестирования определяется соответствие программного кода стандарту выбранного языка программирования, скорость работы, точность вычислений и полученных результатов. По результатам тестирования производят сравнение программы с ее аналогами для определения качества полученного исполняемого файла.
Переносимость подразумевает собой обеспечение возможности использования модулей библиотеки на самых разных вычислительных платформах, то есть поддерживать стабильную работу на разных типах вычислительных систем, на разных операционных системах и так далее. Также в этой проблеме встает вопрос об автоматизации переноса программ из одной среды в другую, создании кроссплатформенности, реализации возможности использования процессорно-зависимых переменных и констант, а также о следовании стандарту выбранного языка программирования. Доступ к программным модулям в библиотеки осуществляется при помощи стандартных возможностей выбранного языка программирования. Однако нередким оказывается момент, что разные модули в одной и той же библиотеке оказываются написанными разными прикладными программистами. Отсутствие среди модулей библиотеки специального системного обеспечения дает возможность осуществить создание библиотеки без существенной помощи системных программистов.
Таким образом, библиотеки программ ориентированы на реализацию модулей определенной предметной области и не содержат методов решения специфических задач. Это одно из основных требований к библиотекам, которые используются многими программами для решения задач из разных предметных областей. Следовательно, отсутствие развитого системного обеспечения и проблемно-ориентированного языка программирования является характерной особенностью библиотек программ.
1.3.2 Принципы использования dll-библиотеки
Программный код библиотеки в формате dll имеет структуру, которая в большинстве языков программирования одинакова. Любая dll-библиотека должна включать в себя:
- Модуль, который поддерживает очистку и инициализацию dll-библиотеки;
- Модули и функции, реализующие решения задач своей предметной области;
- Необходимую структуру документации.
Модуль инициализации имеет вид функции или процедуры, которая принимает на вход параметры, один из которых имеет значение, указывающее модификатор обращения. Значения, которое может принимать данный параметр, указаны в таблице 1.
Таблица 1 - Значения параметра модуля инициализации библиотеки
DLL_PROCESS_ATTACH |
Указывает, что библиотека подключена к вызывающему процессу |
|
DLL_PROCESS_DETACH |
Указывает, что библиотека отсоединена от вызывающего процесса |
|
DLL_THREAD_ATTACH |
Указывает, что процесс создаёт новый поток |
|
DLL_THREAD_DETACH |
Указывает, что процесс завершает поток |
Модуль инициализации возвращает параметр со значением истина, если процесс завершился успешно, или со значением ложь, если в процессе инициализации возникла ошибка. В случае получения параметра ложь, все дальнейшие действия завершаются.
Перед тем, как использовать модули библиотеки, необходимо подключить библиотеку к программному обеспечению. Подключение можно осуществить двумя способами. Первый заключается в объявлении отдельной внешней функции или процедуры, а второй - в осуществлении объявления динамически, при помощи функций Win32 API. Но все равно внутренние модули библиотеки будут загружены в память только в момент работы приложения.
Чтобы загрузить dll-библиотеку, операционная система должна найти её. Для загрузки и использования библиотеки приложением, операционная система должна найти и подгрузить ее. Стандартный поиск операционной системы осуществляется в следующих разделах:
- Место расположения приложения, которое запросила доступ к библиотеке;
- текущая директория;
- Расположение системы на диске, обычно адрес директории выглядит так: C:\Windows\System32;
- Расположение подраздела системы для работы 16-битных программ.
- Расположение самой операционной системы Windows;
- Пути, которые указывает переменная окружения Path.
Просмотр перечисленных выше разделов производится до нахождения нужной библиотеки. Порядок просмотра может быть разным. В случае, когда библиотека не найдена системой, выдается уведомление об ошибке поиска.
1.3.3 Преимущества и недостатки использования dll-библиотек
Использование динамических библиотек предлагает следующие преимущества:
- Экономия памяти и уменьшение объема выгрузки. В случае использования динамических библиотек, несколько приложений одновременно получают доступ к одной библиотеке. При этом для использования библиотеки требуется хранение только одного экземпляра библиотеки в памяти системы. В случае же использования статичных библиотек операционная система должна для каждой программы, которой необходима данная библиотека, загрузить код библиотеки в память.
- Экономия места на диске. В случае параллельного использования одной dll-библиотеки многими программами, на диске хранится только одна копия данной библиотеки. При использовании статических библиотек наоборот, для каждой программы создается отдельная копия данной библиотеки.
- Удобство и простота изменения и обновления dll-библиотек. Если требуется провести изменение или корректировку dll-библиотеки, то после внесения изменений в библиотеку не придется проводить компиляцию или компоновку приложения, которое использует данную библиотеку, заново. Однако при использовании объектного кода статических библиотек придется проводить перекомпиляцию программы или снова проводить компоновку в случае даже небольших изменений.
- Обеспечение длительной поддержки выпущенных в использование библиотек. Обеспечивается легкостью обновления и дополнения функционала библиотеки для расширения возможностей или для поддержки новых устройств.
- Поддержка многоязычных программ. Использование разных языков программирования при разработке программы не мешает использованию библиотеки, если язык программы и язык библиотеки используют единые стандарты вызова функций.
- Упрощение создания международных версий приложений. Легкость использования dll-библиотек позволяет облегчить процесс интернационализации программы, если, например, загрузить все строковые ресурсы, используемые программой, в dll-библиотеку. Соответственно версию для каждого языка размещаем в отдельной библиотеке, и подгружаем ресурсы той, язык которой необходим в данный момент.
Единственным крупным недостатком можно считать тот факт, что программа, использующая dll-библиотеку, не может иметь полный функционал в ее отсутствии.
Если приложение использует функцию в библиотеке, или одна библиотека использует функцию из другой библиотеки, то получается зависимость, из-за которой приложение или библиотека становятся зависимыми, теряют свою самодостаточность. Соответственно при следующих событиях происходят ошибки:
- Соответствующая библиотека обновилась до новой версии;
- Внесены изменения в зависимую dll-библиотеку;
- Соответствующий dll-файл перезаписывался с более ранней версией;
- Соответствующий dll-файл не найден системой или удален с компьютера.
Обычно эти действия называются конфликтами dll-библиотек. Если не обеспечивается обратная совместимость, программа не может быть успешно запущена. Такие действия называют конфликтом dll-библиотек. Программа может быть успешно запушена и нормально использоваться только в случае обеспечения обратной совместимости.
1.4 Разработка технического задания
1.4.1 Общие требования
Целью работы является создание обширной библиотеки, реализующей необходимый функционал формул для расчета надежности и коэффициентов отказов следующих типов радиоэлектронных элементов:
- Интегральные микросхемы
- Полупроводниковые приборы
- Оптоэлектронные полупроводниковые приборы
- Изделия квантовой электроники
- Генераторные, модуляторные и регулирующие лампы
- Газоразрядные приборы и высоковольтные кенотроны
- Трубки электроннолучевые приемные и преобразовательные
- Знакосинтезирующие индикаторы
- Приборы фотоэлектронные
- Приборы фотоэлектрические
- Приборы пьезоэлектрические и фильтры электромеханические
- Резисторы
- Конденсаторы
- Трансформаторы
- Дроссели
- Линии задержки
- Лампы накачки
- Источники высокоинтенсивного оптического излучения
- Компоненты волоконно-оптических систем передачи информации
- Коммутационные изделия
- Установочные изделия
- Соединители низкочастотные и радиочастотные
- Электровакуумные приборы и модули СВЧ
- Приборы Ферритовые СВЧ
- Аппараты электрические низковольтные
- Машины электрические малой мощности
- Силовые Полупроводниковые приборы
- Электрические кабели, провода, шнуры
- Химические источники тока
- Лампы электрические
- Соединения
- Платы с металлизированными сквозными отверстиями
В качестве источника формул методов расчета надежности и интенсивности отказов современных радиоэлектронных систем использовать справочник «Надежность электрорадиоизделий 2006». В результате необходимо получить библиотеку классов, реализующих расчет необходимых формул.
1.4.2 Поставленные требования к программному коду
Комментирование кода:
По ходу написания программы необходимо добавлять внятное описание (в комментариях на русском языке) ключевых моментов программы. Исключить комментарии из серии - int, if, for ("целочисленная переменная", "цикл").
Необходимо описывать логику работы программы ("запрашиваем состояние соединения с сервером", "ожидаем изменения флага готовности анимации" и т.п.)
Каждый модуль программного кода должен иметь комментарий, достаточно подробно описывающий назначение приведенного модуля, но без подробного описывания его работы.
Необходимо описывать функции (в месте где эти функции определены) "функция возвращает 1 если успешно, 0 если ошибка.
Если это типовой кусок кода, при этом по какой-либо причине он дублируется, можно не описывать подобно а написать "делаем такое-то действие, см. описание //указание места//"
Разбитие программ на функции:
При написании программы необходимо выделять однотипные части кода в отдельные функции, это в первую очередь касается функций подключения и получения данных из БД, и функций связи с другими модулями. Это необходимо для обеспечения простоты модификации программы в случае изменения протоколов связи или типов БД.
Скорость выполнения и очистка памяти:
По причине цикличности выполнения задач в программе необходимо стремиться к увеличению скорости работы программных модулей выполняющих действия многократно и следить за оптимальностью использования памяти.
Компиляция:
Написание программы выполняется на языке C# в среде разработки Visual Studio 2013, компиляцию необходимо проводить как для х32 системы так и для х64.
Отладка написанного программного кода и предоставление работы:
Для отладки написанного программного модуля, в случае если он подразумевает взаимодействие с другими модулями необходимо создать простейшие приложения-заглушки, имитирующие работу других модулей, в соответствии с протоколами взаимодействия. Особые требования к интерфейсу приложений-заглушек не предъявляется, единственное требование - возможность имитировать все возможные команды оригинала модуля.
1.4.3 Требования к разрабатываемой библиотеке
Общая задача: выдать результат расчета по запрошенной формуле, при неудаче - выдать статус ошибки.
Формат функции:
bool err = fx(int x, double y, double z, double res);
где err = 0 при успешном выполнении функции, в противном случае = 1
res = результат выполнения функции
Требования к названиям функций:
Необходимо соблюдать общий стиль названия функций и переменных.
Названия функции для каждой группы начинаются с префикса, кириллические символы заменяются латиницей по ГОСТ 16876-71, префикс обозначающий группу и суффикс означающий подгруппу пишутся без пробелов и заглавными буквами.
Названия переменных пишутся без префиксов и суффиксов маленькими буквами.
(например лЭ для группы «резисторы» подгруппы «метало диэлектрические»).
RES_lmbd_eh_MD(double lmbd_b, double k_rjm, double k_res …);
Документирование:
Необходимо вести таблицу описаний функций «название функции» - «название формулы, № страницы справочника» «типы данных и ограничения», так же эти данные дублировать в комментарии к каждой функции перед ее определением.
Для достижения поставленной задачи необходимо решить следующие задачи:
1. Разработать состав и назначения классов;
2. Разработать структуру каждого класса;
3. Реализовать методы расчета для каждого класса;
4. Скомпилировать библиотеку классов в формате dll;
5. Провести тестирование всех классов библиотеки.
ГЛАВА 2. РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Общая характеристика математических моделей
Значения эксплуатационной интенсивности отказов большинства групп электрорадиоизделий рассчитываются по математическим моделям, имеющим вид:
или
где лб (лб.с.г) - базовая интенсивность отказов типа (группы) ЭРИ, рассчитанная по результатам испытаний ЭРИ на безотказность, долговечность, ресурс;
Кi - коэффициенты, учитывающие изменения эксплуатационной интенсивности отказов в зависимости от различных факторов;
n - число учитываемых факторов.
Для отдельных групп сложных изделий, суммарный поток отказов которых складывается из независимых потоков отказов составных частей ЭРИ (например, вращающихся частей и обмоток электродвигателя), математическая модель расчета интенсивности отказов имеет вид:
где лбj - исходная (базовая) интенсивность отказов j-го потока отказов;
m - количество независимых потоков отказов составных частей ЭРИ;
Кij - коэффициент, учитывающий влияние i-го фактора в j-м потоке отказов;
nj - количество факторов, учитываемых в j-ом потоке отказов.
Модели расчета эксплуатационной интенсивности отказов распространяются на период постоянства интенсивности отказов во времени.
Для расчета значений лэ по отдельным видам отказов, базовую интенсивность отказов л*б определяют по формулам:
или
где Квид - доля учтённого вида отказов в общем распределении.
Значения лб приведены для отдельных типов ЭРИ и рассчитаны по результатам испытаний конкретных типов ЭРИ. В случае отсутствия информации для расчета интенсивности отказов конкретного типа оценка производится по значению интенсивности отказов аналога или типового представителя той группы, в которую входит данный тип.
2.2 Описание коэффициентов моделей
Коэффициенты, входящие в математические модели прогнозирования интенсивности отказов ЭРИ, условно можно разделить на две группы (таблица 2):
- первая группа коэффициентов является общей для моделей большинства классов, групп и типов изделий и характеризует режимы и условия их эксплуатации, уровень качества производства ЭРИ;
- вторая группа коэффициентов включается в модели конкретных классов (групп) ЭРИ и характеризует зависимость интенсивности их отказов в заданных условиях эксплуатации от конструкционных, функциональных и технологических особенностей ЭРИ.
Таблица 2 - Характеристика коэффициентов моделей расчета интенсивности отказов ЭРИ
Коэффициент режима Кр служит для пересчета базовой интенсивности отказов к фактическим режимам применения ЭРИ в аппаратуре. Значения Кр приведены в соответствующих таблицах разделов справочника. Для большинства групп ЭРИ одновременно приводятся аналитические выражения для определения Кр.
Коэффициент приемки Кпр отражает два уровня качества изготовления изделий: общего военного применения (ОВП) - приемка «5» и повышенной надежности (ОС) - приемка «9» (в эту же группу входят изделия повышенной надежности, выпускаемые малыми партиями (ОСМ) - приемка «7»). Для изделий с приемкой «5» значение Кпр принято равным 1.
Коэффициент эксплуатации Кэ учитывает степень жесткости условий эксплуатации и показывает, во сколько раз интенсивность отказов ЭРИ в аппаратуре конкретного класса (группы эксплуатации по ГОСТ РВ 20.39.301-98) выше при всех прочих равных условиях, чем в наземной стационарной аппаратуре.
Коэффициент ионизирующих излучений Кии (Кии ? 1) учитывает влияние воздействующих ионизирующих излучений естественного и искусственного происхождения на надежность ЭРИ. При отсутствии статистических данных об указанном воздействии следует принимать
Кии = 1.
В соответствии с требованиями обеспечения надежности при проектировании на разных этапах разработки производится приближенный или уточненный расчет надежности аппаратуры (ГОСТ РВ 20.39.302-98).
При проведении ориентировочных расчетов эксплуатационной интенсивности отказов (лэ) для условий, отличных от указанных в примечаниях к таблицам, следует воспользоваться соотношением:
л?э = лэ·К,
где К - коэффициент, учитывающий различие между значениями Кр, указанными в примечаниях, и требуемыми К?р, т.е К = К?р / Кр.
При проведении уточненного расчета надежности РЭА оценка эксплуатационной интенсивности отказов ЭРИ, входящих в состав аппаратуры, производится по соответствующим моделям с учетом всех коэффициентов.
В справочнике приведены значения Кэ, многократно подтвержденные по результатам эксплуатации соответствующих групп аппаратуры. Для отсутствующих в справочнике групп РЭА значение Кэ следует выбирать по согласованию с заказчиком из имеющихся в справочнике групп аппаратуры, наиболее близких по условиям эксплуатации.
Суммарная интенсивность отказов аппаратуры рассчитывается по формуле:
где Ка - коэффициент качества производства аппаратуры;
лэij - интенсивность отказов i-го типа изделий j-ой группы;
n - количество изделий j-ой группы;
m - количество групп изделий.
Коэффициент качества производства аппаратуры Ка учитывает уровень требований к разработке и изготовлению аппаратуры (отработанность техпроцесса и уровень организации производства аппаратуры).
Коэффициент Ка отражает среднестатистическую разницу в интенсивности отказов ЭРИ в аппаратуре, разрабатываемой и изготовляемой по требованиям различной НД.
При расчете надежности аппаратуры, которая в эксплуатации основную часть времени находится в режиме ожидания (хранения) в обесточенном состоянии с периодическим контролем работоспособности, рекомендуется использовать значения интенсивности отказов лэ.х групп ЭРИ, рассчитываемые по моделям:
для неподвижных объектов:
для подвижных объектов:
где лх.с.г - интенсивность отказов ЭРИ по результатам испытаний изделий на сохраняемость в упаковках заводов-изготовителей при температуре 5…40°С и относительной влажности воздуха до 80% (при температуре +25°С);
лб - базовая интенсивность отказов типа (группы) ЭРИ;
Кt.х - коэффициент, учитывающий изменение интенсивности отказов лх.с.г в зависимости от температуры окружающей среды;
Кпр - коэффициент приемки;
Кэ - коэффициент эксплуатации;
Кусл - коэффициент, учитывающий изменение интенсивности отказов лх.с.г
в зависимости от условий эксплуатации в режиме ожидания (хранения).
Модели (2) и (4) используют для расчета эксплуатационной интенсивности отказов изделий в режиме ожидания, для которых из-за отсутствия или недостаточности информации не приведены значения лб и (или) отсутствуют значения коэффициента хранения Кх, определяемые из соотношения Кх = лх.с.г / лб.с.г. В остальных случаях используют модели (1) и (3).
2.3 Разработка структуры классов
Основой структуры классов библиотеки модуля математического аппарата системы расчета надежности современных РЭС является разбиение всех формул математических моделей на модули, каждый из которых реализует расчет показателей для определенного типа элементов.
Соответственно каждый класс реализует расчет математических моделей и формул расчета коэффициентов надежности для отдельного типа радиоэлектронных элементов из приведенного списка. Внутри каждого класса реализованы статические методы, которые реализуют расчет той или иной математической модели или формулы конкретного типа элементов для каждого конкретного класса.
В объектно-ориентированном программировании основная задача методов заключается в том, чтобы изменять текущее состояние объекта, но до тех пор, когда в программе объекты ещё не используются, методы уже могут вводиться. Метод, который описан внутри некоторого класса, но вызывается без приложения к конкретному объекту этого класса, называется статическим.
Выбор реализации методов класса в качестве статических обусловлен тем, что для доступа к нужной формуле из тела программы не придется создавать объект класса, реализующего данную формулу. К тому же у каждого класса большой объем реализованных математических моделей и формул расчета надежности и интенсивности отказов, поэтому создание такого объекта задействует сравнительно большой объем памяти, чего естественно необходимо избегать. А реализация всех методов реализации расчетов в качестве статичных методов позволит избежать ненужной потери памяти и не обусловленного расхода ресурсов вычислительной системы.
Таким образом использование такой библиотеки классов позволит практически не расходуя память и ресурсы проводить необходимые расчеты коэффициентов надежности и интенсивности отказов. Каждый метод класса реализует один из методов расчета, соответственно каждый метод класса имеет такое же название как и название формулы, которую данный метод реализует. Это позволяет упростить понимание кода и облегчить доступ к необходимому расчету.
Для большего удобства использования библиотекой для каждого метода каждого класса имеется развернутый комментарий, описывающий формулу или метод, который данный метод реализует, а также расположение этого метода или формулы в справочнике «Надежность электрорадиоизделий 2006», в котором содержатся все реализуемые в библиотеке классов формулы.
Название каждого метода классов реализуется следующим образом: сначала пишется имя класса в сокращенной форме, например RES, означающий, что данный метод реализует один из методов расчета надежности резисторов; Далее через нижнее подчеркивание (так как в названии метода в программном коде нельзя и невозможно использование пробелов) пишется название формулы; Затем при необходимости пишутся следующие идентификаторы:
- Сокращения до первых букв от подтипов элементов, для которых проводится расчет, например на Рис.2.3.1 приведен код для расчета эксплуатационной интенсивности отказов полупроводниковых излучателей и оптопар.
Рис.2.3.1 Пример реализации метода в классе
В примере на Рис.2.3.1 используется сокращение IPO, которое расшифровывается как «излучатели полупроводниковые и оптопары».
Иногда для увеличения понятности названия метода расчета используются сокращения не до первых букв, а до нескольких начальных букв от каждого слова. На Рис.2.3.2. приведена реализация метода расчета коэффициента Кр температуры p-n перехода для полупроводниковых излучателей.
Рис.2.3.2 Пример использования неполного сокращения в названии метода
В примере соответственно IzlPol означает для излучателей полупроводниковых.
- Цифры, обозначающие номер реализуемой математической модели, если таковой используется в справочнике. В примере на Рис.2.3.1 реализована 1-ая математическая модель для расчета эксплуатационной интенсивности отказов для полупроводниковых излучателей и оптопар.
- Сокращения NO и PO, которые обозначают для неподвижных и подвижных объектов соответственно. Также к ним добавляется номер, обозначающий номер вида модели, если таковой имеется. На Рис.2.3.3 приведен пример метода, реализующего расчет эксплуатационной интенсивности отказов оптоэлектронных приборов, находящихся в режиме ожидания для неподвижных объектов для математической модели вида 1.
Рис.2.3.3 Пример реализации метода, использующего метку NO1
ГЛАВА 3. ОПИСАНИЕ БИБЛИОТЕК МАТЕМАТИЧЕСКОГО МОДУЛЯ В MS VISUAL STUDIO
3.1 Описание среды разработки MS Visual Studio
Microsoft Visual Studio является средой программирования, разработанной компанией Microsoft. Эта среда позволяет создавать кроссплатформенные проекты на различных языках программирования, таких как Visual Basic, Visual C#, Visual C++, Visual F# и другие. Также она позволяет создавать программы, использующие в своей работе платформу .NET, которая позволяет использовать большой набор сервисов, реализующихся в виде промежуточного, независящего от базовой архитектуры, кода. Основной целью создания платформы .NET является возможность реализации разработчиками специальных сервисно-ориентированных программ, работающих на любых платформах.
MS Visual Studio позволяет разработчику иметь доступ к огромной коллекции различных функций, которые позволяют вести разработки для любой версии операционной системы семейства Windows, для интернет-приложений и мобильных приложений. Также среда программирования открывает широкие возможности в области облачных технологий. Эта среда открывает разработчику широкие возможности для реализации самых разных проектов, реализуя высокую производительность и независимость от особенностей оборудования.
Microsoft Visual Studio позволяет осуществлять проектирование программ, используя любые по размеру команды. Эта среда разработки предоставляет инструменты планирования для возможности внедрения методов последовательной разработки, а также для гибкого планирования. Используя весь спектр возможностей, предоставляемых MS Visual Studio, можно реализовать максимально полную систему, наиболее удачно спроектировать любую архитектуру. Таким образом Microsoft Visual Studio представляет собой передовую среду разработки.
3.2 Возникновение языка C#
В конце 90-х годов прошлого века в качестве части от общей стратегии .NET компанией Microsoft был разработан язык программирования C#. Впервые свет увидел этот язык в виде альфа-версии в 2000 году. Разработкой данного языка занимался Андерс Хейльсберг, который на тот момент считался и до сих пор считается ведущим в мире специалистом по языкам программирования. Также в 80-е годы прошлого века он разработал язык Turbo Pascal, который имел тогда большое значение. Эта реализация, вследствие своей оригинальности и изящности послужила неким образцом и идеалом для разработки всех следующих компиляторов.
Данный язык программирования был создан на основе таких столпов программирования, как С, С++ и Java. Эти языки являются наиболее широко распространенными, а также признанными одними из лучших языков программирования во всем мире. Также на разработку языка С# повлиял тот факт, что большинство программистов в то время уже владели этими языками, благодаря чему Хейльсбергу не нужно было разрабатывать язык с нуля, а просто взять все самое лучшее из этих языков и привнести множество нововведений и усовершенствований.
Рис.3.2.1 Генеалогическое дерево C#
Язык С# является наследником языков С и С++. Из языка С он получил большинство ключевых слов, операторов, а также унаследовал их синтаксис. В добавок, от С++ он получил объектно-ориентированность и все связанные с этим концепции программирования. Разработчику, который привык к работе с языками С и С++ будет достаточно легко перейти на С#.
Родственные отношения между языками С# и Java куда более сложные, нежели между C#, C++ и С. С#, также как и Java, предназначен для разработки кроссплатформенных программ и приложений. Однако C# и Java не являются прямыми родственниками, С# не происходит напрямую от Java. Но все равно у С# и Java много общего, например концепция автоматического сборщика мусора, благодаря которому не нужно помнить и вручную освобождать всю динамически занятую память. С# и Java - это языки, на которые просто перейти друг с друга.
Но из скольких бы языков не происходил C#, в нем имеется множество своих нововведений. Например встроенная система поддержки написания таких программных компонентов, как свойства, методы и события. Из-за этого C# можно называть компонентно-ориентированным языком программирования. Также одним из основных свойств может считаться возможность работы в безопасной среде многоязыкового программирования.
3.3 Возможности языка C#
Со стороны синтаксиса и возможностей языка, С# является как бы промежуточным вариантом между С++ и Visual Basic. Он унаследовал множество элементов из лучших языков на момент своего создания. Например, из языка С он имеет стиль синтаксиса для управляющих конструкций, блоков кода, описания сигнатуры методов и другие. С# делит с Java такие свойства, как отсутствие множественного наследования, отсутствие шаблонов, а также наличие сборщика мусора. Также в качестве заимствований языка C# можно записать ориентированность на создание компонент из Delphi. Но при всем этом C# имеет свой колорит.
Основными концепциями языка стали легкость использования и скорость выполнения. Отсюда и несколько меньшая мощность языка по сравнению, например, с С++, и сборщик мусора с управляемыми объектными ссылками, который позволяет не освобождать динамически используемую память вручную. Очистка производится в автоматическом режиме, забирая при этом процессорное время. Также легкость использования подразумевает безопасную работу с типами данных, что является одним из важнейших способов избегания большого количества ошибок. Несмотря на ориентированность на написание компонент и программирование в безопасной управляемой среде, С# позволяет писать для проекта и неуправляемый код.
Также одной из основных концепций является возможность рассмотрения любого типа данных, даже примитивных типа int, как объекты, что упрощает проблемы дизайна приложений. Это видно уже в реализации упаковки/распаковки.
В ключевые концепции языка включается не только простота создания программ, но и их поддержка. В связи с этим язык С# включает в себя возможность контроля версий и поддержку XML комментариев. Также для упрощения разработки, помимо автоматической уборщики мусора и безопасной работы с типами данных, в языке С# используется автоматическая инициализация переменных, при которой все типы, размещаемые в стеке, инициализируются нулями. Если объекты размещаются в куче и доступ к ним осуществляется по объектной ссылке, то эти ссылки инициализируются значением null, которая подразумевает указание ссылки на пустоту.
Еще одной интересной особенностью языка C# является пространство имен, аналогичное использованию пакетов в языке Java, которое позволяет построить иерархическую систему типов. Это позволяет избежать проблем именования и делает программный код более понятным.
Событийная модель и обратные вызовы в C# представляют собой новую концепцию объектно-ориентированного типа ссылки на функцию. В языке он называется делегатом, и позволяет описывать события компонента без каких-либо возвратных интерфейсов и лишних усилий. Достаточным условием является лишь использование ключевого слова event.
Помимо всего прочего в языке используется парадигма программирования атрибутов. Эта парадигма подразумевает сохранение мета-информации вместе с типом в компиляторных модулях. Также язык позволяет получать и проводить операции над этой информацией. Особенно это полезно тем, что компилятор, или даже дизайнер, может получить информацию о компоненте, не запуская его.
Одновременно с этим, возможность подобной работы с атрибутами позволяет использовать статичные и динамические библиотеки COM, COM+ и DLL в программах, которые работают в среде .NET. Причем доступ к таким библиотекам достигается в одно небольшое выражение. Работу с перечисляемыми типами позволяет обезопасить использование перечислений.
Также язык позволяет использовать структуры как типы данных. Работа с такими типами происходит по значению. Помимо использования вложенных массивов, активно используемых в Java, имеется возможность работать с многомерными массивами. Это позволяет оптимизировать производительность разрабатываемых программ.
3.4 Реализация библиотеки классов в среде разработки MS Visual Studio
Для реализации модуля математического аппарата системы расчета надежности современных радиоэлектронных средств в среде разработки Microsoft Visual Studio создается проект библиотеки классов, в результате компиляции которого получается dll-библиотека. Пример описания класса на языке C# в среде разработки приведен на Рис.3.4.1.
Рис.3.4.1 Пример реализации класса
Перед каждым классом идет комментарий, разъясняющий тип радиоэлектронных элементов, методы расчета надежности которого данный класс реализует. Ключевое слово public означает, что доступ к классу не ограничен. Внутри класса описываются его методы. Методы класса это практически то же самое, что и функции, только доступ к ним реализуется через объект класса, или непосредственно через класс, если метод статичный. Модификаторы доступа к методам класса могут быть нескольких видов:
- Public. Public методы не ограничивают доступ к себе, позволяя использовать себя как внутри класса, так и за его пределами, например в «теле» основной программы. Пример описания public метода приведен на Рис.3.4.2.
Рис.3.4.2 Пример описания public метода
- Protected. Protected методы имеют ограничения для доступа. Эти методы возможно использовать только внутри класса, а также внутри классов-потомков. Классы-потомки - это классы, которые наследовались от данного класса - класса-родителя. Пример protected метода приведен на Рис.3.4.3.
Подобные документы
Теоретические основы разработки Windows-приложений с использованием библиотеки MFC. Создание приложения с помощью Visual C++. Описание логической структуры приложения. Установка и запуск программы. Входные и выходные данные. Преимущество MFC библиотек.
курсовая работа [563,2 K], добавлен 21.06.2011Обзор технологии OpenStack, область ее применения. Реализация библиотеки классов. Реализация базовых классов и интерфейсов архитектуры. Создание виртуального сервера. Интеграция разработанной библиотеки классов и архитектура проектного решения.
дипломная работа [1,0 M], добавлен 09.08.2016Создание Win-приложения для библиотеки, которое позволяло бы осуществлять операции выдачи и сдачи книг в соответствии со сроками. Выбор программных и технических средств реализации проекта. Разработка интерфейса системы, описание реализованных классов.
курсовая работа [3,1 M], добавлен 14.08.2015Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.
курсовая работа [348,1 K], добавлен 02.07.2011Создание библиотеки классов на основе C-строк и управляемую пользователем программу с псевдографическим интерфейсом, тестирующую её работу и отображающую результат. Упрощённая структура библиотек, взаимодействие классов и объектов, основные алгоритмы.
курсовая работа [37,5 K], добавлен 15.08.2012Особенности разработки и представления проекта программы, представляющей собой аналоговые часы с циферблатом, часовой, минутной и секундной стрелкой. Применение MS Visual Studio 2010, языка С++ для ее написания и компилирования. Специфика библиотеки MFC.
курсовая работа [440,2 K], добавлен 17.03.2014Разработка программы, проверяющей уровень знаний по разделу стереометрии и позволяющей выбор один из нескольких вариантов и ввод ответа. Характеристика библиотеки MFC, тела, классов и файлов приложения, цикла сообщений и текстовых запусков программы.
курсовая работа [1,5 M], добавлен 28.06.2011Методика и основные этапы разработки web-библиотеки, требования к ней, содержание, структура и элементы. Идейное описание системы, направления ее проектирования. Порядок написания кода и тестирование систем, ее важнейшие функции и сферы использования.
курсовая работа [1,2 M], добавлен 08.02.2013Краткая характеристика предметной области. Актуальность разработки объектно-ориентированной модели информационной системы для учебной библиотеки. Создание диаграммы вариантов использования, последовательности, кооперативной диаграммы, диаграммы классов.
курсовая работа [381,8 K], добавлен 01.06.2009Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.
курсовая работа [41,2 K], добавлен 19.12.2010