Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- \documentclass{article}
- \usepackage[T1]{fontenc}
- \usepackage[polish]{babel}
- \usepackage[utf8]{inputenc}
- \usepackage{lmodern}
- \usepackage{lipsum}
- \usepackage[margin=1in,left=1.5in,includefoot]{geometry}
- \newcommand{\blank}[1]{\hspace*{#1}}
- \selectlanguage{polish}
- \author{Michal Kolendo}
- % header and footer stuff
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \fancyhead{}
- \fancyfoot{}
- \fancyfoot[R]{\thepage\\}
- \renewcommand{\headrulewidth}{0pt}
- \renewcommand{\footrulewidth}{1pt}
- %
- \begin{document}
- \begin{titlepage}
- \begin{center}
- \line(1,0){400}\\
- [0.25in]
- \huge{\bfseries Specyfikacja Implementacyjna}\\
- [2mm]
- \line(1,0){300}\\
- [1.5cm]
- \textsc{\LARGE Problem N-ciał}\\
- [0.75cm]
- \textsc{\Large Języki i Metody Programowania cz.2}\\
- [10cm]
- \end{center}
- \begin{flushright}
- \textsc{\large Michał Kolendo\\
- \small Nr indeksu 286771 \\
- \large Bartek Królak\\
- \small Nr indeksu 284922 \\
- \large Marzec 14, 2017}
- \end{flushright}
- \end{titlepage}
- % Front matter stuff
- \pagenumbering{arabic}
- %this is main body stuff
- \setcounter{page}{1}
- \section{\underline{Opis modułów}}\label{sec:intro}
- Program będzie składał się z pięciu modułów:
- \begin{enumerate}
- \item Moduł wczytujący - \textbf{Skaner/Parser}
- \item Moduł liczący - \textbf{Nbody}
- \item Moduł zapisujący - \textbf{Eksport}
- \item Skrypt w gnuplocie wykonujący animacje - \textbf{script}
- \end{enumerate}
- \vspace{10mm}
- \noindent \textbf{Skaner:}\\
- \begin{center}
- \verb|int wczytaj_dane(char * nazwa_pliku_wej, struct_dane, int * n)|;\\
- \end{center}
- \noindent Funkcja \verb|wczytaj_dane| dostaje nazwę pliku z którego będzie czytała dane oraz tablice struktur do których będzie zapisywała informacje o planetach. Alokuje pamięć na liczbę współrzędnych i prędkości równą q( q = długość symulacji / krok czasowy). Uzupełnia n ilością wczytanych planet. Skanowanie i zapisywanie do struktur będzie zrobione w dwóch pętlach.\\
- \begin{center}
- \verb|int sprawdz_dane(char * nazwa_pliku_wej)|;\\
- \end{center}
- \noindent Funkcja \verb|sprawdz_dane| będzie sprawdzała poprawność danych zawartych w pliku tekstowym. Dane będą sprawdzane zarówno od strony logicznej jak i składniowej. Gdy funkcja wykryje, że dane, które zostały podane są niepoprawne zakomunikuje nam o błędzie i jego rodzaju.\\
- \vspace{5mm}
- \noindent\textbf{{N-body:}}
- \vspace{3mm}
- \begin{center}
- \verb|int oblicz_pozycja(struct_dane, int krok_czasowy, int dlugosc_symulacji, int n);|\\
- \end{center}
- \noindent Funkcja \verb|oblicz_pozycja| będzie przeliczała przyszłe współrzędne i zapisywała je kolejno w strukturze planeta pod odpowiednim indeksem tablicy. Z każdym obrotem pętli, licznik będzie przesuwał się po kolejnych współrzędnych. Dzięki temu algorytm obliczeniowy będzie obliczał każde kolejne położenie na podstawie poprzedniego.\\
- N-body dostaje jako dane strukturę w której zawarte jest:\\
- -współrzędna x\\
- -współrzędna y\\
- -współrzędna z\\
- -wektor Vx\\
- -wektor Vy\\
- -wektor Vz\\
- Krok czasowy oraz długość symulacji, potrzebne do liczenia położeń w pętlach.\\
- \newpage
- \noindent \textbf{Eksport:}
- \vspace{3mm}
- \begin{center}
- \verb|int zapisz_plik(char *nazwa_pliku_wyj, struct_dane);|\\
- \end{center}
- \noindent Funkcja \verb|zapisz_plik| będzie tworzyla plik o nazwie \verb|<nazwa_pliku_wyj>| , otwierała go i zapisywała kolejno położenia z danej struktury i odpowiadającej dla niej tablicy x,y,z.\\
- \begin{center}
- \verb|int zapisz_w_gnuplot(char *nazwa_pliku_wyj);|\\
- \end{center}
- \noindent Funkcja \verb|zapisz_w_gnuplot| będzie zapisywała do skryptu w gnuplocie nazwę pliku z którego skrypt ma czytać informacje potrzebne do stworzenia animacji graficznej. Dane odpowiedni będą zapisywane do \verb|script2d| i \verb|script3d|.\\
- \vspace{5mm}
- \noindent \textbf{Main:}
- \vspace{3mm}
- \noindent Zadaniem main'a będzie uruchamianie poszczególnych moduły w odpowiedniej kolejności. W mainie trzymane są tylko najważniejsze informacje tj. arguemnty wejściowe, ilość planet i wskaźnik do struktury z planetami.\\
- \begin{center}
- \verb|int main(int argc, char *argv[]);|\\
- \end{center}
- \noindent Main będzie przyjmował następujące argumenty wejściowe przy uruchomieniu programu:\\
- \hspace{2cm}\verb| /a.out -i <plik.txt> -o <plik.txt> -n <liczba ciał> -s <krok czasowy>|\\
- \blank{3cm} \verb|-l <długość symulacji> -r <promień ciał>|
- \noindent Modul main tylko zarządza resztą modułów.
- \section{\underline{Opis algorytmu}}\label{sec:intro}
- TODO\\
- \section{\underline{Opis testowania}}\label{sec:intro}
- Testy programu zostaną podzielone na trzy fazy:
- \begin{enumerate}
- \item Testy jednostkowe
- \item Testy integracyjne
- \item Testy akceptacyjne
- \end{enumerate}
- \vspace{5mm}
- \noindent \textbf{1. Testy jednostkowe:}\\
- \indent W testach jednostkowych będziemy testować każdy moduł indywidualnie.W poszczególnych modułach będzie wstawiali prototyp funkcji main.Sprawdzimy, czy po otrzymaniu poprawnego wejścia otrzymamy poprawne wyjście. Przetestujemy tu także obsługę błędów.\\
- \vspace{5mm}
- \noindent \textbf{2. Testy integracyjne:}\\
- \indent W testach integracyjnych sprawdzimy, czy wszystkie moduły prawidłowo się ze sobą komunikują i czy poprawnie reagują na przekazywane sobie informacje. Oprócz tego sprawdzimy tu również czy program poprawnie alokuje i zwalnia pamięć.\\
- \vspace{5mm}
- \noindent \textbf{3. Testy akceptacyjne:}\\
- \indent Testy akceptacyjne to ostatnia faza testowania. Sprawdzimy tu, czy program poprawnie działa jako całość.\\
- \vspace{5mm}
- \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement