06.06.2013 Views

dokumentacja projektu Aio-grep.pdf - AGH

dokumentacja projektu Aio-grep.pdf - AGH

dokumentacja projektu Aio-grep.pdf - AGH

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Aio</strong>-<strong>grep</strong><br />

Prezentacja <strong>projektu</strong> z przedmiotu Inżynieria<br />

Oprogramowania<br />

Wydział Fizyki i Informatyki Stosowanej<br />

Michał Drobniak, Marcin Piłat i Adam Syrek<br />

23.01.2013 Kraków


Plan prezentacji:<br />

1. Opis tematu <strong>projektu</strong><br />

2. Podział pracy<br />

3. Wymagania programu<br />

4. Diagram klas<br />

1. Wykorzystane wzorce projektowe<br />

5. Wykorzystane narzędzia:<br />

1. QtCreator<br />

2. KCachegrind<br />

6.Testy<br />

1. Testy poprawności programu<br />

2. Testy czasowe<br />

7. Bibliografia


Opis tematu <strong>projektu</strong>:<br />

• wyszukiwanie ciągu znaków<br />

• czytanie plików metodami:<br />

– synchronicznie<br />

– asynchronicznie<br />

– mmap<br />

• wyszukiwanie w wielu plikach jednocześnie


Podział pracy:<br />

• Michał Drobniak<br />

– obsługa flag, czytanie mmap, wypisywanie<br />

wyników<br />

• Marcin Piłat<br />

– asynchronicznego czytanie plików<br />

• Adam Syrek<br />

– wyszukiwanie ciągu znaków, czytanie<br />

synchroniczne


Wymagania programu<br />

- metody czytania plików: czytanie synchroniczne


Wymagania programu<br />

- metody czytania plików: czytanie asynchroniczne


Wymagania programu<br />

- metody czytania plików: mmap


Wymagania programu<br />

- wyszukiwanie ciągu znaków<br />

• strstr(char * , char *)<br />

• Boost.Regex


Diagram klas


Diagram klas<br />

wzorce projektowe: Fasada (A<strong>grep</strong>)<br />

Klasa A<strong>grep</strong> zajmuje się tworzeniem w<br />

kolejności obiektów:<br />

• Timer<br />

• Flags<br />

• Output<br />

• ResultLine<br />

Przetrzymuje wskaźnik do obiektu FileReader.<br />

Jest miejscem wywołania głównej pętli, której<br />

działa program


Diagram klas<br />

wzorce projektowe: Stan (RegexFinder)<br />

Klasa RegexFinder to interfejs dla każdej<br />

klasy wyszukującej wyrażenia. Sposób<br />

działania wyszukiwania zależny jest od<br />

obiektu.<br />

Plusy:<br />

• Łatwa rozszerzalność<br />

• Implementacja wyszukiwania całkowicie<br />

niezależna od reszty programu


Diagram klas<br />

wzorce projektowe: Fabryka (Flags)<br />

Klasa Flags ma za zadanie przeanalizować<br />

przekazane flagi i na tej podstawie utworzyć<br />

odpowiednie obiekty<br />

• RegexFinder – initRegexFinder()<br />

• FileReader – switch(methodChar){}<br />

Tworzenie obiektów jest więc całkowicie<br />

oddzielone od ich funkcjonalności


Wykorzystane narzędzia<br />

QtCreator


Wykorzystane narzędzia<br />

KCachegrind


Testy<br />

Testy poprawności wykonania programu<br />

• Sprawdzenie poprawności czytania plików<br />

(aio)<br />

• Porównanie wyników z programem <strong>grep</strong><br />

• Mierzenie wydajności czytania<br />

asynchronicznego


Testy<br />

Testy czasowe


Testy<br />

Testy czasowe


Bibliografia<br />

• IBM – developerWorks:<br />

http://www.ibm.com/.../l-async/<br />

• QNX<br />

http://www.qnx.com/.../ipc.html<br />

• Boost.Regex Documentation<br />

http://www.boost.org/doc/.../index.html

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!