poniedziałek, 11 października 2010

Projekt informatyczny, czyli jedzenie ciastek na czas

Ile czasu potrzeba ci, aby zjeść jedno ciastko? 5 sekund? A ile czasu potrzeba ci, aby zjeść dwa ciastka? 10 sekund?

No dobra, to w takim razie, aby zjeść 20 ciastek, potrzeba ci 100 sekund, a zjedzenie 100 ciastek (czyli 5 paczek po 20 ciastek) zajmie ci 500 sekund, czyli około 8 minut - zgadza się?


Otóż okazuje się, że zjedzenie 5 dużych paczek ciastek w tak krótkim okresie czasu jest bardzo trudne. Im tych ciastek w naszym żołądku jest więcej, tym więcej czasu zajmuje zjedzenie kolejnych.

Podobnie jest z projektem informatycznym. Jeśli średni czas powstawania jednego use case'a wynosi X, a nasz projekt wymaga implementacji 100 UC (o podobnej złożoności), czas powstania systemu nie wyniesie 100X.

Dokładając nową funkcjonalność należy zintegrować ją z całym projektem, a im tych funkcjonalności w projekcie jest więcej, tym trudniej jest to zrobić. Przywołując analogię do ciasteczek, przy każdym następnym zjedzeniu ciastka należy uważać, żeby nie zwymiotowac poprzednich :) Niekiedy przed zjedzeniem nowej porcji ciastek, trzeba poświęcić trochę czasu na to, aby ciastka zjedzone do tej pory zdążyły się przetrawić (innymi słowy przed dodaniem nowej funkcjonalności do systemu, wymagany jest refaktoring istniejącego kodu, aby zrobić w systemie miejsce na nowy
fragment).

Uważni czytelnicy zadadzą mi pewnie pytanie, jak się ma ciastko do długopisu (przecież w zabawie z długopisami każda kolejna iteracja, na skutek doskonalenia techniki, okazywała się być wydajniejsza, natomiast jedzenie każdej kolejnej porcji ciastek jest coraz mniej wydajne).

Otóż ciastko ma się nijak do długopisu - ciastko służy do jedzenia, a długopis do pisania :)

Morał z historii o długopisach jest taki, że warto podążać za zmianami i ulepszać proces. Natomiast historia o ciastkach uczy nas tego, żeby podczas planowania uwzględnić czas na integracje z istniejącymi modułami.

1 komentarz:

  1. :) Szybkość jedzenia zależy też od liczby zależności między elementami - podobnie jak suma przekątnych i boków w wielokącie wyraża się wzorem (n*(n-1))/2

    Jak mamy jeden element, to nie mamy żadnych zależności. Ale jak mamy 4 elementy, to (możliwych) zależności jest już 6.

    Można więc zaryzykować stwierdzenie, że złożoność rośnie kwadratowo wraz z rozmiarem :)

    OdpowiedzUsuń