Проектирование распределенной информационной системы фильтрации нежелательной электронной почты
Характеристика языка UML. Визуальное проектирование модели в программе Enterprise Architect. Сведения об объектно-ориентированном программировании на языке C++. Проектирование модели информационной системы фильтрации нежелательной электронной почты.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.05.2023 |
Размер файла | 397,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
"Тюменский индустриальный университет"
Институт сервиса и отраслевого управления
Кафедра бизнес - информатики и математики
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОМУ ПРОЕКТУ
По дисциплине "Объектно-ориентированный анализ и программирование"
На тему "Проектирование распределенной информационной системы фильтрации нежелательной электронной почты"
Выполнил: Андреев Матвей Андреевич
студент группы МКМБ-20-1
Андреев Матвей Андреевич
Проверил:
Оценка:
Тюмень
2023
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. АНАЛИЗ ИМЕЮЩИХСЯ СРЕДСТВ ПРОЕКТИРОВАНИЯ КЛАССОВ
1.1 Общая характеристика языка UML
1.2 Визуальное проектирование модели в программе Enterprise Architect
1.3 Основные сведения об объектно-ориентированном программировании на языке C++
2. ПРОЕКТИРОВАНИЕ МОДЕЛИ ИНФОРМАЦИОННОЙ СИСТЕМЫ ФИЛЬТРАЦИИ НЕЖЕЛАТЕЛЬНОЙ ЭЛЕКТРОННОЙ ПОЧТЫ
2.1 Анализ предметной области «система фильтрации нежелательной электронной почты»
2.2 Визуальное проектирование системы с помощью языка UML
3. РАЗРАБОТКА И ОПИСАНИЕ КЛАССОВ НА ЯЗЫКЕ С++
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
ВВЕДЕНИЕ
Современный мир не стоит на месте. Предприниматели пытаются автоматизировать работу с клиентами в своих фирмах, ведь не выходя из дома человек может получить всю необходимую информацию, подать заявление или сделать что-то ещё, что может удовлетворить его потребность. Для этого начали появляться информационные системы, которые перенимают миллионы рутинных дел на себя и способствуют ускорению процессов получения нужной информации.
Актуальность исследования определяется развитием информационных технологий в области информационных систем, а также их внедрение в сферу человеческой деятельности и использование на практике для облегчения работы.
Объект исследования - предметная область проектирования информационной системы.
Предмет исследования - программная реализация информационной системы туристической фирмы.
Цель исследования - разработка классов информационной системы автоматизированной туристической фирмы на языке виртуального проектирования UML и на языке программирования C++.
Задачи исследования:
· Изучить средства для проектирования классов;
· Проанализировать предметную область «Туристическая фирма»;
· Спроектировать классы информационной системы;
· Сгенерировать из спроектированных классов код на языке C++.
Результатом курсового проекта является спроектированная UML-схема и код классов на языке C++.
1. АНАЛИЗ ИМЕЮЩИХСЯ СРЕДСТВ ПРОЕКТИРОВАНИЯ КЛАССОВ
1.1 Общая характеристика языка UML
UML (unified modeling language) - это универсальный язык визуального моделирования систем, который помогает в описании и проектировании программных систем, в особенности систем, построенных с использованием объектно-ориентированных технологий.
UML позволяет моделировать любые системы, начиная от информационных систем масштаба предприятия, заканчивая Web-приложениями и встроенными системами реального времени. Язык считается богатым выразительными средствами для представления системы со всех точек зрения, относящихся к её разработке и внедрению, но и при этом он прост для понимания и применения.
UML - это язык для визуализации, специфицирования, конструирования и документирования артефактов программных систем.
Язык представляет правила комбинирования и словарь, входящих в него слов в целях коммуникации. Словарь и правила такого языка, как UML, говорят о том, как создавать и читать хорошо согласованные модели, но не говорят о том, какие именно модели в каких случаях требуется создавать. Это задача всего процесса разработки программного обеспечения.
Главная задача UML - моделирование и разработка программных систем. Наиболее эффективно его применение в следующих областях:
· Корпоративные информационные системы;
· Банковские и финансовые услуги;
· Телекоммуникации;
· Транспорт;
· Оборона, авиация и космонавтика;
· Розничная торговля;
· Медицинская электроника;
· Наука;
· Распределённые Web-сервисы.
Применение UML не ограничивается моделированием программного обеспечения. Его богатство и выразительность позволяют вести работу и над непрограммными системами: продумывать документооборот в юридической системы, структуру и функционирование системы здравоохранения, системы управления воздушным движением, а также проектировать аппаратные средства.
1.2 Визуальное проектирование модели в программе Enterprise Architect
проектирование информационная электронная почта
Для дальнейшего проектирования модели будет применяться UML, а в качестве инструмента, обеспечивающего использование языка, будет программа Enterprise Architect от компании Sparx Systems.
Enterprise Architect - это продукт для работы с документами, файлами и другими программными элементами, имеющими язык программирования UML. Эта программа создана с целью модернизировать систему, необходимую для разработки и управления различными проектами, построения эффективных моделей бизнес-планов и другое.
Программное обеспечение имеет понятный интерфейс и богатый функционал, который можно применять в различных сферах деятельности.
К достоинствам Enterprise Architect относят тот факт, что графическое изображение данных в виде геометрических фигур и линейных отрезков связано с программным кодом, а также наличие специальных механизмов для редактирования из окна приложения и генерацию кода с настройками.
Главные функции программы:
· Создание различных моделей с широким спектром применения и языком программирования;
· Кодогенерация;
· Превращение элементов в документы;
· Обеспечение тесной взаимосвязи между отдельными элементами.
Отличительные особенности Enterprise Architect:
· Высокая скорость и стабильность;
· Возможность симулировать бизнес-процессы;
· Постоянное отслеживание событий;
· Высококачественное моделирование.
Генерация кода в этом программном обеспечении осуществляется почти на всех современных языках программирования, наиболее известные и используемые из которых C++, C#, Java, Delphi.
Таким образом, Enterprise Architect - это многофункциональный инструмент, поддерживающий все циклы процесса разработки и обеспечивающий полную трассировку, начиная от создания проекта и заканчивая его размещением и поддержкой.
1.3 Основные сведения об объектно-ориентированном программировании на языке C++
В 1980 году Бьерн Страуструп в AT&T Bell Labs стал разрабатывать расширение языка С под условным названием C++. В него вводились те или иные возможности с целью сделать более удобной работу конкретных людей и групп. Рождением языка можно считать выход в 1985 году книги Страуструпа.
Основные цели разработки:
· Обеспечить поддержку абстрактных типов данных;
· Предоставить средства для объектно-ориентрованного программирования;
· Улучшить существующие конструкции языка C.
Основные принципы разработки:
· Использование классов не должно приводить к более медленному выполнению программ по сравнению с программами без классов;
· Программы на C рассматриваются как подмножество программ на C++;
· Не должна снизиться эффективность выполнения программ.
У C++ как и у любого есть свои достоинства и недостатки.
Достоинства:
· Кросс-платформенность - разработка программ для самых различных платформ и систем;
· Возможность работы на низком уровне с памятью, адресами, портами;
· Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.
Недостатки:
· Плохая поддержка модульности. Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию, при подключении большого количества модулей;
· Недостаток информации о типах данных во время компиляции;
· Язык является сложным для изучения и для компиляции;
· Некоторые преобразования типов не интуитивны;
· Препроцессор очень примитивен. С его помощью нельзя (или тяжело) осуществлять некоторые задачи метапрограммирования. Он часто приводит к ошибкам и требует много действий по обходу потенциальных проблем.
Объектно-ориентированное программирование строится на трех основополагающих принципах: инкапсуляция, полиморфизм и наследование.
Инкапсуляция - это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации.
Наследование представляет собой способность производить новый класс из существующего базового класса. Производный класс - это новый класс, а базовый класс - существующий класс. Порождение одного класс из другого (базового класса), позволяет производному классу наследовать элементы базового класса.
Полиморфный объект представляет собой такой объект, который может изменять форму во время выполнения программы. Реализуется с помощью наследования классов и виртуальных функций.
Ключевым термином для объектно-ориентированного программирования является «класс». «Класс» - это шаблон поведения объектов определенного типа с заданными параметрами, определяющими состояние.
Таким образом, объектно-ориентированное программирование на C++ остаётся актуальным благодаря удобству, кросс-платформенности и другим свойствам, которые держат этот язык в рейтинге.
2. ПРОЕКТИРОВАНИЕ РАСПРЕДЕЛЕННОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ ФИЛЬТРАЦИИ НЕЖЕЛАТЕЛЬНОЙ ЭЛЕКТРОННОЙ ПОЧТЫ
2.1 Анализ предметной области «Система фильтрации нежелательной электронной почты»
Электронная почта (e-mail - electric mail) - это средство обмена сообщениями при помощи компьютерных сетей
Система фильтрации информации - это система, которая удаляет избыточную или нежелательную информацию из информационного потока с использованием (полу) автоматизированных или компьютеризированных методов перед представлением пользователю-человеку. Его основной целью является управление информационной перегрузкой и увеличение семантического отношения сигнал/шум.
Нежелательная электронная почта(спам) - это разные виды сообщений, которые отправляются с некоторой периодичностью на почтовый ящик пользователю, соответственно засоряя ее. Часто спам сообщения мешают найти нужное письмо в электронном ящике, что отнимает лишние силы пользователя. Так же спамом может быть сообщение от мошенников или других злоумышленников, желающих украсть данные компании/пользователя.
Спам сегодня - это глобальная проблема, терзающая почти каждого пользователя интернета, компанию. Так как почти каждый человек или компания имеют электронную почту. Частые рекламные сообщения или сообщения злоумышленников нарушают спокойствие людей, угрожают безопасности личных данных. Поэтому так важны информационные технологии, которые помогают избавиться от данной проблемы.
Разработка и внедрение информационной системы фильтрации нежелательных сообщений поспособствует сокращению обманутых пользователей, а также повысит уровень безопасности интернета.
Информационная система фильтрации нежелательных сообщений направлена решать такие задачи как:
· Автоматизация обработки и фильтрации сообщений в электронном ящике;
· Отсеивание нежелательной электронной почты;
Обеспечив решение этих задач, информационная система повысит безопасность данных пользователя и уменьшит количество электронных сообщений на почте, что позволит легче искать нужную информацию, сократит количество обманутых пользователей.
2.2 Визуальное проектирование системы с помощью языка UML
На первом этапе создания модели информационной системы с помощью кнопки Class, которая находится на панели Class, я создал класс «mail», а к нему добавил методы, представленный на рисунке 1.
Рисунок 1. Класс "mail"
На следующем этапе я создал с помощью кнопки Class ещё класс с названием «Message», а к нему добавил методы, представленные на рисунке 2.
Рисунок 2. Класс "Message"
На следующем этапе мы создали класс «NaiveBayesClassfier» с атрибутами и методами, которые представлены на рисунке 4.
Рисунок 4. Класс " NaiveBayesClassfier "
3. РАЗРАБОТКА И ОПИСАНИЕ КЛАССОВ НА ЯЗЫКЕ С++
Исходя из возможностей программы Enterprise Architect, я разработал схему классов информационной модели системы фильтрации нежелательной электронной почты на языке UML и реализовал их работу на языке C++.
3.1 Задача классификации.
Для того чтобы определить является ли полученное письмо спамом или нет используется классификатор.
Задача классификации - это задача отнесения объекта к одному из заранее определенных классов на основании его категориальных признаков. В нашем случае решаем задачу бинарной классификации, где присутствуют два класса - спам, не спам.
3.2 Наивный Байесовский классификатор
Наивный байесовский классификатор - это простой вероятностный классификатор, основанный на применении теоремы Байеса со строгими (наивными) предположениями о независимости.
В зависимости от точной природы вероятностной модели, наивные байесовские классификаторы могут обучаться очень эффективно. Во многих практических приложениях для оценки параметров для наивных байесовых моделей используют метод максимального правдоподобия; другими словами, можно работать с наивной байесовской моделью, не веря в байесовскую вероятность и не используя байесовские методы.
Несмотря на наивный вид и, несомненно, очень упрощенные условия, наивные байесовские классификаторы часто работают намного лучше нейронных сетей во многих сложных жизненных ситуациях.
Достоинством наивного байесовского классификатора является малое количество данных, необходимых для обучения, оценки параметров и классификации.
Рассмотрим простой пример применения наивного байесовского классификатора к задаче классификации документов по их содержимому, а именно к классификации электронных писем на два класса -- спам (S) и не-спам (¬S).
Будем считать, что документы выбраны из нескольких классов документов, которые могут быть представлены множеством слов с (независимой) вероятностью, что i-е слово данного документа встречается в документе класса C:
(Для этой задачи предположим, что вероятность встречи слова в документе независима от длины документа и все документы имеют одинаковую длину.)
Тогда вероятность для данного документа D и класса C
Вопрос, на который мы хотим ответить: «какова вероятность того, что данный документ D принадлежит классу C?». Другими словами, чему равна p(C D)?
По теореме Байеса
Предположим, что мы имеем только два класса: S и ¬S (напр. спам и не-спам). Тогда
Поделив одно на другое получим отношение правдоподобия
или (для логарифма правдоподобия)
Действительная вероятность ?(???) может быть посчитана из
основываясь на наблюдении, что
.
Для этого необходимо из функции правдоподобия сформировать вероятностное пространство
Наконец, документ может быть классифицирован сравнением логарифма правдоподобия с некоторым порогом h (например h=0). Перед нами спам, если
3.3 Векторизация
На вход подается заранее обработанный и векторизованный текст сообщения. Для векторизации используется метод Tfi-Idf который состоит из двух компонентов: Term Frequency (частотность слова в документе) и Inverse Document Frequency (инверсия частоты документа). Компоненты, считаются следующим образом:
= сколько раз встречается токен в i-ом документе.
p = количество документов, в которых встречается токен.
P = общее количеств документов.
= общее количество токенов в i-ом документ.
В результате получим список важных слов и их частоту.
3.4 Метрика
Для обучения наивного Байесовского классификатора использовалась выборка из 360 записей. Из них 163 спам-письма и 197 не спам. Тестовая выборка составила 250 записей из них 121 спам, 129 не спам.
На этих данных проводили метрику. Для определения точности модели использовался язык программирования Python и библиотека Scikit-learn. В качестве метрики использовался встроенный метод accuracy
Допустим, мы хотим оценить работу спам-фильтра почты. У нас есть 100 не-спам писем, 90 из которых наш классификатор определил верно (True Negative = 90, False Positive = 10), и 10 спам-писем, 5 из которых классификатор также определил верно (True Positive = 5, False Negative = 5).
3.5 Описание работы классов
В приложении имеются три класса. Класс mail - имеющий поля SentMessages(Функция имитирующая создание и отправку сообщений), domen(домен почтового адреса), Name(имя электронного адреса). Класс имеет три встроенных метода:
· createMessage - создание объекта класса Message
· mail - конструктор
· SentMessage - имитация отправки сообщения
Класс Message - имеющий поля reciepient(получатель), text(текст письма), topic(заголовок\тема письма). Класс имеет два встроенных метода:
Message - конструктор класса.
Cheak_Message - метод проверяющий письмо на спам, используя классификатор.
Класс NaiveBayesClassifier - класс имеет два поля classes(выявленные классы 1\0 - спам или нет), attributesPerClass(параметры влияющие на классификацию). В классе реализовано два метода:
NaiveBayesClassifier - конструктор класса.
Predict - метод предсказывающий класс объекта, используя обучающую выборку.
ЗАКЛЮЧЕНИЕ
В результате исследования литературных источников, материалов глобальной сети интернет, а также проведённого моделирования на языке UML, мы получили информационную систему фильтрации нежелательной электронной почты.
Итоги курсового проектирования позволяют заключить, что цель работы достигнута, а поставленные задачи решены, классификатор исправно работает. Перспективы дальнейшей работы могут заключаться в разработке работающей программе на основе нашей информационной системы.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Анализ программного средства [Журнал] / авт. Алексеева К. Ю.. - Самара : [б.н.], 2018 г..
2. Введение в UML [Раздел книги] // Язык UML. Руководство пользователя / авт. книги Г. Буч Д. Рамбо, И. Якобсон. - [б.м.] : Pearson Education, 2005.
3. Объектно-ориентированное программирование / авт. Радченко Г. И. // Объектно-ориентированное программирование. Язык C++. - Челябинск : Издательский центр ЮУрГУ, 2013 г..
4.Наивный Байесовский классификатор. https://cse.engineering.nyu.edu/~mleung/FRE7851/f07/naiveBayesianClassifier.pdf
https://logic.pdmi.ras.ru/~sergey/teaching/mlstc12/sem01-naivebayes.pdf
5.Векторизация текста.
https://cyberleninka.ru/article/n/vektorizatsiya-teksta-s-ispolzovaniem-metodov-intellektualnogo-analiza-dannyh/viewer
https://jaketae.github.io/study/tf-idf/
https://medium.com/analytics-vidhya/nlp-feature-selection-using-tf-idf-db2f9eb484fb
ПРИЛОЖЕНИЕ
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;
class mail {
string domen = "@matvey.mail.ru";
string Name;
vector<Message> _SentMessages;
mail(string Name,vector<Message> _SentMessages) {
Name = this->Name+domen;
_SentMessages = this->_SentMessages;
}
void createMessage(string text, string recipient, string topic) {
Message _NewMessage(text, recipient, topic);
SentMessage(_NewMessage);
}
void SentMessage(Message _Message ) {
_SentMessages.push_back(_Message);
bool CHEAK= _Message.cheak_Message(_Message.text);
if (CHEAK==1) {
cout << "не спам!!!!";
}
else {
cout << "СПАММ!!!!";
}
}
};
class Message{
public: string text; string recipient;string topic;
Message(string text,string recipient,string topic) {
text = this->text;
recipient = this->recipient;
topic = this->topic;
}
public :int cheak_Message(string MESSEGE) {
return mymodel.predict(MESSEGE});
}
};
class NaiveBayesClassifer
{
private:
unordered_map<int, double> classes;
unordered_map<int, unordered_map<int, double>> attributesPerClass;
public:
NaiveBayesClassifer(vector<vector<int>>& data, int DimSize)
{
for (auto entry : data)
{
if (classes.find(entry[0]) == classes.end())
{
classes[entry[0]] = 1;
unordered_map<int, double> pxc;
attributesPerClass[entry[0]] = pxc;
}
else{
classes[entry[0]] += 1;
}
for (int k = 1; k <= DimSize; k++)
{
if (attributesPerClass[entry[0]].find(entry[k]) == attributesPerClass[entry[0]].end()) attributesPerClass[entry[0]][entry[k]] = 1;
attributesPerClass[entry[0]][entry[k]] += 1;
}
}
// calculate probility per class and per attribute
for (auto seg : attributesPerClass)
{
cout << " -- -- -- Class " << seg.first << " -- -- -- " << endl;
for (auto entry : seg.second)
{
entry.second /= classes[seg.first];
cout << "Attribute P(x = " << entry.first << " | C = " << seg.first << ") = " << entry.second << endl;
}
classes[seg.first] /= data.size();
cout << "Class P(C = " << seg.first << ") = " << classes[seg.first] << endl;
}
}
// predict class with attributes vector< attribute id>
int predict(vector<int> attributes)
{
int maxcid = -1;
double maxp = 0;
for (auto cls : classes)
{
double pCx = cls.second;
cout << cls.second<< "--< Sec";
for (int i = 0; i < attributes.size(); i++) pCx *= attributesPerClass[cls.first][attributes[i]];
if (pCx > maxp)
{
maxp = pCx;
maxcid = cls.first;
}
}
cout << "Predict Class : " << maxcid << " P(C | x) = " << maxp << endl;
return maxcid;
}
};
void populateData(vector<vector<int>>& data, unordered_map<string, int>& classmap, unordered_map<string, int>& attrimap,string c, string a1, string a2, int K)
{
vector<int> apair = { classmap[c],attrimap[a1], attrimap[a2] };
vector<vector<int>> newarr(K, apair);
data.insert(data.end(), newarr.begin(), newarr.end());
}
Размещено на Allbest.ru
Подобные документы
Сущность понятия электронной почты, ее возможности в современной сети Интернет. Основные угрозы, мешающие работе этой формы электронной коммуникации. Особенности способов информационной защиты, принципы корректного использования электронной почты.
контрольная работа [20,0 K], добавлен 28.12.2012Разработка и обоснование структуры проектируемой компьютерной сети на предприятии. Абсолютные адреса подсети и требуемое коммутационное оборудование. Описание протоколов передачи и получения электронной почты. Программное обеспечение клиента и сервера.
курсовая работа [579,3 K], добавлен 19.10.2011Создание модели информационной системы оптовой базы с помощью средства ModelMaker. Диаграммы последовательности, диаграмма классов, создание предварительного модуля проекта на языке Object Pascal. Документирование информационной системы оптовой базы.
курсовая работа [516,4 K], добавлен 01.06.2016Общие характеристики и стандарты электронной почты. Почтовые программы, регистрация почтовых ящиков, этикет, безопасность и технология функционирования электронной почты. Получение и отправка сообщений, адресная книга и процедура работы с вложениями.
курсовая работа [704,1 K], добавлен 26.08.2010История появления электронной почты как технологии и сервиса по пересылке электронных сообщений между пользователями компьютерной сети. Система организации почтовых адресов. Принцип работы электронной почты, ее основные преимущества и недостатки.
презентация [842,6 K], добавлен 03.10.2016Понятие электронной почты. Сравнительная характеристика почтовых систем и оценка эффективности. Обучение персонала использованию электронной почты. Защита персональных данных. Преступления в сфере компьютерной деятельности. Дистанционное обучение.
дипломная работа [77,6 K], добавлен 23.06.2012Базовые понятия систем электронной почты. Протокол обмена электронной почтой. Релеи, маршрутизация почты. Основные угрозы почтовой службы. Безопасность почтового сервера. Защита от вредоносного программного обеспечения. Средства динамического скрининга.
курсовая работа [2,3 M], добавлен 28.01.2016Создание информационной системы, содержащей сведения о продаже авиабилетов, работающей в локальной сети организации и имеющей клиентский веб-интерфейс. Моделирование бизнес процессов на языке UML. Проектирование структуры базы данных в MS Access.
курсовая работа [2,8 M], добавлен 20.07.2011Разработка информационно-логической модели проектируемой информационной системы. Алгоритм функционирования информационной системы. Описание базы данных. Описание входной, промежуточной и выходной информации. Техническое и программное обеспечение.
реферат [28,1 K], добавлен 09.01.2009Проектирование информационных систем. Составление вариантов использования для информационной системы "Городское управление технической инвентаризации". Создание в браузере списка классов на этапе анализа модели. Создание диаграмм последовательности.
дипломная работа [1,9 M], добавлен 07.08.2013