Биографии Характеристики Анализ

Освоение основ экологической грамотности. ст.42 Конституции РФ


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

  • неправильный выбор архитектуры ведет к риску срыва всего проекта в будущем;

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

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

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

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

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

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

Пользовательский интерфейс часто проектируется на этапе выработки требований. Если это не так, его следует определить на этапе разработки архитектуры. Архитектура должна описывать главные элементы формата web-страниц, графического интерфейса (GUI) и т.д. Удобство интерфейса может в итоге определить популярность или провал программы.

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

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


  • система проведения анкетирования студентов;

  • система обработки результатов анкетирования;

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



Рисунок 2.1. - Структура системы


Система анкетирования содержит следующие функции:

  • выдачи вопроса из анкеты;

  • автоматической проверки типа и корректности вводимых данных;

  • сохранения данных в базу данных.
Система обработки результатов анкетирования позволяет:

  • выводить на экран или распечатывать отчёты по проведению анкетирования;

  • просматривать информацию о проведении анкетирования конкретного студента;

  • сравнивать результаты текущего и предыдущих анкетирований с этими же вопросами.
Система управления позволяет:

  • контролировать проведение анкетирования;

  • управлять данными – добавлять, удалять и изменять;
В свою очередь каждую из систем можно разделить на две подсистемы исходя из среды, в которой они выполняются:

  • cерверная часть, написанная на языке программирования PHP и выполняющаяся на сервере;

  • клиентская часть, написанная на языке разметки HTML и языке программирования JavaScript с использованием библиотеки jQuery и выполняющаяся в браузере пользователя.
С
ерверная часть программы по своей структуре соответствует архитектуре MVC (Model-View-Controller) или модель-представление-контроллер. MVC представляет собой архитектуру программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты.
Рисунок 2.2. – Архитектура «Модель-Представление-Контроллер»
Такой подход позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента.

  • Model (Модель) - модуль, отвечающий за непосредственный расчёт чего-либо на основе полученных от пользователя данных. Результат, полученный этим модулем, должен быть передан в контроллер, и не должен содержать ничего, относящегося к непосредственному выводу (то есть должен быть представлен во внутреннем формате системы). Основная цель - сделать так, чтобы модель была полностью независима от остальных частей и практически ничего не знала об их существовании, что позволило бы менять и контроллер и представление модели, не трогая саму модель и даже позволить функционирование нескольких экземпляров представлений и контроллеров с одной моделью одновременно. В следствие этого модель ни при каких условиях не может содержать ссылок на объекты представления или контроллера.

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

  • Controller (Контроллер) - модуль управления вводом и выводом данных. В задачи контроллера входит реакция на внешние события и изменение модели и/или представления в соответствии с заложенной в него логикой. Один контроллер может работать с несколькими представлениями, в зависимости от ситуации, взаимодействуя с ними через некий (заранее известный) интерфейс, который эти представления реализуют. Важный нюанс - в классической версии MVC контроллер не занимается передачей данных из модели в представление.

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

  • прозрачность системы;

  • единая точка входа в систему;

  • повторное использование кода;;

  • быстрая разработка;

  • наличие готовых решений;

  • простота поддержки;

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

2.Разработка структуры базы данных программы

Организация структуры БД формируется исходя из следующих соображений:

  • адекватность описываемому объекту - на уровне концептуальной и логической модели;

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

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

Структурный аспект - данные в базе данных представляют собой набор отношений.

Аспект целостности - отношения отвечают определенным условиям целостности.

Аспект обработки - поддерживаются операторы манипулирования отношениями.

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

В качестве СУБД была выбрана свободная система управления базами данных MySQL. Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Благодаря открытой архитектуре и GPL-лицензированию (GNU General Public License - лицензия на свободное программное обеспечение, цель которой предоставить пользователю права копировать, модифицировать и распространять программы, а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права), в СУБД MySQL постоянно появляются новые типы таблиц.

Важным достоинством СУБД MySQL является то, что она портирована на большое количество платформ, таких как AIX, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, Solaris и Windows. Отметим, что компания MySQL AB предоставляет для свободной загрузки не только исходные коды СУБД, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули.

MySQL имеет интерфейс прикладного программирования (API) для таких языков, как Delphi, C, C++, Java, Perl, PHP, Python и Ruby, библиотеки для языков платформы.NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера (Open DataBase Connectivity - это программный интерфейс доступа к базам данных) MyODBC.

Основным типом таблиц был выбран тип MyISAM. MyISAM-таблицы идеально оптимизированы для использования в связке с web-приложениями, где преобладают запросы на чтение. Таблицы типа MyISAM показывают очень хорошие результаты производительности при выборках SELECT. Во многом это связано с отсутствием поддержки транзакций и внешних ключей. Однако при модификации и добавлении записей вся таблица кратковременно блокируется, что может привести к серьёзным задержкам при большой загрузке. Но в случае с программой анализа анкет опроса это не является серьёзной проблемой, так как высокая нагрузка на систему не планируется.

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

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

