Dnes se chci zabývat situací, kdy se vývojář analýzou jen inspiruje a výsledek je zcela jiný, než je popsáno ve specifikaci. A mám tu konkrétní případ:
Jedná se o výpočet, kde se je očekáván výsledek za celý úvěrový případ. Úvěrový případ může obsahovat více klientů. Je třeba získat pomocí další služby výsledky za každého klienta zvlášť a pak spočítat výsledek za celý úvěrový případ. Služba pro získání výsledku pro daného klienta může selhat.
V analýze bylo toto:
- Získáme seznam klientů na úvěrovém případu.
- Pro každého klienta zapíšeme do databáze stav výpočtu NEW.
- Pro každého klienta zavoláme službu zjišťující výsledky za daného klienta. Stav výpočtu nastavíme na IN_PROGRESS.
- Pokud získáme výsledek pro klienta, nastavíme stav výpočtu FINISHED. Pokud bude vrácena chyba, nastavíme stav výpočtu ERROR.
- Počkáme na získání výsledku výpočtu pro všechny klienty pro daný případ. Pokud je stav výpočtu pro všechny klienty FINISHED, spočítáme výsledek za celý úvěrový případ. Pokud je alespoň jeden stav výpočtu ERROR, vracíme chybu.
Implementováno bylo toto:
- Získáme seznam klientů na úvěrovém případu.
- Pro každého klienta zapíšeme do databáze stav výpočtu NEW.
- Pro každého klienta zavoláme službu zjišťující výsledky za daného klienta.
- Pokud získáme výsledek pro klienta, nastavíme stav výpočtu FINISHED. Pokud bude vrácena chyba, nastavíme stav výpočtu ERROR.
- Počkáme na získání výsledku výpočtu pro všechny klienty pro daný případ. Spočítáme výsledek za celý případ pro všechny klienty se stavem výpočtu FINISHED. Pokud žádný takový klient není, vracíme chybu.
Jak je vidět, stav IN_PROGRESS v implementaci chybí. Takže pokud bude potřeba řešit "zaseklé" případy u kterých z nějakého důvodu nedošlo k vrácení výsledku, bude analytik čekat (dle původní analýzy), že tyto případy budou mít stav výpočtu IN_PROGRESS. A bude čekat marně...
Dalším problém je samotný výpočet, který nebere v úvahu, že může existovat část klientů se stavem výpočtu FINISHED a část se stavem výpočtu ERROR. Dle analýzy by měl výpočet skončit chybou, podle implementace se výsledek spočítá pro všechny klienty se stavem výpočtu FINISHED.
Ve výsledku tedy není implementace dle analýzy, ale spíše "na motivy" analýzy, kdy se analýzou jen volně inspiruje. A to není stav, který by byl žádoucí.
Žádné komentáře:
Okomentovat