added practice report

This commit is contained in:
Yuri Kozyrev 2022-07-22 22:16:20 +04:00
parent fc8304e1ea
commit de327ccbc4

240
pract_rep/pract_rep.tex Executable file
View File

@ -0,0 +1,240 @@
\documentclass[bachelor, och, pract, times]{SCWorks}
% параметр - тип обучения - одно из значений:
% spec - специальность
% bachelor - бакалавриат (по умолчанию)
% master - магистратура
% параметр - форма обучения - одно из значений:
% och - очное (по умолчанию)
% zaoch - заочное
% параметр - тип работы - одно из значений:
% referat - реферат
% coursework - курсовая работа (по умолчанию)
% diploma - дипломная работа
% pract - отчет по практике
% nir - отчет о научно-исследовательской работе
% autoref - автореферат выпускной работы
% assignment - задание на выпускную квалификационную работу
% review - отзыв руководителя
% critique - рецензия на выпускную работу
% параметр - включение шрифта
% times - включение шрифта Times New Roman (если установлен)
% по умолчанию выключен
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage{graphicx}
\usepackage{tempora}
\usepackage[sort,compress]{cite}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{fancyvrb}
\usepackage{longtable}
\usepackage{minted}
\usepackage{array}
\usepackage[english,russian]{babel}
\usepackage[colorlinks=true]{hyperref}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}% <-- moves axis labels near ticklabels (respects tick label widths)
\usepackage{listings}
\usepackage{color}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\setcounter{tocdepth}{4}
\setcounter{secnumdepth}{4}
\newcommand{\eqdef}{\stackrel {\rm def}{=}}
\newcommand{\No}{\textnumero}
\newtheorem{lem}{Лемма}
\setminted{style=bw,
linenos=true,
breaklines=true,
numbersep=5pt,
tabsize=2,
fontsize=\small,
bgcolor=white}
\setmintedinline{style=bw,
bgcolor=white,
fontsize=\normalsize
}
\pgfplotsset{every axis legend/.append style={at={(0.6,1)},anchor=south west}}
%\pgfplotsset{every axis title/.style={at={(0.5,1)},above,yshift=6pt}}
\begin{document}
% Кафедра (в родительном падеже)
\chair{математической кибернетики и компьютерных наук}
% Тема работы
\title{Создание клиентской части приложения управления системой}
% Курс
\course{3}
% Группа
\group{311}
% Факультет (в родительном падеже) (по умолчанию "факультета КНиИТ")
%\department{факультета КНиИТ}
% Специальность/направление код - наименование
\napravlenie{02.03.02 "--- Фундаментальная информатика и информационные технологии}
%\napravlenie{02.03.01 "--- Математическое обеспечение и администрирование информационных систем}
%\napravlenie{09.03.01 "--- Информатика и вычислительная техника}
%\napravlenie{09.03.04 "--- Программная инженерия}
%\napravlenie{10.05.01 "--- Компьютерная безопасность}
% Для студентки. Для работы студента следующая команда не нужна.
%\studenttitle{Студентки}
% Фамилия, имя, отчество в родительном падеже
\author{Козырева Юрия Дмитриевича}
% Заведующий кафедрой
\chtitle{к.\,ф.-м.\,н., доцент} % степень, звание
\chname{С.\,В.\,Миронов}
%Научный руководитель (для реферата преподаватель проверяющий работу)
\satitle{Старший преподаватель} %должность, степень, звание
\saname{М.\,И.\,Сафрончик}
% Руководитель практики от организации (только для практики,
% для остальных типов работ не используется)
\patitle{Заместитель генерального директора,\newline
Руководитель обособленного подразделения \newline
«Инженерный отдел «Саратовский»}
\paname{Е.\,А.\,Синельников}
% Семестр (только для практики, для остальных
% типов работ не используется)
\term{6}
% Наименование практики (только для практики, для остальных
% типов работ не используется)
\practtype{производственная}
% Продолжительность практики (количество недель) (только для практики,
% для остальных типов работ не используется)
\duration{4}
% Даты начала и окончания практики (только для практики, для остальных
% типов работ не используется)
\practStart{22.06.2022}
\practFinish{19.07.2022}
% Год выполнения отчета
\date{2022}
\maketitle
% Включение нумерации рисунков, формул и таблиц по разделам
% (по умолчанию - нумерация сквозная)
% (допускается оба вида нумерации)
%\secNumbering
\tableofcontents
% Раздел "Обозначения и сокращения". Может отсутствовать в работе
%\abbreviations
% Раздел "Определения". Может отсутствовать в работе
%\definitions
% Раздел "Определения, обозначения и сокращения". Может отсутствовать в работе.
% Если присутствует, то заменяет собой разделы "Обозначения и сокращения" и "Определения"
%\defabbr
% Раздел "Введение"
\intro
Производственная практика проходила в ООО «Базальт СПО».
Компания «Базальт СПО» разработчик российских операционных систем «Альт». Опыт разработки программного обеспечения составляет более 20 лет.
В штате компании более 120 разработчиков, программистов и технических специалистов. Офисы компании находятся в четырёх городах: Саратов, Москва, Санкт-Петербург и Обнинск.
Компания имеет лицензии ФСТЭК на деятельность по разработке и производству средств защиты конфиденциальной информации, а также на деятельность по технической защите конфиденциальной информации (рег. номер 1612 и 3025 от 16 сентября 2016 года). Лицензии действуют бессрочно.
\section{Теоретические сведения}
\subsection{Окружение}
«Базальт СПО» занимается разработкой линейки собственных дистрибутивов Linux, под названием "ALT". Одним из ключевых элементов ОС является система межпроцессного взаимодействия D-Bus.
\subsubsection{Linux}
Linux (Ли?нукс; в части случаев GNU/Linux) — семейство Unix-подобных операционных систем на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU, и, возможно, другие компоненты. Как и ядро Linux, системы на его основе, как правило, создаются и распространяются в соответствии с моделью разработки свободного и открытого программного обеспечения. Linux-системы распространяются в основном бесплатно в виде различных дистрибутивов — в форме, готовой для установки и удобной для сопровождения и обновлений, — и имеющих свой набор системных и прикладных компонентов, как свободных, так и проприетарных.
Появившись как решения вокруг созданного в начале 1990-х годов ядра, уже с начала 2000-х годов системы Linux являются основными для суперкомпьютеров и серверов, расширяется применение их для встраиваемых систем и мобильных устройств, некоторое распространение системы получили и для персональных компьютеров.
За счёт использования свободного программного обеспечения и привлечения волонтёров каждая из систем Linux обладает значительными программными возможностями, трудно реализуемыми в прочих моделях разработки: например, в 2008 году расчёты показывали, что для того, чтобы «с нуля» разработать систему, аналогичную Fedora 9, потребовалось бы затратить 10,8 млрд \$, а совокупная себестоимость только ядра Linux оценивалась в сумму более 1,4 млрд \$, притом только за 2008 год она увеличилась на 315 млн \$, совокупный труд оценён в размере 73 тыс. человеко-лет.
Семейство систем, включающих в качестве компонентов основные программы проекта GNU, такие как bash, gcc, glibc, coreutils и ряд других, иногда идентифицируется как GNU/Linux. Так как традиционно большинство систем было именно таким, под «Linux» обычно подразумеваются именно они; притом существует спор об именовании GNU/Linux. Существует проект стандартизации внутренней структуры Linux-систем — Linux Standard Base, часть документов которого зарегистрирована в качестве стандартов ISO; но далеко не все системы сертифицируются по нему, и в целом для Linux-систем не существует какой-либо общепризнанной стандартной комплектации или формальных условий включения в семейство. Однако есть ряд систем на базе ядра Linux, но не имеющих в основе зависимости от программ GNU, которые поэтому "GNU/Linux" не называют, в частности, таковы мобильные системы Android и FirefoxOS.
Официальным логотипом и талисманом Linux является пингвин Tux, созданный в 1996 году Ларри Юингом. Торговая марка «Linux» принадлежит создателю и основному разработчику ядра Линусу Торвальдсу. При этом проект Linux в широком смысле не принадлежит какой-либо организации или частному лицу, вклад в его развитие и распространение осуществляют тысячи независимых разработчиков и компаний, одним из инструментов взаимодействия которых являются группы пользователей Linux. Существует ряд некоммерческих объединений, ставящих основной целью развитие и продвижение Linux, наиболее крупное и влиятельное из них — основанный в 2007 году The Linux Foundation. Существует значительный рынок коммерческой технической поддержки Linux-систем, на котором с долей свыше 70 \% (2017) доминирует корпорация Red Hat (поглощена IBM в 2019 году).
\subsection{Дистрибутив ALT}
Все дистрибутивы операционных систем ALT основаны на собственной распределённой инфраструктуре разработки, инструментарии сборки и репозитории «Сизиф» (Sisyphus).
Инфраструктура разработки находится на территории РФ, принадлежит и поддерживается компанией «Базальт СПО». Сотрудники «Базальт СПО» и команда разработчиков ALT Linux Team принимают активное участие в международных проектах разработки свободного ПО.
На базе репозитория Sisyphus периодически формируется стабильная ветка (программная платформа), которая поддерживается в течение длительного времени и используется в качестве базы для построения дистрибутивов линейки «Альт». На протяжении всего жизненного цикла программной платформы в ней исправляются критические ошибки, выпускаются обновления, в том числе и по безопасности. Любые изменения попадают в стабильную ветку только после обязательного функционального и регрессионного тестирования.
В 2021 году сформирована новая десятая платформа (Aronia).
Продукты на базе Десятой платформы выпускаются с декабря 2021 г.
Дистрибутив представляет собой операционную систему на основе ядра Linux и набор системного и прикладного ПО, объединённых инсталлятором (установщиком).
Основой всех дистрибутивов «Альт» является модульная система управления Alterator, содержащая более 100 модулей для конфигурирования системы.
Дистрибутивы «Альт» спроектированы с учётом возможности интеграции между собой. Это позволяет строить информационные системы любого масштаба, а также обеспечивает работу в гетерогенных сетях.
Дистрибутивы «Базальт СПО» включены в Единый реестр российских программ для электронных вычислительных машин и баз данных (кроме Simply Linux).
\subsection{D-Bus}
D-Bus — система межпроцессного взаимодействия, которая позволяет приложениям в операционной системе сообщаться друг с другом.
D-Bus является частью проекта freedesktop.org. Она обладает высокой скоростью работы, не зависит от рабочей среды, работает на POSIX-совместимых операционных системах, также существует версия для Windows (пока на стадии разработки)[1].
Состоит из двух частей: демона и низкоуровневого API. Существуют высокоуровневые библиотеки для фреймворков Qt, Java, GLib, C\#, Python, Ruby и библиотека для C++.
\subsection{Инструменты}
В ходе практики использовались следующие инструменты: для реализации внутренней логики приложения использовался язык программирования C++ с фреймворком Qt, для описания пользовательского интерфейса применялся язык разметки QML.
\subsubsection{Qt}
Qt — фреймворк для разработки кроссплатформенного программного обеспечения на языке программирования C++. Для многих языков программирования существуют библиотеки, позволяющие использовать преимущества Qt: Python — PyQt, PySide; Ruby — QtRuby; Java — Qt Jambi; PHP — PHP-Qt и другие.
Со времени своего появления в 1996 году библиотека легла в основу многих программных проектов. Кроме того, Qt является фундаментом популярной рабочей среды KDE, входящей в состав многих дистрибутивов Linux.
\subsubsection{QML}
QML (Qt Meta Language или Qt Modeling Language) — декларативный язык программирования, в основании которого лежит среда JavaScript. QML используется для разработки приложений, делающих основной упор на пользовательский интерфейс и, в целом, на дизайн графической части. Является частью Qt Quick, среды разработки пользовательского интерфейса, распространяемой вместе с Qt. Часто используется для создания приложений, ориентированных на мобильные устройства с сенсорным управлением.
QML-документ представляет собой дерево элементов. QML элемент, так же, как и элемент Qt, представляет собой совокупность блоков: графических (таких, как rectangle, image) и поведенческих (таких, как state, transition, animation). Эти элементы могут быть объединены, чтобы построить комплексные компоненты, начиная от простых кнопок и ползунков и заканчивая полноценными приложениями, работающими с интернетом.
QML элементы могут быть дополнены стандартными для JavaScript вставками путём встраивания .js файлов. Также они могут быть расширены C++ компонентами через Qt framework.
QML - это язык разметки; его средой выполнения JavaScript являлся пользовательский движок V4.
Код QML и JavaScript может быть скомпилирован в собственные двоичные файлы C++ с помощью Qt Quick Compiler. Для удобства разработки существует формат файла кэша QML, который динамически сохраняет скомпилированную версию QML для более быстрого старта при следующем запуске.
\section{Выполнение практического задания}
Во время производственной практики была поставлена задача реализовать каркас пользовательской части альтератора и интерфейс одного из его модулей в качестве типового.
\subsection{title}
% Раздел "Заключение"
\conclusion
В ходе выполнения курсовой работы были изучены различные модели генерации случайных графов, и проведены исследования стандартной модели Барабаши"--~Альберт. Проведенные эксперименты показали, модель случайного графа Барабаши"--~Альберт подходит для моделирования процессов, происходящих в социальных сетях и других сложных системах. Также были изучены различные модули языка программирования Python такие как: networkx(для работы с графами), random и numpy.random(для работы со случайными величинами), multiprocessing(для выполнения паралельных вычислений), а также matplotlib, matplotlib.pyplot и pylab(для построения и отображения графиков).
% Список литературы
\bibliographystyle{gost780uv}
\bibliography{thesis}
% Окончание основного документа и начало приложений
% Каждая последующая секция документа будет являться приложением
\appendix
\section{Текст программы}\label{app:program}
В этом приложении приведён полный текст реализации модели Барабаши"--~Альберт.
\begin{minted}{python}
\end{minted}
\end{document}