Структура базы данных представлена на рисунке 2.4.

Р

исунок 2.3. – Структура базы данных


Организованные в базе данных связи между таблицами позволяют выполнять каскадное удаление и обновление данных. Использование развязочных таблиц позволило сократить избыточность данных до минимума.

Таблица it_students содержит данные о студентах, прошедших анкетирование.

Таблица 2.1 – Таблица данных «it_students»


Поле

Тип

Длина

Описание

id

Числовой

11

Индекс

num

Числовой

11

Номер студенческого билета

name

Символьный

100

Имя

second_name

Символьный

100

Отчество

surname

Символьный

100

Фамилия

birth

дата

-

Дата рождения

year_postupl

год

-

Год поступления

address

Символьный

500

Адрес

phone_h

Символьный

15

Домашний телефон

phone_m

Символьный

15

Мобильный телефон

mail

Символьный

250

Адрес e-mail

icq

Числовой

10

Номер ICQ

Таблица it_answers_var содержит варианты ответов на вопросы анкетирования.

Таблица 2.2 – Таблица данных «it_answers_var»

Таблица it_questions содержит вопросы анкетирования.

Таблица 2.3 – Таблица данных «it_questions»

Таблица it_tests_cfg делает привязку вопросов анкетирования к конкретной анкете.

Таблица 2.4 – Таблица данных «it_tests_cfg»

Таблица it_tests содержит данные обо всех анкетах и датах проведения анкетирований.

Таблица 2.5 – Таблица данных «it_tests»

Таблица it_text_answers содержит данные об ответах студентов, вводимых вручную.

Таблица 2.6 – Таблица данных «it_text_answers»

Таблица it_students_answers содержит данные об ответах студентов.

Таблица 2.6 – Таблица данных «it_students_answers»

3.Разработка модели информационных потоков базы данных

Поскольку программа анализа анкет опроса студентов построена по принципу MVC, то можно представить информационные потоки следующим образом. При поступлении запроса от пользователя, который отсылает браузер Web-серверу, контроллер, следуя запрограммированным алгоритмам квалифицирует полученный запрос, изменяет и передаёт его в модель. Модель, являющаяся связующим звеном между контроллером и СУБД, интерпретирует запрос и делает соответствующее обращение к СУБД MySQL, возвращая результаты контроллеру.

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



Рисунок 2.4. - Схема информационных потоков архитектуры МVС

4.Разработка алгоритмического обеспечения

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

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

Д
алее студент отвечает на ряд вопросов анкетирования и только по окончании опроса все данные сохраняются в базе данных. Алгоритм работы системы анкетирования показан на рисунке 2.5.

Рисунок 2.5. – Алгоритм работы системы анкетирования

Одним из важнейших пунктов безопасности web-приложения является проверка всех поступающих данных, поэтому стоит всегда проверять данные, вводимые пользователем в формы поиска, заполнения полей регистрации и так далее на наличие «опасных» данных. Это может быть вредоносный JavaScript код, PHP или PERL команды, а так же (что самое опасное) - команды серверу.

Следует всегда помнить, что абсолютно любой пользователь – это опасность для незащищенного web-приложения, поэтому всегда стоит проверять запросы и переменные, приходящие от пользователя.


  • анализ переменных и суперглобальных массивов POST и GET;

  • разделение переменных;

  • фильтрация строковых переменных.
Обязательно надо проверять входящие переменные в самом начале программы, не допуская до работы с функциями и запросами к базе данных ещё не проверенные, потенциально опасные, данные от пользователей. Таким образом, все необходимые для защиты функции будут находиться в одном определённом месте или даже файле. В случае с программой обработки анкет опроса студентов фильтрация данных производится на уровне фреймворка CodeIgniter в автоматическом режиме, поскольку в файле конфигурации включена строка $config["global_xss_filtering"] = TRUE.

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

Особо опасны текстовые переменные, например поле для ввода ответа на вопрос анкеты. Их просто необходимо проверять на наличие вредоносного кода. Для устранения опасности производится удаление некоторых элементов из текста или замена на другие символы. Алгоритм обработки входящих данных в фреймворке CodeIgniter показан на рисунке 2.6.

Р
исунок 2.6. – Алгоритм обработки входящих данных в фреймворке CodeIgniter

2.5 Разработка интерфейса программы

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


  • интерфейс должен быть понятен, прост и удобен в использовании

  • пользователь не должен отвлекаться на действия, не связанные с выполняемым заданием.
Интерфейс пользователя выполнен на языке разметки HTML с использованием JavaScript и библиотеки jQuery, что позволило построить интерактивный пользовательский интерфейс программы.

