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

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.2017

  • Django — свободный фреймворк для веб-приложений на языке 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

  • Анализ основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области. Понятие и механизм инкапсуляции. Фиксирование информационной работы отеля. Диаграмма классов. Реализация на языке Python.

    курсовая работа [227,6 K], добавлен 14.05.2017

  • Анализ моделируемого приложения и постановка задачи. Диаграмма прецедентов, деятельности объектов и состояния классов. Разработка приложения-игры, выбор языка программирования и среды для разработки проекта, интерфейс приложения и ресурсы проекта.

    курсовая работа [308,5 K], добавлен 14.10.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.