Материал: Информационная система для учёта электронных подписей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Исходный язык разработки ИС К10=1 объектно-ориентированный (Си++ или эквивалентный)

Класс пользователя К11=1,07 средний

Требования к центральному обрабатывающему устройству (процессору) К12= 1 средняя

Требования к оперативной (основной) памяти К13=1,04 малая

Требования к внешней памяти К14=1,01 малая

Требования к локальной вычислительной сети К15 = 1,02 средние требования

Критичность ИС К16=1 организационная безопасность

Готовность К17 = 1,11 заказное (методика заказчика специфическая)

Представление данных К18=1 реляционный

этап. Определение значений поправочных коэффициентов

КП1=К11·К16·К17 = 1,07*1*1,11 = 1,19

КП2=К1·К2·К4·К5·К6·К7·К8·К9·К16·К17·К18=1,05*1*1*1*1,08*1*1*1*1,11*1=1,26

КП3=К1·К2·К4·К5·К6·К7·К8·К9·К11·К12·К13·К14·К15·К16·К17·К18 = 1,05*1,08*1,07*1,04*1,01*1,02*1,11=1,44

КП4 = К1*К2*К4*К5*К6*К7*К8*К9*К10*К12*К13*К14*К15*К16* *К17*К18=1,05*1*1*1*1,08*1*1*1*1,04*1,01*1,02*1,11 = 1,35

КП5=К1*К2*К4*К5*К6*К7*К8*К9*К10*К11*К12*К13*К14*К15*К16*К17*К18 = 1,44

КП6 = К1*К2*К11*К16*К18=1,05*1,07*1 = 1,12

Sj(E) - норматив трудоемкости реализации одного типа объектов в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[тип объектов]};

Sj(T) - норматив трудоемкости реализации одного свойства типа объекта в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[свойство типа объектов]};

Sj(I) - норматив трудоемкости реализации одного взаимодействия между типами объектов в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[взаимодействие между типами объектов]};

Sj(N) - норматив трудоемкости реализации одного типа узла в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[узел]};

165 - количество человеко-часов в одном человеко-месяце

этап. Расчет трудоемкости с учетом поправочных коэффициентов

S1= 9.2х1,19 = 10.95= 12.4х1,26 = 15.62= 31.56х1,44 = 45.4= 38.24х1,35 = 51.62= 2.7х1,44 = 3.89= 0.4х1,12 = 0.45= 127.98

5 этап. Оценка срока разработки ППО

срок разработки 4-14 мес., средний 8 мес.

С учетом расчета трудоемкости был построен детальный график разработки продукта (диаграмма Ганта). Диаграмма представлена в приложении.

4. Проектирование информационной системы

База данных будет состоять из следующих таблиц:

1       Department - содержит список отделов

-       ID - автоинкременное поле, первичный ключ;

-       Name_dep - название отдела;

-       Organization - организация, к которой относится отдел.

2       Worker - содержит информацию о работниках

-       ID - автоинкременное поле, первичный ключ;

-       FIO - ФИО работника;

-       Short_position - краткое название должности;

-       Position - должность;

-       Ser_pass - серия паспорта;

-       Num_pass - номер паспорта;

-       Cod_podr - код подразделения, где выдан паспорт;

-       Name_podr - название подразделения;

-       SNILS - номер страхового свидетельства;

-       Id_dep - внешний ключ к таблице Department.

3       Sertificate - содержит информацию о выданных сертификатах;

-       ID - автоинкременное поле, первичный ключ;

-       Id_worker - внешний ключ к таблице Worker;

-       Start_date - дата начала действия сертификата;

-       End_date - дата окончания действия сертификата;

-       Serial_number - номер сертификата.

4       MPA - содержит информацию о муниципальных правовых актах, наделяющих сотрудника правами на получение электронной подписи;

-       ID - автоинкременное поле, первичный ключ;

-       Name_MPA - название муниципального правового акта;

-       Type_MPA - тип муниципального правового акта;

-       Date_MPA - дата утверждения муниципального правового акта;

-       Num_MPA - номер муниципального правового акта;

5       OID - объектный идентификатор ключа

-       ID - автоинкременное поле, первичный ключ;

-       Name_OID - название объектного идентификатора;

-       Comment - примечание.

6       SertificateCategory - содержит информацию о категориях сертификатов

-       ID - автоинкременное поле, первичный ключ;

-       Name_category - название категории.

7       Token-содержит информацию о выданных носителях электронных подписей

-       ID - автоинкременное поле, первичный ключ;

-       Type - тип носителя;

