Стрельников Егор Александрович



Факультет компьютерных наук и технологий (ФКНТ)


Кафедра автоматизированных систем управления (АСУ)


Специальность Информационные системы и технологии в технике и бизнесе




Информационная система управления загрузкой механического


оборудования цеха машиностроительного предприятия


Научный руководитель: к.т.н., доц. Светличная В.А.

Резюме

ФИО Стрельников Егор Александрович
Дата рождения 26.08.1996
Место рождения г. Донецк
Школа 2002–2013 гг. – ОШ I-III ст. № 136
ВУЗ 2013–2017 гг. – Донецкий национальный технический университет, факультет компьютерных наук и технологий, Информационные системы и технологии в технике и бизнесе, бакалавриат
2017–2019 гг. – Донецкий национальный технический университет, факультет компьютерных наук и технологий, Информационные системы и технологии в технике и бизнесе, магистратура
Средний балл 90,0 (A)
Владение языками • Русский (в совершенстве)
• Українська (досконало)
• English (B1)
Увлечения Документальные и научные фильмы, музыка, игры, научная литература
Личные качества Усидчивость, адаптивность, ответственность, целеустремлённость, грамотность, пунктуальность, тактичность
Профессиональная специализация и владение компьютером • ОС – Windows (XP/7/8/10), Linux
• Языки программирования – C/C++, C#, PHP, Java, Python
• СУБД – PostgreSQL, MySQL, Microsoft SQL, Visual FoxPro, Cache
• Системы контроля версий – Git
• Языки моделирования и описания – UML
• Интернет-технологии – HTML, CSS, JS, JQuery, Bootstrap, PHP Frameworks (Yii2, Laravel)
• Среды разработки – Microsoft Visual Studio, PHPStorm, Eclipse, IntellijIdea, WebStorm, Android Studio
• Офисные приложения – Microsoft Office (Word, Excel, PowerPoint, Visio)
• Видеоредакторы – Sony Vegas Pro, Pinacle
Опыт работы 2016–2017 р. – лаборант в ДонНТУ
Планы на будущее По окончанию магистратуры заняться веб-разработкой, продолжать самообучение и саморазвитие
Контактная информация email: shunterisuus@gmail.com

Биография

Личностное становление

Я, Стрельников Егор Александрович, родился 26 августа 1996 года в городе Донецке. Являюсь студентом магистратуры факультета компьютерных наук и технологий по специальности «Информационные системы и технологии в технике и бизнесе». Мои родители – Стрельникова Елена Николаевна и Стрельников Александр Николаевич.



Ещё с ранних лет я был умным ребёнком и с удовольствием познавал всё новое для себя. Рано научился читать и писать, быстро схватывал на лету знания и прочую полезную информацию. Я всегда был достаточно активным ребёнком, мне всегда интересно было что-то изучать, исследовать, искать. В детском саду часто принимал участие в утренниках и прочих мероприятиях. Однако в детстве я чаще проводил время со своими друзьями: гулял, играл в футбол, баскетбол, ну и просто вместе дурачились.



Когда мне было 6 лет я стал первоклассником. Ещё с тех времён знания давались мне легко, и я всегда учился на высокие оценки и был «круглым» отличником. В школе я был спокойным ребёнком, от учителей редко бывали замечания в мой адрес, но они, как правило, были спровоцированы моей излишней общительностью. Параллельно с обучением в школе я несколько лет занимался танцами в танцевальном коллективе, куда меня в своё время привела мама. Выступал на сцене, в коллективе был единственным мальчиком, поэтому в танцах был в центре внимания. Я рос и мои интересы менялись, так я начал заниматься рисованием, получал призовые места в тематических конкурсах районного и городского уровней. Позже занимался смешанными единоборствами, но, к сожалению, особых достижений не получил. Также в школе часто принимал участие в различных олимпиадах и конкурсах и, благодаря целеустремлённости, усидчивости и тяге к знаниям занимал призовые места.



В 2013 году я окончил школу с серебряной медалью и средним баллом 11. Школа дала мне достаточный запас знаний и опыта, который я в будущем успешно применил при обучении в ВУЗе.


Профессиональное становление

После 11 класса стал вопрос, в каком ВУЗе продолжить обучение и какое выбрать направление. Так как меня интересовало всё и сразу сложно было выбрать какое-то одно направление или специальность. С одной стороны, меня интересовало всё, что связано с IT-сферой, но и в то же время мне нравились естественные науки, такие как биология, химия, география.


