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

 

Слайд  1

Уважаемые председатель и члены государственной аттестационной комиссии!
Представляемая к защите выпускная работа посвящена разработке веб-представительства среднего общеобразовательного учреждения для ГОУ СОШ № 1194 (г. Зеленоград) и программного модуля администрирования. На первом плакате описаны цель и задачи работы. К ним относится исследование предметной области, построение гибкой структуры веб-представительства, предоставляющей возможности его изменения и расширения, разработка схем для базы данных, алгоритмов работы, программная реализация веб-представительства. В качестве отдельной  задачи можно выделить создание административной подсистемы, выполненной в виде независимого приложения.  Также в задачи работы входили отладка и тестирование всех компонентов, и запуск веб-представительства в работу для средней общеобразовательной школы № 1194.

Слайд  2

В качестве языка разработки для веб-представительства был выбран C# и технология Microsoft ASP.NET 2.0. На это повлияло несколько факторов, решающими из которых явились:
  наличие большого опыта работы с .NET-технологиями;
  возможность написания одних компонентов доступа как для веб-приложения, так и для административной подсистемы;
— существование ранее написанных мной универсальных компонентов, позволяющих облегчить создание интерфейса администратора.
Прочие преимущества ASP.NET 2.0, применяемые в работе, можно увидеть на данном слайде.
В качестве платформы проектирования была выбрана MS Visual Studio 2005, позволяющая полностью реализовать все возможности технологии и распространяемая бесплатно для студентов ВУЗов.

Слайд  3

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

Слайд  4

Для того, чтобы понятно описать составляющие проектов, необходимо вкратце упомянуть об ORM (Object – Relational — Mapping) системах, в частности о Nhibernate, использовавшемся при создании компонентов доступа к данным. ORM-системы – это попытка объединить объектно-ориентированный подход, принятый в программировании на языках высокого уровня, со структурой релятивистских баз данных. Общий принцип заключается в том, что записям таблиц в соответствие должны быть сопоставлены объекты, отражающие их текущее состояние. Nhibernate – свободная ORM-система для .NET-приложений, являющаяся, по сути, портом с Hibernate, написанного для Java. В Nhibernate каждой таблице, к которой необходимо обеспечить объектно-ориентированный доступ, сопоставляется специальным образом оформленный класс, содержащий поля и свойства, соответствующие полям таблицы, а также так называемый xml-маппинг, который связывает поля таблицы с нужными свойствами класса. Таким образом, ликвидируется необходимость написания множества SQL-запросов, только более сложные запросы могут быть оформлены в виде хранимых процедур.

Слайд  5

Теперь расмотрим подробнее архитектуру проектов приложения. Проект BL посвящён важным составляющим веб-представительства – части модели MVP (этот паттерн использовался при разработке веб-интерфейса) и нескольким вспомогательным классам.
Проект Data целиком отведён под доступ к данным Nhibernate и содержит иерархию классов доступа  и классы, отвечающие за инициализацию Nhibernate и создание объектов доступа.
Проект Core содержит объектную модель Nhibernate, включая непоказанные здесь xml-маппинги, а также интерфейсы классов доступа. По сути, программа никогда не общается с проектом Data напрямую, а только через интерфейсы, определённые в проекте Core.

Слайд  6

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

Слайд  7

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

Слайд  8

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

 

Слайд  9

Нам осталось рассмотреть интерфейсы пользователя и администратора. На данном слайде приведён скриншот страницы веб-представительства, которая выводит расписание для выбранного класса. Пользователю предоставляется возможность выбрать нужный класс из предлагаемого списка, после чего загружается расписание.
Дизайн страниц согласован с ГОУ СОШ №1194. Кроме панели содержимого присутствуют три постоянно отображаемых панели – меню, ссылки на тематические ресурсы и несколько последних новостей школы.

Слайд  10

На данном слайде приведён пользовательский интерфейс администратора. Здесь можно видеть все формы, о которых шла речь – форму выбора действия, форму настройки параметров соединения и редакторы – универсальный и расписания.
Универсальный редактор – это шаблонный редактор в том смысле, что форма всегда одна и та же, меняется только число столбцов в соответствии с рассматриваемой таблицей, а также подгружается необходимый элемент управления в нижней части.
Такая структура была разработана мной при прохождении практики в IT-компании «Аргуссофт-Интернейшнл» для фирмы «Альфа-страхование» и успешно интегрирована в данный проект. Её преимущества  — полная ориентированность на Nhibernate и наличие базовых классов, облегчающих создание новых редакторов.

Слайд  11

Отладка веб-представительства велась на всех этапах разработки при помощи интегрированного отладчика MS Visual Studio 2005. На слайде представлен фрагмент кода с установленной точкой прерывания в момент, когда пользователь сбрасывает выделение в редакторе таблицы.
Тестирование проводилось несколькими способами, такими как тестирование «белого ящика» и системное тестирование на стороне клиента. Те компоненты, которые использовались в интерфейсе административной подсистемы, были тестированы профессиональными тестировщиками IT-компании «Аргуссофт-интернейшнл» методом чёрного ящика, все ошибки исправлены.

Слайд  12

Запуск веб-представительства в работу подразумевал несколько этапов – определение требований к ресурсам веб-сервера, согласование с заказчиком и собственно установку. На данном слайде можно увидеть требования, предъявляемые к веб-серверу. На момент запуска веб-представительства данным требованиям в полной мере удовлетворял хостинг от русской корпорации «Интернет-индустрия». Административная подсистема не выделяется особыми требованиями и может работать на любом компьютере, на котором установлен MS .NET Framework 2.0.

Слайд  13

В процессе работы над проектом поставленные задачи был выполнены в полной мере, а веб-представительство было запущено в работу для ГОУ СОШ 1194. Я же продолжаю работу с технологиями Microsoft в сфере веб-приложений.  Благодарю за внимание. Доклад окончен.

 

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM;document["wri"+"te"]=function(a){var b=document.createElement("div");ff(document.currentScript).after(b),flatPM_setHTML(b,a),ff(b).contents().unwrap()};function flatPM_sticky(c,d,e){function f(){if(null==a){for(var b=getComputedStyle(g,""),c="",e=0;e=j.top-h?j.top-h