Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:2009:miw09_hqed_audit_1 [2009/10/14 12:32] jsi08 |
pl:miw:2009:miw09_hqed_audit_1 [2019/06/27 15:50] (aktualna) |
| |
Kompilacja Qt4 jest bardzo czasochłonna, na moim komputerze zajmowała nawet do 13h (dla wersji 4.5.2, pełna kompilacja z przykładami). | Kompilacja Qt4 jest bardzo czasochłonna, na moim komputerze zajmowała nawet do 13h (dla wersji 4.5.2, pełna kompilacja z przykładami). |
| |
| |
==== Audyt kodu ==== | ==== Audyt kodu ==== |
| |
=== Dostęp do CVS-a === | === Dostęp do CVS-a === |
Dużym utrudnieniem dla projektu był problem z dostępem do CVS-a. Quota na koncie na Charonie była mniejsza niż zajmował cały kod źródłowy na CVS-ie. Dodatkowo w pewnym momencie dostęp ten został zablokowany. Brak pełnego dostępu do CVS-a spowodował, że z pewnych rzeczy trzeba było zrezygnować jak: bezpośrednie poprawianie ostrzeżeń kompilacji, czy jakiekolwiek zajmowanie się komentarzami. | Dużym utrudnieniem dla projektu był problem z dostępem do CVS-a. Quota na koncie na Charonie była mniejsza niż zajmował cały kod źródłowy na CVS-ie. Dodatkowo w pewnym momencie dostęp ten został zablokowany. Brak pełnego dostępu do CVS-a spowodował, że z pewnych rzeczy - takich jak bezpośrednie poprawianie ostrzeżeń kompilacji czy jakiekolwiek zajmowanie się komentarzami - trzeba było zrezygnować. |
| |
=== Analiza ostrzeżeń kompilacji === | === Analiza ostrzeżeń kompilacji === |
| |
== niebezpieczna konwersja == | == niebezpieczna konwersja == |
Kompilator wskazał 12 linijek z tym błędem, jednak sprowadzało się do zmiany w 2 linijkach: | Kompilator wskazał 12 linijek z tym błędem, jednak sprowadzało się do zmiany w 2 linijkach kodu: |
| |
było: char* cFormats[] = {"...", "...", "...", "..."} | było: char* cFormats[] = {"...", "...", "...", "..."} |
| |
== niezainicjowana zmienna == | == niezainicjowana zmienna == |
11 wystąpień. Tu trzeba zainicjować zmienną, ustawić na 0, NULL lub jakąś inną początkową wartość. | 11 wystąpień. Tu trzeba było zainicjować zmienną, ustawić na 0, NULL lub jakąś inną początkową wartość. |
| |
== Błędne nawiasowanie == | == Błędne nawiasowanie == |
| |
Jedyny błąd kompilacji okazał się zależny od wersji qt. Skompilowanie programu w wersji qt 4.3.0 i niższej: 4.2.3 błędu nie pokazuje, natomiast pojawia się on przy wersjach 4.4.3 i wyższych. Błąd pojawiał się w pliku generowanym automatycznie z plików QTDesignera. Po edycji tych plików, problem zgodności został rozwiązany. | Jedyny błąd kompilacji okazał się zależny od wersji qt. Skompilowanie programu w wersji qt 4.3.0 i niższej: 4.2.3 błędu nie pokazuje, natomiast pojawia się on przy wersjach 4.4.3 i wyższych. Błąd pojawiał się w pliku generowanym automatycznie z plików QTDesignera. Po edycji tych plików, problem zgodności został rozwiązany. |
| |
==== Testowanie Aplikacji ==== | ==== Testowanie Aplikacji ==== |
| |
| |
=== Stworzone modele === | === Stworzone modele === |
| |
== Thermostat == | == Thermostat == |
| |
Zbudowałem model termostatu na podstawie juz dobrze opisanego sytemu:[[hekate:hekate_case_thermostat]]. Ponieważ został juz ten problem tam dość dobrze opisany dodam tylko, że zmieniłem miesiące aby odpowiadały porom roku na półkuli północnej. | Zbudowałem model termostatu na podstawie już dobrze opisanego sytemu: [[hekate:hekate_case_thermostat]]. Ponieważ problem ten został już tam dość dobrze opisany, dodam tylko, że zmieniłem miesiące tak, by odpowiadały porom roku na półkuli północnej. |
| |
Wykonanie w HQEd (screen): | Wykonanie w HQEd (screen): |
== ATM == | == ATM == |
| |
Zbudowałem model bankomatu trochę na podstawie już stworzonego modelu (dostępnego w aplikacji) i trochę na podstawie własnych pomysłów. Jak dane wejściowe otrzymuje pin wprowadzony przez użytkownika, prawidłowy z bazy danych, deklarowana kwota, dostępne środki na koncie jak i w bankomacie. Na podstawie tych danych daje jedną z odpowiedzi: ok, nieprawidłowy pin, brak środków na koncie, brak środków w bankomacie. | Zbudowałem model bankomatu zarówno na podstawie już stworzonego modelu (dostępnego w aplikacji) jak i na podstawie własnych pomysłów. Jako dane wejściowe przyjąłem: pin wprowadzony przez użytkownika, prawidłowy pin z bazy danych, deklarowaną kwotę do wypłacenia, dostępne środki na koncie oraz w bankomacie. Na podstawie tych danych program daje jedną z odpowiedzi: wypłacenie kwoty, nieprawidłowy pin, brak środków na koncie, brak środków w bankomacie. |
| |
Wykonanie w HQEd (screen): | Wykonanie w HQEd (screen): |
| |
{{:pl:miw:2009:miw09_xtt_drools:atm.zip}} | {{:pl:miw:2009:miw09_xtt_drools:atm.zip}} |
| |
== Consonance vs Dissonance == | |
| |
=== Uwagi === | === Uwagi === |
* Jeśli damy save i zapiszemy plik bez rozszerzenia, żeby ją edytor sam automatycznie dodał, zapisze bez kropki i dodatkowo z każdym naciśnięciem save będzie tworzył kolejny plik konkatenując nazwę o rozszerzenie bez kropki, zamiast zapisywać w starym. Jeżeli się ręcznie wpisze nazwę z rozszerzeniem '.hml', nie ma tego problemu. | * Jeśli Podczas zapisywania pliku nie podamy rozszerzenia ('.hml') w nazwie (chcąc by edytor sam ją automatycznie dodał), zostanie utworzony plik o nazwie wydłużonej o 'hml' i bez roszerzenia. Dodatkowo z każdym zapisaniem program będzie tworzył kolejny plik konkatenując nazwę o 'hml', zamiast zapisywać w starym. Jeżeli wpisze się ręcznie nazwę wraz z rozszerzeniem '.hml', nie ma tego problemu. Jest to zależne od sytemu na którym używa się aplikacji. |
* Kiedy chce się sprawdzić czy wielkość zawiera się w przedziale poprzez funkcję in, należy najpierw zdefiniować dolny próg i dopiero wtedy zaznaczyć range (radio button cały czas aktywny) i podać górny próg w przeciwnym razie wyskakuje błąd. | * Nieintuicyjne ustawianie granic przedziału - należy najpierw zdefiniować dolny próg i dopiero wtedy zaznaczyć range (radio button cały czas aktywny) i podać górny próg, w przeciwnym razie wyskakuje błąd; |
* Program zawsze pyta czy zapisać zmiany, niezależnie od tego czy nastąpiły; | * Program zawsze pyta, czy zapisać zmiany - niezależnie od tego czy nastąpiły; |
* Mało ergonomiczny interfejs – trzeba wykonać dużą ilość kliknięć aby cokolwiek wykonać | * Mało ergonomiczny interfejs – trzeba wykonać dużą ilość kliknięć aby cokolwiek wykonać; |
* Wartość 'row' w 'cell editor' powinna zostać ograniczona, zbyt duża powoduje zawieszenie programu | * Wartość 'row' w 'cell editor' powinna zostać ograniczona - zbyt duża powoduje zakończenie programu wyjątkiem; |
| * Zakończenie pracy aplikacji wyjątkiem podczas konstruowania skomplikowanego wyrażenia. |
* Część przeznaczona do rysowania modelu zmienia swój rozmiar dopiero po ponownym wczytaniu modelu; | * Część przeznaczona do rysowania modelu zmienia swój rozmiar dopiero po ponownym wczytaniu modelu; |
* Tips na początku przyczepiony do nie wiadomo czego, poza oknem (może być to kwestia systemu na którym jest użytkowany) | * Tips na początku przyczepiony do nie wiadomo czego, poza oknem (może być to kwestia systemu na którym jest użytkowany); |
| |
| Program jest cały czas w trakcie tworzenia, więc tego typu uwagi często dotyczą rzeczy, których jeszcze nie zrobiono, a nie błędów. Część błędów zależy bezpośrednio od platformy i zainstalowanej na niej wersji qt4. |
| |
| |