В те времена я увлекался видеомонтажом на любительском уровне, меня увлекало это и хотелось больше узнать о том, а как вообще все эти программы создаются и как функционируют. Со временем мои убеждения стать программистом стали сильнее других увлечений, и я выбрал именно это направление. Во время обучения в 11 классе я большую часть времени проводил за подготовкой к сдаче внешнего независимого тестирования, чтобы поступить на бюджет. С выбором ВУЗа особо думать не пришлось, выбор сразу пал на Донецкий национальный технический университет, так как помимо того, что этот ВУЗ выпускает высококлассных специалистов и является одним из лучших в стране, он имел хорошую репутацию среди моих знакомых. При поступлении я выбирал между несколькими специальностями, но выбрал именно «Информационно управляющие системы», так как тут готовят многопрофильных специалистов, которые способны быть не только отличными программистами, но и подкованными в других частях IT-сферы.



Следует заметить, что сразу перестроиться после школы было не так просто, как казалось: обучение в ВУЗе оказалось более трудоёмким, чем я думал. Но со временем обучение стало не в тягость, а в радость, и все усилия, которые вкладывались в обучение, стали давать плоды. На разных курсах учебный план предлагал всё новые и новые дисциплины, которые было интересно познавать. Это позволило мне выбрать то, что мне интересно больше всего, среди общего разнообразия дисциплин.



Ближе к последним курсам бакалавриата учёба мне давалась достаточно легко, учился я хорошо и в 2017 году получил диплом бакалавра со средним баллом 90. Летом того же года принял решение продолжить обучение в ДонНТУ, успешно сдал вступительные экзамены и поступил на магистратуру на ту же специальность. Темой магистерской работы стала «Информационная система управления загрузкой механического оборудования цеха машиностроительного предприятия», так как она является актуальной в наше время и достаточно интересной. Моим научным руководителем является кандидат технических наук, доцент кафедры АСУ Светличная Виктория Антоновна. Очень надеюсь, что я успешно справлюсь с поставленной целью – написать и защитить дипломную работу.


Цели, планы и видение будущего

Естественно, в планах на ближайшее будущее это успешно защитить дипломную работу и получить диплом магистра. После окончания ВУЗа планирую заняться веб-разработкой, так как за всё время обучения она меня увлекла больше всего, а также работать в данной сфере. Кроме того, заняться самообучением в данном направлении, принимать участие в различных проектах, расширять другие знания в IT сфере и хотелось бы попробовать себя в бизнесе.

Реферат

Содержание

  1.   1.     Общая постановка проблемы
  2.   2.     Описание объекта исследования
  3.   3.     Аналитическая постановка задачи
  4.   4.     Математическая постановка задачи
  5.   5.     Обзор методов и алгоритмов
  6. 5.1     Теория расписаний
  7. 5.2     Метод ветвей и границ
  8. 5.3     Диаграмма Гантта
  9. 5.4     Муравьиные алгоритмы
  10. 5.5     Генетические алгоритмы
  11.   Выводы
  12.   Список литературы

1. Общая постановка проблемы

В условиях стремительного развития машиностроения автоматизация загрузки механического оборудования является актуальной задачей. Проблемы автоматизации оперативного планирования исследуются давно, и, как показывает опыт, задачи организационного характера достаточно трудно поддаются автоматизации.



В наше время предприятия машиностроительной отрасли стремятся к повышению доходности бизнеса на долгий промежуток времени, так как это может обеспечить необходимую финансовую стабильность предприятия. В связи с этим появляется задача умелого управления разного рода производственными особенностями, одним из которых является оперативно-календарное планирование на уровне цеха. Ведь уже на цеховом уровне производства стоит обеспечить качественный сервис, который сможет предложить такой продукт, который будет соответствовать требованиям качества и выполнен в заявленные сроки.



На сегодняшний день существует большое количество инструментальных средств для управления предприятием. Однако в силу ряда причин внедрение этих программных продуктов на современных машиностроительных предприятиях не является выгодным.



В данной работе рассматривается машиностроительное предприятие, которое занимается мелкосерийным и позаказным производством. Автоматизация управления загрузкой внутрицехового оборудования такого рода предприятий позволит избавиться или уменьшить негативное влияние от ряда трудностей, связанных с особенностями данного типа производства:




– Многочисленность номенклатуры изделий;
– Нестабильность объёмов производства;
– Различные отклонения производственного процесса от заданного ритма.



2. Описание объекта исследования

Перед тем, как приступить к процессу разработки информационной системы управления объектом следует обозначить общие цели самого предприятия.



Для машиностроительного предприятия с мелкосерийным типом производства одной из основных целей производства является своевременное выполнение заказов надлежащего качества.[1] В силу наличия больших объемов работ, а, следовательно, больших объемов информации, характеризующих производственные процессы на предприятии, возникает необходимость выполнения целого ряда задач для цехового управления предприятия, к которым следует отнести:



