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
|
Vzhledem k faktu, že je již od začátku aplikace vyvíjena pro české pacienty, terapeuty, \dots (a z důvodu zachování již zaběhlých konvencí) budou veškeré komentáře, názvy a komunikace popsány v \textbf{českém} jazyce.
|
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á, fuknční a neotestovaná verze.
|
69
|
Ve chvíli, kdy bude verze na development větvi otestována, 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ů (\textit{Tickets and Issues})}
|
82
|
\paragraph{} Každý úkol bude mít svůj \textit{ticket} (v případě, že je tak obsáhlý, že se bude muset dále dělit na podúkoly).
|
83
|
Pokud bude úkol ,,jednoduchý'' (tj. nebude vyžadovat žádnou, případně velice minimální dekompozici), bude k němu adresována daná \textit{issue}.
|
84
|
|
85
|
\subsubsection{Issues (Tickets)}
|
86
|
\paragraph{} Ticketem se rozumí takový úkol, který je nutné dekomponovat do menší, ideálně atomických podúkolů.
|
87
|
Samotný ticket bude reprezentován v repozitáři jakožto \textit{issue}, nicméně v rámci jeho popisů (\textit{Tasks}) bude výčet všech úkolů (volně popsaných), které je nutné splnit.
|
88
|
V rámci Ticketu bude využito i sekce \textit{Linked Items}, kde budou linknuté konkrétní podúkoly ve formě jednotlivých \textit{issues} (přesná korelace mezi sekcí \textit{Tasks a Linked Items} je tedy zřejmá).
|
89
|
\par Z pragmatického hlediska bude tedy Ticket pouze speciální issue, která agreguje veškeré logicky související podúkoly.
|
90
|
|
91
|
\subsubsection{Issues (Tasks)}
|
92
|
\paragraph{} Jak bylo již řečeno výše, \textit{issue} bude buďto jednoduchý úkol, který je součástí daného \textit{tasku}.
|
93
|
Pravidla pro vytváření těchto úkolů:
|
94
|
\begin{itemize}
|
95
|
\item Každá \textit{issue} bude obsahovat krátký, nicméně dostatečně deskriptivní popis, čeho konkrétně se týká
|
96
|
\item Každá \textit{issue} bude \textbf{jednoznačně identifikovatelná} za pomocí tzv. \textbf{labelů} (specifikováno dále)
|
97
|
\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)
|
98
|
\item Každá \textit{issue} bude označena jednou z možností \textbf{,,urgentnosti''} (viz dále)
|
99
|
\item U každé issue, které je ve fázi ,,In progress'', či dále, bude jednoznačně stanoveno datum, kdy by měl být úkol dokončen (neměl by přesáhnout koncové datum iterace, v rámci které je úkol řešen)
|
100
|
|
101
|
\end{itemize}
|
102
|
|
103
|
\paragraph{Jednotlivé fáze úkolů}
|
104
|
\begin{itemize}
|
105
|
\item Backlog - analogie s TODO
|
106
|
\item In progress
|
107
|
\item To test (dev) - testování \textbf{vždy provádí jiný vývojář/tester!}
|
108
|
\item Code review
|
109
|
\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í
|
110
|
\item To test (prod) - otestování na produkčním prostředí
|
111
|
\item To deploy (prod) - končí schválením merge requestu do \textbf{masteru}
|
112
|
\item Done - Issue hotova, uzavřena
|
113
|
\end{itemize}
|
114
|
|
115
|
\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).
|
116
|
|
117
|
|
118
|
\paragraph{Typy issues}
|
119
|
\begin{itemize}
|
120
|
\item Epic - velký logický blok, který obaluje novou funkcionalitu nebo velké množství úprav
|
121
|
\item Feature - nová funkcionalita (zejména front-endové změny)
|
122
|
\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
|
123
|
\item Task - základní úkol (ideálně atomický); využití na rozdělení ticketu do menších podúkolů
|
124
|
\item Bug - Chyba, kterou je nutno opravit
|
125
|
\item Change request - vyžádaná změna od zákazníka/uživatele, která byla již dříve implementována
|
126
|
\end{itemize}
|
127
|
|
128
|
\paragraph{Typy priority/urgentnosti}
|
129
|
\begin{itemize}
|
130
|
\item \textbf{Low} - nevyžaduje velkou pozornost (příkladem mohou být nekritické části aplikace, ,,nice to have(s)''),
|
131
|
\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ší),
|
132
|
\item \textbf{High} - vysoká priorita vyžadujicí privilegované řešení,
|
133
|
\item \textbf{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í)
|
134
|
\end{itemize}
|
135
|
|
136
|
\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}.
|
137
|
|
138
|
|
139
|
\section{Aplikace pro řízení projektů - Jira}
|
140
|
\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.
|
141
|
Pro sjednocení vývojového procesu byl vytvořen následující projektový workflow:
|
142
|
|
143
|
\begin{figure}
|
144
|
\centering
|
145
|
\includegraphics[width=\linewidth]{assets/jira_workflow.png}
|
146
|
\caption{Projektový workflow v systému Jira}
|
147
|
\end{figure}
|
148
|
|
149
|
\paragraph{} Poznámka: Je tedy zřejmé, že tento workflow přesně koreluje s navrženou stukturou repozitáře projektu.
|
150
|
|
151
|
|
152
|
% \cite{Example}
|
153
|
|
154
|
|
155
|
% \clearpage
|
156
|
% \section{Závěr}
|
157
|
|
158
|
% \newpage
|
159
|
% \bibliographystyle{unsrt}
|
160
|
% {\raggedright\small
|
161
|
% \bibliography{literatura}
|
162
|
% }
|
163
|
|
164
|
\end{document}
|