Исходный язык разработки ИС К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 - физическая схема базы данных
Для того чтобы создать приложение 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'
В автоматически созданном модуле Models.py
необходимо описать классы для каждой сущности схемы базы данных. На рисунке 5.2
показана структура модели на примере класса «Работник»
Рисунок 5.2 - модель «Работник»
Полный листинг модуля Models.py представлен в приложении
Представления необходимы для обработки данных, содержащихся в моделях.
Представление - это функция Python. Эта функция принимает параметр - объект класса HttpRequest:
- GET - список параметров, полученных по методу GET;
- POST - список параметров, полученных по методу POST;
- REQUEST - список параметров, полученных по методам GET и POST;
- Method - содержит строку «GET» или «POST» в зависимости от метода
- Path - строка, хранящая интернет-адрес страницы
На рисунке 5.3 показано представление, которое обрабатывает данные модели
«Работник»
Рисунок 5.3 - представление для обработки данных модели «Работник»
Для настройки отображения формы «Работник» в 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.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 - диаграмма Ганта
(рекомендуемое).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/'
(рекомендуемое)
Модуль 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)