– Организация сбора данных о работе обрабатывающих станков и другого производственного оборудования;
– Распределение выполнения производственных заказов по оборудованию и отслеживание выполнения заказов;
– Формирование электронных паспортов партий, содержащие данные о том, кто, когда, на каком оборудовании и из каких материалов сделал то или иное изделие;
– Выполнение мониторинга работы станков, обрабатывающих центров, промышленных роботов, оснастки для подсчёта времени наработки и контроля значений технологических параметров (температура, давление, время цикла и т.д.);
– Отображение текущего состояния оборудования на рабочих местах пользователей или на больших экранах, расположенных в цехах;
– Ведение централизованной базы технической документации и управляющих программ, а также пересылка управляющих программ в системы управления станками. [2]

Используя язык UML, можно представить функции компьютеризированной системы в следующем виде (см.рис.1):



Рисунок 1 – Функции компьютеризированной системы



Одной из самых важных задач является распределение выполнения производственных заказов по оборудованию, которая в свою очередь связана с целым рядом других задач потоками информации. Такие задачи решаются с помощью систем сетевого планирования и управления (СПУ) [3].



Система СПУ охватывает три стадии организации производства:



– предварительную (исходную) стадию;


– стадию разработки и оптимизации сетевого графика;


– стадию оперативного контроля за ходом выполнения работ.



На предварительной стадии дается логическое описание комплекса работ, определяется последовательность и взаимосвязь отдельных этапов, состав и взаимосвязь исполнителей работ, ориентировочные сроки поставок, потребности в ресурсах и финансировании. Здесь же устанавливаются и критерии эффективности. [3]



Стадия разработки и оптимизации включает:



– расчленение всего комплекса работ на этапы и выдача заданий исполнителям на составление фрагментов сетевой модели по каждому этапу;


– составление перечня работ с описанием их содержания;


– составление перечня событий с необходимой детализацией и четкой формулировкой, не допускающей различного толкования;


– определение последовательности и параллельности выполнения работ;


– построение локальных сетевых графиков (фрагментов) по этапам;


– построение («сшивание») локальных графиков в комплексную (сводную) сетевую модель;


– расчет основных параметров сетевой модели и ее оптимизация;


– оформление документов и доведение заданий и сроков выполнения работ до исполнителей.



В большинстве случаев в качестве решающего фактора принимается фактор времени. В этом случае основными параметрами сетевого графика являются:



– продолжительность работ;


– ранние и поздние сроки наступления событий;


– критический путь;


– резервы времени по событиям. [3]


3. Аналитическая постановка задачи

В рамках данной работы решается задача построение локальных сетевых графиков (фрагментов) по этапам, т.е. другими словами нахождения очередности обработки деталей по рабочим местам технологического процесса, составление календарного расписания загрузки оборудования на определенный плановый период. Итоговым документом, создаваемым в этой фазе, является сменное задание на рабочие места.



Для решения этой задачи используется следующая входная информация:



– состав конструкций изделий;


– наличие и возможности обрабатывающего оборудования и персонала;


– заказанное количество изделий;


– директивные сроки изготовления.



Для того, чтобы более правильно поставить задачу необходимо в деталях проанализировать непосредственно технологический процесс, а также его особенности. Графоаналитическая схема этого процесса приведена на рисунке 2.



Рисунок 2 – Технологический процесс



(анимация: 4 кадра, циклов повторения - цикличный , размер 148.034 Кб)



Проанализировав графоаналитическую схему технологического процесса, видно, что в заказе, который приходит на машиностроительное предприятие, может быть одно или несколько изделий. Каждое из изделий состоит из n групп деталей, которые подлежат обработке. Все группы деталей имеют определенный технологический маршрут обработки, который они должны пройти, в котором описана последовательность операций, а также группы станков, на которых эти операции могут быть выполнены. Кроме того, изделия могут иметь различный директивный срок выполнения, т.е. срок до которого изделие должно быть выполнено перед тем, как оно поступит на сборку.



Рассмотрев технологический процесс с разных сторон была поставлена следующая задача: определить такую последовательность запуска деталей к обработке и распределить их по станкам таким образом, чтобы выполнить заказ в срок, минимизировать время простоя оборудования.



4. Математическая постановка задачи

Рассмотрим математическую постановку задачи на примере типичного технологического процесса в механизированном цеху.



Пусть:


n – количество станков, которые задействованы в технологическом процессе,
tпij, tфij – плановое, фактическое время обработки i-детали на j-ом станке, где i=(1,2,…,k), j=(1,2,…,n),
Δtпр – время простоя j-го станка.



Тогда целевая функция будет иметь следующий вид:





Из целевой функции видно, время простоя на каждом станке должны быть сведены к минимуму.



На вышеописанную целевую функцию влияет ряд ограничений.



Пусть Тдi, Тфi – директивный и фактический срок изготовления i-детали,
Nнi, Nфi – необходимое и фактическое количество обработанных деталей,
i – партий деталей,
tlk – длительность технологической операции k над деталью l,
ml – общее количество операций над деталями,
тогда все ограничения будут иметь следующий вид:





Ограничения, описанные в формуле 2, можно аналитически выразить следующим образом:



– изготовление детали должно быть выполнено в срок, т.е. фактический срок изготовления детали не должен превышать директивный;


– работа должна быть выполнена в полном объёме, т.е. количество фактически обработанных деталей должно быть равно необходимому;


– каждая последующая операция в технологическом маршруте для определенной детали не может быть начата, пока не закончится предыдущая операция.



Кроме этого, имеются дополнительные ограничения, которые заранее не всегда возможно учесть:



– капитальный ремонт оборудования;


– плановый осмотр оборудования;


– отсутствие персонала.



Задача управления загрузкой оборудования сводится к подбору такой оптимальной производственной программы, которая позволит наилучшим образом использовать имеющиеся производственные мощности.



5. Обзор методов и алгоритмов

5.1 Теория расписаний

Основной задачей теории расписаний является разработка методов создания расписаний работы обслуживающих систем. Наиболее актуальны применения теории расписаний в управлении вычислительными системами, а также в календарном планировании и регулировании производственных процессов.



Задачи расписания (планирования) обработки n деталей на m станках, известная как задача Джонсона, по имени автора, предложившего простой алгоритм поиска оптимальной последовательности запуска деталей в обработку для двух и, в частном случае, трех станков, относится к классу экстремально - комбинаторных задач и является одной из сложнейших оптимизационных задач. Суть задачи в том, что имеется деталей и два станка. Каждая деталь должна сначала пройти обработку на первом станке, затем — на втором. При этом -ая деталь обрабатывается на первом станке за времени, а на втором — за времени. Каждый станок в каждый момент времени может работать только с одной деталью. Требуется составить такой порядок подачи деталей на станки, чтобы итоговое время обработки всех деталей было бы минимальным.



Интерес к ее математической формулировке и решению вызвал значительное число публикаций, однако, несмотря на это, не известны алгоритмы поиска оптимальных решений при числе станков более трех.



Одним из главных достоинств алгоритма является то, что оптимальное расписание может быть найдено в результате перебора конечного множества возможных вариантов, однако количество элементов конечного множества может быть очень велико.



5.2 Метод ветвей и границ

Метод ветвей и границ – один из комбинаторных методов. Его суть заключается в упорядоченном переборе вариантов и рассмотрении лишь тех из них, которые оказываются по определенным признакам перспективными, и отбрасывании бесперспективных вариантов. Метод ветвей и границ состоит в следующем: множество допустимых решений (планов) некоторым способом разбивается на подмножества, каждое из которых этим же способом снова разбивается на подмножества. Процесс продолжается до тех пор, пока не получено оптимальное целочисленное решение исходной задачи. [5]



Достоинством данного метода является то, что полученное расписание возможно оценить по отношению к оптимальному. Сложность практического применения метода заключается в трудностях нахождения способа ветвления множества на подмножества и вычисления соответствующих оценок, которые зависят от специфики конкретной задачи.



5.3 Диаграмма Гантта

Данный метод планирования не теряет актуальности и в наши дни, ведь он позволяет обеспечить графическое отображение производственного плана, упрощает контроль за прогрессом в выполнении поставленных задач. График Гантта стал настолько мощным аналитическим инструментом, что практически на протяжении 100 лет не претерпевал никаких изменений.



Несмотря на то, что при помощи диаграммы Гантта можно установить сроки и облегчить планирование, при неправильном использовании данный метод может отражать неполную картину. Исходя из этого можно сказать, что данный метод неприменим для оперативно-календарного планирования производственных процессов.



5.4 Муравьиные алгоритмы

Муравьиные алгоритмы позволяют решить задачу минимизации переналадки и простоев оборудования при большом числе станков. Процесс переналадки занимает важное место в системе планирования, так как он занимает значительную часть общего календарного времени (от нескольких часов до целой смены). Чем чаще требуется переналадка (по условиям производства), тем больше оказываются потери времени. Поэтому одной из основных задач является совершенствование систем переналадки оборудования, а также использование методов, которые позволяют получить оптимальную последовательность обработки деталей на станках с минимальными потерями времени на переналадку. Муравьиный алгоритм позволяет найти оптимальный производственный маршрут при заданный ограничениях. В проведенном исследовании процесса нахождения оптимального маршрута муравьиным алгоритмом были получены данные, по которым из 100 итераций «муравьи» нашли 3 раза оптимальные маршруты.



