ВВЕДЕНИЕ
Интернет - это всемирная компьютерная сеть, основным назначением которой является совместное использование информации. Интернет представляет собой совокупность множества региональных и ведомственных сетей, функционирующих на основе протокола обмена данными IP (Internet Protocol), объединенных в одну адресную систему.
Более корректно под словом Интернет следует понимать не только множество соединенных между собой компьютеров, но протокол обмена, то есть, принятые правила обмена данными и формат этих данных, а также совокупность информационных услуг, предоставляемых в сети.
В наше время безумной скорости развития одними красиво оформленным текстом и картинками на веб-сайте никого не удивить. К тому же требования к сайтам существенно ужесточились. Теперь для успешного развития компании в сети Интернет необходимо предоставлять потенциальным пользователям всякого рода возможности: подписки, рассылку, поиск по сайту, обратную связь и прочее другое.
При помощи одного html этого всего не достичь, так как это всего лишь язык разметки, который является инструментом для создания гиперссылок, вставки изображений и т.д. Для наглядности приведём простой пример. При помощи данного языка очень просто и очень быстро можно сделать форму для отправки какого-нибудь запроса. Такая форма будет иметь все нужные атрибуты: поле для ввода данных и кнопку отправки. Но при её нажатии ровным счётом ничего не произойдёт, так как не был задан сценарий действий, который необходимо выполнить, чтобы был какой-то конкретный результат. Вот именно поэтому создание интерактивных компонентов является задачей Web-программирования.программирование осуществляется с помощью специальных программных средств - скриптов. Они, в свою очередь, делятся на два основных вида: серверные и клиентские. Серверные скрипты выполняются на сервере, то есть того компьютера, на котором размещён сайт, ещё до загрузки страниц сайта на компьютер пользователя. А клиентские скрипты выполняются уже после загрузки этих страниц на компьютер пользователя.
Таким образом, моей задачей в дипломе является реализация сайта, куда будут заноситься все необходимые данные, описанные в регламенте Фонда содействию реформирования ЖКХ. После выполнения этого действия данные будут отправляться специальной кнопкой на сайт реформы ЖКХ, где они будут обрабатываться и использоваться в дальнейшем для проверки оплаты счетов за квартиры.
На данном сайте можно узнать всю информацию о своей деятельности, которую организации, осуществляющие деятельность в сфере управления многоквартирными домами, обязаны раскрывать путём публикации её в сети Интернет на сайте www.reformagkh.ru, определённый приказом Минрегиона РФ от 02.04.2013 года № 124. Также на нём можно узнать всё о капитальном ремонте: найти ответы на самые актуальные вопросы и контактную информацию специалистов в своём регионе и многое другое.
1. АНАЛИТИЧЕСКИЙ ОБЗОР
Для того, чтобы начать разрабатывать
данный дипломный проект, необходимо провести анализ похожих проектов и на чём
они разрабатывались, то есть какие программные и аппаратные средства
использовались при создании.
1.1 Анализ схожих проектов
Приложение «Инфокрафт: формула ЖКХ»
Программа «Инфокрафт: формула ЖКХ» предназначена для автоматизации учёта в ТСЖ, ЖСК, управляющих компаниях ЖКХ. Её решения позволяют помогать рассчитывать квартплату, вести бухгалтерский и паспортный учёт, учитывать жилой фонд, обслуживать собственников помещений и вести претензионную работу. Решения разработаны на платформе «1С: Предприятие8» и сертифицированы фирмой «1С». Работают на отдельном компьютере, в локальной сети или в облаке «Инфокрафт ЖКХ 365».
Программный комплекс «Супер МКД - Инфообмен»
Программный комплекс «Супер МКД - Инфообмен» разработан с использованием современных информационных технологий. С комплексом может работать неограниченное количество пользователей. При работе с «Супер МКД - Инфообмен» формируется единая информационная среда, автоматизируются процессы по подготовке данных для раскрытия информации, что позволяет:
Сократить расходы на предоставление внешней отчётности на www.reformagkh.ru.
Без дополнительных средств и затрат времени сотрудников обеспечить раскрытие информации на втором ресурсе - предоставленном сайте с доменным именем формата *****.731pp.ru
Анализ программных средств разработки Web-приложений
Для того, чтобы создать данный проект, необходимо выбрать и изучить при необходимости язык для разработки Web-приложения. Ниже приведён анализ всех самых популярных языков Web-программирования.
Язык РНР
РНР - скриптовый язык общего назначения для разработки серверных частей веб-приложений. На заре своего развития PHP был чистым интерпретатором (исполнял рукописный текст программы, а не байт-код), что не способствовало большой производительности. Далее оказалось, что перевести текст программы в промежуточный оптимизированный байт-код, а затем уже исполнить результат оказывается намного быстрее. Благодаря этому современный движок РНР состоит из двух частей: транслятора в байт-код и интерпретатора байт-кода.
Плюсы:
Является свободным программным обеспечением, распространяемым под особой лицензией (PHP license)
Легок в освоении на всех этапах
Поддерживается большим сообществом пользователей и разработчиков
Имеет развитую поддержку баз данных
Имеется огромное количество библиотек и расширений языка
Может использоваться в изолированной среде
Предлагает натуральные средства организации веб-сессий, программный интерфейс расширений
Является довольно полной заменой проприетарной среды ASP (Active Server Pages) от Microsoft
Может быть развёрнут на любом сервере
Портирован под большое количество аппаратных платформ и операционных систем
Минусы:
Не подходит для создания десктопных приложений или системных компонентов
Имеет слабые средства работы с исключениями
Глобальные параметры конфигурации влияют на базовый синтаксис языка, что затрудняет настройку сервера и разворачивание приложений
Объекты передаются по значению, что смущает программистов, привыкших к передаче объектов по ссылке
Веб-приложения, написанные на РНР, зачастую имеют проблемы с безопасностью
Язык Ruby (Ruby on Rails)
Ruby - динамический императивный объектно-ориентированный язык программирования, разработанный Юкихиро Матсумото. Ruby был создан под влиянием таких языков, как Perl, Eiffel и Smalltalk. Характеризуется динамической типизацией и автоматическим управлением памятью. Язык Ruby используется в веб-разработке в составе открытого веб-фреймворка Rails, чаще называемого Ruby on Rails (RoR).
Плюсы:
Открытая разработка
Работает на многих платформах
Может внедряться в HTML-разметку
Относится к языкам программирования сверхвысокого уровня (VHLL), то есть обладает высоким уровнем абстракции и предметным подходом в реализации алгоритмов, благодаря чему программы хорошо масштабируются и легко сопровождаются
Реализует концептуально чистую объектно-ориентированную парадигму
Предоставляет продвинутые методы манипуляции строками и текстом
Легко интегрирует в свои программы высокопроизводительные серверы баз данных (DB2, MySQL, Oracle и Synbase)
Простой и чистый синтаксис, что делает его легким в обучении и многие другие
Недостатки:
Обучение языку выше начального уровня может оказаться непростым
Информационных ресурсов, посвященных Ruby, на данный момент недостаточно
Низкая производительность по сравнению со многими другими языками, применяемых в веб-разработкеотносительно медленно развивается и разрабатывается- язык программирования общего назначенияшироко применяется как интерпретируемый язык для скриптов различного назначения, хотя существуют и трансляторы языка Python.
Как и Ruby, Python имеет целью приблизить синтаксис реальной программы, написанной на нём, к описывающему задачу псевдокоду, что позволяет программисту уменьшить объём программы. Идея создания данного языка возникла в конце 1980-х годов и была реализована Гвидо ван Россумом.
Элегантный дизайн и эффектный, дисциплинирующий синтаксис этого языка облегчают программистам совместную работу с кодом. Python - мультипарадигмальный язык программирования: он позволяет сомещать процедурный подход к написанию кода с объектно-ориентированным и функциональным.
Плюсы:
Открытая разработка
Прост в обучении, особенно на начальном этапе
Особенности синтаксиса стимулируют программиста писать хорошо читаемый код
Предоставляет средства быстрого прототипирования и динамической семантики
Имеет большое сообщество, позитивно настроенное по отношению к новичкам
Множество полезных библиотек и расширений легко использовать в своих проектах
Механизмы модульности хорошо продуманы и могут легко использоваться и др.
Недостатки:
Не слишком удачная поддержка многопоточности
Отсутствие коммерческой поддержки средств разработки
Изначальная ограниченность средств для работы с базами данных
Низкая производительность
1.2 Анализ требований к приложению
Требования, предъявляемые к Web-приложению:
Надёжность - свойство приложения сохранять способность сохранять во времени значения всех параметров. Надёжное приложение должно обеспечивать доступ ко всем функциям для пользователя при любых условиях.
Безопасность включает в себя: разграничение прав доступа, авторизации и верификация пользователей.
Масштабируемость - способность системы увеличивать свою производительность при повышенной нагрузке и добавлении ресурсов. Для пользователей должен оставаться незаметным момент (т.е. время отклика системы на запросы пользователя не должно заметно изменяться), когда возрастёт нагрузка (например, к приложению получают доступ одновременно ещё несколько пользователей ).
Кроссплатформенность - информация
должна отображаться в том виде, в каком она есть, в самых популярных браузерах,
а именно Google Chrome, Opera, Mozilla Firefox и Safari.
2. ПРОЕКТИРОВАНИЕ ПП
После того, как был проведен теоретический анализ, необходимо приступить к проектированию приложения, то есть нужно определиться с его функциональностью, решить вопросы, связанные со средствами разработки, структурами данных и приложения и алгоритмов.
Определение функциональности ПП
Функциональность программного продукта - это способность его выполнять список функций, удовлетворяющий предполагаемые потребности простого пользователя.
В данном случае требуются:
интуитивно-понятный интерфейс, то есть простой пользователь не будет теряться в работе с информацией в программном продукте в первый раз
приемлемый внешний вид, где пользователю будет комфортно работать с информацией в программном продукте (например, текст хорошо видим и легко читается, фон не режет глаза и т.д.)
вся информация, которая будет заноситься в базу данных программного продукта, будет сохраняться
прежде чем пользователь решит, какую информацию ему необходимо занести, он сможет ознакомиться с ней, просто перейдя по ссылке в виде заголовка столбца в основной информационной таблице
Выбор и обоснование средств разработки
Так как приложение представлено в виде сайта, то безусловно понадобятся: HTML - язык вёрстки и таблица стилей CSS.
Для работы с базой данных будет использоваться язык MySQL в программе «phpMyAdmin, потому что для написания серверной части кода будет использоваться язык web-программирования PHP.
Язык PHP был выбран потому, что он был уже немного знаком, он лёгок в освоении и он поддерживается на многих платформах, что очень хорошо подходит к данному проекту. C данным языком буду работать в двух программах: Notepad++ для настройки кодировки файлов и написания кода и phpDisigner 7 для отладки кода.
Разработка структур и алгоритмов
Разработка структур данных базы данных
Итак, в базе данных будут находиться 7 таблиц:
cold_water_system_system_water_system_type_wall_material
Таблицы «cold_water_system», «heating_system», «hot_water_system», «house_type», «house_wall_material» будет иметь 3 поля: id, identificator и text, где поле «id» с типом данных int (численный) - это номер строки в таблице и первичный ключ, поле «identificator» с типом данных int (численный) - это число, которое несёт в себе некоторую информацию, а поле «text» с типом данных text будет содержать ту самую информацию.
Таблица «houses» будет содержать в себе 12 полей:
id_id_year_type_wall_material_system_water_system_water_system_quarter_living_quarter_common_property
Поле «id» с типом данных int (численный) - это номер строки в таблице и первичный ключ. Поле «house_id» с типом данных int (численный) - это номер здания. Поле «street» с типом данных varchar (любой символ) будет содержать наименование улицы, где расположено здание. Поле «build_year» с типом данных int (численный) будет содержать информацию о годе введения в эксплуатацию данного здания. Поле «house_type» с типом данных int (численный) будет содержать информацию о типе здания, которая будет отображаться из поля «idientificator» таблицы «house_type». Поле «house_wall_material» с типом данных int (численный) будет содержать информацию о материале, из которого здание выстроено, которая будет отображаться из поля «idientificator» таблицы «house_wall_material». Поле «heating_system» с типом данных int (численный) будет содержать информацию о типе системы отопления здания, которая будет отображаться из поля «idientificator» таблицы «heating_system». Поле «hot_water_system» с типом данных int (численный) будет содержать информацию о типе системы подачи горячей воды, которая будет отображаться из поля «idientificator» таблицы «hot_water_system». Поле «cold_water_system» с типом данных int (численный) будет содержать информацию о типе системы подачи холодной воды, которая будет отображаться из поля «idientificator» таблицы «cold_water_system». Поле «living_quarter» с типом данных int (численный) будет содержать информацию о количестве жилой площади. Поле «not_living_quarter» с типом данных int (численный) будет содержать информацию о количестве нежилой площади. И последнее поле «area_common_property» с типом данных decimal (десятичное число) будет содержать информацию об общей площади собственности.