Автор работы: Пользователь скрыл имя, 18 Января 2013 в 03:48, дипломная работа
Разработанная программа является программным средством для реализации учета, контроля, анализа и оптимизации учебных материалов на кафедре ИТ-4. Необходимо было создать гибкую систему, позволяющую легко адаптироваться к нуждам кафедры, а так же которая легко могла бы быть интегрирована в уже существующую инфраструктуру кафедры. Программа разработана для работы с базой данных MySQL. Информационный модуль работы с базой данных написан на языке программирования PHP с использованием Фреймворка CodeIgniter.
Цель программы - обеспечить персонал кафедры комплексным и качественным программным продуктом для работы как с уже имеющимися базами данных учебных материалов, так и для внесения и учета новых поступлений.
Введение 5
1 Исследовательский раздел 7
1.1 Анализ существующих форматов представления данных 7
1.2. Обоснование выбора программно-аппаратных средств 13
1.2.1 Технология SQL – выбор СУБД 13
1.2.2 Выбор языка программирования – PHP 18
1.2.3 Выбор среды программирования – Фреймворк CodeIgniter 21
1.3 Развернутое техническое задание 22
1.3.1 Общие сведения 22
1.3.2 Назначение программы 22
Состав работ проектирования программного модуля 23
1.3.4 Требования к программе или программному изделию 24
1.3.4.1 Требования к функциональным характеристикам 24
1.3.4.2 Исходные данные 24
1.3.4.3 Организация входных и выходных данных 25
1.3.4.4 Требования к надежности 25
1.3.4.5 Требования к составу и параметрам технических средств 25
1.3.4.6 Требования к программной совместимости 26
1.3.5 Требования к программной документации 26
2 Специальный раздел 27
2.1 Разработка структурной схемы программы 27
2.2 Разработка структуры базы данных программы 30
2.3 Разработка модели информационных потоков базы данных 34
2.4 Разработка алгоритмического обеспечения 36
2.5 Разработка интерфейса программы 39
3 Технологический раздел 44
3.1 Технология разработки программы 44
3.1.1 Создание веб-страниц с помощью языка HTML 44
3.1.2 Основы работы web-сервера 45
3.1.3 Объектно-ориентированный подход к программированию на PHP 46
3.1.5 Инструментарий совместной разработки Subversion 50
3.1.6 Интегрированная среда разработки Zend Studio 51
3.2 Технология тестирования программы 51
3.2.1 Отладка кода с помощью Zend Debugger 58
3.2.2 Автоматизированное тестирование программы – SimpleTest 60
4 Безопасность жизнедеятельности 64
4.1 Анализ опасных и вредных факторов, возникающих при работе на ПЭВМ 64
4.1.1 Физиологические опасные и вредные факторы, действующие на операторов ПЭВМ 64
4.1.2 Психофизиологические опасные и вредные факторы 65
4.2 Разработка технических, организационных и профилактических мероприятий по каждому опасному и вредному фактору 66
4.2.1 Организация рабочего места оператора ЭВМ. Профилактика СДСН 66
4.2.2 Эргономика дисплея. Профилактика СДЗН 68
4.2.3 Эргономика устройств ввода информации. Профилактика СЗКП 70
4.2.4 Оптимальный режим работы. Профилактика СДПН 72
4.2.5 Контроль микроклимата в помещениях оборудованных ПЭВМ. Профилактика СНИК 73
4.3 Экологическая оценка и переработка (утилизация) материалов используемых в помещениях, где установлена компьютерная техника 75
4.3.1 Утилизация и переработка ртути в люминесцентных лампах 77
5 Экономическая часть 80
5.1 Планирование разработки автоматизированной системы с построением графика выполнения работ 80
5.1.1 Определение этапов и работ по созданию программного средства 80
5.1.2 Расчет трудоемкости и продолжительности работ 82
5.1.3 Построение графика разработки программного продукта 85
5.2 Расчет затрат на разработку 87
5.2.1 Расчет затрат на разработку программного продукта 87
5.3 Расчет основных технико-экономических показателей и эффективности использования программного продукта 91
5.3.1 Оценка экономической эффективности проекта 97
Заключение 102
Список использованных источников 104
Приложение A. Исходный код программы с комментариями 106
Приложение Б. Графический материал 115
Поскольку программа управления базой данных учебных материалов является частью информационной системы кафедры ИТ-4, построенной по модульному принципу, требуется проверить работоспособность всех модулей по завершении интеграции.
Для тестирования таких систем характерны два этапа. Во-первых, тестирование встраиваемого модуля отдельно от всей системы в целом, и в случае отсутствия конфликтов переход ко второму этапу – тестированию всех модулей в совокупности – т.е. всей информационной системы в целом..
Тестирование на протяжении жизненного цикла PHP программ означает тестирование на наборе пользовательских транзакций. Эти транзакции должны быть выбраны таким образом, чтобы был использован полный набор серверных команд и запросов. Перспектива жизненного цикла обычно охватывает несколько различных платформ, в том числе и систему пользователя - браузер, СУБД и приложения сторонних разработчиков.
Завершенные системы, разрабатывавшиеся различными коллективами программистов, должны взаимодействовать. Рассматриваемая система использует технологии PHP и SQL. При этом могут возникнуть проблемы совместимости типов данных, синхронизации событий, а также проблема необходимости ограничения их воздействия на работу системы. Например, когда на сервере, куда планируется установить программу, уже существует некоторое количество PHP программ и связанных с ними SQL баз.
Один из наиболее важных тестов предусматривает построение тестовых случаев, которые проверяют работу системы в условиях предельно допустимой нагрузки. Существуют инструментальные средства, упрощающие задачу увеличения количества запросов и вызова на сервере множества операций. Тест предельно допустимой нагрузки должен быть спроектирован так, чтобы в точности воспроизводить ожидаемый профиль использования. Должны быть запланированы тесты способности сервера ограничивать количество соединений в управляемом режиме (отображение на экране соответствующего сообщения), а не в катастрофическом режиме (полный отказ сервера).
Все описанные выше методы и приемы отладки и тестирования программного кода частично были применены в процессе разработки. На каждом этапе разработки проводилось тестирование и отладка программы с применением исходных данных. Всю разработку можно разделить на отдельные этапы:
При программировании производился анализ БД, а после программирования – правильность отображения введенных данных.
Отдельные элементы программы, отвечающие за обработку данных, разрабатывались и отлаживались вначале с помощью ручного метода отладки. Затем так же применялся метод тестирования. Информация заменялась тестовыми значениями, а после запуска программы, данные сравнивались с этими тестовыми значениями.
К модулям программы, отвечающим за работу с базой данных, применялись все этапы и методы отладки ввиду того, что в них была заложена наиболее трудоемкая часть всей программы. А именно – осуществление анализа всех запросов пользователей и выявление нарушений в процессе обработки поступившей информации и других параметров. Для этого задавались различные исходные данные. Это позволило дополнительно протестировать предыдущие части программы, а также непосредственно отлаживать часть, отвечающую за работу с базой данных и анализ информации. Такая отладка проводилась путем сравнения ранее введенной информации и полученных данных с помощью программы.
При отладке части, отвечающей за формирование входных и выходных страниц, в значительной степени применялся метод тестов. Путем сравнения информации, находящейся в таблицах базы данных, и информации, выведенной на страницах сайта, выявлялись и устранялись ошибки, допущенные в ходе программирования.
Интеллектуальная
Специализированное приложение, называемое отладчиком, тестирует выполняющийся код, позволяя остановить выполнение в произвольный момент времени, исследовать объекты, стек вызовов и даже изменить значение переменной "на лету".
Специализированное приложение, называемое отладчиком, помогает тестировать выполняющийся код, позволяя останавливать его выполнение в произвольных точках прерывания, исследовать объекты, стек вызовов и рабочую среду и даже изменять значение переменных "на лету".
При разработке использовался Zend Debugger - расширение системы Zend, тестирующее выполняющееся PHP-приложение. Загрузить и использовать Zend Debugger можно бесплатно. Однако для управления Zend Debugger и просмотра диагностической информации необходимо объединить его с клиентским приложением. Клиентское приложение может быть как элементарным, выполняющимся из командной строки, так и полнофункциональной интегрированной средой разработки (IDE), обладающей функциями редактора, завершения кода, визуальных браузеров классов и т.д.
С Zend Debugger могут взаимодействовать несколько клиентских приложений с открытыми исходными кодами, включая PHP-плагин для Eclipse. Однако я в качестве IDE для PHP предпочитаю использовать Zend Studio, предлагаемую компанией Zend Technologies, разрабатывающей как систему с открытыми исходными кодами. В отличие от самого PHP, Zend Studio является коммерческим продуктом. Продукт можно загрузить и использовать бесплатно на протяжении 30 суток (чего вполне достаточно для того, чтобы опробовать многочисленные возможности IDE), но затем необходимо купить лицензию, если вы захотите продолжать ее использование.
Комбинация Zend Studio и Zend Debugger позволяет удаленно управлять системой Zend. Zend Studio выступает в роли панели управления, отображающей информацию о внутренних деталях системы. Среди прочих данных можно просматривать выполняющийся исходный код, состояние переменных и состояние рабочей Web-среды.
Zend Debugger является своего рода посредником - он передает информацию из системы Zend в Zend Studio и команды из Zend Studio в систему Zend. В число его команд входят функции отладки, например, continue (продолжение), которая продолжает выполнение, step (шаг), которая выполняет один оператор, и stop (останов), которая прерывает выполнение. При любых изменениях в системе Zend отладчик передает эти изменения в Zend Studio для отображения.
Таким образом, для отладки PHP-приложения мы настраиваем Zend Studio на подключение к отладчику и затем открываем приложение в браузере, как обычно. Когда приложение начинает выполняться, отладчик вмешивается в его работу и передает управление в Zend Studio. А там мы принимаем управление на себя.
Zend Studio содержит все необходимое
для написания PHP-кода: редактор
для изменения отдельных
Основным методом работы с любым отладчиком является расстановка т.н. «точек прерывания» (breakpoints), для выяснения возможных причин сбоя программы, получения логов или дополнительной информации. На рисунке 2.8 показано окно Zend Debugger во время работы с «точками прерывания».
Рисунок 2.8 – Установка точек прерывания в примере кода
Автоматизированные модульные
тесты разрабатывались с
Использование автоматизированных регрессивных модульных тестов позволило обнаружить ошибки, связанные с изменением корректности работы системы после внесения локальных изменений.
Основное назначение SimpleTest — проверка работоспособности классов и функций, а также тестирование входных и выходных данных для приложения.
В отличие от простейшего подхода к организации тестирования путем самостоятельного написания методов проверки, классы SimpleTest позволяют кардинально расширить возможности тестируемого кода.
Следует заметить, что в плане удобства для разработчика в задаче тестирования любого приложения можно применить два подхода: Можно встроить код тестирования в саму задачу и тем самым перенести часть задачи тестирования приложения на плечи пользователей, либо изначально разделить местоположение тестируемого кода и основного приложения. В любом случае, включение функциональности тестирующего кода в итоговое приложение будет не лишним, хотя бы в качестве дополнительной информационной службы для команды разработчиков. Поэтому, наверное, самым подходящим местоположением для функций SimpleTest будет одноименный подкаталог приложения. Разместив тестовые скрипты таким образом, мы получаем возможность проверять код, уже находящийся на стороне сервера, что достаточно удобно как в плане поддержки приложения, так и в плане защищенности пользователя от посягательств на его безопасность.
В первую очередь необходимо физически связать вашу задачу и тестирующие функции. Для этого следует включить в тестирующий код сами классы (как минимум файлы simpletest/unit_tester.php и simpletest/reporter.php) SimpleTest с помощью директив require_once. Сам тестирующий код по замыслу разработчиков должен выделяться в отдельный класс, который наследует свойства родительского объекта. Этим объектом является класс UnitTestCase, который содержит функции, необходимые для проверки разнообразных значений, которые могут возвращать методы наших классов.
Наиболее простыми методами этого класса являются методы assertFalse и assertTrue, которые позволяют проверить функции, возвращающие логические значения True или False. Таким образом, проверка может осуществляться путем вызова одного из методов, в качестве параметра которого передается тестируемая функция с необходимым для нее набором параметров.
Кроме простейших методов для проверки логических значений SimpleTest имеет массу других тестовых функций. Вот список тестовых функций, которые можно использовать в текущей версии SimpleTest:
assertTrue($x) — выдается ошибка, если значение False;
assertFalse($x) — получаете ошибку тестирования, если переданное значение True;
assertNull($x) — проверка, существует ли переданное значение;
assertNotNull($x) — указанное в параметрах метода значение не должно существовать;
assertIsA($x, $t) — переменная $x не должна иметь тип $t;
assertNotA($x, $t) — проверка на соответствие типа переменной $x строке $t;
assertEqual($x, $y) — проверка на равенство $x и $y;
assertNotEqual($x, $y) — проверка на неравенство $x и $y;
assertWithinMargin($x, $y, $m) — проверка того, что разница $x и $y меньше $m;
assertOutsideMargin($x, $y, $m) — разница $x и $y больше $m;
Для передачи сообщений в итоговый отчет и автоматизации некоторых функций, а также для тестирования собственной работоспособности SimpleTest предлагает набор специальных вспомогательных методов. Метод setUp (setDown) позволяет указать функцию, которая будет выполняться перед (после) каждым вызовом тестового метода класса. Функции pass() и fail() вызываются в качестве теста для самих классов SimpleTest. Метод sendMessage() передает пользовательское сообщение в итоговый отчет. Для очистки очереди ошибок можно применить метод swallowErrors.
Использование SimpleTest в качестве тестирующего класса позволило проверить стабильность его работы. Мы могли проконтролировать правильность написанного кода в любой момент разработки, что было особенно актуально, когда над одним и тем же классом работали несколько программистов. В функциональности SimpleTest есть множество других возможностей, которые помогли протестировать наше приложение. В случае если бы в качестве фреймворка был бы использован не CodeIgniter, а Eclipse, можно было бы использовать специальное расширение, которое позволило бы упростить процесс запуска тестирующего кода. В нашем же случае использовалась простейшая гиперссылка с всплывающим окном, которая показывала результаты тестирования функций в текущем коде.
Операторы ПЭВМ, программисты-операторы, работающие с компьютерным оборудованием, в течение рабочего дня должны воспринимать большие объемы информации, быстро и адекватно реагировать на ее изменение.
Для предупреждения от возможных заболеваний, утомления и повышения работоспособности оператора необходимо выделить опасные и вредные факторы, причины их возникновения и возможные пути устранения, которые позволят грамотно подойти к организации условий труда программистов и операторов ПЭВМ.
Опасными считаются такие
Вредными называются такие факторы, которые имеют негативное воздействие на человека, и которые могут привести к ухудшению самочувствия и различным заболеваниям, связанными с их воздействием.