К

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

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

опросов показан на рисунке 2.8.

Рисунок 2.8. – Интерфейс ответа на вопрос анкетирования


В случае, если студент по какой-то причине не выберет ни один из ответов на вопрос, но попытается перейти к следующему вопросу, система анкетирования автоматически выведет сообщение об ошибке и предложит ещё раз ответить на текущий вопрос (см. рисунок 2.9).

Рисунок 2.9. - Сообщение об ошибке ввода данных



Система обработки результатов анкетирования может выводить результаты в нескольких режимах – текстовом, графическом и режиме вывода на печать. Интерфейс вывода результатов анкетирования в графическом виде показан на рисунке 2.10.

Рисунок 2.10. – Интерфейс вывода результатов анкетирования



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

Существенным преимуществом построения Web-приложений для поддержки стандартных функций браузера заключается в том, что функции должны выполняться независимо от операционной системы данного клиента. Вместо того чтобы писать различные версии для Microsoft Windows, Mac OS X, GNU/Linux и других операционных систем, приложение создается один раз и разворачивается на любой платформе.

3. Технологический раздел

3.1 Технология разработки программы

3.1.1 Основы работы web-сервера

Принцип работы web-сервера: известно, что web-серверы хранят информацию в виде текстовых файлов, называемых также страницами. Помимо текста, такие страницы могут содержать ссылки на другие страницы (расположенные на том же самом или другом сервере), ссылки на графические изображения, аудио- и видеоинформацию, различные объекты ввода данных (поля, кнопки, формы и т. д.), а также другие объекты и исполняемые на сервере программы. Фактически страницы представляют собой некоторое связующее звено между объектами различных типов. Их проектируют с применением специального языка разметки гипертекстов HyperText Markup Language, или сокращенно - HTML. Для доступа к информации, расположенной на web-серверах пользователи применяют специальные клиентские программы - браузеры. В настоящее время существуют десятки различных браузеров, но наибольшей популярностью на данный момент пользуются лишь несколько из них:


  • Microsoft Internet Explorer;

  • Opera;

  • Mozilla Firefox

  • Google Chrome.
Каждая страница web-сервера имеет свой так называемый универсальный адрес ресурса - Universal Resource Locator (URL). Чтобы получить доступ к той или иной странице, пользователь должен указать ее адрес URL браузеру. Как правило, любой web-сервер имеет одну главную страницу, содержащую ссылки на все остальные страницы этого сервера. Поэтому просмотр содержимого сервера Web обычно начинается с его главной (индексной) страницы.

3.1.2 Пассивные и активные web-серверы

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


3.1.3 Объектно-ориентированный подход

В настоящее время всё большую популярность набирает использование объектно-ориентированного подхода при разработке web-приложений. И хотя преимущества такого подхода не так очевидны, как, например, в таких языках программирования, как C++ или Java, но всё большее количество свободно распространяемых библиотек и программ, написанных на языке программирования PHP, переходят на объектно-ориентированный интерфейс. Этим они вынуждают использующих их разработчиков обращаться к объектно-ориентированным возможностям PHP. Введение в пятой версии интерпретатора PHP полноценной поддержки объектно-ориентированной модели ещё больше подогревает интерес к этой методологии.

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


  • увеличить процент повторно используемого исходного кода;

  • оперировать при программировании понятиями и объектами реального мира (студент, группа, курс и т.д.), а не низкоуровневыми компьютерными терминами (файл, строка и т.д.), что позволяет создавать более крупные проекты с меньшим количеством ошибок и в более сжатые сроки.
Развитие технологий программирования, как заметил Дейкстра, диктуется тезисом «Разделяй и властвуй». Любые удачные технологии предполагают, что чем короче исходный код программы, тем легче его создавать, отлаживать и поддерживать, а простая программа подвержена ошибкам в гораздо меньшей степени, чем сложная.

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

Каждая из процедур обладает локальными переменным, срок жизни которой определяется продолжительностью работы процедуры. Одни процедуры могут вызывать другие, однако массив данных в программе остаётся общим и доступным для всех процедур. Такой подход применяется при процедурном программировании на PHP и позволяет создавать крупные программные комплексы. Но разработка, отладка и поддержка программ, оперирующих большими объёмами данных(как, например, кафедральная БД), всё равно остаётся сложной и требующей значительного мастерства и опыта.

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

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

