84
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМ ГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ Допустить к защите « » ____________________ ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ: «Разработка системы ведения и учета протоколов совещаний» Дипломант: Смирнов Глеб Андреевич Руководитель дипломного проекта: Шипиев Роман Николаевич Консультанты: По технологической части: Шипиев Роман Николаевич По экономической части: Баранов Виталий Петрович Рецензент: Ерёменко Василий Витальевич 2008г.

Пример оформления дипломной работы

Embed Size (px)

DESCRIPTION

Дипломная работа Смирнова Глеба Андреевича, который защищался в 2008 году.

Citation preview

Page 1: Пример оформления дипломной работы

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ

Допустить к защите

« » ____________________

Д И П Л О М Н Ы Й П Р О Е К Т

НА ТЕМУ: «Разработка системы ведения и учета протоколов совещаний»

Дипломант: Смирнов Глеб Андреевич

Руководитель дипломного проекта: Шипиев Роман Николаевич

Консультанты:

По технологической части: Шипиев Роман Николаевич

По экономической части: Баранов Виталий Петрович

Рецензент: Ерёменко Василий Витальевич

2008г.

Page 2: Пример оформления дипломной работы

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

МОСКОВСКИЙ ЭЛЕКТРОННО-ТЕХНОЛОГИЧЕСКИЙ ТЕХНИКУМГОСУДАРСТВЕННОЙ АКАДЕМИИ ИННОВАЦИЙ

«УТВЕРЖДАЮ»Зам. директора по учебной работе.______________________________«______» _______________ 2008 г.

ЗАДАНИЕНА ДИПЛОМНЫЙ ПРОЕКТ

Студенту Смирнову Глебу Андреевичу группы П-401 специальности 230105

Тема дипломного проекта: «Разработка системы ведения и учета протоколов совещаний»

Техническое задание на проектированиеПостановка задачи, входная и выходная информация

Целью дипломного проекта является создание системы по ведению и

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

следующие функции:

1) Предоставлять возможности ввода информации о предстоящих

совещаниях, отмены и переноса совещания, составления протокола

состоявшегося совещания, ввода реквизитов участников совещания.

2) Предоставлять информацию о будущих, прошедших и отмененных

совещаниях.

3) Предоставлять информацию о совещаниях в формате RSS.

Входными данными системы являются:

— реквизиты участников совещания;

— реквизиты совещания.

Выходными данными системы являются:

— список предстоящих, отмененных и перенесенных совещаний;

— протоколы состоявшихся совещаний.

Page 3: Пример оформления дипломной работы

3RU.МЭТТ.18108-01 84 01

СОДЕРЖАНИЕВведение.......................................................................................................................5

1 Общая часть..............................................................................................................6

1.1 Постановка задачи.............................................................................................6

1.1.1 Назначение задачи......................................................................................6

1.1.2 Технико-математическое описание задачи...............................................6

1.1.3 Требования к программе..........................................................................12

1.1.4 Требования к составу и параметрам технических средств...................12

1.2 Описание языка программирования..............................................................14

1.2.1 Выбор языка программирования............................................................14

1.2.2 Элементы языка программирования.......................................................15

2 Специальная часть..................................................................................................32

2.1 Описание алгоритма........................................................................................32

2.1.1 Схемы алгоритма......................................................................................32

2.1.2 Описание работы программы..................................................................38

2.2 Текст программы.............................................................................................44

2.2.1 Схема базы данных (файл db/schema.rb)................................................44

2.2.2 Контроллеры системы..............................................................................44

2.2.3 Модели системы.......................................................................................49

2.3 Инструкция на выполнение программы........................................................50

2.3.1 Общие сведения........................................................................................50

2.3.2 Вызов и загрузка.......................................................................................50

2.3.3 Входные данные........................................................................................51

2.3.4 Выходные данные.....................................................................................51

2.3.5 Сообщения программы............................................................................51

2.3.6 Техника безопасности при работе на компьютере................................52

2.4 Описание процесса отладки программы.......................................................53

2.4.1 Методы отладки........................................................................................53

2.4.2 Тестирование.............................................................................................55

Page 4: Пример оформления дипломной работы

4RU.МЭТТ.18108-01 84 01

2.4.3 Контрольный пример...............................................................................58

3 Экономическая часть..............................................................................................67

3.1 Расчет системы................................................................................................67

3.1.1 Материальные затраты.............................................................................67

3.1.2 Заработная плата разработчиков.............................................................67

3.1.3 Часовая тарифная ставка..........................................................................67

3.1.4 Расчет стоимости основных фондов.......................................................68

3.2 Расчет затрат на тиражирование (производство) системы..........................71

3.2.1 Расчет стоимости основных фондов.......................................................71

3.2.2 Расчет производственной мощности выпуска продукции на год........72

3.2.3 Расчет материальных затрат....................................................................72

3.2.4 Расчет заработной платы специалистов и сотрудников........................73

3.2.5 Расчет сметы цеховых расходов на год...................................................74

3.2.6 Калькуляция себестоимости выпускаемой продукции.........................75

3.2.7 Диаграмма удельного веса затрат на производство (тиражирование)

системы...............................................................................................................77

3.2.8 Определение точки безубыточности графическим методом................78

3.2.9 Определение маржинального дохода графическим методом...............78

3.2.10 Определение критического объема производства в натуральных единицах

графическим методом.......................................................................................79

3.2.11 Определение критической суммы товарной продукции графическим

методом...............................................................................................................79

3.2.12 Сводная таблица технико-экономических показателей......................80

3.3 Вывод................................................................................................................81

Заключение.................................................................................................................82

Список используемых источников...........................................................................83

Page 5: Пример оформления дипломной работы

5RU.МЭТТ.18108-01 84 01

ВВЕДЕНИЕРазработка системы ведения и учета протоколов совещаний ведется на

основании приказа ФГОУ ДПО МЭТТ ГАИ № 43-С от 04.04.08 «Об утверждении

тем дипломных проектов, о назначении руководителей дипломных проектов».

Полное название программы: система ведения и учета протоколов совещаний.

Краткое название программы: система.

Page 6: Пример оформления дипломной работы

6RU.МЭТТ.18108-01 84 01

1 ОБЩАЯ ЧАСТЬ

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

1.1.1 Назначение задачиЦелью дипломного проекта является разработка системы ведения и учета

протоколов совещаний.

Главной задачей разрабатываемой системы является задача информирования

сотрудников учреждения о намеченных, перенесенных или отмененных совещаниях.

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

технологий:

— протокол передачи данных HTTP[1];

— инструментарий разработки Ruby on Rails[2];

— трехуровневая архитектура MVC[3];

— технология ORM[4];

— язык разметки гипертекста HTML[5];

— формат RSS[6].

1.1.2.1 Протокол передачи данных HTTPHTTP (от англ. HyperText Transfer Protocol — «протокол передачи

гипертекста») — сетевой протокол прикладного уровня для передачи файлов. В

стеке TCP/IP для HTTP зарезервированы порты 80 и 8080 транспортных протоколов

TCP и UDP (на практике используется только первый).

Основным назначением HTTP является передача веб-страниц (текстовых

файлов с разметкой HTML), хотя с помощью него с успехом передаются и другие

файлы, как связанные с веб-страницами (изображения и приложения), так и не

связанные с ними.

Page 7: Пример оформления дипломной работы

7RU.МЭТТ.18108-01 84 01

HTTP предполагает, что клиентская программа — веб-обозреватель —

способна отображать гипертекстовые веб-страницы и файлы других типов в удобной

для пользователя форме.

1.1.2.2 Инструментарий разработки Ruby on RailsRuby on Rails — объектно-ориентированный программный каркас для

создания веб-приложений, написанный на языке программирования Ruby[7]. Ruby

on Rails предоставляет каркас модель-представление-контроллер[3] (Model-View-

Controller) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером

и сервером базы данных.

Ruby on Rails является открытым программным обеспечением и

распространяется под лицензией MIT[8].

1.1.2.2.1 Принципы

Инструментарий Ruby on Rails определяет следующие принципы разработки

приложений:

– приложения не должны определять собственную архитектуру, поскольку

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

– язык Ruby позволяет использовать легко читаемую нотацию для

определения семантики приложений (таких как отношения между таблицами в

базе данных);

– инструментарий Ruby on Rails предоставляет механизмы повторного

использования, позволяющие минимизировать дублирование кода в приложениях

(принцип Don’t Repeat Yourself);

– по умолчанию используются соглашения по конфигурации, типичные для

большинства приложений (принцип Convention over configuration). Явная

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

Page 8: Пример оформления дипломной работы

8RU.МЭТТ.18108-01 84 01

1.1.2.2.2 Архитектура

Основными компонентами приложений Ruby on Rails являются модель

(model), представление (view) и контроллер (controller).

Модель предоставляет остальным компонентам приложения объектно-

ориентированное представление данных (таких как каталог продуктов или список

заказов). Объекты модели осуществляют загрузку и сохранение данных в

реляционной базе данных, а также реализуют бизнес-логику.

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

достаточно наследовать свой класс модели от базового класса ActiveRecord::Base.

Ruby on Rails автоматически связывает классы модели с таблицами в базе данных и

создает атрибуты объектов для соответствующих полей таблицы.

Представление создает пользовательский интерфейс для отображения

полученных от контроллера данных. Представление также передает запросы

пользователя на манипуляцию данными в контроллер (как правило, представление

не изменяет непосредственно модель).

В Ruby on Rails представление описывается при помощи шаблонов RHTML.

Они представляют собой файлы HTML с дополнительными включениями

фрагментов кода Ruby (Embedded Ruby или ERb). Вывод, сгенерированный

встроенным кодом Ruby, включается в текст шаблона, после чего получившаяся

страница HTML возвращается пользователю. Представления могут использовать

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

(layout) более высокого уровня.

Контроллер — основной компонент, отвечающий за взаимодействие с

пользователем. Контроллер считывает необходимые данные из модели и

подготавливает их для отображения, а также сохраняет полученные от отображения

данные в модели.

Контроллером в Ruby on Rails является класс, наследованный от

ActionController::Base. Открытые методы контроллера являются так называемыми

Page 9: Пример оформления дипломной работы

9RU.МЭТТ.18108-01 84 01

действиями (actions). Action часто соответствует отдельному представлению.

Например, по запросу пользователя admin/list будет вызван метод list класса

AdminController и затем использовано представление list.rhtml.

1.1.2.2.3 Интеграция

Ruby on Rails может работать с Apache, Lighttpd или любым другим веб-

сервером, поддерживающим FastCGI. Для разработки и отладки часто используется

встроенный в Ruby веб-сервер WEBrick или Mongrel.

В качестве сервера базы данных поддерживаются MySQL, Firebird,

PostgreSQL, IBM DB2, Oracle и Microsoft SQL Server. Также поддерживается

встраиваемая база данных SQLite.

1.1.2.3 Архитектура MVCModel View Controller (MVC) — архитектура программного обеспечения, в

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

логика разделены на три отдельных компонента, так, что модификация одного из

компонентов оказывает минимальное воздействие на другие компоненты.

Шаблон MVC позволяет разделить данные, представление и обработку

действий пользователя на три отдельных компонента:

– модель (model). Модель предоставляет данные (обычно для View), а также

реагирует на запросы (обычно от контролера), изменяя свое состояние;

– представление (view). Отвечает за отображение информации

(пользовательский интерфейс);

– контролер (controller). Интерпретирует данные, введенные пользователем, и

информирует модель и представление о необходимости соответствующей

реакции.

Важно отметить, что как представление, так и контролер зависят от модели.

Однако модель не зависит ни от представления, ни от контролера. Это одно из

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

Page 10: Пример оформления дипломной работы

10RU.МЭТТ.18108-01 84 01

независимо от визуального представления.

1.1.2.4 Технология ORMORM — (англ. Object-relational mapping) технология в программировании,

которая связывает базы данных с концепциями объектно-ориентированных языков

программирования, создавая (как результат) «виртуальную объектную базу данных».

С точки зрения программиста, система должна выглядеть как постоянное

хранилище объектов. Он может просто создавать объекты и работать с ними как

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

На практике все не так просто и очевидно. Все системы ORM обычно

проявляют себя в том или ином виде, уменьшая в некотором роде возможность

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

неэффективным (особенно в терминах сгенерированного SQL). Все это может

привести к тому, что программы будут работать медленнее и использовать больше

памяти, чем программы, написанные «вручную».

Но ORM позволяет избавить программиста от написания большого

количества, часто однообразного и подверженного ошибкам, кода, тем самым

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

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

задать код SQL запросов который будет использоваться при тех или иных действиях

(сохранение в базу данных, загрузка, поиск и т.д) с постоянным объектом.

1.1.2.5 Язык разметки гипертекста HTMLHTML (от англ. Hypertext Markup Language — «язык разметки гипертекста»)

— это стандартный язык разметки документов во Всемирной паутине. Практически

все веб-страницы создаются при помощи языка HTML или его последователя —

XHTML.

Формально, HTML является приложением SGML (стандартного обобщённого

языка разметки) и соответствует международному стандарту

ISO 8879.

Page 11: Пример оформления дипломной работы

11RU.МЭТТ.18108-01 84 01

Язык HTML был разработан британским учёным Тимом Бернерсом-Ли

приблизительно в 1991—1992 годах в стенах Европейского совета по ядерным

исследованиям в Женеве (Швейцария). HTML создавался как язык для обмена

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

являющимися специалистами в области вёрстки. HTML успешно справлялся с

проблемой сложности SGML путём определения небольшого набора структурных и

семантических элементов (размечаемых «тегами»), служащих для создания

относительно простых, но красиво оформленных документов. Помимо упрощения

структуры документа, в HTML внесена поддержка гипертекста. Мультимедийные

возможности были добавлены позже. Изначально язык HTML был задуман и создан

как средство структурирования и форматирования документов без их привязки к

средствам воспроизведения (отображения). В идеале, текст с разметкой HTML

должен был без стилистических и структурных искажений воспроизводиться на

оборудовании с различной технической оснащенностью (цветной экран

современного компьютера, монохромный экран органайзера, ограниченный по

размерам экран мобильного телефона или устройства и программы голосового

воспроизведения текстов). Однако, современное применение HTML очень далеко от

его изначальной задачи. С течением времени, основная идея

платформонезависимости языка HTML была отдана в своеобразную жертву

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

1.1.2.6 Формат RSSRSS — семейство XML-форматов, предназначенных для описания лент

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

источников, представленная в формате RSS, может быть собрана, обработана и

представлена пользователю в удобном для него виде специальными программами-

агрегаторами.

В разных версиях аббревиатура RSS имела разные расшифровки:

— Rich Site Summary (RSS 0.9x) — обогащённая сводка сайта;

Page 12: Пример оформления дипломной работы

12RU.МЭТТ.18108-01 84 01

— RDF Site Summary (RSS 0.9 и 1.0) — сводка сайта с применением

инфраструктуры описания ресурсов;

— Really Simple Syndication (RSS 2.x) — очень простое приобретение

информации.

Обычно с помощью RSS 2.0 даётся краткое описание новой информации,

появившейся на сайте, и ссылка на её полную версию. Интернет-ресурс в формате

RSS называется RSS-каналом, RSS-лентой или RSS-фидом.

Многие современные браузеры, почтовые клиенты и Интернет-пейджеры

умеют работать с RSS-лентами, среди них Safari, Maxthon, Miranda, Mozilla Firefox,

Mozilla Thunderbird, Opera, Microsoft Internet Explorer (начиная с 7-й версии). Кроме

того, существуют специализированные приложения (RSS-агрегаторы), собирающие

и обрабатывающие информацию RSS-каналов. Также очень популярны веб-

агрегаторы, представляющие собой сайты по сбору и отображению RSS-каналов,

такие как Яндекс.Лента, Google Reader, Новотека и Bloglines.

1.1.3 Требования к программеСистема должна выполнять следующие функции:

— предоставлять возможности ввода информации о предстоящих

совещаниях, отмены и переноса совещания, составления протокола

состоявшегося совещания, ввода реквизитов участников совещания.

— предоставлять информацию о будущих, прошедших и отмененных

совещаниях.

— предоставлять информацию о совещаниях в формате RSS.

1.1.4 Требования к составу и параметрам технических средствТребования к параметрам программно-технических средств для серверной

части:

– процессор с производительностью не ниже Intel Core 2 Duo;

– операционная система семейства Unix ( рекомендуется ), MacOS или

Page 13: Пример оформления дипломной работы

13RU.МЭТТ.18108-01 84 01

Windows;

– оперативное запоминающее устройство не менее 1 Гб;

– наличие свободного пространства на накопителе жестких магнитных

дисков не менее 200Мб;

– сетевая карта;

– настроенный сетевой интерфейс;

– установленный и настроенный интерпретатор Ruby версии не ниже 1.8.6;

– установленный и настроенный инструментария разработки

Ruby on Rails версии не ниже 2.0.2;

– установленная и настроенная СУБД ( PostgreSQL, MySQL, SQLite, Oracle,

DB2, FireBird, FrontBase, SQLServer, SyBase ).

Требования к параметрам программно-технических средств для клиентской

части:

– процессор с производительностью не ниже Intel Core 2 Duo;

– операционная система семейства MacOS, Unix или Windows;

– оперативное запоминающее устройство не менее 1 Гб;

– видеокарта;

– клавиатура;

– монитор;

– сетевая карта;

– настроенный сетевой интерфейс;

– наличие веб-обозревателя (рекомендуется Microsoft Internet Explorer версии

не ниже 7).

Page 14: Пример оформления дипломной работы

14RU.МЭТТ.18108-01 84 01

1.2 Описание языка программирования

1.2.1 Выбор языка программированияСреди множества языков программирования для реализации системы выбор

стоял между такими языками, как Python[9], PHP[10] и Ruby[7]. Все они имеют

следующие общие характеристики:

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

приложений, базирующихся на протоколе HTTP (web-приложения);

— поддерживаются практически всеми web-серверами;

— имеют обширные библиотеки и инструментарии для разработки web-

приложений;

— обладают в той или иной степени объектно-ориентированными

возможностями;

— являются динамическими языками программирования

интерпретируемого типа, что позволяет выполнять множество операций,

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

— существуют реализации для всех популярных операционных систем:

Windows, Unix, MacOS, BeOS и других;

— используют более облегченный синтаксис, который позволяет писать

более компактный код.

Выбор остановился на Ruby, чему способствовали следующие моменты:

— язык Ruby очень прост в изучении по сравнению со всеми остальными

языками программирования и при этом практически не уступает им по

функциональности, а во многих случаях даже превосходит их;

— язык Ruby позволяет быстро и качественно писать сложные программы;

— язык Ruby отличается чрезвычайной предсказуемостью: ни на одном

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

увидеть, что она работает с первой попытки;

Page 15: Пример оформления дипломной работы

15RU.МЭТТ.18108-01 84 01

— в языке Ruby прекрасно реализована работа с файловой системой

(платформонезависимая, со своим языком шаблонов);

— это язык, с которым исключительно приятно иметь дело (по сугубо

субъективному мнению автора этой работы).

Такие языки программирования, как C, C++, C#, Pascal, Delphi, BASIC, Java и

другие C-подобные даже не рассматривались в виду низкой продуктивности при

разработке веб-приложений.

1.2.2 Элементы языка программированияПри создании системы был использован язык программирования Ruby.

Данный выбор обусловлен достоинствами и преимуществами этого языка

программирования над другими языками (динамичность, «все - объект»,

лаконичность синтаксиса, поддержка элементов функционального

программирования и так далее[11]).

