dokumentacja projektu Aio-grep.pdf - AGH
dokumentacja projektu Aio-grep.pdf - AGH
dokumentacja projektu Aio-grep.pdf - AGH
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<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