Независимо от привязки к языку программирования, объектно-ориентированный подход имеет ряд общих принципов, а именно:


  • возможность создавать абстрактные типа данных, позволяющая наряду с предопределёнными типами данных (такими как integer, string и т.д.) вводить свои собственные типы данных (классы) и объявлять «переменные» таких типов данных (объекты). Создавая свои собственные типы данных, программист оперирует не машинными терминами (переменная, функция), а объектами реального мира, поднимаясь тем самым на новый уровень абстракции;

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

  • наследование, позволяющее развить существующий абстрактный тип данных – класс, создав на его основе новый класс. При этом новый класс автоматически получает возможности уже существующего абстрактного типа данных. Зачастую абстрактные типы данных слишком сложны, поэтому прибегают к их последовательной разработке, выстраивая иерархию классов от общего к частному;

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

3.1.4 Особенности фреймворка CodeIgniter

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

Помимо доступных программисту классов контроллеров, отображений и моделей, в фреймворке CodeIgniter существуют также доступные программисту функции плагинов (plugins) и хелперов (helpers - помощники). Хелперы, как видно из названия, призваны помочь исполнить какую-либо незначительную функцию. Например, существуют хелперы построения web-форм, загрузки файлов или работы с сессиями. В отличие от всех остальных основных элементов фреймворка, хелперы – наборы элементарных функций., написанных даже без использования объектно-ориентированного подхода. Каждая функция выполняет небольшую, строго ограниченную задачу. Однако набор довольно велик, и такая «мелочь» становится очень полезной в работе.

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


3.1.5 Интегрированная среда разработки Eclipse

При разработке программы обработки анкет опроса студентов кафедры также использовался такой важный и полезный инструмент программиста, как интегрированная среда разработки (IDE - Integrated Development Environment), а именно Eclipse. Eclipse - свободный фреймворк для разработки модульных кроссплатформенных приложений. Разрабатывается и поддерживается Eclipse Foundation.

Наиболее известные приложения на основе Eclipse Platform - различные «Eclipse IDE» для разработки ПО на множестве языков (например, наиболее популярный «Java IDE», поддерживавшийся изначально). В данном случае использовались расширения для программирования на языках программирования PHP (модуль PDT) и JavaScript (модуль JSEclipse), а так же вёрстки с использованием языка разметки HTML.

3.2 Технология тестирования программы

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

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

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

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

Тестирование системы проводилось несколькими методами:


  • нагрузочное тестирование;

  • ручная отладка и трассировка программы с использованием расширения XDebug;

  • модульное тестирование с помощью phpUnit.
В случае с тестированием программ, написанных на PHP, следует проверять на соответствие ожиданиям выводимые на экран пользователя данные. При этом возможны следующие основные проблемы:

  • на экране ничего не отображается, или выдается системная ошибка с соответствующим кодом (ошибка авторизации, сбой web-сервера и т.п.);

  • произошел сбой при работе с базой данных, при этом генерируется отчет об ошибке;

  • сбой сервера, связанный с высокой нагрузкой на приложение или БД;

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

3.2.1 Нагрузочное тестирование программы

Одним из важнейших тестов является нагрузочное тестирование, позволяющее найти «узкие места» в исходном коде или обращениях к базе данных.

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

Для нагрузочного тестирования программы обработки анкет опроса студентов кафедры была использована программа curl-loader. Curl-loader это свободно распространяемая утилита тестирования производительности web-приложений, написанная на языке программирования C. Она способна симулировать сотни и даже тысячи обращений к серверу по протоколам HTTP и HTTPS и использует библиотеку libcurl, что позволяет без каких-либо проблем тестировать приложения, требующие авторизации. А поддержка протокола HTTPS позволяет использовать утилиту curl-loader для нагрузочного тестирования web-приложений, работающих через шифрованные транспортные механизмы SSL (Secure Sockets Layer - уровень защищённых сокетов) и TLS (Transport Layer Security).

3.2.2 Отладка с использованием встроенных средств PHP

Стандартное поведение приложения, написанного на языке PHP, при возникновении ошибки в коде сильно зависит от параметров конфигурации. Как правило они задаются в конфигурационном файле php.ini:

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

  • параметр log_errors, имеющий значения on или off, заставляет интерпретатор PHP записывать сообщения в файл журнала событий;

  • директива error_reporting определяет, в каких случаях следует генерировать предупреждение, а в каких его можно проигнорировать.
При разработке и отладке программы на тестовом сервере необходимо включать параметр display_errors и отключать - log_errors. Это позволяет программисту максимально быстро реагировать на возникновение ошибочной ситуации, минимизируя число «переключений между окнами».

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

В обоих случаях параметр error_reporting удобно выставлять в максимально подробное состояние – E_ALL, заставляющее PHP сообщать о самых незначительных оплошностях в коде.

3.2.3 Отладка программы с помощью XDebug

Хотя язык программирования PHP можно использовать для создания сценариев командной строки для таких задач как системное администрирование и традиционная обработка данных, мощь языка особенно проявляется в web-приложениях.

Учитывая кратковременность выполнения web-приложений и их уровневую конструкцию (клиентское приложение, сеть, web-сервер, прикладной код и применяемая база данных), отловить ошибки в исходном коде может быть нелегко. Даже если предположить, что все уровни, за исключением PHP-кода, работают безупречно, трассировка до обнаружения ошибки в программе может быть трудной, особенно если приложение использует большое количество классов.

Выражение языка PHP echo и такие функции, как var_dump(), debug_zval_dump() и print_r() являются обычными и очень популярными средствами отладки, помогающими решить различные мелкие проблемы. Однако как средства тестирования и отладки эти выражения (и даже более надежный инструментарий, например, пакет PEAR Log) помогают слабо и не всегда.

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

Такое "живое" или интерактивное исследование обеспечивается специальным приложением, называемым отладчиком. Отладчик запускает или подключается к процессу для управления им и исследования его памяти. Либо, в случае с интерпретируемыми языками, отладчик может непосредственно интерпретировать код. Типичный современный отладчик может индексировать и просматривать исходный код, отображать сложные структуры данных в читабельном виде и одновременно отображать состояние программы, стек вызовов, выводимые программой данные и значения всех переменных. Например, для отладчика обычным является каталогизация и отображение свойств и методов класса.

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

Журнал трассировки обычно различается от запуска к запуску, так как он зависит от входящих данных, которые различаются от запроса к запросу.

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

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

Результаты работы модуля XDebug можно просматривать с помощью программы KCachegrind, позволяющей визуализировать происходящие в исходном коде процессы (см. рисунок 3.1).

Подводя итоги, можно сказать, что XDebug это маленький, но очень полезный инструмент для разработчика PHP, он должен быть установлен на каждый интерпретатор PHP, применяемый для разработки. Но не стоит использовать XDebug на рабочих серверах, так как из-за этого сильно падает производительность.
Р

исунок 2.1. – Интерфейс программы KCachegrind

3.2.4 Модульное тестирование с использованием phpUnit

Модульное тестирование (unit testing) - процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы. Идея состоит в том, чтобы писать проверочные тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к появлению ошибок в уже написанных и оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок. Цель модульного тестирования - изолировать отдельные части программы и показать, что по отдельности эти части работоспособны.

При отладке и тестировании программы обработки анкет опроса студентов кафедры использовалась система phpUnit, позволяющая производить модульное тестирование web-приложений, написанных на языке программирования PHP.

Для того, чтобы написать минимальный набор тестов, используя phpUnit, необходимо:


  • подключить библиотеку PHPUnit.php;

  • создать подкласс базового класса TestCase;

  • добавить в него произвольное количество тестирующих методов, названия которых начинаются с "test". На вход будут подаваться заранее известные параметры, а результат сравнивается с эталонным посредством семейства функций Assert, унаследованных тестовым классом от базового класса TestCase;

  • создать класс PHPUnit_TestSuite, передав ему в качестве параметра название класса с набором тестов;

  • Запустить набор тестов и проверить результат выполнения.

6 (?). Перечень графического материала

6.1 Постановка задачи

6.2 Структурная схема программы


Информация, которой будет оперировать информационная система, организована в виде базы данных, созданной средствами MySQL (рисунок 16).

Рисунок 16 Схема базы данных, созданной средствами MySQL

Формализация расчетов (алгоритмы расчета и решения задач)

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

При расчёте стоимости установки натяжного потолка необходимо заполнить форму «Стоимость», которая содержит 3 поля да ввода данных: ширина потолка, длина потолка, фактура материала. После заполнения данных полей программа запрашивает из базы данных MySQL, данные о стоимости материала с данной фактурой. Стоимость рассчитывается путём умножения площади потолочного покрытия на стоимость материала за 1 м 2 .

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

Структурная схема использования комплекса программ (дерево диалога)

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

Разработанное приложение имеет интуитивно понятное меню. Для работы с таблицами базы данных модуля ИС «Управление предприятием» состоит из.

Тема 3. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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


Структура программного обеспечения

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

· на обеспечение устойчивой работы компьютера и вычислительной сети;

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

· на выполнение вспомогательных операций;

· на диагностику аппаратной части компьюте­ра и вычислительной сети;

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

Базовый подкласс ПО включает:

· операционные системы(ОС) - комплекс программ, управляющих про­цес­сом вы­пол­нения прикладных программ, планированием и управлением вычис­литель­ными ресур­сами ПК (ОС берет на себя выполне­ние таких операций, как кон­троль работоспо­собности оборудова­ния ПК; выпол­не­ние проце­дуры на­чальной за­грузки; управле­ние работой всех уст­ройств ПК; управле­ние фай­ловой систе­мой; взаимодействие пользователя с ПК; за­грузка и выполне­ние при­клад­ных про­грамм; распределение ресурсов ПК - опе­ративной памяти, процессорного вре­мени и пери­ферийных уст­ройств между при­кладными програм­мами ).

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