1.2.2.1 Основные положения языка— комментарий начинается с символа "решетка" ( # ) и действует до конца

строки (EOL);

— программа на Ruby состоит из последовательности выражений;

— выражения могут разделяться символом "точка с запятой" ( ; ) или

символом конца строки (EOL), кроме случая незаконченного выражения

(например "+" в конце строки);

— «обратный слеш» (\) в конце строки позволяет явно указать, что

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

Page 16: Пример оформления дипломной работы

16RU.МЭТТ.18108-01 84 01

1.2.2.2 Зарезервированные слова

Т а б л и ц а 1 — список зарезервированных слов

alias and BEGIN begin break case class def defineddo else elsif END end ensure false for ifin module next nil not or redo rescue retry

return self super then true undef unless until when

while yield

1.2.2.3 Типы данныхБазовыми типами являются: числа, строки, диапазоны, регулярные выражения,

символы, массивы и словари. Еще сюда можно было бы добавить файлы, так как они

используются очень часто.

1.2.2.4 ЧислаСуществуют следующие формы задания чисел: 123, 1_234, 123.45, 1.2e-3,

0xffff (шестнадцатеричное), 0b01011 (двоичное), 0377 (восьмеричное).

Помимо перечисленных, существуют другие (неявные) формы задания чисел:

— ?a ASCII код символа "a";

— ?C-a Код сочетания Ctrl+a;

— ?M-a Код сочетания Alt+a;

— ?M-C-a Код сочетания Ctrl+Alt+a;

— :symbol Целое значение, соответствующее идентификаторам,

переменным и операторам.

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

— 'без возможности вставки (interpolation)';

— "#{interpolation}, #{$interpolation}, #{@interpolation} и управл.

последоват.\n";

Page 17: Пример оформления дипломной работы

17RU.МЭТТ.18108-01 84 01

— %q! без возможности вставки (interpolation)!;

— %!Есть вставки и управляющие последовательности!;

— %Q(Есть вставки и управляющие последовательности);

— `echo выполнение команды ОС со вставками и управляющими

последовательностями`;

— %x/echo выполнение команды ОС со вставками и управляющими

последовательностями/.

1.2.2.6 Управляющие последовательностиИспользуются следующие управляющие последовательности: \t (табуляция), \n

(переход на новую строку), \r (возврат каретки), \f (подача страницы), \b (удаление

последнего символа), \a (звонок), \e (клавиша Отмена), \s (пробел), \nnn

(восьмеричное число) , \nn (шестнадцатеричное число), \сx (Ctrl+x), \C-x (Ctrl

+x), \M-x (Alt+x), \M-\C-x (Ctrl+Alt+x)

1.2.2.7 ДиапазоныИспользуются следующие формы задания диапазонов:

— 1..10;

— 'a'..'z';

— (1..10) === 5 => true;

— (1..10) == 15 => false.

1.2.2.8 Регулярные выраженияИспользуются следующие формы задания регулярных выражений:

— /обычное регулярное выражение/i;

— %r|альтернативная форма задания регулярных выражений|.

Задействованы следующие элементы регулярных выражений:

— . любой символ исключая перевод строки;

Page 18: Пример оформления дипломной работы

18RU.МЭТТ.18108-01 84 01

— [ ] любой символ из указанных;

— [^ ] любой символ, кроме указанных;

— * 0 или более повторений предыдущего регулярного выражения;

— *? 0 или более повторений предыдущего регулярного выражения

(скупой);

— + 1 или более повторений предыдущего регулярного выражения;

— +? 1 или более повторений предыдущего регулярного выражения

(скупой);

— ? 0 или 1 повторений предыдущего регулярного выражения;

— | альтернатива;

— ( ) группировка регулярных выражений;

— ^ начало строки или текста;

— $ конец строки или текста;

— #{m,n} не меньше m и не больше n повторений предыдущего

регулярного выражения;

— #{m,n}? не меньше m и не больше n повторений предыдущего

регулярного выражения (жадный);

— \A начало строки;

— \b граница слова;

— \B не граница слова;

— \d цифра, то есть [0-9];

— \D не цифра, то есть [^0-9];

— \s пробельный (whitespace) символ, то есть [ \t\n\r\f];

— \S не пробельный символ, то есть [^ \t\n\r\f];

— \w символ, то есть [0-9a-zA-Z_];

Page 19: Пример оформления дипломной работы

19RU.МЭТТ.18108-01 84 01

— \W не символ, то есть [^0-9a-zA-Z_];

— \z конец текста;

— \Z конец текста или позиция перед завершающим переводом строки;

— (?# ) комментарий;

— (?: ) группировка без сохранения;

— (?= ) позитивная опережающая проверка;

— (?! ) негативная опережающая проверка;

— (?ix-ix) включение/отключение режимов для оставшейся части

выражения;

— (?ix-ix: ) включение/отключение режимов для содержимого скобок;

1.2.2.9 МассивыМассивы могут быть заданы одним из следующих способов:

— [1, 2, 3];

— %w(foo bar baz).

Индексы в массивах могут быть отрицательными и отсчет тогда будет вестись

от конца массива (то есть -1 означает "последний элемент").

1.2.2.10 СловариСловари (они же ассоциативные массива, они же хеши) могут быть заданы

одним из следующих способов:

— { 1 => 2, 2 => 4, 3 => 6 };

— { key => value, ... }.

1.2.2.11 ФайлыРабота с файлами осуществляется при помощи следующих методов:

— File.join(p1,p2,p3, ... ,pN) => "p1/p2/.../pN" платформонезависимый путь;

Page 20: Пример оформления дипломной работы

20RU.МЭТТ.18108-01 84 01

— File.new(path,modestring="r") => file;

— File.new(path,modenum[,permnum])> file/li>;

— File.open(fileName,aModeString="r"){ |file| block } -> block_result;

— File.open(fileName[,aModeNum [, aPermNum]]){ |file| block } ->

block_result;

— IO.foreach(path,setstring=$/){ |line| block } -> block_result;

— IO.readlines( path ) => array;

— IO.read( path ) => string.

1.2.2.12 Строка для задания режима чтения записи файла— r чтение с начала файла (режим по умолчанию);

— r+ чтение-запись с начала файла;

— w обнуление или создание файла для записи;

— w+ обнуление или создание файла для чтения-записи;

— a указатель устанавливается на конец файла или создается и

открывается на запись;

— a+ указатель устанавливается на конец файла или создается и

открывается на чтение-запись;

— b (только для DOS/Windows) двоичный режим чтения-записи

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

1.2.2.13 Переменные— $global_variable глобальные переменные;

— @instance_variable переменные объекта;

— @@class_variable переменные класса;

— [OtherCLass::]CONSTANT константа

— local_variable локальная переменная.

Page 21: Пример оформления дипломной работы

21RU.МЭТТ.18108-01 84 01

1.2.2.14 Псевдопеременные— self возвращает указатель на текущий объект;

— nil единственный объект класса NilClass (эквивалентен false) и

имеет смысл "пустоты";

— true единственный объект класса TrueClass и имеет смысл

"истины";

— false единственный объект класса FalseClass и имеет смысл

"лжи";

— __FILE__ имя обрабатываемого в текущий момент файла;

— __LINE__ текущий номер строки в обрабатываемом исходном файле.

1.2.2.15 Предопределенные переменные— $! последнее сообщение об ошибке;

— $@ местоположение ошибки (массив с трассировочным

стеком);

— $& текст совпадения (регулярные выражения);

— $` текст перед совпадением (регулярные выражения);

— $' текст после совпадения (регулярные выражения);

— $+ текст, совпавший с последней закрытой парой

круглых скобок (регулярные выражения);

— $n n-тое подвыражение в последнем совпадении, то же

самое, что и $~[n]. (регулярные выражения);

— $~ последнее совпадение с регулярным выражением в

виде массива подвыражений;

— $= флаг зависимости от регистра символов;

— $/ разделитель во входных строках;

— $ разделитель в выходных строках;

Page 22: Пример оформления дипломной работы

22RU.МЭТТ.18108-01 84 01

— $, разделитель для print и Array#join;

— $; разделитель по умолчанию для String#split;

— $. номер последней строки, прочитанной

интерпретатором;

— $< результат виртуальной конкатенации файлов, имена

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

— $> источник вывода по умолчанию для print, printf (по

умолчанию равен $stdout);

— $_ последняя строка, прочитанная gets или readline;

— $0 имя файла с которого началось выполнение;

— $* аргументы командной строки в виде массива (аналог

args);

— $$ id процесса интерпретатора;

— $? статус завершения последнего дочернего процесса;

— $: массив путей для загрузки библиотек и модулей;

— $" массив с именами подключенных библиотек;

— $DEBUG если интерпретатор запущен с опцией -d, то равен

true (только для чтения);

— $FILENAME текущий обрабатываемый файл при использовании

$<, аналогично вызову $<.filename;

— $LOAD_PATH псевдоним для $:;

— $stderr текущий стандартный поток ошибок;

— $stdin текущий стандартный поток ввода;

— $stdout текущий поток вывода;

— $VERBOSE если интерпретатор запущен с опцией -v, то равен

Page 23: Пример оформления дипломной работы

23RU.МЭТТ.18108-01 84 01

true (только для чтения);

— $-0 псевдоним для $/;

— $-a если интерпретатор запущен с опцией -a, то равен

true (только для чтения);

— $-d псевдоним для $DEBUG;

— $-F псевдоним для $;;

— $-i удерживает расширения, по умолчанию nil;

— $-I псевдоним для $:;

— $-l если интерпретатор запущен с опцией -l, то равен true

(только для чтения);

— $-p если интерпретатор запущен с опцией -p, то равен

true (только для чтения);

— $-v псевдоним для $VERBOSE.

1.2.2.16 Предопределенные глобальные константы— TRUE псевдоним для true;

— FALSE псевдоним для false;

— NIL псевдоним для nil;

— STDIN псевдоним для $stdin;

— STDOUT псевдоним для $stdout;

— STDERR псевдоним для $stderr;

— ENV словарь, который содержит переменные

окружения;

— ARGF псевдоним для $<;

— ARGV псевдоним для $*;

— DATA указатель на область после __END__;

Page 24: Пример оформления дипломной работы

24RU.МЭТТ.18108-01 84 01

— VERSION строка с версией интерпретатора;

— RUBY_RELEASE_DATE строка с датой выпуска интерпретатора;

— RUBY_PLATFORM идентификатор платформы.

1.2.2.17 ВыраженияЭлементом выражения могут быть базовые типы (см. выше), команда shell,

переменная, константа или вызов метода.

1.2.2.18 Операторы и приоритеты (в порядке убывания)— ::;

— [];

— **;

— - (унарный), + (унарный), !, ~;

— *, /, %;

— +, -;

— <<, >>;

— &;

— |, ^;

— >, >=, <, <=;

— <=>, ==, ===, !=, =~, !~;

— &&;

— ||;

— .., ...;

— = (+=, -= ...);

— not;

— and, or.

Page 25: Пример оформления дипломной работы

25RU.МЭТТ.18108-01 84 01

Почти все представленные выше операторы являются методами (т.е. их можно

переопределить), кроме следующих: =, .. , ... , !, not, &&, and, ||, or, !=, !~. В добавок

ко всему, над составными операторами (то есть += и др.) пользователь не властен (то

есть зависит от метода +, в случае с +=).

1.2.2.19 Управляющие конструкцииСуществуют следующие условные конструкции:

if логическое_выражение [then] программный_кодelsif логическое_выражение [then] программный_кодelse программный_кодend

unless логическое_выражение [then] программный_кодelse программный_кодend

программный_код unless логическое_выражение

программный_код if логическое_выражение

case выражение_для_проверки when шаблон [, шаблон]... [then] программный_код when шаблон [, шаблон]... [then] программный_код[else программный_код]end

Существуют следующие циклические конструкции:

while логическое_выражение [do] программный_кодend

Page 26: Пример оформления дипломной работы

26RU.МЭТТ.18108-01 84 01

until логическое_выражение [do] программный_кодend

begin программный_кодend while логическое_выражение

begin программный_кодend until логическое_выражение

for счетчик[, счетчик]... in множество [do] программный_кодend

множество.each do | счетчик[, счетчик]... | программный_кодend

программный_код while логическое_выражение

программный_код until логическое_выражение

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

— break завершает текущий цикл.

— redo начинает текущий цикл сначала.

— next переходит к следующей итерации текущего цикла.

— retry повторяет итерацию без проверки условия для тещего цикла.

1.2.2.20 Вызов методаПочти все доступные вызовы метода являются опциональными и

следовательно синтаксис вызова не очень простой. Ниже представлено несколько

примеров:

— method;

Page 27: Пример оформления дипломной работы

27RU.МЭТТ.18108-01 84 01

— obj.method;

— Class::method;

— method(arg1, arg2);

— method(arg1, key1 => val1, key2 => val2, aval1, aval2) #{ блок };

— method(arg1, *[arg2, arg3]) соответствует: method(arg1, arg2, arg3).

Описание использованных элементов:

— invocation := [receiver ('::' | '.')] name [ parameters ] [ block ];

— parameters := ( [param]* [, hashlist] [*array] [&aProc] );

— block := { blockbody } | do blockbody end.

1.2.2.21 Создание классаИмя класса всегда должно начинаться с большой латинской буквы:

class Identifier [< superclass ] программный_кодend# единичный класс (singleton), добавляет метод(ы) к экземпляру классаclass << obj программный_кодend

1.2.2.22 Создание модуляmodule Identifier программный_кодend

1.2.2.23 Создание методаdef method_name(arg_list, *list_expr, &block_expr) программный_кодend# единичный методdef expr.identifier(arg_list, *list_expr, &block_expr) программный_кодend

Следует учитывать несколько особенностей:

Page 28: Пример оформления дипломной работы

28RU.МЭТТ.18108-01 84 01

— все элементы из списка аргументов, включая скобки – необязательные;

— аргументы могут иметь значения по умолчанию (name=expr);

— method_name может быть символьным оператором;

— объявление метода не может быть вложенным в другой метод;

— методы могут переопределять операторы: .., |, ^, &, <=>, ==, ===, =~, >,

>=, <, <=, +, -, *, /, %, **, <<, >>, ~, +@, -@, [], []= (2 аргумента).

1.2.2.24 Ограничение доступаСуществуют следующие модификаторы доступа:

— public - полностью доступно.

— protected - доступно только внутри класса и внутри непосредственных

потомков.

— private - доступно только внутри класса.

Ограничение на чтение-запись атрибутов (начинаются с @) производится

посредством наличия/отсутствия одноименных методов.

По умолчанию класс не дает доступа к атрибутам своих объектов (начинаются

с @).

Могут использоваться как для явного указания имен методов так и для

разделения класса на "области доступа".

class A protected def protected_method # ничего

endend

class B < A public def test_protected myA = A.new myA.protected_method

Page 29: Пример оформления дипломной работы

29RU.МЭТТ.18108-01 84 01

endendb = B.new.test_protected

1.2.2.25 Методы доступаКласс Module содержит следующие вспомогательные методы:

— attr_reader атрибут[, атрибут]... - создает одноименный метод чтения

значения атрибута;

— attr_writer атрибут[, атрибут]... - создает одноименный метод изменения

значения атрибута (т.е. атрибут=);

— attr атрибут[, разрешение_на_запись] - эквивалентно "attr_reader

атрибут; attr_writer атрибут if разрешение_на_запись";

— attr_accessor атрибут[, атрибут]... - эквивалентно "attr атрибут, TRUE"

для каждого аргумента.

1.2.2.26 Псевдонимыalias старое_название, новое_название

Создает новое имя метода (новое_название) для старого (старое_название).

старое_название может быть любым существующим методом или оператором, но не

может быть локальной или внутренней константой или именем класса

1.2.2.27 Блоки/замыканияБлоками являются следующие конструкции:

— do ... end;

— { ... }.

Область видимости переменных объявленных внутри блока ограничена

блоком. Блок может получать аргументы при помощи ключевого слова yield (при

создании метода). Формы записи {} и do/end отличаются тем, что конструкции

do/end применяются преимущественно для циклов, а {} для всего остального.

Page 30: Пример оформления дипломной работы

30RU.МЭТТ.18108-01 84 01

1.2.2.28 Лямбда-методыСоздаются одним из следующих способов:

— Kernel#proc;

— Proc#new;

— Вызов метода с аргументом &block.

1.2.2.29 Обработка исключений:begin программный_код[rescue [класс_ошибки [=> трассировка],..] программный_код][else программный_код][ensure программный_код]end

Следует обращать внимание на то, что аргументом по умолчанию для rescue

является StandardError, а не Exception.

1.2.2.30 Стандартная библиотекаRuby поставляется с исчерпывающей библиотекой классов и модулей.

Некоторые из них встроенные, а некоторые поставляются в виде отдельных файлов

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

1.2.2.31 Встроенные классыРазработчику доступны следующие классы: Object, Hash, Symbol, IO, File,

Continuation, File::Stat, Data, NilClass, Exception, StandardError, LocalJumpError,

SystemStackError, ZeroDivisionError, RangeError, FloatDomainError, SecurityError,

ThreadError, IOError, EOFError, ArgumentError, IndexError, RuntimeError, TypeError,

SystemCallError, Errno::*, RegexpError, SignalException, Interrupt, Fatal,

NoMemoryError, ScriptError, LoadError, NameError, SyntaxError, NotImplementedError,

SystemExit, Array, Proc, String, Numeric, Float, Integer, Bignum, Fixnum, Regexp,

Thread, Module, Class, ThreadGroup, Method, UnboundMethod, Struct, Struct::Tms,

Page 31: Пример оформления дипломной работы

31RU.МЭТТ.18108-01 84 01

TrueClass, Time, Dir, Binding, Range, MatchData, FalseClass.

1.2.2.32 Встроенные модулиРазработчику доступны следующие модули: Comparable, Enumerable, Errno,

FileTest, GC, Kernel, Marshal, Math, ObjectSpace, Precision, Process.

1.2.2.33 Поддержка сокетовПоддержка сокетов обеспечивается следующими классами: BasicSocket,

IPSocket, TCPSocket, SOCKSSocket, TCPServer, UDPSocket, UNIXSocket, Socket.

1.2.2.34 Поддержка WindowsДля разработчиков, использующих операционную систему Windows

существуют следующие классы: WIN32OLE, WIN32OLE_EVENT, Win32API.

Page 32: Пример оформления дипломной работы

32RU.МЭТТ.18108-01 84 01

2 СПЕЦИАЛЬНАЯ ЧАСТЬ

2.1 Описание алгоритма

2.1.1 Схемы алгоритма

2.1.1.1 Структурная схема системы

Post

Модели

Report

User

Conference

Контроллеры

Control

Personal

RSS

View

Conference

Представления

Control

RSS

Personal

View

Page 33: Пример оформления дипломной работы

33RU.МЭТТ.18108-01 84 01

2.1.1.2 Схема алгоритма администрирования системыНАЧАЛО

ОСТАНОВ

Авторизация иаутентификация

1

Ожиданиесобытия

2

управлятьсовещаниями

назначитьсовещание

Управлениесовещаниями

3

Управлениесписком

сотрудников

5

Управлениесписком

должностей

6

Назначить новоесовещание

4

управлятьсписком

сотрудников

управлятьсписком

должностей

выйти из режимаадминистрирования

Page 34: Пример оформления дипломной работы

34RU.МЭТТ.18108-01 84 01

2.1.1.3 Схема алгоритма управления совещаниямиНАЧАЛО

ОСТАНОВ

Ожиданиесобытия

2

Отмена совещания

4

добавитьсовещание

отменитьсовещание

перенестисовещание

Добавлениенового совещания

3

Переноссовещания

5

выход

Выводинформации о

совещаниях

1

Page 35: Пример оформления дипломной работы

35RU.МЭТТ.18108-01 84 01

2.1.1.4 Схема алгоритма назначения нового совещания

2.1.1.5 Схема алгоритма переноса совещанияНАЧАЛО

ОСТАНОВ

Изменениереквизитовсовещания

1

Перенос совещания

2

НАЧАЛО

ОСТАНОВ

Ввод реквизитовнового

совещания

1

Выборучастниковсовещания

2

Добавление новогосовещания

3

Page 36: Пример оформления дипломной работы

36RU.МЭТТ.18108-01 84 01

2.1.1.6 Схема алгоритма управления списком сотрудниковНАЧАЛО

ОСТАНОВ

Вывод спискасотрудников

1

Ожиданиесобытия

2

Удалениесотрудника

3

Добавление новогосотрудника

5

удалитьсотрудника

Ввод реквизитовнового

сотрудника

4

добавитьсотрудника

выход

Page 37: Пример оформления дипломной работы

37RU.МЭТТ.18108-01 84 01

2.1.1.7 Схема алгоритма управления списком должностейНАЧАЛО

ОСТАНОВ

Вывод спискадолжностей

1

Ожиданиесобытия

2

Удалениедолжности

3

Добавление новойдолжности

5

удалитьдолжность

Ввод реквизитовновой должности

4

добавитьдолжность

выход

Page 38: Пример оформления дипломной работы

38RU.МЭТТ.18108-01 84 01

2.1.1.8 Структурная схема базы данных

2.1.2 Описание работы программы

2.1.2.1 Описание структурной схемы системыСистема реализована как трехуровневое приложение[3]. Она состоит из трех

моделей, пяти контроллеров и пяти представлений.

2.1.2.2 Описание моделейМодели являются объектно-ориентированным представлением таблиц базы

данных. Имя модели, как правило, отличается от имени таблицы в базе данных

одной буквой: имя таблицы получается добавлением буквы -s в конец имени модели.

Система реализована в виде следующих моделей:

1) Модель Post реализует работу с должностями сотрудников.

Предоставляет доступ к таблице posts базы данных.

2) Модель User реализует работу с сотрудниками. Предоставляет доступ к

таблице users базы данных.

3) Модель Report реализует работу с протоколами совещаний.

Предоставляет доступ к таблице reports базы данных.

posts

PK id

postcreated_atupdated _at

users

PK id

surnamenameotchestvo

FK1 poste_mailcreated_atupdated_at

reports

PK id

datethemequestion

FK1 userreportcanceltransfertransfer_datefinishcreated_atupdated_at

Page 39: Пример оформления дипломной работы

39RU.МЭТТ.18108-01 84 01

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

последующей передачи в одноименное представление. Представление это

реализация интерфейса того или иного действия контроллера. Каждый контроллер

может иметь несколько видов представления одного и того же действия (для вывода

одних и тех же данных в различных форматах).

Система реализована в виде следующих контроллеров:

1) Контроллер View занимается обработкой данных для подробного отчета

по совещанию. Использует модель Report.

2) Контроллер Conference занимается обработкой данных для работы с

протоколами совещаний. Использует модели Report и User.

3) Контроллер RSS занимается обработкой данных для предоставления

отчета по предстоящим, отмененным и перенесенным совещаниям в формате

RSS. Использует модель Report.

4) Контроллер Personal занимается обработкой данных для работы со

списками сотрудников и должностей. Использует модели User и Post.

5) Контроллер Control ограничивает доступ к администрированию

системы, запрашивает авторизацию и производит аутентификацию

пользователя.

2.1.2.4 Описание алгоритма администрирования системы1) Производится запрос пароля. Если пароль введен неверно или не введен

совсем — доступ к процессу администрирования системы не предоставляется.

2) Происходит ожидание события, который должен инициировать

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

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

При возникновении события «выйти из режима администрирования» процесс

администрирования системы прекращается.

Page 40: Пример оформления дипломной работы

40RU.МЭТТ.18108-01 84 01

3) При возникновении события «управлять совещаниями» вызывается

подпрограмма управления совещаниями.

4) При возникновении события «назначить совещание» вызывается

подпрограмма назначения нового совещания.

5) При возникновении события «управлять списком сотрудников»

вызывается подпрограмма управления списком сотрудников.

6) При возникновении события «управлять списком должностей»

вызывается подпрограмма управления списком должностей.

2.1.2.5 Описание алгоритма управления совещаниями1) Производится вывод информации о будущих, отмененных и

перенесенных совещаниях.

2) Происходит ожидание события, который должен инициировать

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

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

При возникновении события «выход» работа алгоритма прекращается.

3) При возникновении события «добавить совещание» вызывается

подпрограмма добавления нового совещания.

4) При возникновении события «отменить совещание» происходит отмена

совещания путем установки флага cancel таблицы reports в значение true.

5) При возникновении события «перенести совещание» вызывается

подпрограмма переноса совещания.

2.1.2.6 Описание алгоритма назначения нового совещания1) Производится запрос реквизитов нового совещания: называние, время

проведения, вопросы для обсуждения.

2) Пользователю предоставляется возможность выбрать сотрудников,

которым необходимо присутствовать на совещании.

Page 41: Пример оформления дипломной работы

41RU.МЭТТ.18108-01 84 01

3) Происходит добавление указанных реквизитов совещания в базу данных.

2.1.2.7 Описание алгоритма переноса совещания1) Производится запрос на изменение реквизитов совещания. В частности,

предлагается ввести новую дату совещания.

2) Осуществляется перенос совещания путем модификации записи

таблицы report в базе данных.

2.1.2.8 Описание алгоритма управления списком сотрудников1) Вывод списка всех сотрудников, которые зарегистрированы в системе.

2) Происходит ожидание события, который должен инициировать

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

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

При возникновении события «выход» работа алгоритма прекращается.

3) При возникновении события «удалить сотрудника» происходит удаление

сотрудника путем удаления записи из таблицы users базы данных.

4) При возникновении события «добавить сотрудника» происходит запрос

реквизитов нового сотрудника.

5) После того, как необходимые реквизиты введены происходит добавление

нового сотрудника. Осуществляется это путем добавления новой записи в

таблицу users базы данных.

2.1.2.9 Описание алгоритма управления списком должностей1) Производится вывод списка всех должностей, которые

зарегистрированы в системе.

2) Происходит ожидание события, который должен инициировать

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

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

При возникновении события «выход» работа алгоритма прекращается.

Page 42: Пример оформления дипломной работы

42RU.МЭТТ.18108-01 84 01

3) При возникновении события «удалить должность» производится

удаление должности посредством удаления соответствующей записи из

таблицы posts в базе данных.

4) При возникновении события «добавить должность» производится

запрос реквизитов новой должности.

5) После ввода необходимых реквизитов производится добавление новой

должности путем добавления новой записи в таблицу posts базы данных.

2.1.2.10 Описание структурной схемы базы данныхБаза данных состоит из трех таблиц: posts, users и reports. В них хранятся

данные о должностях, сотрудниках и информация о совещаниях, соответственно.

2.1.2.10.1 Описание таблицы posts

1) Поле id — уникальный идентификатор записи в таблице. Имеет тип

integer. Присваивается автоматически при добавлении записи в базу.

2) Поле post — название должности. Имеет тип string.

3) Поле created_at — дата и время создания записи. Имеет тип datetime.

4) Поле updated_at — дата и время текущего изменения. Имеет тип

datetime.

2.1.2.10.2 Описание таблицы users

1) Поле id — уникальный идентификатор записи в таблице. Имеет тип

integer. Присваивается автоматически при добавлении записи в базу.

2) Поле surname — фамилия сотрудника. Имеет тип string.

3) Поле name — имя сотрудника. Имеет тип string.

4) Поле otchestvo — отчество сотрудника. Имеет тип string.

5) Поле post — должность сотрудника. Имеет тип string.

6) Поле e_mail — электронный адрес сотрудника. Имеет тип string.

Page 43: Пример оформления дипломной работы

43RU.МЭТТ.18108-01 84 01

7) Поле created_at — дата и время создания записи. Имеет тип datetime.

8) Поле updated_at — дата и время текущего изменения. Имеет тип

datetime.

2.1.2.10.3 Описание таблицы reports

1) Поле id — уникальный идентификатор записи в таблице. Имеет тип

integer. Присваивается автоматически при добавлении записи в базу.

2) Поле date — дата проведения совещания. Имеет тип datetime.

3) Поле theme — тема совещания. Имеет тип string.

4) Поле question — вопросы для обсуждения. Имеет тип text.

5) Поле user — сотрудники, участвующие в совещании. Имеет тип text.

6) Поле report — решения принятые по вопросам совещания. Имеет тип

text.

7) Поле cancel — признак отмены совещания. Имеет тип boolean.

8) Поле transfer — признак переноса совещания. Имеет тип boolean.

9) Поле transfer_date — время, на которое было перенесено совещание.

Имеет тип datetime.

10)Поле finish — признак завершившегося совещания. Имеет тип boolean.

11)Поле created_at — дата и время создания записи. Имеет тип datetime.

12)Поле updated_at — дата и время текущего изменения. Имеет тип

datetime.

2.2 Текст программы

2.2.1 Схема базы данных (файл db/schema.rb)ActiveRecord::Schema.define(:version => 3) do

create_table "posts", :force => true do |t| t.string "post"

Page 44: Пример оформления дипломной работы

44RU.МЭТТ.18108-01 84 01

t.datetime "created_at" t.datetime "updated_at" end

create_table "reports", :force => true do |t| t.datetime "date" t.string "theme" t.text "question" t.text "user" t.text "report" t.boolean "cancel" t.boolean "transfer" t.datetime "transfer_date" t.boolean "finish" t.datetime "created_at" t.datetime "updated_at" end

create_table "users", :force => true do |t| t.string "surname" t.string "name" t.string "otchestvo" t.string "post" t.string "e_mail" t.datetime "created_at" t.datetime "updated_at" end

end

2.2.2 Контроллеры системы

2.2.2.1 Контроллер View (файл app/controllers/view_controller.rb)class ViewController < ApplicationController

def index @reports=Report.find(:all) for z in @reports z.update_attribute(:finish, true) if (z.date<Time.now) if (!z.transfer_date.nil?) z.update_attribute(:finish, true) if (z.transfer_date<Time.now) z.update_attribute(:finish, false) if (z.transfer_date>Time.now) end end

Page 45: Пример оформления дипломной работы

45RU.МЭТТ.18108-01 84 01

@list1=Report.find(:all,:conditions => {:report => nil, :finish => false ,:cancel => false},:order => "date",:limit =>15) @list2=Report.find(:all,:conditions => {:report => nil, :transfer => true, :finish => false,:cancel => false},:order => "date") @list3=Report.find(:all,:conditions => {:report => nil, :cancel => true, :finish => false},:order => "date",:limit =>15) end

def list @reports=Report.find(:all) for z in @reports z.update_attribute(:finish, true) if (z.date<Time.now) if (!z.transfer_date.nil?) z.update_attribute(:finish, true) if (z.transfer_date<Time.now) z.update_attribute(:finish, false) if (z.transfer_date>Time.now) end end @lists=Report.find(:all,:order => "date DESC") end

def show @lists=Report.find(:all,:conditions => {:id => params[:id]}) endend

2.2.2.2 Контроллер Conference (файл app/controllers/conference_controller.rb)class ConferenceController < ApplicationController before_filter :authentication layout "conference", :except => [:field,:datetime,:create] def create @users = User.find(:all, :order => "post") flash[:err1]="" flash[:err2]="" flash[:err3]="" if request.post? @reports = Report.new @reports.date=DateTime.parse(params[:date][:year]+"-"+params[:date][:month]+"-"+params[:date][:day]+" "+params[:date][:hour]+":"+params[:date][:minute]) @reports.theme=params[:theme] @reports.question=(1..flash[:i]).to_a.map{|x|params[:"arg#{x}"]}.map{|x| (x=="")?(nil):(x)}.compact.join("/*/") @reports.user=(0..flash[:jim]).to_a.map{|x|params[:"box#{x}"]}.map{|x| (x=="")?(nil):

Page 46: Пример оформления дипломной работы

46RU.МЭТТ.18108-01 84 01

(x)}.compact.map{|y| User.find(:all,:conditions => "id = #{y}").map{|c| c.surname+" "+c.name+" "+c.otchestvo+" ("+c.post+")"} }.join("/*/") @reports.cancel=false @reports.transfer=false @reports.finish=false if (@reports.theme.blank?) @reports.theme="" flash[:err1]="Поле не может быть пустым!" end if (@reports.question.blank?) @reports.question="" flash[:err2]="Поле не может быть пустым!" end if (@reports.user.blank?) @reports.user="" flash[:err3]="Должен быть выбран хотя бы один человек!" end @reports.save end flash[:i]=1 end

def edit @report1=Report.find(:all) for z in @report1 z.update_attribute(:finish, true) if (z.date<Time.now) if (!z.transfer_date.nil?) z.update_attribute(:finish, true) if (z.transfer_date<Time.now) z.update_attribute(:finish, false) if (z.transfer_date>Time.now) end end if request.post? @report1=Report.find(flash[:transf]) @report1.update_attribute(:transfer_date, DateTime.parse(params[:date][:year]+"-"+params[:date][:month]+"-"+params[:date][:day]+" "+params[:date][:hour]+":"+params[:date][:minute])) @report1.update_attribute(:transfer, true) redirect_to :action => 'edit' end @report1=Report.find(:all,:conditions => {:report => nil},:order => "date DESC") end

def report @report2=Report.find(params[:id]).question.split("/*/") if request.post?

Page 47: Пример оформления дипломной работы

47RU.МЭТТ.18108-01 84 01

if (!params[:rep1].blank?) @report2=Report.find(params[:id]) @report2.update_attribute(:report, params[:rep1]) redirect_to :action => 'edit' else flash[:err]="Отчет не может быть пустым!!!" end end end def field end def destroy @destroy = Report.find(params[:id].to_i).destroy redirect_to :action => 'edit' end def cancel @report2=Report.find(params[:id].to_i) @report2.update_attribute(:cancel, true) redirect_to :action => 'edit' end def datetime end end

2.2.2.3 Контроллер RSS (файл app/controllers/rss_controller.rb)class RssController < ApplicationController session :off def list @report1=Report.find(:all) for z in @report1 z.update_attribute(:finish, true) if (z.date<Time.now) if (!z.transfer_date.nil?) z.update_attribute(:finish, true) if (z.transfer_date<Time.now) z.update_attribute(:finish, false) if (z.transfer_date>Time.now) end end @time_table=Report.find(:all,:conditions => {:report => nil, :finish => false},:order =>

Page 48: Пример оформления дипломной работы

48RU.МЭТТ.18108-01 84 01

"date",:limit =>30)

end end

2.2.2.4 Контроллер Personal (файл app/controllers/presonal_controller.rb)class PersonalController < ApplicationController before_filter :authentication def index end

def post @post2 = Post.new(params[:post2]) flash[:err]="" if request.post? if (@post2.post.blank?) @post2.post="" flash[:err]="Это поле не может быть пустым!" end redirect_to :action =>:post if (@post2.save) end @post1 = Post.find(:all) end

def user @user1 = User.find(:all) end

def new_user flash[:err1]="" flash[:err2]="" flash[:err3]="" flash[:err4]="" @post = Post.find(:all).map{|x| [x.post,x.post]} @user2 = User.new(params[:user2]) if request.post? if (@user2.surname.blank?) @user2.surname="" flash[:err1]="Поле не может быть пустым" end

Page 49: Пример оформления дипломной работы

49RU.МЭТТ.18108-01 84 01

if (@user2.name.blank?) @user2.surname="" flash[:err2]="Поле не может быть пустым" end if (@user2.otchestvo.blank?) @user2.otchestvo="" flash[:err3]="Поле не может быть пустым" end if ([email protected]_mail[/\S+@\S+[.]\S+/]) flash[:err4]="Введен не верный Е-mail" end redirect_to :action =>:user if (@user2.save) end end

def destroy @destroy = Post.find(params[:id].to_i).destroy if params[:break]=='post' @destroy = User.find(params[:id].to_i).destroy if params[:break]=='user' redirect_to :action => params[:break] endend

2.2.2.5 Контроллер Control (файл app/controllers/control_controller.rb)class ControlController < ApplicationController

def index if request.post? cookies[:pass]=params[:pass] redirect_to :controller => 'conference',:action => 'edit' end endend

2.2.3 Модели системы

2.2.3.1 Модель Post (файл app/models/post.rb)class Post < ActiveRecord::Base validates_size_of :post, :minimum => 1end

2.2.3.2 Модель User (файл app/models/user.rb)class User < ActiveRecord::Base validates_size_of :surname, :minimum => 1 validates_size_of :name, :minimum => 1

Page 50: Пример оформления дипломной работы

50RU.МЭТТ.18108-01 84 01

validates_size_of :otchestvo, :minimum => 1 validates_format_of :e_mail,:with => /\S+@\S+[.]\S+/end

2.2.3.3 Модель Report (файл app/models/report.rb)class Report < ActiveRecord::Base validates_size_of :theme, :minimum => 1 validates_length_of :question, :minimum => 1 validates_length_of :user, :minimum => 1end

2.3 Инструкция на выполнение программы

2.3.1 Общие сведенияСистема реализована с помощью программного каркаса Ruby on Rails и

представляет из себя клиент-серверное приложение, где в качестве сервера

выступает сама система (в виде приложения для веб-сервера), а в качестве клиента

— веб-обозреватель.

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

следующая информация:

1) Список должностей сотрудников.

2) Список сотрудников.

3) Информация и совещаниях и протоколы совещаний.

Для базы данных системы может быть использована любая СУБД из списка

поддерживаемых программным каркасом Ruby on Rails.

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

следующие действия:

1) Запустить веб-сервер следующей командой:

ruby script/server [-p номер_порта].

2) Запустить веб-обозреватель. Для корректного отображения страниц

системы, рекомендуется использовать веб-обозреватель Microsoft Internet

Page 51: Пример оформления дипломной работы

51RU.МЭТТ.18108-01 84 01

Explorer версии не ниже 7.

3) Набрать в браузере адрес сервера. Если при запуске сервера был

использован порт, отличный от 80, то следует в строке адреса явно указать его.

Если при запуске сервера порт не был указан, то систему следует искать на

порту 3000 (порт следует явно указать в адресе запроса, например

http://my_server:3000/, где my_server — адрес компьютера на котором была

запущена серверная часть системы).

2.3.3 Входные данныеВходными данными системы являются:

1) Реквизиты сотрудника (в том числе и должность).

2) Реквизиты совещания (в том числе и протокол совещания).

2.3.4 Выходные данныеВыходными данными системы являются:

1) Вопросы системы.

2) Варианты ответов на вопросы системы.

2.3.5 Сообщения программыСистема во время работы выводит следующие сообщения:

1) «Поле не может быть пустым!» выводится, когда пользователь не ввел

ни одного символа в поле, которое обязательно для заполнения.

2) «Должен быть выбран хотя бы один человек!» выводится, когда

пользователь во время создания нового совещания не выбрал ни одного

сотрудника, который должен на этом совещании присутствовать. Не с собой

же совещаться?!

3) «Отчет не может быть пустым!!!» выводится, когда при оформлении

протокола не введено ни одного решения по вопросам прошедшего совещания.

4) «Это поле не может быть пустым!» выводится в случае добавления

Page 52: Пример оформления дипломной работы

52RU.МЭТТ.18108-01 84 01

новой должности, когда само название должности не было указано.

5) «Введен не верный Е-mail» выводится в случае добавления нового

сотрудника, когда в поле «E-mail» была введена строка, которая не может быть

адресом электронной почты.

2.3.6 Техника безопасности при работе на компьютереВо многих населенных пунктах напряжение в сети может сильно колебаться.

Для компьютера такие изменения напряжения являются нежелательными, поэтому

лучше подключать компьютеры через стабилизаторы. Наиболее надежную защиту от

неприятностей, связанных с нестабильностью электропитания, осуществляют

специальные устройства непрерывного питания (UPS), которые не только

обеспечивают строго постоянное напряжение питания, но и дают возможность

работы компьютеров при полном отключении электропитания в течение от 5 минут

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

компьютере работы, чтобы при выключении не произошло потери информации. Для

серверов локальных сетей и компьютеров, обрабатывающих ценную информацию

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

Перед первым включением компьютера следует проверить, соответствует ли

напряжение в сети тому, на которое рассчитан компьютер.

Системный блок компьютера желательно поставить в таком месте, чтобы он не

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

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

выключенном компьютере.

К современному производственному освещению, в том числе освещению

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

высокие требования как гигиенического, так и технико-экономического характера.

Правильно спроектированное и выполненное освещение обеспечивает высокий

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

на работающих, способствует увеличению производительности труда. В

Page 53: Пример оформления дипломной работы

53RU.МЭТТ.18108-01 84 01

вычислительных центрах или в комнатах операторов, как правило, применяют

одностороннее, боковое, естественное освещение. Причем светопроемы с целью

уменьшения солнечной инсоляции устраивают с северной, северо-западной или

северо-восточной ориентацией. В машинных залах рабочие места операторов,

работающих с дисплеями, располагают подальше от окон и таким образом, чтобы

оконные проемы находились сбоку. Если экран дисплея обращен к окну, необходимы

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

рассеивающими шторами, регулируемыми жалюзи или солнцезащитной пленкой с

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

освещения в помещении недостаточно, устраивают совмещенное освещение. При

этом дополнительно искусственное освещение применяют не только в темноте, но и

в светлое время суток.

Рекомендуемая освещенность для работы с экраном дисплея составляет 200

лк, а при работе с экраном в сочетании с работой над документацией 400 лк.

Рекомендуемые яркости в поле зрения операторов должны лежать в пределах 1:5 –

1:10. Для обеспечения оптимальных условий зрительной работы операторов

дисплейных устройств необходимо определенная цветовая отделка помещений.

2.4 Описание процесса отладки программы

2.4.1 Методы отладкиВ процессе создания новой программы программисту приходится

сталкиваться с несколькими видами ошибок.

Во-первых, это синтаксические ошибки, связанные с неправильным

употреблением различных элементов и конструкций языка. Причиной

возникновения таких ошибок обычно являются недостаточно хорошее знание языка

программирования и опечатки при наборе текста программы. Такие ошибки

определяются уже на этапе компиляции и серьезной опасности не представляют

(если не считать потерянного на их исправление времени).

Второй вид ошибок доставляет программисту гораздо больше неприятностей.

Page 54: Пример оформления дипломной работы

54RU.МЭТТ.18108-01 84 01

Это ошибки при выполнении программы.

Ну и, наконец, наиболее тяжелые ошибки бывают связаны с неправильным

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

задачи.

Процесс поиска и исправления ошибок в программе, когда факт их

существования установлен, и они препятствуют корректной работе программы,

называется отладкой.

Отладка производится в два этапа:

1) Определение природы и местонахождения возможной ошибки в

программе.

2) Исправление найденной ошибки.

Схема выполнения программы-отладчика обычно следующая:

1) Запуск в режиме отладки всех виртуальных машин, предназначенных

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

параллельной программы.

2) Управление выполнением параллельной программы с помощью

обработки сообщений, поступающих от машин, на которых выполняется

параллельная программа.

2.4.1.1 Расстановка отладочной печати по всей программеДля удобства работы отладочные операторы должны быть оформлены так,

чтобы их было легко найти. При использовании отладочной печати в процедурах и

функциях, операторы вставляются в начале входа в процедуру и функцию, и перед

выходом. При этом должны выводиться входные и выходные данные. При проверке

работы оператора цикла следует выводить только начальное и конечное значение

тела цикла.

2.4.1.2 Отладка с использованием встроенных средств языка программированияСуть данного метода сводится к установке большого набора точек прерывания

Page 55: Пример оформления дипломной работы

55RU.МЭТТ.18108-01 84 01

или пошаговому исполнению программы.

2.4.1.3 Методы индукцииСчитается, что большинство ошибок может быть обнаружено по средствам

тщательного анализа, даже при наличии исходного текста программы без

использования компьютера.

2.4.2 ТестированиеПроцесс выполнения программы с целью обнаружения ошибок называется

тестированием.

Тестирование осуществляется по средствам выполнения текстовых примеров.

В систему поступают входные данные, называемые текстами, а реакция программы

фиксируется для последующего анализа. Также в качестве входных данных в

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

значения различных параметров.

Процесс тестирования включает в себя:

— тестирование отдельных модулей;

— тестирование связей между модулями;

— тестирование системы в целом.

Тестирование модуля включает в себя следующие этапы:

— тестирование в нормальных условиях предполагает, что в программу

вводятся корректные данные, то есть надо показать, что при правильных

наборах исходных данных выдаётся правильный результат;

— тестирование в экстремальных условиях предполагает проверку

граничных ситуаций: для цифровых данных (min и max), для символьных

(строк) проверка работы с пустой строкой и строкой max длины;

— тестирование в исключительных условиях – предполагает проверку

работы программы при вводе неправильных данных.

Page 56: Пример оформления дипломной работы

56RU.МЭТТ.18108-01 84 01

Также проводят тестирование по методу сверху вниз, стремясь к

минимальному числу контрольных примеров.

Сначала используют трансляцию – специальную программу, которая

переводит данную программу из текстового вида в промежуточный машинный код.

Затем проводится компоновка - на этом этапе происходит сбор всех необходимых

программ, единый загрузочный модуль.

И в конечном итоге выполнение - если в результате выполнения программы и

анализа результата ее работы на тестовых наборах данных, обнаружены ошибки, то

весь процесс разработки повторяется с этапа редактирования.

Значит, мы поначалу проверим работу каждого модуля и устраним ошибки

(если они существуют), затем осуществляем системные испытания программы, как

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

программного обеспечения.

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

которые ранее решались пользователем и у нас имеется опыт их реализации.

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

— тестирование методом «Черного ящика»;

— тестирование методом «Белого ящика»;

— тестирование эргономичности;

— тестирование нарастающей интеграции.

2.4.2.1 Тестирование методом "Черного ящика"Тестирование методом "Черного ящика" предполагает обработку системы как

"непрозрачного объекта", таким образом, знание внутренней структуры в явном виде

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

функциональных возможностей. Синонимами понятия метода "Черного ящика"

являются: поведенческое тестирование, функциональное тестирование, метод

непрозрачного ящика, метод закрытого ящика. При тестировании программного

Page 57: Пример оформления дипломной работы

57RU.МЭТТ.18108-01 84 01

обеспечения методом "Черного ящика" тестировщик знает только набор вводимых

параметров и ожидаемые на выходе результаты, каким образом программа достигает

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

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

техническом описании.

2.4.2.2 Тестирование методом "Белого ящика"Тестирование методом "белого ящика" предполагает обработку системы как

"прозрачного объекта" и позволяет заглянуть внутрь, фокусируя внимание на

использовании знаний о конкретном программном обеспечении для правильного

подбора тестовых данных. Синонимами понятия метода "Белого ящика" являются:

структурное тестирование, метод прозрачного ящика, метод стеклянного ящика. В

отличие от метода "Черного ящика" данный метод основан на использовании

определенных знаний программного кода, необходимых для контроля корректности

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

тестировщик знает, что конкретно должна делать программа. Таким образом,

тестировщик может контролировать ожидаемый результат. Тестирование методом

"Белого ящика" не обрабатывает случайные ошибки, но наряду с этим весь видимый

код должен быть удобочитаемым.

2.4.2.3 Тестирование эргономичностиТестирование эргономичности является частью процесса создания

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

набор методов, которые позволяют пользователям (тестировщикам) проверить

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

выполняют с прототипом (или другой системой) ряд операций, в то время как

наблюдатели документируют все, что они делают и говорят. Такое тестирование

проводится одновременно с одним или несколькими пользователями работающими

вместе. Тестирование может включать сбор информации о последовательности

действий, совершаемых пользователем в процессе выполнения задачи; ошибок,

которые они делают; когда и чем они недовольны; насколько быстро они выполняют

Page 58: Пример оформления дипломной работы

58RU.МЭТТ.18108-01 84 01

операции; преуспевают ли они в выполнении этих операций, а так же насколько они

удовлетворены. Цель большинства тестов на эргономичность состоит в том, чтобы

обнаружить любые проблемы, с которыми может столкнуться пользователь и

устранить их.

2.4.2.4 Тестирование нарастающей интеграцииЭто непрерывное испытание "применимости" новых функциональных

возможностей, которые могут быть добавлены; необходимо чтобы различные

компоненты функционала были достаточно независимы и работоспособны до того

как все необходимые части будут готовы к интеграции в систему; осуществляется

программистами или тестировщиками.

2.4.3 Контрольный примерВ качестве контрольного примера рассмотрим процесс получения информации

о совещаниях, так как это самая часто используемая функция системы.

Информацию мы получим в двух различных форматах: HTML и RSS.

Несмотря на то, что оба этих формата очень часто применяются в сети Интернет,

они имеют различное назначение, но об этом ниже.

Для начала запустим серверную часть системы. По умолчанию, серверная

часть системы будет прослушивать порт с номером 3000. О том, как запустить

серверную часть читайте в пункте 2.3.2. «Вызов и загрузка».

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

В нашем случае это будет Microsoft Internet Explorer версии 7 (см. рис. 1), который

идет в поставке с операционной системой Microsoft Windows Vista.

Page 59: Пример оформления дипломной работы

59RU.МЭТТ.18108-01 84 01

После запуска веб-обозревателя необходимо набрать адрес по которому

запущена серверная часть. В нашем случае адрес будет выглядеть как http://localhost:

3000/ . Если при обращении к этому адресу происходит ошибка, то проверьте

правильность набранного адреса и удостоверьтесь в том, что серверная часть

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

системы еще раз.

В случае правильности набранного адреса в адресной строке веб-обозревателе

и безупречной работы серверной части системы должна появиться веб-страница с

большой надписью «Информация» (см. рис. 2).

Рабочее окно веб-обозревателя Microsoft Internet Explorer версии 7

Рисунок 1

Page 60: Пример оформления дипломной работы

60RU.МЭТТ.18108-01 84 01

На этой странице располагается вся необходимая информация о предстоящих

совещаниях. Для каждого из предстоящих совещаний выводиться следующая

информация:

— дата и время проведения совещания;

— тематика совещания;

— участники совещания, явка которых на него обязательна;

— ссылка на более подробную информацию о совещании (в частности, там

публикуется такая интересная информация, как список вопросов, которые

будут обсуждаться на совещании).

Помимо информации о ближайших совещаниях, на этой же странице

публикуется информация о последних перенесенных (см. рис. 3) и отмененных

Стартовая веб-страница системы

Рисунок 2

Page 61: Пример оформления дипломной работы

61RU.МЭТТ.18108-01 84 01

совещаниях (см. рис. 4).

Последние перенесенные совещания

Рисунок 3

Page 62: Пример оформления дипломной работы

62RU.МЭТТ.18108-01 84 01

Есть нажать на ссылку «Посмотреть» справа от реквизитов любого из

совещаний (будь то отмененное, перенесенное или еще не состоявшееся совещание),

то произойдет переход на страницу с подробной информацией по этому совещанию

(см. рис. 5). Как можно заметить, помимо информации, которая публикуется на

стартовой странице, здесь добавлен такой пункт, как «Вопросы, вынесенные на

обсуждение».

Последние 15 отмененных совещаний

Рисунок 4

Page 63: Пример оформления дипломной работы

63RU.МЭТТ.18108-01 84 01

Помимо уже рассмотренного веб-интерфейса (построенного на базе языка

разметки HTML) есть еще интерфейс, который построен на формате RSS и

предназначен для обработки программами (так называемыми RSS-агрегаторами).

Этот интерфейс нужен для того, чтобы пользоваться веб-интерфейсом системы, но

всегда быть в курсе изменений в расписании совещаний.

Для того, чтобы обратиться к интерфейсу системы в формате RSS необходимо

набрать в адресной строке веб-обозревателя (так как все современные веб-

обозреватели имеют функцию RSS-агрегатора) адрес http://localhost:3000/rss/list (см.

рис. 6).

Вид веб-страницы с подробной информацией о совещании

Рисунок 5

Page 64: Пример оформления дипломной работы

64RU.МЭТТ.18108-01 84 01

Наш веб-обозреватель назвал интерфейс нашей системы в формате RSS не

иначе, как «веб-канал» и предложил на него подписаться.

Если тщательней изучить содержимое «веб-канала», то можно заметить, что в

нем содержится точно такая же информация о совещаниях, как и в веб-интерфейсе

системы. Отличие заключается в том, что «веб-канал» содержит только информацию

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

должна отображаться в окне веб-обозревателя.

Чтобы убедиться в том, что в «веб-канале» содержится только информация и

ничего кроме, подключимся к нашему «веб-каналу» другим RSS-агрегатором (в

частности, программой FeedDemon версии 2.7).

Запустим программу FeedDemon и нажмем на кнопку Subscribe (подписаться).

После этого появится окно в котором нам предложат ввести адрес «веб-канала» (см.

Интерфейс системы в формате RSS в окне Microsoft Internet Explorer 7

Рисунок 6

Page 65: Пример оформления дипломной работы

65RU.МЭТТ.18108-01 84 01

рис. 7).

Как только мы ввели адрес нашего «веб-канала», следует нажать на кнопку

«Next» (следующий). Появится следующий слайд (см. рис. 8) на котором нам

предложат ввести название нашего «веб-канала».

Так как все атрибуты интерфейса в формате RSS заполнены верно, то в

качестве названия «веб-канала» нам предложат «Расписание совещаний». Не будем

упорствовать и согласимся с этим предложением нажатием на кнопку

«Next» (следующий). Сразу после этого, программа FeedDemon соединится с нашим

«веб-каналом» и загрузит всю имеющуюся информацию о текущем состоянии

расписания совещаний (см. рис. 10).

Окно подписки программы FeedDemon версии 2.7

Рисунок 7

Page 66: Пример оформления дипломной работы

66RU.МЭТТ.18108-01 84 01

Обратите внимание, что загруженная информация оформлена совсем не так,

как на рисунке 6, что свидетельствует о том, что интерфейс определяет RSS-

агрегатор FeedDemon, а не «веб-канал».

Если в программе FeedDemon подписаться на ее один «веб-канал», то

информация со всех каналов объединится (слово «агрегировать», как раз и означает

«объединение частей в единое целое») и отсортируется по времени появления (эта

информация описывается в формате RSS).

Манипулируя подписками на «веб-каналы» можно получить свою

собственную ленту новостей в которой будет содержаться только важная для

конкретного пользователя информация.

Предложение ввода названия «веб-канала»

Рисунок 8

Page 67: Пример оформления дипломной работы

67RU.МЭТТ.18108-01 84 01

Таким образом мы рассмотрели оба интерфейса системы: основанный на

языке разметке HTML и основанный на формате RSS. Каждый из этих интерфейсов

предоставляет разные возможности и различный инструментарий для управления

информацией, предоставляемой нашей системой.

Информация о расписании совещаний в окне программы FeedDemon 2.7

Рисунок 9

Page 68: Пример оформления дипломной работы

68RU.МЭТТ.18108-01 84 01

3 ЭКОНОМИЧЕСКАЯ ЧАСТЬ

3.1 Расчет системы

3.1.1 Материальные затраты

Т а б л и ц а 2 — расчет материальных затрат (за весь период)

Показатель Единица измерения

Цена, руб. Количество Сумма, руб.

Электроэнергия кВт 1,53 42 64,26Microsoft Windows XP Professional

шт. 4199 1 4199

Microsoft Office 2007 шт. 5499 1 5499Диск DVD-R 8x шт. 20 2 40Интернет-доступ - 3000 - 3000Бумага А4 500 листов упак. 200 1 200Карандаш шт. 14 10 140Ластик шт. 10 4 40Итого: 13182,26

3.1.2 Заработная плата разработчиков

Т а б л и ц а 3 — расчет заработной платы (за месяц)

Должность Часовая тарифная ставка, руб.

Количество часов

Сумма з/п, руб.

Руководитель проекта 350 40 14000Программист 280 176 49280Итого: 63280

3.1.3 Часовая тарифная ставкаМесячный эффективный фонд рабочего времени:

— количество дней разработки программы = 1 месяц;

— календарное время = 30 дней;

— выходные дни (с учетом праздников) = 8 дней;

— праздники = 0 раб. дней;

Page 69: Пример оформления дипломной работы

69RU.МЭТТ.18108-01 84 01

— отпуск = 0 раб. дней.

Итого эффективный фонд месячный:

— рабочего времени в месяц = 22 день;

— рабочих часов в день = 8 часов.

Месячный эффективный фонд рабочего времени в часах (см. таблицу 3).

Руководитель проекта:

— Тэ = 5 * 8 = 40 час/месяц;

— ФОТмес = Стч*Тэ = 350 * 40 = 14000 руб.

Программист:

— Тэ = 22 * 8 = 176 час/месяц;

— ФОТмес = Стч * Тэ = 280 * 176 = 49280 руб.

3.1.4 Расчет стоимости основных фондов

Т а б л и ц а 4 — расчет стоимости основных фондов

Основные фонды Первоначальная стоимость, руб

Количество единиц

Норма амортизации годовая, %

Сумма, руб

Аренда помещения 35 м2

34000 1 - -

Персональный компьютер

28000 2 25 1166,67

Офисная мебель 94000 - 25 1958,33Потолочная лампа 3000 2 25 125Настольная лампа 2000 2 25 83,33Модем 2000 1 25 41,67Принтер/сканер/копир

7040 1 25146,67

Итого: 3521,67Расчет амортизации на систему (см. таблицу 4).

Персональный компьютер:

Page 70: Пример оформления дипломной работы

70RU.МЭТТ.18108-01 84 01

— ОФп = 28000 * 2 = 56000 руб.;

— Амес = 56 * 0,25 / 12 = 1166,67 руб.

Офисная мебель:

— ОФп = 94000 руб.;

— Амес = 94 * 0,25 / 12 = 1958,33 руб.

Потолочная лампа:

— ОФп = 3000 * 2 = 6000 руб.;

— Амес = 6000 * 0,25 / 12 = 125 руб.

Настольная лампа:

— ОФп = 2000 * 2 = 4000 руб.;

— Амес = 4000 * 0,25 / 12 = 83,33 руб.

Модем:

— ОФп = 2000 руб.;

— Амес = 2 * 0,25 / 12 = 41,67 руб.

Принтер/сканер/копир:

— ОФп = 7040 руб.;

— Амес = 7040 * 0,25 / 12 = 146,67 руб.

Page 71: Пример оформления дипломной работы

71RU.МЭТТ.18108-01 84 01

Т а б л и ц а 5 — калькуляция расходов на разработку системы

Статья расходов Единица измерения Количество Сумма, руб.

Материалы - - 13182,26Заработная плата руб. - 63280Отчисления в ЕСН % 26 16452,80Итого переменные расходы: 92915,06Аренда помещения м2 35 34000Амортизация оборудования

руб. - 3521,67

Налог на имущество

% 2,20 338,40

Освещение кВт 100 30,60Отопление м2 30 367,50Итого постоянные расходы: 38258,17Всего полная себестоимость на создание системы: 131173,23

Расчеты к таблице 5.

Отчисления в ЕСН:

— общая зарплата = 63280 руб/месяц;

— ЕСН = 63280 * 0,26 = 16452,80 руб/месяц.

Аренда помещения:

— арендуемая площадь = 35 м2;

— стоимость 1 м2 за год = 432$;

— по курсу 1$ = 27 руб.;

— аренда помещения = 35 * 432 * 27 = 34000 руб/месяц.

Налог на имущество:

(34000 + 28000 * 2 + 94000 + 10000 + 2000 + 7040) * 0,02 / 12 = 338,40

руб/месяц.

Освещение:

Page 72: Пример оформления дипломной работы

72RU.МЭТТ.18108-01 84 01

1,53 * 20 = 30,60 руб/месяц.

Отопление:

— стоимость на 1 м2 = 10,5 руб/месяц;

— общая стоимость = 35 * 10,5 = 367,50 руб/месяц.

3.2 Расчет затрат на тиражирование (производство) системы

3.2.1 Расчет стоимости основных фондов

Т а б л и ц а 6 — расчет стоимости основных фондов

Основные фонды Первоначальная

стоимость, руб.

Количество

единиц

Норма амортизации годовая, %

Сумма амортизации годовая, руб.

Аренда помещения 200 м2 2700000 1 - -

Офисная мебель 180000 - 25 45000Приборы для освещения помещений

60000 - 25 15000

Персональный компьютер 30000 2 25 15000Автоматический дубликатор

CD/DVD дисков «R-Quest»

(~88 дисков/час)

457650 2 25 228825

Производственный термопринтер для печати на CD/DVD (~200 дисков/час)

418500 1 25 104625

Целлофанирующий станок (полуавтомат, упаковка до 400 дисков/час)

38340 1 25 9585

Фотопринтер «Epson» 21560 1 25 5390Сабельный резак для бумаги 9688 1 25 2422Модем 2000 1 25 500Принтер/сканер/копир «Xerox» лазерный

10850 1 25 2712,50

Итого: 429059,50

Page 73: Пример оформления дипломной работы

73RU.МЭТТ.18108-01 84 01

3.2.2 Расчет производственной мощности выпуска продукции на год.Эффективный фонд рабочего времени производства в год:

— календарное время = 365 дней;

— праздники = 11 дней;

— выходные дни = 104 дня;

— итого = 250 дней.

Предприятие работает в две смены.

Годовой эффективный фонд рабочего времени в часах:

Tэ = 250 * 2 * 8 = 4000 часов.

Объем выпуска продукции за час:

— Vвып_одного_дубликатора = 87 дисков/час;

— количество дубликаторов = 2 штуки;

— Vвып_за_час = 87 * 2 = 174 дисков/час.

Объем выпуска продукции за год:

Vвып = 174 * 4000 = 696000 дисков/год.

3.2.3 Расчет материальных затрат

Т а б л и ц а 7 — расчет материальных затрат

Статья затрат Единица измерения

Оптовая цена, руб.

Количество Сумма, руб.

Microsoft Windows XP Professional

шт. 4199 1 4199

Microsoft Office 2003 Basic Edition

шт. 5499 1 5499

Adobe Photoshop 9.0

шт. 27616 1 27616

Электроэнергия кВт 1,53 6000 9180Интернет-доступ месяц 4000 12 48000Диск CD-R 700MB шт. 5,80 696000 4036800

Page 74: Пример оформления дипломной работы

74RU.МЭТТ.18108-01 84 01

Окончание таблицы 7

Статья затрат Единица измерения

Оптовая цена, руб.

Количество Сумма, руб.

Коробка под DVD диск

шт. 2,10 696000 1461600

Полипропиленовая пленка для дисков

м2 10 12429 124290

Вкладыш для диска бумажный

шт. 3,40 696000 2366400

Черная лента для термопринтера

шт. 1499 230 344770

трехцветная лента для термопринтера

шт. 2999 424 1271576

Картриджи для фотопринтера «Epson» (8 цветов)

шт. 114,40 220 25168

Стандартный картридж для «Xerox»

шт. 2678 50 133900

Картонная коробка шт. 1,40 3867 5413,80Упаковочная лента шт. 6 194 1164Канцелярские расходы

- - - 30000

Итого: 9895575,80

3.2.4 Расчет заработной платы специалистов и сотрудников

Т а б л и ц а 8 — расчет заработной платы специалистов и сотрудников

Должность Количество человек

Оклад в месяц, руб.

Премия 40%, руб.

Годовая сумма, руб.

Начальник цеха 1 36000 14400 604800Главный бухгалтер

1 32000 12800 537600

Главный экономист

1 32000 12800 537600

Page 75: Пример оформления дипломной работы

75RU.МЭТТ.18108-01 84 01

Окончание таблицы 8

Должность Количество человек

Оклад в месяц, руб.

Премия 40%, руб.

Годовая сумма, руб.

Менеджер по управлению персоналом

2 30000 - 720000

Графический дизайнер

1 26000 - 312000

Системный администратор

2 23000 - 552000

Работник цеха 8 16000 - 1536000Упаковщик-грузчик

2 16000 - 384000

Водитель грузовика

1 22000 - 264000

Охранник 2 22000 - 528000Уборщица 2 12000 - 288000Итого: 6264000

3.2.5 Расчет сметы цеховых расходов на год

Т а б л и ц а 9 — расчет сметы цеховых расходов на год

Статья затрат Единица измерения Сумма, руб.Аренда помещения м2 2700000Электроэнергия кВт 1836Отопление м2 25200Горюче-смазочные материалы

л 59535

Командировочные расходы - -Отчисления на содержание аппарата управления фирмой

руб. 12528000

Налог на имущество 2% руб. 34324,76Итого по смете: 15348895,76

Расчеты к смете (см. таблицу 9).

Аренда помещения:

Page 76: Пример оформления дипломной работы

76RU.МЭТТ.18108-01 84 01

— арендуемая площадь = 200 м2;

— стоимость 1 м2 за год = 500$;

— по курсу 1$ = 27 руб.;

— аренда помещения = 200 * 500 * 27 = 2700000 руб/год.

Электроэнергия:

1,53 * 100 * 12 = 1836 руб/год.

Отопление:

— стоимость на 1 м2 = 10,5 руб/месяц;

— общая стоимость = 200 * 10,5 * 12 = 25200 руб/год.

Горюче-смазочные материалы:

— средняя затрата бензина за день = 50 л по цене 18,90 руб.;

— грузовик развозит продукцию каждый 4-й день:

250 / 4 = 63 дня/год;

— затрата бензина = 50 * 18,9 * 63 = 59535 руб/год.

Налог на имущество:

1716238 * 0,02 = 34324,76 руб/год.

3.2.6 Калькуляция себестоимости выпускаемой продукции

Т а б л и ц а 10 — калькуляция себестоимости выпускаемой продукции

Статья расходов Единица измерения

Сумма, руб. Удельный вес, %

Материалы - 9895575,80 29,36Электроэнергия кВт 9180 0,03Фонд оплаты труда руб. 6264000 18,58ЕСН (26%) руб. 1628640 4,83Итого переменные расходы: 17797395,80 -

Page 77: Пример оформления дипломной работы

77RU.МЭТТ.18108-01 84 01

Окончание таблицы 10

Статья расходов Единица измерения

Сумма, руб. Удельный вес, %

Цеховые расходы руб. 15348895,76 45,54Амортизация оборудования

руб. 429059,50 1,27

Расходы на разработку системы

руб. 131173,23 0,39

Итого условно постоянные расходы: 15909128,49 -Всего полная себестоимость: 33706524,29 100Прибыль предприятия

руб. 49813475,71 147,79

Товарная продукция руб. 83520000 -НДС – 18% руб. 15033600 -Свободная отпускная цена за весь выпуск

руб. 98553600 -

Расчеты к таблице 10:

— ТП = V * Ц = 696000 * 120 = 83520000 руб/год;

— П = ТП – С/с= 83520000 – 33706524,29 = 49813475,71 руб/год;

— НДС = ТП * 0,18 = 83520000 * 0,18 = 15033600 руб.;

— Цсвободная_отпускная = ТП + НДС = 83520000 + 15033600 = 98553600 руб.

Page 78: Пример оформления дипломной работы

78RU.МЭТТ.18108-01 84 01

3.2.7 Диаграмма удельного веса затрат на производство (тиражирование) системыРасчет эффективности производства методом маржинального анализа

Определение точки безубыточности аналитическим методом:

— ТП = 83520000 руб.;

— V = 696000 шт.;

— П = 49813475,71 руб.;

— a = 15909128,49 руб. (условно постоянные расходы);

— Дм = а + П = 65722604,20 руб.;

— Тбутп = ТП * а / Дм = 20217251,40 руб.;

— Тбуv = V * а / Дм = 168477 шт.

Диаграмма затрат на производство

Рисунок 10

29,36

0,03

18,58

4,83

45,54

1,270,39

Материалы

Электроэнергия

Фонд оплаты труда

ЕСН

Цеховые расходы

Амортизация оборудования

Расходы на разработку ПП

Page 79: Пример оформления дипломной работы

79RU.МЭТТ.18108-01 84 01

3.2.8 Определение точки безубыточности графическим методом.

3.2.9 Определение маржинального дохода графическим методом

Рисунок 11

0

10

20

30

40

50

60

70

80

90

100

0 100 200 300 400 500 600 700

Тбу

V (тыс.шт)

ТП, с/с, П (млн.руб)

П

a

∑b

c/cп

ТП

168,5

20,2

696

15,9

33,7

83,5

Рисунок 12

0

10

20

30

40

50

60

70

80

90

100

0 100 200 300 400 500 600 700

Тбу

V (тыс.шт)

ТП, с/с, П (млн.руб)

П

a

∑b

Дм

ТП

168,5

20,2

696

33,7

83,5

17,8

Page 80: Пример оформления дипломной работы

80RU.МЭТТ.18108-01 84 01

3.2.10 Определение критического объема производства в натуральных единицах графическим методом

3.2.11 Определение критической суммы товарной продукции графическим методом

Рисунок 13

-60

-50

-40

-30

-20

-10

0

10

20

30

40

50

60

0 100 200 300 400 500 600 700

Тбуv

V (тыс.шт)

Прибыль (млн.руб)

696

Убытки

49,8

-16

168,5

Рисунок 14

-60

-50

-40

-30

-20

-10

0

10

20

30

40

50

60

0 20 40 60 80 100

Тбутп

ТП (млн.руб)

Прибыль (млн.руб)

Убытки

49,8

-16

20,2 83,5

Page 81: Пример оформления дипломной работы

81RU.МЭТТ.18108-01 84 01

3.2.12 Сводная таблица технико-экономических показателей

Т а б л и ц а 11 — технико-экономические показатели

Наименование показателя Единица измерения

Величина показателя

Объем производства шт. 696000Товарная продукция без НДС руб. 83520000НДС 18% руб. 15033600Товарная продукция с НДС руб. 98553600Годовой фонд оплаты труда руб. 6264000Численность персонала чел. 23Производительность труда (штук) шт/чел. 30261Производительность труда (рублей) руб/чел. 4284939,13Среднемесячная заработная плата одного сотрудника

руб. 272347,83

Полная себестоимость ТП руб. 33706524,29Затраты на 1 рубль товарной продукции коп. 40Прибыль производства руб. 49813475,71Рентабельность производства % 147,79Критический объем производства шт. 168477Критический объем товарной продукции руб. 20217251,40Отпускная цена предприятия руб/ед. 120Свободная отпускная цена с НДС руб/ед. 141,60

Расчеты к таблице 11:

— производительность труда (штук) = 696000 / 23 = 30261 шт/чел.;

— производительность труда (рублей) = 98553600 / 23 = 4284939,13

руб/чел.;

— среднемесячная зарплата одного сотрудника = 6264000 / 23 = 272347,83

руб.;

— З = С/спол / ТПбез_НДС * 100 = 33706524,29 / 83520000 / 100 = 40 коп.;

— R = П / С/спол * 100% = 49813475,71 / 33706524,29 * 100 = 147,79%;

— Цотп = ТПбез_НДС / Vпрод = 83520000 / 696000 = 120 руб.;

Page 82: Пример оформления дипломной работы

82RU.МЭТТ.18108-01 84 01

— Цотп_с_НДС = ТПс_НДС / Vпрод = 98553600 / 696000 = 141,60 руб.

3.3 ВыводПроизводство системы при незначительных затратах на разработку способно

приносить неплохие прибыли. Рентабельность производства при максимальных

затратах равна 147,79%, но у этого бизнеса есть огромный недостаток –

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

продукции возникает проблема сбыта и тут может помочь только смена

производимого программного продукта.

Page 83: Пример оформления дипломной работы

83RU.МЭТТ.18108-01 84 01

ЗАКЛЮЧЕНИЕВ результате дипломного проектирования были выполнены все требования

задания на дипломное проектирование. В дальнейшем, в системе планируется

осуществить возможность рассылки уведомлений о создании совещания (в котором

должен принять участие адресат) и начале совещания (или за 10-15 минут до

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

редактор протоколов совещаний, переработать интерфейс пользователя и провести

глубокую переработку исходного кода (чтобы повысить его читабельность и

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

Page 84: Пример оформления дипломной работы

84RU.МЭТТ.18108-01 84 01

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ1. Сообщество Wikipedia, Протокол HTTP, 2007, http://ru.wikipedia.org/wiki/HTTP

2. Сообщество Wikipedia, Инструментарий разработчика Ruby on Rails, 2007,

http://ru.wikipedia.org/wiki/Ruby_on_Rails

3. Сообщество Wikipedia, Технология MVC, 2007, http://ru.wikipedia.org/wiki/MVC

4. Сообщество Wikipedia, ORM, 2007, http://ru.wikipedia.org/wiki/ORM

5. Сообщество Wikipedia, Язык разметки HTML, 2007,

http://ru.wikipedia.org/wiki/HTML

6. Сообщество Wikipedia, Формат RSS, 2008, http://ru.wikipedia.org/wiki/RSS

7. Сообщество Wikipedia, Язык программирования Ruby, 2008,

http://ru.wikipedia.org/wiki/Ruby

8. Сообщество Wikipedia, Лицензия MIT, 2007,

http://ru.wikipedia.org/wiki/Лицензия_MIT

9. Сообщество Wikipedia, Язык программирования Python, 2007,

http://ru.wikipedia.org/wiki/Python

10. Сообщество Wikipedia, Язык программирования PHP, 2007,

http://ru.wikipedia.org/wiki/PHP

11. Matz, Ruby syntax, 1999, http://docs.huihoo.com/ruby/ruby-man-1.4/syntax.html