Проведенные компьютерные эксперименты показывают, что муравьиные алгоритмы находят хорошие маршруты значительно быстрее, чем точные методы комбинаторной оптимизации. Эффективность муравьиных алгоритмов увеличивается с ростом размерности задачи оптимизации. Логика муравьиных алгоритмов приведена на рисунке 3.



Рисунок 3 – Логика муравьиных алгоритмов [9]



Важным свойством муравьиных алгоритмов является неконвергентность: даже после большого числа итераций одновременно исследуется множество вариантов решения, вследствие чего не происходит длительных временных задержек в локальных экстремумах. Все это позволяет рекомендовать применение муравьиных алгоритмов для решения сложных комбинаторных задач оптимизации. [6]



5.5 Генетические алгоритмы

Одними из современных методов оптимизации, основанных на эвристических алгоритмах, являются генетические алгоритмы. Генетический алгоритм был получен в процессе обобщения и имитации в искусственных системах таких свойств живой природы, как естественный отбор, приспособляемость к изменяющимся условиям среды, наследование потомками жизненно важных свойств от родителей и т.д. Так как алгоритм в процессе поиска использует некоторую кодировку множества параметров вместо самих параметров, то он может эффективно применяться для решения задач дискретной оптимизации, определённых как на числовых множествах, так и на конечных множествах произвольной природы. [7]



При упорядочении проблемы с использованием генетического алгоритма критическая проблема заключается в разработке схемы представления для представления допустимого решения. Как уже упоминалось выше, генетические алгоритмы работают с населением потенциального решения проблемы. Популяция состоит из хромосом где каждая хромосома представляет собой одно потенциальное решение. Традиционные бинарные векторы, используемые для представления хромосомы, неэффективны в таком крупномасштабном измерении. В течение последних лет часто предлагались следующие девять представлений о задаче планирования на рабочем месте: представление на основе работы, представление на основе работы, представление на основе списка предпочтений, представление на основе пары предложений, представление на основе приоритетов, дизъюнктивное графическое представление, представление на основе времени завершения, представление на машинке, представление случайных ключей и другие. [8]



Наиболее популярными методами кодирования являются представление на основе операций и представление на основе, которые представлены ниже.



– Представление на основе операций
В задаче планирования популярное представление представляет собой метод, основанный на операции. Это представление кодирует расписание как последовательность операций, и каждый ген обозначает одну операцию. Один естественный способ назвать каждую операцию - использовать натуральное число. Расписание декодируется из хромосомы со следующей процедурой декодирования (A) сначала переводить хромосому - список упорядоченных операций; (b) затем сгенерировать расписание с помощью однопроходной эвристики на основе списка. Первая операция в списке запланирована первой, затем вторая операция и так далее. Каждая операция распределяется в наилучшем доступном времени для соответствующей машины, для которой требуется операция. Процесс повторяется до тех пор, пока не будут запланированы все операции.



– Представление на основе работы
Популярным методом кодирования является также представление на основе работы. Это представление состоит из списка n заданий, и расписание построено в соответствии с порядком заданий. Для заданной последовательности заданий сначала выполняются все операции первых заданий в списке, а затем рассматриваются операции второго задания в списке. Первая операция обрабатываемой работы распределяется в наилучшее доступное время обработки для соответствующей машины, для которой требуется операция, а затем вторая операция и так далее, пока не запланированы все операции задания. Процесс повторяется с каждым из заданий в списке, рассматриваемом в соответствующей последовательности. [8]



Сила генетических алгоритмов в том, что этот метод очень гибок, и, будучи построенным в предположении, что об окружающей среде нам известен лишь минимум информации (как это часто бывает для сложных технических систем), алгоритм успешно справляется с широким кругом проблем, особенно в тех задачах, где не существует общеизвестных алгоритмов решения или высока степень априорной неопределенности.



Выводы

В результате проведенных исследований была обоснована актуальность создания автоматизированной подсистемы сетевого планирования при загрузке оборудования на машиностроительном предприятии. Рассмотрены основные этапы разработки календарного плана. Проанализированы основные математические методы, используемые для оптимизации календарного плана, рассмотрены варианты их использования в решаемой задаче сетевого планирования.



Список литературы

  1. Тюленев Л.В. Организация и планирование машиностроительного производства: Учебное пособие / Л.В. Тюленев. – СПб: Бизнес-пресса, 2001. – 304 с.
  2. Михайлова Л.В. Формирование и оперативное управление производственными системами на базе поточно-группового производства в автоматизированном режиме / Л.В. Михайлова, Ф.И. Парамонов, А.В. Чудин. – М.: ИТЦ МАТИ, 2002. – 60 с
  3. Календарное планирование и оперативное управление производством и процессами. программирования [Электронный ресурс] – Режим доступа: https://studfiles.net/preview/404204/page:10/#18
  4. Методы оптимизации расписаний параллельных обслуживающих систем [Электронный ресурс] – Режим доступа: http://www.swsys.ru/index.php?page=article&id=108
  5. Комбинаторные методы [Электронный ресурс] – Режим доступа: http://studbooks.net/2274360/informatika/kombinatornye_metody
  6. Штовба С.Д. Муравьиные алгоритмы // Научно-практический журнал Exponenta Pro. Математика в приложениях. – 2003. – № 4. – С. 70-75.
  7. Генетический алгоритм [Электронный ресурс] – Режим доступа: http://mirznanii.com/a/313173/geneticheskiy-algoritm
  8. Anna Ławrynowicz Genetic Algorithms for Solving Scheduling Problems in Manufacturing Systems [Электронный ресурс] – Режим доступа: https://content.sciendo.com/view/journals/fman/3/2/article-p7.xml
  9. Ошурков В.А., Макашова В.Н. Оперативное планирование производства в MES-системах с использованием методов и алгоритмов искусственного интеллекта [Электронный ресурс] – Режим доступа: https://cyberleninka.ru/article/v/operativnoe-planirovanie-proizvodstva-v-mes-sistemah-s-ispolzovaniem-metodov-i-algoritmov-iskusstvennogo-intellekta
  10. Стрельников Е.А., Светличная В.А. Анализ методов сетевого планирования для АСУ загрузкой механического оборудования. / Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ – 2018) / Материалы IX международной научно-технической конференции – Донецк: ДонНТУ, 2018г. – с. 11-15. Режим доступа: http://iuskm.donntu.ru/electronic/iusmkm2018.pdf

Индивидуальный раздел

Фреймворк Yii2. Особенности и возможности.

Что представляет из себя Yii2 фреймворк?


Yii2 это, вероятно, наиболее популярный PHP-фреймворк на территории СНГ. Он является высокопроизводительным объектно-ориентированным компонентным фреймворком, реализующим парадигму «Модель-представление-контроллер» (MVC), как и большинство ему подобных. Уже долгое время данный фреймворк является одним из наиболее популярных, благодаря чему для него уже написано большое количество различных модулей для решения разного рода задач, что отражается на скорости и качестве разработки. Также Yii пользуется спросом для разработки различных CMS.



Само название рассматривается как аббревиатура с английского «Yes it is». Yii является одним из наиболее долгоживущих PHP-фреймворков, который развивается и всё больше расширяется.



Предыстория создания фреймворка Yii начинается в июне 2004 года, когда Цян Сюэ (Qiang Xue) выпустил первую версию фреймворка PRADO (PHP Rapid Application Development Object-oriented). Этот фреймворк был вдохновлён такими технологиями как Microsoft ASP.NET, Apache Tapestry и Borland Delphi. Примерно в том же году Zend проводила соревнование gophp5 для продвижения тогда недавно выпущенной 5 версии PHP. Цян Сюэ повторно реализовал PRADO на PHP 5.0 и выиграл данный конкурс.



PRADO был попыткой перенести Microsoft ASP.NET на PHP, поэтому встречались даже просто скопированные с ASP.NET участки кода. В мае 2005 года PRADO поддаётся повторной имплементации для того, чтобы включить новые функции, взятые из Microsoft ASP.NET 2.0 и в апреле 2006 года была выпущена PRADO 3.0. На данный момент PRADO продолжает существовать и использоваться.



В один момент Цян Сюэ осознаёт, что PHP-фреймворк должен быть построен несколько иначе, нежели его предшественник и вместе с командой разработчиков приступает к закрытой разработке, которая длилась примерно 10 месяцев. В октябре 2008 года выходит альфа-версия фреймворка Yii.



История фреймворка начинается в 2008 году: 3 декабря была выпущен Yii 1.0.0. Многие идеи и некоторый код были взяты из предыдущей разработки Цяна Суэ – фреймворка PRADO. Yii 1.0.0 был значительно быстрее, чем другие фреймворки с аналогичным функционалом, поэтому он быстро развивался.



В январе 2010 года была выпущена версия Yii 1.1. Она включала в себя новые функции, такие как построитель форм, реляционные запросы, готовые к использованию модульные модули тестирования и многое другое. С 12 октября 2014 года активно развивается вторая версия фреймворка Yii 2.0.



Yii 1.1 является старым поколением и в данный момент находится в режиме технического обслуживания. Версия Yii 2.0 представляет собой полностью переписанный Yii, с внедренными самыми новыми технологиями, в том числе: Composer, PSR, пространств имен, Traits и т.д.


Особенности фреймворка Yii2

Существует две конфигурации проекта Yii2: basic и advance. Basic сконфигурирован в одно приложение, т.е. является примером одиночного приложения. Конфигурация Advance включает в себя разделение на другие приложения. В advance приведен пример реализации наиболее используемых частей, таких как frontend, backend и api, при этом все подприложения имеют общие файлы конфигураций и модели. Что касается кода ядра Yii2, то естественно обе конфигурации не отличаются, ведь отличие состоит лишь в структуре проекта. На рисунке 1 показаны сходства и различия между basic и advance шаблонами.



Рисунок 1 – Отличия между шаблонами



Yii 2.0 представляет собой современное поколение фреймворка и развивается и будет развиваться на протяжении ближайших лет. Yii 2.0 требует PHP версии 5.4 или выше, что является большим прорывом по сравнению с PHP версии 5.2, используемая в Yii 1.1. В результате, есть много различий на уровне языка. Ниже приводится краткое изложение основных изменений в отношении PHP:



  • 1. Namespaces (пространства имён)
  • 2. Анонимные функции
  • 3. Короткий синтаксис массива
  • 4. Короткие теги
  • 5. SPL классы и интерфейсы
  • 6. Поздние статические привязки
  • 7. Дата и время
  • 8. Traits
  • 9. Формы
  • 10. Помощники
  • 11. Построитель запросов
  • 12. Фильтры действий
  • 13. Виджеты
Web-MVC фреймворк на примере Yii2

Model-View-Controller является паттерном проектирования, при котором данные, интерфейс пользователя и логика представляют собой три отдельных компонента, а именно модель, представление и контроллер. Благодаря такому разделению упрощается сопровождение и поддержка программного кода отдельных компонентов.



Как и любые другие современные фреймворки, Yii2 использует модель MVC. На рисунке 2 приведена структура приложения Yii.



Рисунок 2 – Структура приложения Yii2



Теперь рассмотрим компоненты подробнее:



Модель – предоставляет данные, зачастую получая их из базы данных и изменяет своё состояние при реагировании на команды в контроллере. Является неким объектом-сущностью предметной области. Для хранения моделей в приложении имеется отдельная папка models.



Представление – отвечает за визуализацию информации, является интерфейсом пользователя. Как правило в приложении Yii2 представления располагаются в папках, названия которых совпадает с названием контроллеров.



Контроллер – является связующим звеном между пользователем и самой системой, т.е. интерпретирует действия пользователя и оповещает модель о необходимости изменений. Как и для других компонентов для классов-контроллеров в приложении выделена отдельная папка controllers. Кроме этого, Yii2 применяет так называемый фронт-контроллер, называемый application, инкапсулируя контекст обработки запроса. Фронт-контроллер собирает информацию о запросе и передает её для обработки далее соответствующему контроллеру.



На рисунке 3 приведен процесс обработки запроса пользователя приложением Yii2.



Рисунок 3 – Процесс обработки запроса пользователя приложением Yii2



  • 1. Происходит запрос пользователем с помощью URL, и веб-сервер выполняет его обработку, и запускает скрипт инициализации index.php (например запрос http://www.example.com/index.php?r=post/show&id=1);
  • 2. Скриптом инициализации создаётся экземпляр приложения и запускает его;
  • 3. Используя компонент request, приложение получает информацию о пользовательском запросе;
  • 4. Происходит определение приложением запрошенных контроллера и действия, используя компонент urlManager. В нашем примере контроллер post, относится к классу PostController, действие – show, логика которого определена контроллером.
  • 5. Создаётся экземпляр контроллера для обработки запроса пользователя. Контроллер определяет соответствие действия show методу actionShow в классе контроллера. Затем создаются и применяются фильтры, которые связаны с действием, и действия выполняются, если фильтр позволяет это.
  • 6. Действие берёт модель Post из БД, ID которой равно 1.
  • 7. Происходит подключение представления show, передавая в него найденную модель Post.
  • 8. Представление в свою очередь получает и отображает атрибуты модели Post.
  • 9. Завершается формирование представления и пользователю выводится результат.
Достоинства и преимущества Yii2 перед другими современными фреймворками

Как известно в наше время существует большое количество различных PHP-фреймворков, каждый из которых обладает своими особенностями. Чаще всего при выборе фреймворка хочется учесть достаточно большое количество характеристик от быстродействия до простоты использования. Чем же фреймворк Yii2 лучше или отличается от других фреймворков? Давайте рассмотрим следующие характеристики:



  • Быстродействие.  Yii2 является одним из самых быстрых современных фреймворков. Имеет очень качественную систему отложенной инициализации, которая ускоряет работу приложения. Бенчмарки показали результат в 2664.61 запросов секунду для PHP 7.1, оставляя позади такие популярные фреймворки, как symphony (1022) и laravel (600)
  • Поддержка и документация.  Поддержкой фреймворка Yii занимается большая и сильная команда разработчиков, которые всегда следят за развитием и тенденциями web разработки, благодаря чему фреймворк активно развивается. Имеется большая документация как на английском, так и на русском языках, благодаря русскому сообществу Yii2.
  • Безопасность.  Есть возможности для предотвращение межсайтового скриптинга, предотвращение подделки межсайтовых запросов, предотвращение атак через cookie.
  • Простота.  Yii старается придерживаться философии простого и красивого кода, не пытаясь усложнять дизайн. Имеет более простой код, меньше уровней абстракций, любой класс легко изучаем. Чтобы запустить даже простой сайт потребуется меньше времени.
  • Расширяемость.  Yii2 легко расширяем, можно легко заменить или изменить любую часть кода. Имеется такая архитектура расширений, благодаря которой легко делиться кодом. Также Yii2 легко можно подключить к другому проекту, просто создав экземпляр приложения.



Кроме того Yii2 обладает большим количеством встроенных решений для упрощения работы с приложением:



  • Генератор Gii.  Этот гибкий встроенный модуль позволяет в считанные секунды сгенерировать базовый код PHP (модели, контроллеры, views), что позволяет сэкономить время при разработке.
  • Миграции баз данных.  Далеко не новинка, используется и в других фреймворках, но также имеется и в Yii2. Упрощает работу с базой данных.
  • Виджеты.  Имеется большое количество настраиваемых виджетов подобных GridView, ActiveForm
  • Технологии для работы с БД такие как ActiveRecord для реляционных и NoSQL баз данных.
  • Встроенная аутентификация и авторизация на основе ролей – RBAC
  • Поддержка REST API
  • Автоматическое тестирование



Благодаря имеющейся популярности фреймворка Yii2, для него уже разработано большое количество готовых расширений и модулей. Кроме того в Yii2 удобно использовать сторонние библиотеки для расширения его возможностей. А возможность использования Yii2, как библиотеки для разработки и улучшения сторонних систем, таких как WordPress, Joomla, практически не ограничивает возможности фреймворка.

Личный опыт работы с Yii2

Моё знакомство с фреймворком Yii2 начинается на 5 курсе университета. В рамках дисциплины Проектирование Web-ориентированных компьютерных систем было изучение фреймворка Yii2. Первые лабораторные работы были ориентированы на изучение теоретических основ фреймворка, а последние – на усвоение этого материала и применение его на практике.



Мне этот фреймворк сразу понравился, он приглянулся своей простотой и функционалом. Так как мне нравится web-разработка в принципе, Yii2 стал очень хорошим помощником при разработке проектов. Первые проекты, написанные на Yii2, были лабораторные работы, а также курсовой проект.



Кроме того, я не остановился на тех знаниях, которые дал мне университет и продолжил самостоятельное изучать компоненты фреймворка. В дальнейшем мне пригодились эти знания в работе, где было реализовано ещё несколько достаточно крупных проектов.

Список источников и полезных ссылок по теме
  1. Yii. [Электронный ресурс] – Режим доступа: https://en.wikipedia.org/wiki/Yii

  2. Yii2 и для чего он нужен? [Электронный ресурс] – Режим доступа: https://zyubin.ru/frameworks/yii/frejmvork-yii2-chto-eto-takoe.html

  3. The history of Yii Framework. [Электронный ресурс] – Режим доступа: https://en.rmcreative.ru/blog/the-history-of-yii-framework/

  4. Что такое Yii2 Framework? [Электронный ресурс] – Режим доступа: http://unetway.com/tutorial/cto-takoe-yii2-frejmvork/

  5. Introduction: About Yii | The Definitive Guide to Yii 2.0 | Yii PHP Framework. [Электронный ресурс] – Режим доступа: https://www.yiiframework.com/doc/guide/2.0/en/intro-yii

  6. Основы: Модель – Представление – Контроллер (MVC). [Электронный ресурс] – Режим доступа: https://www.yiiframework.com/doc/guide/1.1/ru/basics.mvc

  7. Сравнительное тестирование / Блог компании NIX Solutions / Хабр. [Электронный ресурс] – Режим доступа: https://habr.com/company/nixsolutions/blog/329718/