Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Úkolem je realizovat funkci, která bude počítat pravděpodobnost porušení SLA nedokonale otestovaným programem.
- Předpokládejme, že firma vyvíjí webovou službu. Důsledkem nepořádného testování však není dostatečně odladěná. Protože ale vývoj již stál moc peněz, CEO a CIO se dohodl, že se produkt začnou prodávat zákazníkům. Protože se jedná o produkt z kategorie "enterprise", dodává se produkt se SLA (Service Level Agreement). Tedy, pokud produkt nesplňuje určité dohodnuté míry spolehlivosti a kvality, je zákazník oprávněn účtovat smluvní penále. Analýzou chování webové služby vývojáři zjistili, že z tot požadavků zaslaných během jednoho dne je jich službou nesprávně zpracováno err. Předpokládejme, že SLA stanoví, že zákazník během jednoho dne zašle cli požadavků a že je akceptovatelných cliMax chyb. Pokud je chyb více, SLA je vyhodnocená jako nesplněná (a zákazník má nárok uplatnit smluvní pokutu).
- Vaším úkolem je realizovat funkci, která ze zadaných parametrů tot, err, cli a cliMax vypočte pravděpodobnost, že SLA bude splněna. Pozor: nejedná se o celý program, ale pouze o jeho část. Požadovaná funkce má rozhraní:
- int ratioSla ( int tot, int err, int cli, int cliMax, double * r );
- tot
- je celkový počet požadavků na službu během jednoho dne,
- err
- je celkový počet chybných odpovědí služby,
- cli
- je celkový počet požadavků zákazníka zaslaných během jednoho dne,
- cliMax
- je ve SLA uvedený nejvyšší akceptovatelný počet nesprávných odpovědí pro daného zákazníka,
- r
- je výstupní parametr, do kterého funkce uloží desetinné číslo - vypočtenou pravděpodobnost splnění SLA (v rozmezí 0.0 až 1.0),
- návratová hodnota
- funkce vrátí hodnotu 1 pro úspěch, hodnotu 0 pro neúspěch. Za neúspěch je považováno, pokud jsou funkci předané nesmyslné parametry (záporná čísla, počet chyb vyšší než počet požadavků, ...). Pokud je funkce zavolaná s nesprávnými parametry, funkce nebude nic počítat, nebude nastavovat výstupní parametr a vrátí hodnotu 0.
- Odevzdávejte zdrojový soubor s implementací funkce ratioSla. Odevzdávaný soubor musí obsahovat implementaci této funkce, s rozhraním (parametry), které odpovídají předpisu nahoře. Dále ve zdrojovém souboru musí být další Vaše funkce, které z funkce ratioSla voláte. V odevzdávaném zdrojovém souboru by naopak neměly být zbytečnosti (pozůstatky vývoje a ladění), vkládání hlavičkových souborů ani funkce main - toto je již obsaženo v testovacím prostředí. Pro usnadnění vývoje a odevzdávání (abyste nemuseli před každým odevzdáním ručně odstraňovat funkci main a vkládání hlaviček) použijte šablonu níže. Všimněte si, že funkce main a vkládání hlavičkových souborů je v bloku podmíněného překladu, tedy jsou testovacím prostředím přeskočeny.
- #ifndef __PROGTEST__
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #endif /* __PROGTEST__ */
- /* pripadne Vase pomocne funkce */
- int ratioSla ( int tot, int err, int cli, int cliMax, double * r )
- {
- /* implementace */
- }
- #ifndef __PROGTEST__
- int main ( int argc, char * argv [] )
- {
- /* Vase testy */
- }
- #endif /* __PROGTEST__ */
- Vaše funkce je testovaná v omezeném prostředí. Omezena je doba běhu i dostupná paměť. Konkrétní omezení je zřejmé z výpisu testování referenčního řešení. V této jednoduché úloze by se ale ani paměťové ani časové omezení nemělo uplatnit.
- Ukázka použití funkce:
- double x;
- int res;
- res = ratioSla ( 20, 5, 5, 1, &x );
- /* res = 1, x = 0.633901 */
- res = ratioSla ( 20, 3, 7, 2, &x );
- /* res = 1, x = 0.969298 */
- res = ratioSla ( 20, 18, 4, 0, &x );
- /* res = 1, x = 0.000000 */
- res = ratioSla ( 8, 0, 3, 1, &x );
- /* res = 1, x = 1.000000 */
- res = ratioSla ( -3, 0, 2, 0, &x );
- /* res = 0, x = N/A */
- res = ratioSla ( 5, 6, 2, 0, &x );
- /* res = 0, x = N/A */
- Nápověda:
- Pravděpodobnost vypočtete pomocí kombinatoriky - spočtete, kolika způsoby může zákazník nakombinovat odpovědi SLA vyhovující a odpovědi SLA nevyhovující.
- Při implementaci se Vám bude hodit více pomocných funkcí (např. pro výpočet kombinací).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement