\documentclass[a4paper,fontsize=14bp]{article} \input{../common-preamble} \input{../fancy-listings-preamble} \input{../bmstu-preamble} \usepackage{tikz-uml} \usepackage{pgfopts} \usepackage{pgfkeys} \usetikzlibrary{positioning, math} \numerationTop \begin{document} \thispagestyle{empty} \makeBMSTUHeader % ... работе, номер, тема, предмет, ?а, кто \makeReportTitle{лабораторной}{3}{Анализ поведения систем и их компонентов}{Методы исследования и моделирования информационных процессов и систем}{а}{А.Р. Кадырбаева} \newpage \thispagestyle{empty} \tableofcontents \newpage \pagestyle{fancy} \section{Цель} Ознакомление студентов с методами и средствами анализа поведения систем и их компонентов, выраженного при помощи диаграмм UML. \section{Задание} В данной лабораторной работе необходимо ознакомиться с основами стандарта fUML, расширяющего возможности UML, а также освоить применение основанных на использовании этого стандарта программных средств, позволяющих производить анализ диаграмм UML. В таблице \hrf{table:task} представлено индивидуальное задание. \begin{table}[H] \centering \begin{tabular}{|c|p{100mm}|p{30mm}|} \hline Вариант & Задание & Количество вопросов для верификации \\ [0.5ex] \hline 11 & Работа копирайтера. Определяем поведение состояний «Выполнение работы», «Оплата работы», «Поиск работы», «Заключение контракта», «Невозможность оплаты заказа», «Невозможность выполнения заказа» & 5 \\ [1ex] \hline \end{tabular} \caption{Задание по варианту} \label{table:task} \end{table} \section{Выполнение работы} \begin{figure}[h] \centering \begin{tikzpicture}[yscale=-1] \umlstateinitial[x=-4, y=-6, name=initial] \umlbasicstate[x=-3, name=search, entry=мораль-, exit=мораль+]{Поиск работы} \umlbasicstate[x=6, y=-3, name=failExec, entry=мораль-, exit=опыт+]{\shortstack{Невозможно\\выполнение}} \umlbasicstate[x=-3, y=5, name=contract, exit=опыт+, entry=мораль+]{Контракт} \umlbasicstate[x=-3, y=10, name=exec, exit=опыт+, entry=мораль+]{\shortstack{Выполнение\\работ}} \umlbasicstate[x=6, y=10, name=pay, exit=мораль+, entry=мораль+]{Оплата работы} \umlbasicstate[x=-3, y=15, name=failAward, exit=опыт+, entry=мораль-]{\shortstack{Невозможна\\оплата}} \umltrans[]{initial}{search} \umlVHtrans[pos=1.5, arg=Недостаток компетенций]{search}{failExec} \umlVHtrans[arg=Возврат к поиску]{failExec}{search} \umltrans[pos=0.5, arg=Найдена работа по силам]{search}{contract} \umltrans[pos=0.5, arg=Приступаем к работе]{contract}{exec} \umltrans[pos=0.5, arg=Нормальный процесс]{exec}{pay} \umlVHtrans[arm1=-30mm, pos=1, arg=Попробовать с тем же работодателем]{pay}{contract} \umlVHtrans[arm1=-20mm, arg=Выйти на рынок]{pay}{search} \umltrans[pos=0.5, arg=Форс-мажор]{exec}{failAward} \umlHVHtrans[arm1=-20mm]{failAward}{search} \umlHVHtrans[arm1=-40mm, pos=0.7, arg=Неудача]{contract}{search} \end{tikzpicture} \caption{Диаграмма конечного автомата по заданию} \label{pic:fsm} \end{figure} По заданию необходимо описать диаграмму состояний агента - копирайтера, осуществляющего свою трудовую деятельность. У агента, согласно задания, возможно шесть состояний: \begin{enumerate} \item Поиск работы - состояние, в котором агент осуществляет непосредственный просмотр вакансий; \item Невозможно выполнение - состояние, в котором агент осуществляет повышение квалификации. В него можно попасть только в результате неудачного поиска (недостаточно компетенций), из него можно выйти только в состояние поиска работы; \item Контракт - заключение контракта с работодателем, сюда можно попасть только после поиска работы или после успешной оплаты предыдущей работы. Выход из состояния возможен в состояние выполнения работ или если стороны не смогли договориться; \item Выполнение работы - единственное состояние, которое возможно после заключения контракта. В общем случае, в результате выполнения работы происходит переход в состояние оплаты, а в случае возникновения форс-мажорных ситуаций в состояние невозможности оплаты; \item Оплата работы - состояние в котором возможно оказаться только в результате выполнения работ. Из этого состояния возможно попытаться заключить с работодателем новый контракт или начать новый поиск работы; \item Невозможна оплата - состояние, возникающее только в силу форс-мажорных ситуаций и может вести только к инициированию нового поиска работы. \end{enumerate} Диаграмма конечного автомата по заданию представлена на рисунке \hrf{pic:fsm}. \section{Выводы} Диаграммы конечных автоматов UML можно использовать для моделирования поведения класса, подсистемы, пакета или системы целиком. Диаграммы состояний предоставляют наглядный способ моделирования взаимодействия или коммуникации, которые происходят внутри внешних объектов и системы. Эти диаграммы используются для моделирования систем, основанных на событиях. Состояние объекта контролируется и изменяется с помощью события. Диаграммы состояний используются для описания изменения состояний объекта в прикладной системе. \end{document}