
\section{Project schedule}
The PIANOS project will follow the classical waterfall software development process.
The software product life cycle consists of analysis, design, implementation and testing phases. 

\subsection{Phases}
The analysis phase is centered around the software requirements specification (SRS). 
The analysis phase is complete when a software requirements specification is produced.
In addition to the SRS, a general project plan including initial risk assessment and schedule are realized.

The design phase is focused on software architecture and testing design. 
Required deliverables are a software design document and a software testing document. 
Additional deliverables may include technical and user interfaces prototypes. 

During the implementation phase the components and other features of the system are developed. 
At the end of this phase the software product is expected to be fully featured. Unit tests are run in accordance to the main components. 

The testing and finishing phase concentrates on integration and system testing. User manual and release packaging are also produced during this phase. This phase is complete when the software and necessary documents are delivered to the client.

\subsection{Milestones}
In the software development process there are four major milestones. 
The milestones are scheduled at the end of each phase and they should be mostly complete\footnote{Strictly linear schedule is not required}  before moving to the next phase. 
Consequently, the progress of the project and the produced deliverables are reviewed when each milestone is reached. 

\begin{center}
\begin{tabular}[]{| c | l |}
\hline 
\textbf{Date} & \textbf{Deliverable} \\
\hline \hline
27.5. & Project plan (final)\\
\hline
10.6. & Software requirements specification (draft) \\
\hline
17.6. & Software requirements specification (final) \\
\hline
24.6. & Software design document (draft) \\
\hline
22.7. & Software design document (final) \\ 
\hline
19.8. & Software product (executable version) \\
\hline
2.9 & Final software product (release) \\
\hline
\end{tabular}
% --- 
\end{center}

\subsection{Project size estimation}

\subsubsection{Function points}

The function point method is used as the primary tool in size estimation. 
Size estimates are updated during the project according to available information.

Initial function point (FP) estimate can be obtained by considering data movements across application boundaries.
The input of the application is likely to consist of a varying set of data and a possibly complex description of the dependencies between data attributes. 
The output of the application is likely to consist of a small number of characteristic values describing the data and a collection of samples based on the information provided by the model and the data set. A summary of the FP analysis is shown below.

%\begin{center}
%\label{FP}
%\begin{tabular}[]{| c | c | c | c | c |}
%\hline
%\textbf{Type} & \multicolumn{4}{|c|}{\textbf{Complexity}}\\
%\hline \hline
%& Low & Average & High & Total \\
%\hline
%External inputs & $1 \cdot 3 = 3$ & $ 0 \cdot 4 = 0$  & $ 1 \cdot 6 = 6$ & $\mathbf{9}$ \\
%\hline
%External outputs & $1 \cdot 4 = 4$ & $0 \cdot 5 = 0$ & $1 \cdot 7 = 7$ & $\mathbf{11}$\\
%\hline
%\end{tabular}
%\end{center}

\begin{tabular}[]{| l | l | l | l | l |}
\hline
 & Simple & Average & Complex & Total \\
\hline
User inputs & 3 * 3 & 2 * 4 & 0 * 6 & 17 \\
\hline
User outputs & 1 * 4 & 0 * 5 & 0 * 7 & 4 \\
\hline
User inquiries & 0 * 3 & 0 * 4 & 0 * 6 & 0 \\
\hline
Files & 1 * 5 & 1 * 10 & 1 * 15 & 30 \\
\hline
External interfaces & 0 * 5 & 0 * 7 & 0 * 10 & 0 \\
\hline
\end{tabular}

At total: 51 function points

Simple user inputs include
\begin{itemize}
\item Some simulation parameters: number of iterations, number of burn-in iterations,  the thinning (?) factor 
\end{itemize}

Average user inputs include
\begin{itemize}
\item Some simulation parameters: proposal distributions to different parameters, preliminary values to different parameters
\end{itemize}

Complex user inputs include
\begin{itemize}
\item Some simulation parameters: the updating strategy
\end{itemize}

Simple user outputs include
\begin{itemize}
\item Samples from the posterior distribution
\end{itemize}

Simple files include
\begin{itemize}
\item The matrix describing which squares or cities are adjacent to each other
\end{itemize}