· сетевые операционные системы - комплекс программ, обес­печивающих обра­ботку, передачу и хранение данных в сети.

До недавнего времени на большинстве ПК была установлена операци­онная сис­тема MS DOS , которая была создана в 1981 г. фир­мой Microsoft (заметим, что она не была ори­гинальной разработкой самой Microsoft - ком­пания Билла Гейтса лишь дорабо­тала «операци­онку» под названием QDOS, созданную другой компанией ). До появления Windows дисковая операцион­ная система MS DOS была самой популярной и массовой в применении. В ее среде создано целое поколение программного продукта. На основе MS DOS в процессе развития компьютерных технологий появился Windows (с 1996 г. MS DOS включена в состав операционной среды Windows 95 ). Основные компоненты ОС, развитые в среде MS DOS, являются классикой, и орга­нично включены в Windows на новом этапе раз­вития программного обеспе­чения в целом и его сердцевины - операционных систем.

MS DOS 16-разрядная однозадачная операционная сис­тема, обладающая «интер­фейсом ко­манд­ной строки», компактна, предъяв­ляет скром­ные требо­ва­ния к аппаратуре и вы­полняет необ­ходимый мини­мум функций для поль­зователей и программ. Основ­ные недос­татки DOS:

· главным ее уяз­вимым ме­стом является работа с ограниченной оператив­ной памятью (в эпоху созда­ния MS-DOS оперативная па­мять большин­ства компьюте­ров не превышала 256 ки­лобайт. DOS мог­ла работать с 640 ки­лобай­тами ОП, и Билл Гейтс ут­верждал, что никому и никогда не понадо­бится больший объем, но время шло и появились программы, ко­то­рым требовался для работы больший объем опера­тив­ной памяти и при­ходи­лось ис­пользовать специальные про­граммы - ме­неджеры памяти, но и они не ре­шали проблему );

· вторым недос­татком DOS была не­возможность работы в полно­ценном гра­фическом ре­жиме (хотя то­гдашние ком­пь­ютеры уже могли бы обеспе­чить его под­держку );

· третьим недостат­ком MS-DOS была однозадачность.

Операционные системы се­мейства DOS, несмотря на свою про­стоту и экономичность, мо­рально устарели, и на смену им пришли опе­рацион­ные системы нового поко­ления. К числу таких ОС относятся операционные сис­темы се­мейства Windows , операци­онные системы семейства Unix и др.

Сервисные системы - предназначены для обслуживания компьютера (расши­ряют возможности базового ПО ). По функциональному признаку среди сервисного ПО можно выделить:

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

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

· программы архивирования данных (обеспечивают процесс сжатия ин­форма­ции в файлах с целью уменьше­ния объема памяти для ее хранения );

· программы обслуживания сети.

· программы диагностики работоспособности компьютера;

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

Системы программирования или инструментальные системы - это про­грамм­ные продукты, поддержки технологии программирования. В рамках этого на­правле­ния существуют средства для создания приложений, вклю­чающие:

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

· интегрированные среды разработчиков программ, обеспечивающие вы­полне­ние комплекса взаимосвязанных работ по созданию программ.

Локальные средства разработки про­грамм включают языки и системы про­грам­мирования, а также инструментальную среду пользователя. Сущест­вуют ма­шинные языки программирования (воспринимаемые аппаратной ча­стью компью­тера ма­шин­ные коды ), машинно-ориентированные языки (языки программирова­ния, кото­рые отражают структуру конкретного типа компью­тера – ассемб­леры ), алго­ритмические (универсальные ) языки, не зависящие от архитектуры компьютера, напри­мер, Фор­тран (Fortran ), Ко­бол (Cobol ), Алгол (Algol ), Пас­каль (Pascal ), Бейсик (Basic ), Си (C ), Си++ (C++ ) и др.; процедурно-ориентированные языки (где име­ется возмож­ность описания про­граммы как совокупности процедур – подпро­граммы ), про­блемно-ориен­тированные языки (предназначенные для решения задач оп­реде­ленного класса ), интегрирован­ные системы программирования. Заметим, что класси­фикация языков программирования не закреплена ГОСТами (в учебных це­лях обычно проводится их классификация по различным призна­кам ). Про­грамма, подго­товленная на языке программи­рования, проходит этап трансля­ции, отладки и тести­рования.

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

