1
|
\documentclass[12pt, a4paper]{article}
|
2
|
|
3
|
|
4
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
5
|
%%-----------------------VYUŽITÉ PACKAGES----------------------------%%
|
6
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
7
|
\usepackage[czech]{babel}
|
8
|
\usepackage{geometry}
|
9
|
\usepackage[final]{graphicx}
|
10
|
\usepackage{anyfontsize}
|
11
|
\usepackage{setspace}
|
12
|
\usepackage{hyperref}
|
13
|
\usepackage[T1]{fontenc}
|
14
|
\usepackage{subcaption}
|
15
|
\hypersetup{
|
16
|
colorlinks,
|
17
|
citecolor=black,
|
18
|
filecolor=black,
|
19
|
linkcolor=black,
|
20
|
urlcolor=black
|
21
|
}
|
22
|
|
23
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
24
|
%%-----------------------ZAČÁTEK VLASTNÍHO TEXTU---------------------------%%
|
25
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
26
|
\begin{document}
|
27
|
|
28
|
\begin{titlepage}
|
29
|
\title{
|
30
|
\vspace{-4cm}\hspace{-10cm}
|
31
|
\includegraphics[width=8cm]{assets/logo.png} \\
|
32
|
\vspace{5cm}
|
33
|
\begingroup
|
34
|
\setstretch{4}\fontsize{30}{10}\selectfont\fontdimen2\font=0.8ex
|
35
|
\parbox{13.3cm}{
|
36
|
\centering{\textbf{ASWI - Neurorehablitační systém BrainIn}\\
|
37
|
\fontsize{24}{10}\selectfont\centering{{Interní týmové předpisy a dokumentace}}
|
38
|
}}
|
39
|
\endgroup}
|
40
|
\date{}
|
41
|
\author{}
|
42
|
\maketitle \thispagestyle{empty}
|
43
|
\vspace{3cm}
|
44
|
\hspace{0cm}\parbox[b][5cm][b]{8cm}{{\setstretch{1.5}
|
45
|
Autor: Bc. Jan Hereš\\
|
46
|
Datum: 27.02.2023\\
|
47
|
Poslední úprava: \today\\}}
|
48
|
\end{titlepage}
|
49
|
\newpage
|
50
|
|
51
|
|
52
|
\tableofcontents
|
53
|
\newpage
|
54
|
|
55
|
\section{Úvod}
|
56
|
\paragraph{} Tento dokument slouží jakožto analogie ,,interních směrnicí'' pro sjednocení a ustálení vývojových procesů napříč celým týmem.
|
57
|
|
58
|
\section{Interní management}
|
59
|
\paragraph{} V rámci řízení projektu bylo ustanoveno, že se tým bude \textbf{pravidelně} scházet v on-site/online formě každý týden (konkrétní den bude vždy určen s předstihem dle možností jednotlivých zúčastněných). V rámci těchto schůzek bude probrána odvedená a naplánovaná práce, případně jakákoliv nastávající problematika. Z těchto meetingů bude \textbf{vždy} vytvořen ,,záznam ze schůzky dne XXX'', který bude součástí dokumentu se všemi takovými záznamy.
|
60
|
|
61
|
\section{Verzovací systém Git}
|
62
|
\paragraph{} Tato sekce se týká verzovacího systému Git (potažmo repozitáře Gitlab).
|
63
|
|
64
|
|
65
|
\subsection{Tvorba vývojových větví (\textit{branches})}
|
66
|
\paragraph{} V rámci projektu existuje hlavní vývojová větev \textbf{master}.
|
67
|
V této větvi budou dostupné veškeré \textbf{funkční a otestované} verze projektu ve formě otagovaných \textbf{releases}.
|
68
|
Nadále bude existovat větev \textbf{development (dev)}, na které bude dostupná \textbf{poslední upravená, funkční a otestovaná}(na dev prostředí) verze, jež nebyla ještě otestována na produkčním prostředí.
|
69
|
Ve chvíli, kdy bude verze na development větvi otestována i na produkčním prostředí, může být vytvořen merge request do hlavní větve (za předpokladu, že jsou splněny všechny požadavky na novou verzi).
|
70
|
Pro nové \textit{features} nebo pro \textit{change requests} bude vždy vytvořena \textbf{nová} separátní větev z development větve.
|
71
|
Workflow mezi jednotlivými větvemi je vyobrazen na obrázku \ref{fig:branches_workflow}.
|
72
|
|
73
|
\begin{figure}[h]
|
74
|
\centering
|
75
|
\includegraphics[width=\linewidth]{assets/aswi_branches.png}
|
76
|
\caption{Workflow mezi jednotlivými větvemi v rámci repozitáře}
|
77
|
\label{fig:branches_workflow}
|
78
|
\end{figure}
|
79
|
|
80
|
|
81
|
\subsection{Tvorba a správa úkolů napříč používanými nástroji}
|
82
|
|
83
|
\subsubsection{Issues}
|
84
|
\paragraph{} Issue je základní plánovací jednotka v systému řízení projektu (zde konkrétně nástroj \textbf{Jira}).
|
85
|
Tato jednotka bude vždy svázána s konkrétní \textit{issue} na repozitáři Gitlab, tzn. v rámci \textit{issue} bude \textbf{vždy} k dispozici odkaz na danou \textit{issue} v repozitáři. Jejich vazba by tedy vždy měla být 1:1.
|
86
|
|
87
|
\subsubsection{Ticket}
|
88
|
\paragraph{} Ticket je běžný základní úkol.
|
89
|
V rámci každé issue bude k dispozici výčet všech podúkolů (\textit{task}) které je nutné v rámci daného ticketu splnit.
|
90
|
V rámci \textit{issue} bude taktéž možné specifikovat, zda-li úkol čeká na dokončení jiného, či naopak.
|
91
|
|
92
|
\subsubsection{Feature}
|
93
|
\paragraph{} Feature je typ \textit{issue} využívaný k označení implementace nové funkcionality do aplikace.
|
94
|
|
95
|
\subsubsection{Bug}
|
96
|
\paragraph{} Bug je typ, kterým se označují úkoly spojené s odstraněním nových vzniklých chyb během vývoje.
|
97
|
|
98
|
\subsubsection{Change request}
|
99
|
\paragraph{} Tímto type se označují úkoly, které jsou spojené se změnou nějaké již implementované funkcionality (feature), nicméně během vývoje došlo ke změnám priorit zákazníka a je potřeba tuto funkčnost upravit/změnit.
|
100
|
|
101
|
\subsubsection{Epic}
|
102
|
\paragraph{} Epicy jsou velké logické celky agregující jednotlivé, logicky spjaté \textit{issues}.
|
103
|
V rámci jedné iterace je možné mít naplánováno více Epiců a jeden Epic může být součástí více iterací.
|
104
|
|
105
|
\subsubsection{Obecná pravidla pro vytváření \textit{issues}}
|
106
|
\begin{itemize}
|
107
|
\item Každá \textit{issue} bude obsahovat krátký, nicméně dostatečně deskriptivní popis, čeho konkrétně se týká
|
108
|
\item Každá \textit{issue} bude \textbf{jednoznačně identifikovatelná} za pomocí tzv. \textbf{labelů} (specifikováno dále)
|
109
|
\item Každá \textit{issue}, která bude v jiné, než \textbf{Backlog} fázi (specifikováno dále) bude \textbf{jednoznačně přiřazena} danému vývojáři (případně testerovi či zákazníkovi, bude-li třeba)
|
110
|
\item Každá \textit{issue} bude označena jednou z možností \textbf{,,priority''} (viz dále)
|
111
|
\item U každé issue, které je ve fázi ,,In progress'', či dále, by měl být stanoven časový odhad potřebné práce k dokončení.
|
112
|
|
113
|
\end{itemize}
|
114
|
|
115
|
\subsubsection{Možné fáze \textit{issues}}
|
116
|
\begin{itemize}
|
117
|
\item Backlog - analogie s TODO
|
118
|
\item In progress
|
119
|
\item To test (dev) - testování \textbf{vždy provádí jiný vývojář(tester)!}
|
120
|
\item Code review
|
121
|
\item To deploy (dev) - funkcionalita implementována, nicméně je nutné funkční verzi \textit{deploynout} na testovací prostředí k umožnění testování
|
122
|
\item To test (prod) - otestování na produkčním prostředí
|
123
|
\item To deploy (prod) - končí schválením merge requestu do \textbf{masteru}
|
124
|
\item Done - Issue hotova, uzavřena
|
125
|
\end{itemize}
|
126
|
|
127
|
\paragraph{} Poznámka: Ze stavu ,,To deploy (dev)'' lze přejít do stavu ,,Done'', pokud není žádoucí ovlivňovat produkční prostředí (zejména pro malé změny, které jsou součástí většího zásahu do projektu).
|
128
|
|
129
|
|
130
|
\paragraph{Typy issues}
|
131
|
\begin{itemize}
|
132
|
\item Epic - velký logický blok, který obaluje novou funkcionalitu nebo velké množství úprav
|
133
|
\item Feature - nová funkcionalita (zejména front-endové změny)
|
134
|
\item Ticket - jakýkoliv další úkol, který implicitně není novou funkcionalitou, spíše například vytvoření obsáhlejší dokumentace, případně nových tříd či struktur
|
135
|
\item Task - základní úkol (ideálně atomický); využití na rozdělení ticketu do menších podúkolů
|
136
|
\item Bug - Chyba, kterou je nutno opravit
|
137
|
\item Change request - vyžádaná změna od zákazníka/uživatele, která byla již dříve implementována
|
138
|
\end{itemize}
|
139
|
|
140
|
\paragraph{Typy priority}
|
141
|
\begin{itemize}
|
142
|
\item \textbf{Lowest}
|
143
|
\item \textbf{Low} - nevyžaduje velkou pozornost (příkladem mohou být nekritické části aplikace, ,,nice to have(s)''),
|
144
|
\item \textbf{Medium} - vyžaduje vyšší míru pozornosti - již by neměly zůstávat nedokončeny v rámci přiřazené iterace (v krajních případech je možné posunout do další),
|
145
|
\item \textbf{High} - vysoká priorita vyžadujicí privilegované řešení,
|
146
|
\item \textbf{Highest (Severe)} - maximální důležitost - vyžaduje okamžité řešení (například v případech, kdy tyto problémy způsobují nestabilitu či přímo rozbíjí produkční prostředí)
|
147
|
\end{itemize}
|
148
|
|
149
|
\paragraph{} V rámci jakýchkoliv úkolů \textbf{není potřeba} vést časové údaje a odhady. Tato činnost bude probíhat v systému \textbf{Jira}.
|
150
|
|
151
|
|
152
|
\section{Aplikace pro řízení projektů - Jira}
|
153
|
\paragraph{} Pro účely předmětu ASWI bylo schváleno garantem předmětu doc.Ing. Přemyslem Bradou, MsC., Ph.D. a vedoucími projektu použití nástroje \textbf{Jira} pro správu vývoje a projektu.
|
154
|
Pro sjednocení vývojového procesu byl vytvořen následující projektový workflow:
|
155
|
|
156
|
\begin{figure}
|
157
|
\centering
|
158
|
\includegraphics[width=\linewidth]{assets/jira_workflow.png}
|
159
|
\caption{Projektový workflow v systému Jira}
|
160
|
\end{figure}
|
161
|
|
162
|
\paragraph{} Poznámka: Je tedy zřejmé, že tento workflow přesně koreluje s navrženou stukturou repozitáře projektu.
|
163
|
|
164
|
|
165
|
% \cite{Example}
|
166
|
|
167
|
|
168
|
% \clearpage
|
169
|
% \section{Závěr}
|
170
|
|
171
|
% \newpage
|
172
|
% \bibliographystyle{unsrt}
|
173
|
% {\raggedright\small
|
174
|
% \bibliography{literatura}
|
175
|
% }
|
176
|
|
177
|
\end{document}
|