-       Reg_num - регистрационный номер носителя.

8       VerificationCenter - содержит информацию об удостоверяющих центрах

-       ID - автоинкременное поле, первичный ключ;

-       Name - название;

-       Comment - примечание.

9       ContractType - содержит типы контрактов (таблица-справочник)

-       ID - автоинкременное поле, первичный ключ;

-       Name - тип контракта.

         Contract - содержит информацию о контрактах

-       ID - автоинкременное поле, первичный ключ;

-       Reg_num - регистрационный номер;

-       Start_date - дата начала контракта;

-       End_date - дата окончания контракта;

-       Comment - примечание.

         ContractLine - содержит информацию о стоимости конракта и количестве выданных сертификатов (таблица-справочник)

-       ID - автоинкременное поле, первичный ключ;

-       Price - стоимость;

-       Количество подписей в контракте.

         Application - заявка в удостоверяющий центр на выдачу сертификатов

-       ID_center;

-       ID_category.

         SertificateDelivery - журнал выдачи сертификатов

-       ID - автоинкременное поле, первичный ключ;

-       Start_date - дата выдачи;

-       Early_stop_date - дата досрочного прекращения действия сертификата;

-       Destruction_date - отметка об уничтожении (дата)

Физическая схема базы данных представлена на рисунке 4.1.

Рисунок 4.1 - физическая схема базы данных

5. Разработка приложения с использованием Django

.1 Создание приложения Django


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

Django-admin.py startproject <имя проекта>

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

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

Manage.py runserver

Для останова отладочного веб-сервера необходимо нажать комбинацию клавиш «CTRL» + «Break»

5.2 Настройка проекта Django

Созданный проект содержит в себе модуль Settings.py. Для настройки проекта необходимо внести сведения об используемой базе данных в этот модуль. По умолчанию модуль содержит настройки для SQLite[1]. Так как в текущем проекте будет использоваться PostgreSQL, в Settings.py внесем настройки, представленные на рисунке 5.1

Рисунок 5.1 - настойки базы данных

Для настройки локализации необходимо указать язык и временную зону:

LANGUAGE_CODE = 'RU-ru'_ZONE = 'UTC'

5.3 Создание моделей


В автоматически созданном модуле Models.py необходимо описать классы для каждой сущности схемы базы данных. На рисунке 5.2 показана структура модели на примере класса «Работник»

Рисунок 5.2 - модель «Работник»

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

5.4 Создание представлений


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

Представление - это функция Python. Эта функция принимает параметр - объект класса HttpRequest:

-       GET - список параметров, полученных по методу GET;

-       POST - список параметров, полученных по методу POST;

-       REQUEST - список параметров, полученных по методам GET и POST;

-       Method - содержит строку «GET» или «POST» в зависимости от метода

-       Path - строка, хранящая интернет-адрес страницы

На рисунке 5.3 показано представление, которое обрабатывает данные модели «Работник»

Рисунок 5.3 - представление для обработки данных модели «Работник»

5.5 Создание шаблонов


Для настройки отображения формы «Работник» в Django используются шаблоны, которые представляют собой обычный html-код со специализированными командами шаблонизатора. Пример шаблона «Работник» представлен на рисунке 5.4.

Рисунок 5.4 - шаблон для отображения формы «Работник»

Структура приложения представлена на рисунке 5.5

Рисунок 5.5 - структура приложения Django

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

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

.        Добавить 'django.contrib.admin' в настройку INSTALLED_APPS.

.        Добавить четыре зависимости в список INSTALLED_APPS - django.contrib.auth,django.contrib.contenttypes, django.contrib.messages and django.contrib.sessions

.        Добавить django.contrib.auth.context_processors.auth и django.contrib.messages.context_processors.messages в опцию 'context_processors' модуля DjangoTemplates` из настройки TEMPLATES, и django.contrib.auth.middleware.AuthenticationMiddleware с MessageMiddleware в MIDDLEWARE_CLASSES.

4.      Определить, какие модели будут редактироваться через интерфейс администратора.

.        Для каждой модели необходимо создать класс ModelAdmin, который инкапсулирует настройки интерфейса администратора для конкретной модели.

.        Создать экземпляр AdminSite и добавьте в него созданные модели с соответствующими классами ModelAdmin.

.        Добавить AdminSite в URLconf.

Модуль Admin.py представлен на рисунке 5.6

Рисунок 5.6 - модуль Admin.py

После проделанных действий можно открыть интерфейс администратора Django посетив URL /admin/

Интерфейс приложения администратора представлен на рисунке 5.7

Рисунок 5.7 - интерфейс администрирования Django

6. Тестирование приложения


Первый этап работы с приложением - внесение информации о сотруднике. Форма для внесения данных представлена на рисунке 6.1.

Рисунок 6.1 - форма «Работник»

На втором этапе работы с приложением вносятся данные о муниципальном правовом акте, наделяющем сотрудника правами на получение электронной подписи. Вкладка «Муниципальный правовой акт» представлена на рисунке 6.2.

Рисунок 6.2 - форма «Муниципальный правовой акт»

На третьем этапе добавляется заявка в удостоверяющий центр, что показано на рисунке 6.3.

Рисунок 6.3 - форма «Заявка»

На четвертом этапе работы вносятся данные о заключенном контракте (рисунок 6.4)

Рисунок 6.4 - форма «Контракт»

На пятом этапе добавляется сертификат для каждого работника (рисунок 6.5)

Рисунок 6.5 - форма «Сертификат»

Затем заполняется форма «ОИД». Форма представлена на рисунке 6.6.

Рисунок 6.6 - форма «ОИД»

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

Рисунок 6.7 - форма «Журнал выдачи»

Заключение


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

Для достижения поставленной цели были решены следующие задачи:

-       Проведен анализ предметной области;

-       Рассчитана трудоемкость разработки по двум методикам;

-       Разработана система для учёта электронных подписей.


Список использованных источников


1.      Дронов В.А. Django: практика создания WеЬ-сайтов на Python. - СПб.:БХВ-Петербург, 2016. - 528 с.: ил. - (Профессиональное программирование)

.        Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: СимволПлюс, 2010. - 560 с., ил.

.        Документация Django на русском языке [электронный ресурс] - Pежим доступа: https://djbook.ru/

4.      Django documentation [электронный ресурс] - Режим доступа: https://docs.djangoproject.com/en/1.11/

.        Руководство Django Girls [электронный ресурс] - Режим доступа: https://tutorial.djangogirls.org/ru/

.        Тритенко А.Н. Методические рекомендации по оформлению выпускных квалификационных работ, курсовых проектов/работ для студентов очной, очнозаочной (вечерней) и заочной форм обучения. - Вологда: , 2016. - 95 с.

.        Журнал о системах электронного документооборота (СЭД) [электронный ресурс] - Режим доступа: #"896609.files/image020.jpg">

Рисунок п.1 - диаграмма Ганта

Приложение 3


(рекомендуемое).pyos_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))_KEY = '6%*(6juha1^jufve(+%^bahm527h&cb89%d-!00!6(97yva6r^'= True_HOSTS = []_APPS = [

'ecp.apps.EcpConfig',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'django.contrib.admin',

'bootstrap3',

'menu'

]_CLASSES = [

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.auth.middleware.SessionAuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

]_URLCONF = 'mybase.urls'= [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]_APPLICATION = 'mybase.wsgi.application'= {

'default': {

'ENGINE': 'django.db.backends.postgresql', # 'django.db.backends.sqlite3',

'NAME': 'postgres', # 'mydatabase',

'USER': 'student',

'PASSWORD': 'student',

'HOST': 'localhost',

'PORT': '5432',

}

}_PASSWORD_VALIDATORS = [

{

'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',

},

{

'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',

},

{

'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',

},

{

'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',

},

]_CODE = 'RU-ru'_ZONE = 'UTC'_I18N = True_L10N = True_TZ = True_URL = '/static/'

ПРИЛОЖЕНИЕ 4

(рекомендуемое)

Модуль Models.py

# -*- coding: utf-8 -*-

from __future__ import unicode_literalsdjango.db import modelsdjango import formsDepartment (models.Model):

name_dep = models.CharField(u"орган (подразделение)", max_length=100)

organization = models.CharField(

u"организация", max_length=200, default=u"Администрация города Вологды"

)

def __unicode__(self):

return u"%s (%s)" % (self.name_dep, self.organization)

class Meta:

verbose_name = u"отдел"

verbose_name_plural = u"отделы"Worker(models.Model):

department = models.ForeignKey (

Department, on_delete=models.CASCADE,verbose_name = u"отдел"

)

fio = models.CharField(u"ФИО", max_length=200)

short_position = models.CharField(u"краткое название должности", max_length=50)

position = models.CharField(u"полное название должности", max_length=300)

ser_pass = models.CharField(u"серия паспорта", max_length=4)

num_pass = models.CharField(u"номер паспорта", max_length=6)

cod_podr = models.CharField(u"код подразделения", max_length=50)

name_podr = models.CharField(u"название подразделения", max_length=50)