Кроме того, существуют средства для создания сложных информацион­ных сис­тем (CASE – технология ). Проектирование информационных систем представ­ляет собой трудоемкую и дли­тельную работу, требующую высокой ква­лификации участ­вующих в ней специалистов. В недале­ком прошлом про­ектирование нередко выпол­нялось на интуитивном уровне неформализован­ными методами, включаю­щими в себя элементы искусства, практический опыт, экспертные оценки и дорого­стоящие экспериментальные проверки ка­чества функционирования. В начале 70-х гг. в США был отмечен кризис про­граммирования (software crisis ). Это выра­жалось в том, что боль­шие проекты стали выполняться с отставанием от гра­фика или с превышением сметы рас­хо­дов, разработанный продукт не обладал тре­буемыми функцио­нальными возможностями, произ­водительность его была низка, ка­чество получаемого про­граммного обеспечения не устраивало потре­бителей. Потребность кон­тролировать процесс разработки ПО, прогнози­ровать и гаран­тировать стои­мость разработки, сроки и качество ре­зультатов привела к необ­ходимости пере­хода от кус­тарных к индустриальным способам создания ПО и по­явле­нию совокупности инже­нерных методов и средств создания ПО, объеди­нен­ных общим названием «программная инжене­рия» (software engineering ). В основе про­граммной инженерии лежит сле­дующая идея: проектиро­вание ПО является фор­мальным процессом, который можно изучать и совершенство­вать. К концу 80-х гг. было проведено много исследований в области про­грамми­рования (разработка и внедрение языков высокого уровня, мето­дов струк­турного и модульного програм­мирования, языков проектирова­ния и средств их под­держки, формальных и нефор­мальных языков описания сис­темных требований и спецификаций и т. д. ). Термин CASE (Computer Aided Software Engineering ) имеет весьма широкое толкование. Первоначально зна­чение термина CASE ограни­чива­лось вопросами автоматизации раз­работки только лишь программного обеспече­ния, а в на­стоящее вре­мя оно при­обрело новый смысл и охватывает про­цесс разра­ботки сложных инфор­мационных систем в целом. CASE-технология представляет собой совокупность методов про­ектирования информационных сис­тем, а также набор инструментальных средств, позво­ляющих в наглядной форме моделировать предметную об­ласть, ана­лизиро­вать эту модель на всех ста­диях раз­работки и со­провожде­ния, разрабатывать приложения в соответствии с информаци­он­ны­ми потреб­ностями пользователей. Большинство существующих CASE-средств осно­вано на методах структурного или объектно-ори­ентированного анализа и проек­тирования, использую­щих специфи­кации в виде диаграмм или текстов для описания внешних требова­ний, свя­зей между моделями системы, дина­мики поведе­ния сис­темы и архитектуры про­граммных средств.

Прикладные программы - предназна­чены для реше­ния прикладных задач пользо­вателя (обеспечивает выполнение необходи­мых пользова­телю за­дач на ком­пью­тере ). Условно (по их назначению ) можно выделить следую­щие под­классы:

· программы обработки текстов;

· графические редакторы;

· программы обработки фото- и видеоизображений;

· программы подготовки презентаций;

· электронные таблицы;

· системы управления базами данных;

· программы эко­номического и статистического анализа;

· сис­темы автомати­зированного проектирования (САПР);

· информационно-поисковые системы;

· сетевое программное обеспечение (программы для работы с электронной почтой, доступ к ви­деоконференциям, браузеры Интернет и т.д. );

· игровые программы.

Прикладное программное обеспе­че­ние состоит из пакетов прикладных про­грамм (ППП) и прикладных про­грамм пользователя.

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

Разделы: Начальная школа , Экология

«Природа не храм, а мастерская, и человек в ней работник», - говорил тургеневский герой. Долгое время свои отношения с природой человек выстраивал по этому принципу. Однако то, что воспитывалось веками – потребительский подход к природе - очень трудно изменить. И здесь особое значение приобретает экологическое образование.

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

По УМК «Школа России» я работаю второй год.

Основные темы разделов:

  1. Где мы живём
  2. Природа
  3. Жизнь города и села
  4. Здоровье и безопасность
  5. Общение
  6. Путешествие

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

Есть темы, которые очень интересуют детей, но их нет в проектах. Ребята сами с увлечением берутся за эти темы и затем делятся своими находками. Так получилось с работой по теме «Звёздное небо», в разделе природа. Мы изучили созвездия, на внеурочном занятии «Моя Астрахань» познакомились с Астраханским планетарием и его сотрудниками, которые нам сообщили о творческом конкурсе и ребята, объединившись в группу решили участвовать.

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

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

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

Дети составляют рассказы по картинкам на заданную тему, например, "Что мне рассказал весной скворец".

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

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

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

Экологическая работа проводится и с родителями: на родительских собраниях, в индивидуальных беседах и консультациях.

Разнообразная кропотливая работа даёт хорошие результаты. На основе диагностики можно сделать вывод: дети задают больше вопросов, вопросы становятся более глубокими по смыслу. У ребят возникает желание искать ответы на вопросы самостоятельно. Ребята не просто созерцают природу, но и переживают, волнуются, радуются, сопереживают, овладевают навыками ухода за животными и растениями.

