Информационная система для учёта электронных подписей
Use case-диаграмма. Оценка трудоёмкости и сроков разработки проекта с использованием языка Python по методикам CETIN И COCOMO-II. Проектирование информационной системы. Разработка приложения с использованием Django: создание шаблонов, моделей и пр.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.07.2017 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Содержание
- Введение
- 1. Анализ требований к системе
- 1.1 Анализ предметной области
- 1.2 Use case-диаграмма
- 2. Обзор средств разработки
- 3. Оценка трудоёмкости и сроков разработки проекта с использованием языка python по методикам cetin и cocomo-ii
- 3.1 Расчёт по методике COCOMO-II
- 3.2 Расчёт по методике CETIN
- 4. Проектирование информационной системы
- 5. Разработка приложения с использованием django
- 5.1 Создание приложения Django
- 5.2 Создание моделей
- 5.3 Создание представлений
- 5.4 Создание шаблонов
- 6. Тестирование приложения
- Заключение
- Список использованных источников
- Приложения
Введение
В большинстве информационных систем используется электронная подпись. Электронная подпись (ЭП) -- это последовательность символов, полученная в результате криптографического преобразования определенного объема информации по математическому алгоритму с использованием ключей, каждый символ которой имеет неизменяемое соотношение с данным объемом информации.
Электронная подпись выполняет следующие функции:
- Идентифицирует автора;
- Позволяет определить неизменность документа с момента подписания;
- Защищает документ от подделки.
В России используется три вида электронной подписи:
- Простая;
- Неквалифицированная;
- Квалифицированная.
На сегодняшний день самые распространенные сферы использования электронной подписи:
- Электронный документооборот. В этой сфере ЭП используется в качестве средства визирования документов;
- Электронная отчетность. ЭП придает отчетности юридическую значимость;
- Работа на Портале госуслуг. [7]
В связи с широким распространением электронных подписей а также большим количеством бумажной работы при выдаче стал актуальным вопрос автоматизации их учета. Целью выпускной квалификационной работы является создание информационной системы, позволяющей ускорить и упростить ведение документации при выдаче электронных подписей. На текущий момент учет электронных подписей ведется без использования средств автоматизации. В связи с этим было принято решение о необходимости разработки информационной системы. Система должна обеспечивать возможность внесения сведений о приобретении сертификатов на электронные подписи для сотрудников предприятия.
python информационный приложение django
1. Анализ требований к системе
1.1 Анализ предметной области
Процедура получения электронной подписи происходит в следующем порядке:
1. Организация направляет заявку в удостоверяющий центр. В заявке содержится список работников, которым необходимо выдать электронные подписи, а также данные об этих работниках;
2. Заключается контракт между удостоверяющим центром и организацией;
3. Удостоверяющий центр выдает сертификаты работникам. Сертификат электронной подписи представляет собой документ, который подтверждает принадлежность электронной подписи её владельцу;
4. Факт выдачи ЭП работнику регистрируется в журнале (реестре).
Реестр содержит следующие обязательные сведения о сертификатах ключей проверки электронных подписей уполномоченных сотрудников Администрации города Вологды, наделенных правом электронной подписи от имени Администрации города Вологды включающие:
1. Фамилию, имя и отчество сотрудника;
2. Название органа Администрации города Вологды, сотрудник которого наделен правом ЭП;
3. Реквизиты постановления Администрации города Вологды, в соответствии с которым сотрудник наделен правом электронной подписи;
4. Название удостоверяющего центра, в котором проводилась выдача сертификата ключа проверки электронной подписи сотруднику;
5. Дату выдачи сертификата ключа проверки электронной подписи;
6. Дату начала и окончания срока действия сертификата ключа проверки электронной подписи;
7. Носитель ключевой информации (Токен), на который производилась запись ключа электронной подписи, с указанием серийного номера носителя;
8. Отметку о получении Уполномоченным сотрудником сертификата ключа проверки электронной подписи;
9. Дату досрочного прекращения действия сертификата ключа проверки электронной подписи;
10. Отметку об уничтожении ключа электронной подписи. [8]
1.2 Use case-диаграмма
Выделим двух акторов системы:
1. Лицо, ответственное за закупочную деятельность
2. Лицо, ответственное за ведение реестра
Use case диаграмма представлена на рисунке 1.1
Рисунок 1.1 - use case-диаграмма системы
2. Обзор средств разработки
В качестве средств разработки заказчиком были рекомендованы Python, Django, PostgreSQL. Выбор обусловлен необходимостью интеграции разрабатываемой системы в уже существующую на предприятии.
Рассмотрим плюсы Django, отличающие его от других Content Management Frameworks.
Первое и, пожалуй, самое главное отличие - язык программирования, на котором выполнена CMF. В данном случае это Python. Этот язык программирования появился относительно недавно (в 1990 году), но это нисколько не помешало ему стать одним из самых популярных и востребованных на сегодняшний день. Python использует Yandex и даже такой гигант, как Google. Причин для этого несколько.
Во-первых, на выбор в пользу Python влияет лицензия, которая регламентирует использование и распространение этого языка. Она позволяет использовать модули, написанные на Python, в коммерческих приложениях.
Второе, чем привлекает Python -- простота разработки. Исследования показывают, что написание программ на данном языке отнимает в четыре раза меньше времени, чем написание аналогичных программ на других языках программирования.
Третье достоинство этого языка программирования -- совместимость с большинством существующих платформ.[2]
Python выступает языком программирования для нескольких Фреймворков (Фреймворк - программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта). Одним из них и является Django.
Кроме уже отмеченного удобного языка программирования, этот Фреймворк обладает ещё целым рядом преимуществ.
Одним из них является бесплатность. Для начинающего разработчика это немаловажно.
Второй плюс заключается в том, что Django располагает программными интерфейсами (API) для доступа к базам данных, что, естественно, значительно облегчает разработку web-проектов.
Третьим достоинством по счёту, но не по значимости является то, что архитектура Django согласно модели «MVC: Model-View-Controller» разделяет приложение на три составляющих:
1. Model - это программный модуль в составе приложения, который является своего рода посредником между базой данных и модулями проекта.
Модель выполняет следующие функции:
- Описывает структуру базы данных в терминологии используемого языка программирования;
- Представляет данные, считанные из базы данных, в терминологии используемого языка программирования;
- Реализует механизмы выборки, сортировки и фильтрации данных, содержащихся в базе данных;
- Реализует механизмы редактирования, удаления и добавления данных в базу;
- Проверяет корректность введенных данных (соответствие типов, длины строки и т.д.) [1]
2. View - часть, которая определяет какие данные получать и как их отображать, обрабатывается представлениями и шаблонами.
3. Controller - часть, которая выбирает представление в зависимости от пользовательского ввода, обрабатывается самой средой разработки, следуя созданной вами схемой URL, и вызывает соответствующую функцию Python для указанного URL. [4]
Рисунок 2.1 - архитектура приложения Django
Также Django имеет удобный интерфейс администратора, благодаря которому можно интуитивно управлять разработанным web-приложенем и его содержимым. Действия по управлению контентом может совершать даже человек, не знакомый близко с программированием.
Кроме всего перечисленного, фреймворк поддерживает большое количество языков, что позволяет создавать web-приложения для аудитории разных стран мира.
Все перечисленные преимущества в конце концов выливаются в одно неоспоримое достоинство: разработка и поддержка web-приложений, написанных на языке Python и использованием Django, происходит гораздо проще и быстрее, чем на других платформах.
Благодаря этому создание web-приложений, написанных на языке Python с использованием Django, и их поддержка, становится гораздо проще и осуществляется быстрее, чем разработка аналогичных проектов на других платформах.
Django является олицетворением языка, который он использует: интуитивно понятный, позволяющий быстро и качественно создать код, более распространён в глобальной сети (используется в том числе Google). Плюс ко всему в комплекте с Django идёт очень хорошая и подробная документация, в которой можно найти ответ на любой интересующий вопрос. [3]
PostgreSQL - свободная объектно-реляционная система управления базами данных. Сильными сторонами PostgreSQL считаются:
-высокопроизводительные и надёжные механизмы транзакций и репликации;
-расширяемая система встроенных языков программирования;
-наследование;
-легкая расширяемость.
3. Оценка трудоёмкости и сроков разработки проекта с использованием языка Python по методикам CETIN и COCOMO-II
3.1 Расчёт по методике COCOMO-II
Примем наиболее вероятное количество строк на одну невыровненную ФТ для языка Python за 60.
Размер проекта:
60*34=2040 строк
Факторы масштаба
В методике используются пять факторов масштаба SFi, которые определяются следующими характеристиками проекта:
1.PREC -- прецедентность, наличие у разработчика опыта аналогичных разработок
2.FLEX -- гибкость процесса разработки продукта
3.RESL -- архитектура и разрешение рисков
4.TEAM -- сработанность команды
5.PMAT -- зрелость процессов
Значения фактора масштаба в зависимости от оценки его уровня, приведены в Таблице 1
Таблица 1 - факторы масштаба
Фактор масштаба |
Оценка уровня фактора |
||||||
Very Low |
Low |
Nominal |
High |
Very High |
Extra High |
||
PREC |
6.20 |
4.96 |
3.72 |
2.48 |
1.24 |
0.00 |
|
FLEX |
5.07 |
4.05 |
3.04 |
2.03 |
1.01 |
0.00 |
|
RESL |
7.07 |
5.65 |
4.24 |
2.83 |
1.41 |
0.00 |
|
TEAM |
5.48 |
4.38 |
3.29 |
2.19 |
1.10 |
0.00 |
|
PMAT |
7.80 |
6.24 |
4.68 |
3.12 |
1.56 |
0.00 |
SF=6.2+1.01+4.24+2.19+1.56=15.2 - факторы масштаба
E=0.91+0.01*15.2=0.14 - Множители трудоемкости
1.PERS -- квалификация персонала
2.RCPX -- надежность и сложность продукта
3.RUSE -- разработка для повторного использования
4.PDIF -- сложность платформы разработки
5.PREX -- опыт персонала
6.FCIL -- оборудование
7.SCED -- сжатие расписания
Таблица 2 - Множители трудоемкости
Оценка уровня множителя трудоемкости |
||||||||
Extra Low |
Very Low |
Low |
Nominal |
High |
Very High |
Extra High |
||
PERS |
2.12 |
1.62 |
1.26 |
1.00 |
0.83 |
0.63 |
0.5 |
|
RCPX |
0.49 |
0.60 |
0.83 |
1.00 |
1.33 |
1.91 |
2.72 |
|
RUSE |
n/a |
n/a |
0.95 |
1.00 |
1.07 |
1.15 |
1.24 |
|
PDIF |
n/a |
n/a |
0.87 |
1.00 |
1.29 |
1.81 |
2.61 |
|
PREX |
1.59 |
1.33 |
1.22 |
1.00 |
0.87 |
0.74 |
0.62 |
|
FCIL |
1.43 |
1.30 |
1.10 |
1.0 |
0.87 |
0.73 |
0.62 |
|
SCED |
n/a |
1.43 |
1.14 |
1.00 |
1.00 |
1.00 |
n/a |
Уравнения СОСОМО II для оценки номинальных значений трудоемкости имеют следующий вид:
где *SIZE -- размер продукта в KSLOC или в количестве функциональных точек без включения поправочных коэффициентов (UFP), определенном по методике 1FPUG, с последующим преобразованием в количество строк кода.
*EMi -- (effort multiplier) множители трудоемкости
*SFj -- (scale factor) факторы масштаба
*n=7 -- для предварительной оценки
*n=17 -- для детальной оценки
Калибровочные переменные А, В, С и D в модели СОСОМО II принимают следующие значения:
А = 2.94,
В = 0.91,
С= 3.67,
D= 0.28.
Множитель трудоемкости рассчитываются по формуле:
Em = 1.26*0.6*0.95*0.87*1.59*1.3*1 = 1.29
Номинальное значение трудоемкости:
PM = 2,94*20.14*1.29 = 4.18 чел/мес
Время реализации проекта:
TDEV = 3,67*4,180,28+0,2*0,01*15,2 =3,67*1,55 = 5,7 мес
3.2 Расчёт по методике CETIN
1 этап. Оценка функционального размера разрабатываемой ИС
количество вариантов использования - C;
количество типов объектов - E;
количество свойств типов объектов - Т;
количество взаимодействий между типами объектов - I;
количество типов узлов - N.
SIZE={C, E, T, I ,N}
Исходные данные:
Количество акторов системы = 3
Количество вариантов использования (Case) - C = 5
Количество типов объектов (бизнес объектов) (Entity) - Е = 16
Количество свойств типов объектов (Tool) - Т = 50;
Количество взаимодействий между типами объектов (Interaction) - I = 64;
Количество типов узлов (Node) - N = 1.
Функциональный размер:
{5,16,50,64,1}
2 этап. Оценка базовой трудоемкости разработки ППО
Sj=1/165·[C*Sj(C)+E*Sj(E)+T*Sj(T)+I*Sj(I)+N*Sj(N)],
где: Sj - трудоемкость процесса разработки с номером j в [человеко-месяц];
j - номер процесса разработки (значения от 1 до 6);
Sj(C) - норматив трудоемкости реализации одного варианта использования в процессе разработки с номером j=1,2,…,6, {[человеко-час]/[вариант использования]};
S1=1/165·[5*32,12+16*28,33+50*0+64*14,15+1*0] = 1/165 х [32.12+28.33+0+14.15+0] = 9.2
S2=1/165·[5*58,03+16*28,04+50*0+64*20,32+1*0] =
= 1/165 х [58.03+28.04+0+20.32+0] = 12.35921
S3=1/165·[5*45,42+16*61,75+50*31,35+64*37,52+1*24,02] =
= 1/165 х [227,42+988+1567,5+2401,28+24,04] = 31.56
S4=1/165·[5*31,57+16*81,51+50*50,72+64*36,11+1*0] =
= 1/165 х [157.85+1304.16+2536+2311.04]= 38.24
S5=1/165·[5*88,96+16*0+50*0+64*0+1*0] = 1/165 х [444.8+ 0 + 0 + 0 + 0] = 2.7
S6=1/165·[5*8,69+16*0+50*0+64*0+1*23,74] = 1/165 х [43.45+ 0 + 0 + 0 + 23.74] = 0.4
Sб = 94.47
Режим эксплуатации ИС К1=1,05 обработка данных в режиме реального времени
Масштаб ИС К2=1 средние ИС (от 11 до 100 пользователей с длительным ЖЦ с возможностью роста до крупных систем)
Стабильность ИС К3=1 дискретное внесение изменений
Защита от несанкционированного доступа К4=1 средняя
Защита программ и данных (на уровне операционной системы, на уровне сетевого программного обеспечения, на уровне СУБД) К5 = 1 средняя
Контрольный след операций К6=1,08 выборочное отслеживание
Отказоустойчивость К7=1 средняя
Восстанавливаемость К8= 1 средняя
Длительность обработки (время отклика) К9=1
Исходный язык разработки ИС К10=1 объектно-ориентированный (Си++ или эквивалентный)
Класс пользователя К11=1,07 средний
Требования к центральному обрабатывающему устройству (процессору) К12= 1 средняя
Требования к оперативной (основной) памяти К13=1,04 малая
Требования к внешней памяти К14=1,01 малая
Требования к локальной вычислительной сети К15 = 1,02 средние требования
Критичность ИС К16=1 организационная безопасность
Готовность К17 = 1,11 заказное (методика заказчика специфическая)
Представление данных К18=1 реляционный
3 этап. Определение значений поправочных коэффициентов
КП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 - количество человеко-часов в одном человеко-месяце
4 этап. Расчет трудоемкости с учетом поправочных коэффициентов
S1= 9.2х1,19 = 10.95
S2= 12.4х1,26 = 15.62
S3= 31.56х1,44 = 45.4
S4= 38.24х1,35 = 51.62
S5= 2.7х1,44 = 3.89
S6= 0.4х1,12 = 0.45
S = 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 - тип контракта.
10 Contract - содержит информацию о контрактах
- ID - автоинкременное поле, первичный ключ;
- Reg_num - регистрационный номер;
- Start_date - дата начала контракта;
- End_date - дата окончания контракта;
- Comment - примечание.
11 ContractLine - содержит информацию о стоимости конракта и количестве выданных сертификатов (таблица-справочник)
- ID - автоинкременное поле, первичный ключ;
- Price - стоимость;
- Количество подписей в контракте.
12 Application - заявка в удостоверяющий центр на выдачу сертификатов
- ID_worker;
- ID_center;
- ID_category.
13 SertificateDelivery - журнал выдачи сертификатов
- ID - автоинкременное поле, первичный ключ;
- Start_date - дата выдачи;
- Early_stop_date - дата досрочного прекращения действия сертификата;
- Destruction_date - отметка об уничтожении (дата)
Физическая схема базы данных представлена на рисунке 4.1.
Рисунок 4.1 - физическая схема базы данных
5. Разработка приложения с использованием Django
5.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'
TIME_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.
Для того чтобы подключить к проекту интерфейс администратора, необходимо выполнить следующие действия:
1. Добавить 'django.contrib.admin' в настройку INSTALLED_APPS.
2. Добавить четыре зависимости в список INSTALLED_APPS - django.contrib.auth,django.contrib.contenttypes, django.contrib.messages and django.contrib.sessions
3. Добавить 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. Определить, какие модели будут редактироваться через интерфейс администратора.
5. Для каждой модели необходимо создать класс ModelAdmin, который инкапсулирует настройки интерфейса администратора для конкретной модели.
6. Создать экземпляр AdminSite и добавьте в него созданные модели с соответствующими классами ModelAdmin.
7. Добавить 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 с.: ил. - (Профессиональное программирование)
2. Головатый?А.,?Каплан-Мосс?Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: СимволПлюс, 2010. - 560 с., ил.
3. Документация Django на русском языке [электронный ресурс] - Pежим доступа: https://djbook.ru/
4. Django documentation [электронный ресурс] - Режим доступа: https://docs.djangoproject.com/en/1.11/
5. Руководство Django Girls [электронный ресурс] - Режим доступа: https://tutorial.djangogirls.org/ru/
6. Тритенко А.Н. Методические рекомендации по оформлению выпускных квалификационных работ, курсовых проектов/работ для студентов очной, очнозаочной (вечерней) и заочной форм обучения. - Вологда: , 2016. - 95 с.
7. Журнал о системах электронного документооборота (СЭД) [электронный ресурс] - Режим доступа: http://ecm-journal.ru/e-sign#two
8. Постановление от 20 февраля 2012 года n 834 об использовании электронных подписей в Администрации города Вологды [электронный ресурс] - Режим доступа: http://docs.tehekspert.ru/document/438922131
Приложение 1
(справочное)
РЕЕСТР
сертификатов ключей проверки электронных подписей
сотрудников Администрации города Вологды
Таблица п.1 - форма реестра сертификатов ключей проверки электронных подписей
N п/п |
ФИО сотрудника |
Орган Администрации города Вологды |
Постановление Администрации города Вологды |
Удостоверяющий центр |
Дата выдачи сертификата |
Срок действия сертификата |
Тип токена, серийный номер |
Отметка о получении сертификата ключа проверки электронной подписи |
Дата досрочного прекращения действия сертификата |
Отметка об уничтожении ключа электронной подписи |
|
Приложение 2
(рекомендуемое)
Диаграмма Ганта
Рисунок п.1 - диаграмма Ганта
Приложение 3
(рекомендуемое)
Settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = '6%*(6juha1^jufve(+%^bahm527h&cb89%d-!00!6(97yva6r^'
DEBUG = True
ALLOWED_HOSTS = []
INSTALLED_APPS = [
'ecp.apps.EcpConfig',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'bootstrap3',
'menu'
]
MIDDLEWARE_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',
]
ROOT_URLCONF = 'mybase.urls'
TEMPLATES = [
{
'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',
],
},
},
]
WSGI_APPLICATION = 'mybase.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql', # 'django.db.backends.sqlite3',
'NAME': 'postgres', # 'mydatabase',
'USER': 'student',
'PASSWORD': 'student',
'HOST': 'localhost',
'PORT': '5432',
}
}
AUTH_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',
},
]
LANGUAGE_CODE = 'RU-ru'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
ПРИЛОЖЕНИЕ 4
(рекомендуемое)
Модуль Models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
from django import forms
class Department (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"отделы"
class 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)
snils = models.CharField(u"СНИЛС", max_length=30, default="")
birth_date = models.DateField(u"дата рождения")
phone = models.CharField(u"телефон", max_length=30)
def __unicode__(self):
return self.fio
class Meta:
verbose_name = u"работник"
verbose_name_plural = u"работники"
class Sertificate(models.Model):
worker = models.ForeignKey(
Worker,on_delete=models.CASCADE,verbose_name = u"работник"
) start_date = models.DateTimeField(u"дата начала сертификата")
end_date = models.DateTimeField(u"дата конца сертификата")
serial_number = models.CharField(u"серийный номер", max_length=50)
def __unicode__(self):
return self.serial_number
class Meta:
verbose_name = u"сертификат"
verbose_name_plural = u"сертификаты"
class WorkerMPA(models.Model):
worker = models.ForeignKey(Worker,on_delete=models.CASCADE)
mpa = models.ForeignKey("MPA", on_delete=models.CASCADE)
class MPA(models.Model):
name_mpa = models.CharField(u"название МПА", max_length=100)
type_mpa = models.CharField(u"тип МПА", max_length=100)
date_mpa = models.DateField(u"дата МПА")
num_mpa = models.CharField(u"номер МПА", max_length=100)
def __unicode__(self):
return self.name_mpa
class Meta:
verbose_name = u"муниципальный правовой акт"
verbose_name_plural = u"муниципальные правовые акты"
class OID(models.Model):
name_oid = models.CharField(u"название ОИД", max_length=100)
cod_oid = models.CharField(u"код ОИД", max_length=100)
comment = models.TextField(u"примечание",
null=True,blank=True)
def __unicode__(self):
return self.name_oid
class Meta:
verbose_name = u"ОИД"
class OIDSertCategory(models.Model):
oid = models.ForeignKey(OID,on_delete=models.CASCADE)
sertificatecategory = models.ForeignKey(
"SertificateCategory",on_delete=models.CASCADE
)
class SertificateCategory(models.Model):
name_category = models.CharField(u"название категории", max_length=100)
def __unicode__(self):
return self.name_category
class Meta:
verbose_name = u"категория сертификата"
verbose_name_plural = u"категории сертификатов"
class SertCategoryWorkerMPA(models.Model):
workermpa = models.ForeignKey(WorkerMPA,on_delete=models.CASCADE)
sertificatecategory = models.ForeignKey(
SertificateCategory,on_delete=models.CASCADE
)
class Token(models.Model):
ETOKEN = u'eToken'
RUTOKEN = u'ruToken'
TOKEN_CHOICES = (
(ETOKEN, u'eToken'),
(RUTOKEN, u'ruToken'),
)
type_token = models.CharField(u"тип", max_length=20, choices=TOKEN_CHOICES)
reg_num = models.CharField(u"регистрационный номер", max_length=20)
def __unicode__(self):
return self.type_token
class Meta:
verbose_name = u"token"
verbose_name_plural = u"token'ы"
class VerificationCenter (models.Model):
name = models.CharField(u"название", max_length=20)
comment = models.TextField(u"примечание", null=True,
blank=True)
def __unicode__(self):
return self.name
class Meta:
verbose_name = u"удостоверяющий центр"
verbose_name_plural = u"удостоверяющие центры"
class ContractType (models.Model):
name = models.CharField(u"тип контракта", max_length=100)
def __unicode__(self):
return self.name
class Meta:
verbose_name = u"тип контракта"
verbose_name_plural = u"типы контрактов"
class Contract (models.Model):
verificationcenter = models.ForeignKey (
VerificationCenter, on_delete=models.CASCADE,
verbose_name = u"удостоверяющий центр", null=True
)
contracttype = models.ForeignKey (ContractType, on_delete=models.CASCADE,
verbose_name = u"тип контракта")
reg_num = models.CharField(u"регистрационный номер", max_length=20)
start_date = models.DateField(u"дата начала контракта")
end_date = models.DateField(u"дата окончания контракта")
comment = models.TextField(u"примечание", null=True,blank=True)
def __unicode__(self):
return self.reg_num
class Meta:
verbose_name = u"контракт"
verbose_name_plural = u"контракты"
class ContractLine (models.Model):
contract = models.ForeignKey ("Contract", on_delete=models.CASCADE)
price = models.FloatField ("Цена")
count_sert = models.PositiveSmallIntegerField("количество")
class Application (models.Model):
worker = models.ForeignKey ("Worker", on_delete=models.CASCADE,verbose_name = u"работник")
sertificatecategory = models.ForeignKey ("Sertificatecategory",
on_delete=models.CASCADE,verbose_name = u"категория сертификата")
verificationcenter = models.ForeignKey ("Verificationcenter", on_delete=models.CASCADE,
verbose_name = u"удостоверяющий центр")
date = models.DateField(u"дата")
class Meta:
verbose_name = u"заявка"
verbose_name_plural = u"заявки"
class SertificateDelivery (models.Model):
worker = models.ForeignKey ("Worker", on_delete=models.CASCADE,verbose_name = u"работник")
delivery_date = models.DateField(u"дата выдачи сертификата")
early_stop_date = models.DateField(u"дата досрочного прекращения")
destruction_date = models.DateField(u"отметка об уничтожении")
token = models.ForeignKey ("Token", on_delete=models.CASCADE)
contract= models.ForeignKey ("Contract", on_delete=models.CASCADE,verbose_name = u"контракт")
def delivery_d(self):
return self.delivery_date
class Meta:
verbose_name = u"выдача сертификатов"
verbose_name_plural = u"выдача сертификатов"
Размещено на Allbest.ru
Подобные документы
Разработка базы данных для информационной системы "Библиотека". Системный анализ, инфологическое, даталогическое и физическое проектирование. Программирование бизнес-логики, разработка клиентского приложения. Создание web-приложения, web-доступ.
курсовая работа [3,3 M], добавлен 15.09.2014Разработка информационной системы ВУЗа с использованием методики объектно-ориентированного моделирования UML. Анализ требований к системе. Концептуальная (содержательная) модель. Диаграмма компонентов и классов. Программная реализация приложения.
курсовая работа [797,7 K], добавлен 16.04.2014Понятие, законодательное регулирование и виды электронных подписей. Разработка структурной схемы приложения и базы данных. Создание диаграммы прецедентов и классов. Проектирование интерфейса программы. Анализ руководства пользователя web-приложения.
дипломная работа [869,8 K], добавлен 12.08.2017Django — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Архитектура и основные компоненты приложения. Главные компоненты среды разработки Django. Некоторые возможности и взаимосвязь компонентов фреймворка.
реферат [23,7 K], добавлен 18.01.2015Структура лизинговой компании. Создание функциональной и информационной модели. Моделирование бизнес-процесса "Выполнить заказ клиента". Требование к техническому обеспечению и надежности системы. Состав ИБД лизинговой компании ООО "Лизинг–Трейд".
курсовая работа [1,4 M], добавлен 29.06.2014Проектирование информационной системы отслеживания финансовой стороны работы автосервиса. Спецификация требований к системе. Проектирование прецедентов, определение классов приложения. Описание основных форм проектируемого интерфейса приложения.
курсовая работа [865,9 K], добавлен 12.10.2014Особенности разработки информационных систем с использованием унифицированного языка моделирования UML. Основные этапы рационального унифицированного процесса разработки информационных систем с примерами и иллюстрациями. Реализация информационной системы.
методичка [950,2 K], добавлен 23.01.2014Проектирование физической и логической моделей удаленной базы данных для АЗС. Разработка базы данных в СУБД Firebird с помощью утилиты IBExpert. Создание клиентского приложения для Windows с использованием клиент-серверной технологии в среде C++ Builder.
курсовая работа [3,9 M], добавлен 18.01.2017Анализ моделируемого приложения и постановка задачи. Диаграмма прецедентов, деятельности объектов и состояния классов. Разработка приложения-игры, выбор языка программирования и среды для разработки проекта, интерфейс приложения и ресурсы проекта.
курсовая работа [308,5 K], добавлен 14.10.2011Анализ основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области. Понятие и механизм инкапсуляции. Фиксирование информационной работы отеля. Диаграмма классов. Реализация на языке Python.
курсовая работа [227,6 K], добавлен 14.05.2017