Введение
1. Анализ требований к системе
1.1 Анализ предметной области
.2 Use case-диаграмма
2. Обзор средств разработки
3. Оценка трудоёмкости и сроков разработки проекта с использованием языка python по методикам cetin и cocomo-ii
3.1 Расчёт по методике COCOMO-II
.2 Расчёт по методике CETIN
4. Проектирование информационной системы
5. Разработка приложения с использованием django
5.1 Создание приложения Django
.2 Создание моделей
.3 Создание представлений
.4 Создание шаблонов
6. Тестирование приложения
Заключение
Список использованных источников
Приложения
В большинстве информационных систем используется электронная подпись. Электронная подпись (ЭП) - это последовательность символов, полученная в результате криптографического преобразования определенного объема информации по математическому алгоритму с использованием ключей, каждый символ которой имеет неизменяемое соотношение с данным объемом информации.
Электронная подпись выполняет следующие функции:
- Идентифицирует автора;
- Позволяет определить неизменность документа с момента подписания;
- Защищает документ от подделки.
В России используется три вида электронной подписи:
- Простая;
- Неквалифицированная;
- Квалифицированная.
На сегодняшний день самые распространенные сферы использования электронной подписи:
- Электронный документооборот. В этой сфере ЭП используется в качестве средства визирования документов;
- Электронная отчетность. ЭП придает отчетности юридическую значимость;
- Работа на Портале госуслуг. [7]
В связи с широким распространением электронных подписей а также большим количеством бумажной работы при выдаче стал актуальным вопрос автоматизации их учета. Целью выпускной квалификационной работы является создание информационной системы, позволяющей ускорить и упростить ведение документации при выдаче электронных подписей. На текущий момент учет электронных подписей ведется без использования средств автоматизации. В связи с этим было принято решение о необходимости разработки информационной системы. Система должна обеспечивать возможность внесения сведений о приобретении сертификатов на электронные подписи для сотрудников предприятия.
python информационный приложение django
1. Анализ требований к системе
Процедура получения электронной подписи происходит в следующем порядке:
. Организация направляет заявку в удостоверяющий центр. В заявке содержится список работников, которым необходимо выдать электронные подписи, а также данные об этих работниках;
. Заключается контракт между удостоверяющим центром и организацией;
. Удостоверяющий центр выдает сертификаты работникам. Сертификат электронной подписи представляет собой документ, который подтверждает принадлежность электронной подписи её владельцу;
. Факт выдачи ЭП работнику регистрируется в журнале (реестре).
Реестр содержит следующие обязательные сведения о сертификатах ключей проверки электронных подписей уполномоченных сотрудников Администрации города Вологды, наделенных правом электронной подписи от имени Администрации города Вологды включающие:
. Фамилию, имя и отчество сотрудника;
. Название органа Администрации города Вологды, сотрудник которого наделен правом ЭП;
. Реквизиты постановления Администрации города Вологды, в соответствии с которым сотрудник наделен правом электронной подписи;
. Название удостоверяющего центра, в котором проводилась выдача сертификата ключа проверки электронной подписи сотруднику;
. Дату выдачи сертификата ключа проверки электронной подписи;
. Дату начала и окончания срока действия сертификата ключа проверки электронной подписи;
. Носитель ключевой информации (Токен), на который производилась запись ключа электронной подписи, с указанием серийного номера носителя;
. Отметку о получении Уполномоченным сотрудником сертификата ключа проверки электронной подписи;
. Дату досрочного прекращения действия сертификата ключа проверки электронной подписи;
. Отметку об уничтожении ключа электронной подписи. [8]
Выделим двух акторов системы:
. Лицо, ответственное за закупочную деятельность
. Лицо, ответственное за ведение реестра
Use case диаграмма представлена на рисунке 1.1
Рисунок 1.1 - use case-диаграмма системы
В качестве средств разработки заказчиком были рекомендованы Python, Django, PostgreSQL. Выбор обусловлен необходимостью интеграции разрабатываемой системы в уже существующую на предприятии.
Рассмотрим плюсы Django, отличающие его от других Content Management Frameworks.
Первое и, пожалуй, самое главное отличие - язык программирования, на котором выполнена CMF. В данном случае это Python. Этот язык программирования появился относительно недавно (в 1990 году), но это нисколько не помешало ему стать одним из самых популярных и востребованных на сегодняшний день. Python использует Yandex и даже такой гигант, как Google. Причин для этого несколько.
Во-первых, на выбор в пользу Python влияет лицензия, которая регламентирует использование и распространение этого языка. Она позволяет использовать модули, написанные на Python, в коммерческих приложениях.
Второе, чем привлекает Python - простота разработки. Исследования показывают, что написание программ на данном языке отнимает в четыре раза меньше времени, чем написание аналогичных программ на других языках программирования.
Третье достоинство этого языка программирования - совместимость с большинством существующих платформ.[2]выступает языком программирования для нескольких Фреймворков (Фреймворк - программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта). Одним из них и является 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, и их поддержка, становится гораздо проще и осуществляется быстрее, чем разработка аналогичных проектов на других платформах.является олицетворением языка, который он использует: интуитивно понятный, позволяющий быстро и качественно создать код, более распространён в глобальной сети (используется в том числе Google). Плюс ко всему в комплекте с Django идёт очень хорошая и подробная документация, в которой можно найти ответ на любой интересующий вопрос. [3]- свободная объектно-реляционная система управления базами данных. Сильными сторонами PostgreSQL считаются:
высокопроизводительные и надёжные механизмы транзакций и репликации;
расширяемая система встроенных языков программирования;
наследование;
легкая расширяемость.
3. Оценка трудоёмкости и сроков разработки проекта с использованием языка Python по методикам CETIN и COCOMO-II
Примем наиболее вероятное количество строк на одну невыровненную ФТ для языка Python за 60.
Размер проекта:
*34=2040 строк
Факторы масштаба
В методике используются пять факторов масштаба SFi, которые определяются следующими характеристиками проекта:
.PREC - прецедентность, наличие у разработчика опыта аналогичных разработок
.FLEX - гибкость процесса разработки продукта
.RESL - архитектура и разрешение рисков
.TEAM - сработанность команды
.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 - Множители трудоемкости
.PERS - квалификация персонала
.RCPX - надежность и сложность продукта
.RUSE - разработка для повторного использования
.PDIF - сложность платформы разработки
.PREX - опыт персонала
.FCIL - оборудование
.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, = 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 чел/мес
Время реализации проекта:
= 3,67*4,180,28+0,2*0,01*15,2 =3,67*1,55 = 5,7 мес
этап. Оценка функционального размера разрабатываемой ИС
количество вариантов использования - 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}
этап. Оценка базовой трудоемкости разработки ППО
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, {[человеко-час]/[вариант использования]};=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=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=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=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=1/165·[5*88,96+16*0+50*0+64*0+1*0] = 1/165 х [444.8+ 0 + 0 + 0 + 0] = 2.7=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б = 94.47
Режим эксплуатации ИС К1=1,05 обработка данных в режиме реального времени
Масштаб ИС К2=1 средние ИС (от 11 до 100 пользователей с длительным ЖЦ с возможностью роста до крупных систем)
Стабильность ИС К3=1 дискретное внесение изменений
Защита от несанкционированного доступа К4=1 средняя
Защита программ и данных (на уровне операционной системы, на уровне сетевого программного обеспечения, на уровне СУБД) К5 = 1 средняя
Контрольный след операций К6=1,08 выборочное отслеживание
Отказоустойчивость К7=1 средняя
Восстанавливаемость К8= 1 средняя
Длительность обработки (время отклика) К9=1