Работа по экологическому воспитанию ведётся и за пределами школы. Экскурсии имеют большое воспитательно-образовательное значение. Они обеспечивают непосредственное общение ребят с природой в разные сезоны.

Я стараюсь учить детей видеть не только красоту природы, но и необдуманное истребление её людьми.

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

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

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

В процессе работы можно использовать следующие виды деятельности:

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

Разнообразная деятельность естественным образом связывает экологическое воспитание со всем процессом развития личности младшего школьника.

Задачи экологического воспитания в начальной школе требуют целенаправленной систематической работы. Экологическое образование невозможно без интеграции всех учебных предметов и внеклассных мероприятий. Детей необходимо знакомит с особенностями природы родного края. Изучение осуществляется по принципу: от близкого к далёкому - от родного города, края - ко всей стране, а затем к другим странам и континентам.

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

Формирование экологической грамотности младших школьников на уроках окружающего мира посредством заданий творческого характера

Известный педагог В.А.Сухомлинский говорил: «Я глубоко убежден, что если в детстве человек переживает чувство изумления красотой родной природы, если, затаив дыхание, он слушает слова учителя о том, что видят его глаза, в эти часы пробуждается пульс его живой мысли. Благодаря этим часам общения с родной природой развиваются его умственные способности, в его духовную жизнь входит слово родной речи и становится его собственным богатством: в слове он выражает свои мысли, чувства, переживания. Гармония образа и слова, познания умом и познания сердцем – это и есть рождение того, что мы называем чувством любви к природе, к родному миру». Анализируя эти слова, я поняла, что большая роль в воспитании этого чувства принадлежит учителю начальных классов. На уроке окружающего мира я провела анкетирование учащихся и пришла к выводу, что негативный перечень во много раз превосходит перечень добрых дел. Подавляющее большинство детей усвоили негативные примеры и, в лучшем случае, заняли пассивную позицию «так не поступать». Подобная позиция соответствует низкому уровню развития экологической культуры. Дети с низким уровнем развития экологической культуры имеют слабое представление о той пользе, которую они сами уже сейчас смогут принести природе, городу, окружающим людям. Таким образом, в настоящее время педагогическая практика испытывает следующие затруднения в развитии экологической грамотности младших школьников: учащиеся не в полной степени представляют, что в природе все взаимосвязано; у обучающихся отсутствуют экологические знания, нет ощущения, что человек - часть природы; дети не умеют оценивать свои поступки и поступки других людей по отношению к окружающей среде на основе предвидения возможных отрицательных последствий.

За последнее время вопросы охраны природы, экологические проблемы стали главными не только для ученых, но и для широких слоев населения, в том числе и младших школьников. В ФГОС начального общего образования среди основных направлений работы школы сказано, что «воспитание эмоционально – ценностного, позитивного отношения к себе и к окружающему миру» имеет большое значение . Таким образом, государство ставит перед школой задачу совершенствования экологического образования подрастающего поколения.

Актуальность проблемы продиктовала следующие задачи: 1. Проанализировать школьную программу и выявить ее возможности в экологическом образовании обучающихся. 2. Создать представление о сложных взаимоотношениях человека с природой. 3. Дать современные представления о биосфере, о роли водного и воздушного бассейнов, почвенного покрова, растительного и животного мира. 4. Воспитание ответственности за состояние природы, ее сохранение и улучшение в интересах будущих поколений.

Решение данной проблемы зависит от уровня общей культуры каждого человека на земле. Основы любой культуры закладываются в детском возрасте. Считаю, что необходимо, чтобы каждый день учащиеся делали для себя открытие, чтобы каждый шаг облагораживал душу ребенка. Этому способствует интегрированный курс Н.Я. Дмитриевой и А.Н.Казакова « Мы и окружающий мир» в системе Л.В. Занкова, основу которого составляют «Естествознание» и «Обществознание». Широкая содержательная область, которая представлена в учебниках «Окружающий мир», дает возможность каждому ребенку найти сферу своих интересов, создавая условия для формирования универсальных учебных действий. Так, погружение в широкую природную и общественную сферу активизирует эмоционально – чувственную сферу детей, пробуждает у них интерес к своей Земле и родному краю, к людям Земли, к семье, чувство сопричастности к тому, что происходит в нашем общем доме.

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

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

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

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

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

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

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

Проводилась подготовительная работа, в результате которой рассматривались такие вопросы:

1.Что такое «конференция»?

2.Зачем нужны конференции?

3.Кому нужны конференции?

4.Нужны ли конференции школьникам?

5.Как люди готовятся к конференции?

6.А как готовиться к конференции нам?

7.Как нам организовать конференцию? Кто будут нашими гостями?

Увлекательна и полезна для учащихся работа над экологическими проектами:

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

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

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