Average complexity files include
\begin{itemize}
\item The data (the observations and some other information - for example the observation rates)
\end{itemize}

Complex files include
\begin{itemize}
\item The model
\end{itemize}

Complexity adjustment factors

Each question is answered using a scale that ranges from 0 (not important) to 5 (very important).

\begin{tabular}[]{| l | c |}
\hline
1. Does the system require reliable backup and recovery? & 0 \\
\hline
2. Are data communications required? & 0 \\ 
\hline
3. Are there distributed processing functions? & 1 \\
\hline
4. Is performance critical? & 4 \\
\hline
5. Will the system run in an existing, heavily utilized operational environment? & ? \\ 
\hline
6. Does the system require on-line data entry & ? \\ 
\hline
7. Does the on-line data entry require ... multiple screens or operations? & ? \\ 
\hline
8. Are the master files updated on-line? & ? \\ 
\hline
9. Are the inputs, outputs, files, or inquiries complex? & 5 \\ 
\hline
10. Is the internal processing complex? & 5 \\ 
\hline
11. Is the code designed to be reusable? & 3 \\ 
\hline
12. Are conversion and installation included in the design? & 0 \\ 
\hline
13. Is the system designed for multiple installations in different organizations? & 0 \\ 
\hline
14. Is the application designed to facilitate change and ease of use by the user? & 3 \\ 
\hline
\end{tabular}

The sum of the answers is 21.

Now it's possible to calculate the FP estimate by using the formula

FP = count-total * ( 0.65 + 0.01 * answers )
 = 51 * ( 0.65 + 0.01 * 21 ) = 43.86

\subsubsection{Lines of code}

Lines of code (LOC) can be estimated based on the previous implementation of a similar system, Bassist. Since Bassist has approximately 12K lines of code and PIANOS is supposed to implement only a limited subset of the functionality available in Bassist, it is likely that PIANOS LOC will be around 2K - 6K. 

Lines of code can also be estimated using function points. It is estimated that the average ratio when considering Fortran is 106 LOC / FP.

Using the FP calculation above the corresponding LOC estimate is about 4600 lines.

\subsection{Project schedule}

The project will run for 16 weeks, two of which are to be holidays. The holiday will be 4.7. - 17.7. (weeks 27 and 28).

Everyone should work at least for 240 hours, so the working rate should be at least 17 hours / week from the beginning.

The phases of the project are shown in the GANTT diagram at the end of this chapter.

\begin{landscape}
	\begin{figure}[p]
	     \includegraphics[width=20cm] {content/phases2.eps}
	\end{figure}
\end{landscape}

%\epsfig{file=content/phases.eps}

%The example schedule for Software Engineering Projects is shown below.

%\begin{tabular}[]{| p{1cm} | p{3cm} | p{2cm} | p{2cm} | p{5cm}|}
%\hline
% & Time & Working hours per person & Total working hours & Phase \\
%\hline
% & 1.5 weeks & 25.5 & 127.5 & Starting the project and writing the Project Plan \\
%\hline
% & 5.5 - 8.5 weeks & 93.5 - 144.5 & 467.5 - 722.5 & Requirements analysis and design \\
%\hline
% & 2.5 weeks & 42.5 & 212.5 & Implementation \\
%\hline
% & 3 - 5.5 weeks & 51 - 93.5 & 255 - 467.5 & Testing and finishing the product \\
%\hline
%Total & 14 weeks & 240 & 1200 & \\
%\hline
%\end{tabular}
%




%Kuvaa, miten projekti jakaantuu pienempiin osiin. Osien v�lisi� suhteita on
%syyt� selvent�� ns. GANTT-kaavion avulla. Aikataulua laadittaessa kannattaa
%ottaa huomioon kaikki mahdolliset ennalta tiedett�v�t tapahtumat,
%esimerkiksi eri tuotosten er�p�iv�t, seurantakokousten p�iv�m��r�t,
%projektiryhm�n j�senten mahdolliset poissaolot, kaikille projekteille
%yhteinen demotilaisuus jne.

%Kun aikataulun esitt�� tarkasti, projektin seuranta on helppoa.
%Osallistujien v�lisen ty�njaon voi esitt�� t�ss�.


