2009-04-10 13 views
10

Jeśli używasz zwinnego, pomysł polega na tym, aby zawsze robić przyrostowe refaktoryzacje i nigdy nie budować dużego technicznego długu. to powiedziawszy, jeśli masz sprawny zespół, który przejmuje oprogramowanie, które ma przyzwoitą ilość technicznego długu, musisz go gdzieś dopasować.Spłata długu technicznego w Agile

Czy tworzysz historie użytkowników programistów? .na przykład .

  • Jako deweloper, mam 50% pokrycia testowego nad modułem logiki biznesowej, więc mam pewność dostawy
  • Jako deweloper, aplikacja obsługuje iniekcji zależność więc możemy zamienić się konkrecji i być bardziej zwinny w przyszłość.

czy istnieje inny najlepsza praktyka oczyszczania tego kodu długu technicznego

+0

Dla osób niezaznajomionych z długu technicznego, może to być dobre wyjaśnienie: http://benlakey.com/2012/06/18/technical-debt/ –

+0

Takie pytania powinny być zadawane na https: //pm.stackexchange.com/ –

+0

Głosuję, aby zamknąć to pytanie jako nietypowe, ponieważ takie pytania powinny być zadawane na stronie https://pm.stackexchange.com/ –

Odpowiedz

6

Czy aplikacja wewnętrzna lub nie masz zewnętrznego klienta? Jeśli klient płaci za twoją pracę i wsparcie aplikacji, może to być trudne, jeśli chcesz je podpisać na kartach podobnych do tych, które sugerujesz.

Ponadto, z pomysłem drugiej karty, może być trudno powiedzieć, co oznacza "Gotowe".

Specyficznym podejściem do problemu może być testowanie oparte na defektach - chodzi o to, że po otrzymaniu raportu o błędzie i oszacowaniu karty, która mówi, że należy go naprawić, zobacz testy, które możesz dodać w tym samym czasie które są podobne, ale zwiększają zasięg.

I nie specjalnie prosić o szczegóły techniczne na temat jak uzyskać swój projekt w ramach testu, ale ta książka jest bardzo pomocne, gdy zaczną rzeczywiście robi: Working Effectively with Legacy Code

+0

. Zgadzam się z tym, że klienci muszą się podpisać, ale musisz zrobić czas w sprincie, ponieważ mogą to być duże zadania i chcesz, aby były one bardzo widoczne. – leora

+0

Zobacz także moją odpowiedź na moją odpowiedź. Możesz dodać testy, projektując nowe do oszacowań kart naprawiających błędy. – JeffH

1

Pracuję w środowisku Agile, ale gdzie obecna baza kodowa istniała od kilku lat, zanim techniki agile zostały przyjęte. Prowadzi to do konieczności pracy w zwinnym trybie, wokół kodu, który nie został napisany z myślą o automatycznym testowaniu regresji.

Ponieważ dług techniczny ma wpływ na to, jak szybko możemy dostarczyć nowe funkcje, rejestrujemy, ile czasu zostało dodane z powodu pracy ze starszym kodem. Dane te pozwalają nam złożyć wniosek o czas poświęcony na spłatę długu technicznego. Kiedy klient (czy to kierownik, dyrektor ds. Sprzedaży, czy ktokolwiek inny) uważa, że ​​szacunki są zbyt wysokie, masz dane, które mogą wzmocnić Twoją pozycję.

Oczywiście od czasu do czasu okaże się, że twoje szacunki są pomijane z powodu niespodziewanych dziwactw starego kodu, w którym miał spłacić dług techniczny. Odkryliśmy, że tak długo, jak można wytłumaczyć i zaksięgować dodatkowy czas, a także można wnioskować o korzyściach związanych z dodatkowym czasem, jest to ogólnie przyjęte całkiem dobrze.

Oczywiście, YMMV zależny od klienta lub innych czynników, ale posiadanie statystyk, które reprezentują efekt dalszego długu technicznego, jest bardzo użyteczny.

0

Myślę, że warto zapytać, jak długo klient (e) spodziewa się korzystać z aplikacji. Jeśli czas życia aplikacji jest ograniczony (powiedzmy, trzy lata lub krócej), może nie być sensu włożyć wiele wysiłku w refaktoryzację. Jeśli długość życia jest oczekiwana (lub ma nadzieję), że będzie dłuższa, to zwrot z refaktoryzacji stanie się o wiele bardziej atrakcyjny.

Możesz także spróbować stworzyć uzasadnienie dla inwestycji w refaktoryzację. Pokaż konkretne przykłady rodzajów ulepszeń, które chciałbyś wprowadzić.Dokonaj uczciwej oceny kosztów, ryzyka i oczekiwanego zwrotu. Postaraj się znaleźć konkretną refaktoryzację, którą możesz wdrożyć niezależnie od innych, i lobbuj o zgodę, aby wprowadzić tę zmianę jako próbny proces refaktoryzacji.

Należy pamiętać, że kiedy mówisz o zwrocie, możesz oczekiwać podania określonych liczb. Nie wystarczy powiedzieć "znacznie łatwiej będzie naprawić błędy". Zamiast tego powinieneś być gotów powiedzieć coś w stylu "zobaczymy co najmniej 30% poprawy czasu naprawy błędów" lub "odczujemy 40% mniej regresji". Powinieneś także być przygotowany na negocjacje z kierownictwem i/lub klientami, tak aby wszyscy zgodzili się, że masz wymiary, które są dla nich znaczące, i aby zapewnić pomiary przed i po refaktoryzacji.

+0

jak uzyskać informacje o tego typu danych? – leora

+0

Aby zmierzyć współczynniki utrwalania defektów, należy zmierzyć liczbę poprawek wykonanych w ciągu tygodnia, miesiąca lub kwartału. Aby zmierzyć współczynniki regresji, sprawdź, czy nowo zgłoszone defekty zostały spowodowane próbami naprawienia wcześniejszych defektów. Są to bardzo prymitywne środki, ale lepsze to niż brak jakichkolwiek środków. –

4

Powinno istnieć rozróżnienie między praktyką inżynierską a technicznym długiem. Widzę rozwój testów i automatyczne testowanie jako praktyki.

Po zażyciu zasobów kodu, które zostały zbudowane przez zespoły kaskadowe, aktywa nie przeszły automatycznych testów funkcjonalnych ani wydajności. Kiedy przejęliśmy odpowiedzialność za zasoby oprogramowania, wyszkoliliśmy właściciela produktu w Agile i opowiedzieliśmy o praktykach, z których korzystalibyśmy.

Kiedy zaczniemy korzystać z praktyk, zaczniemy identyfikować dług techniczny. W związku z tym, że zidentyfikowano dług techniczny, karty historii technicznej zostały napisane i umieszczone na zaległościach produktu przez właściciela produktu. Deweloper i testerzy oszacowali całą pracę przy użyciu praktyk inżynieryjnych XP (TDD, testowanie automatyczne, programowanie parami itp.). Praktyki te wykryły kruchość w kodzie za pomocą TDD, zautomatyzowanych testów funkcji i wydajności. W szczególności zidentyfikowano istotny problem z wydajnością za pomocą zautomatyzowanego testowania wydajności i profilowania. Zadłużenie było tak duże, że oszacowaliśmy poprawkę na 6 iteracji. poinformowaliśmy właściciela produktu, że jeśli zostaną opracowane nowe funkcje, nie będą mogli korzystać z bazy użytkowników ze względu na niską wydajność aplikacji. Biorąc pod uwagę, że musieliśmy przeskalować aplikację od kilkuset użytkowników do 10-ciu tysięcy użytkowników, właściciel produktu bardzo wysoko ocenił wydajność technicznego długu i ukończyliśmy karty techniczne w oszacowanych iteracjach.

Uwaga: dług techniczny, który można naprawić poprzez refaktoryzację w ramach oszacowania karty opowieści, nie wymaga technicznej karty historii. Większy dług techniczny będzie. W przypadku długu technicznego, który wymaga karty technicznej, należy zidentyfikować wpływ na działalność i poprosić właściciela produktu o nadanie priorytetu karcie technicznej. Następnie obróć kartę. Nie twórz długów technicznych dla praktyk inżynieryjnych. Czy wszyscy oceniają, wiedząc, że praktyki inżynieryjne będą częścią szacunku. Nie twórz karty, aby zmodernizować aplikację za pomocą zautomatyzowanego testu jednostki, funkcjonalności i wydajności. Zamiast tego uwzględnij pracę tylko w ocenianych kartach i dodaj automatyczny test do kodu, który dotkniesz przez przetwarzane karty. Umożliwi to poprawie aplikacji z biegiem czasu bez zatrzymywania postępu. Zatrzymanie dodawania wszystkich wizytówek powinno być zapisane tylko w najbardziej drastycznych sytuacjach, takich jak niemożność wykonania aplikacji lub skalowanie.

Biorąc pod uwagę przypadek, w którym dziedziczysz bazę kodu bez automatycznego urządzenia, testu funkcjonalności i wydajności, poinformuj partnera biznesowego o smutnym stanie rzeczy. Daj im znać, jak oszacujesz pracę. Stwórz dług techniczny, ponieważ jest on ujawniony w praktyce inżynierskiej. Na koniec poinformowano właściciela produktu, że prędkość zespołu poprawi się, gdy coraz więcej elementów kodu zostanie dotkniętych automatycznymi testami jednostek, funkcjonalności i wydajności.

1

Zmniejszenie zadłużenia technicznego to coś, co każdy powinien zrobić, za każdym razem, gdy przesyłamy kod.

Podczas edytowania kodu należy trochę posprzątać, np. Zwiadowcę przed opuszczeniem terenu kempingowego.

W ten sposób kod, który często się zmienia, będzie w lepszej kondycji, co przydaje się w interesach.

Kod, który nigdy się nie zmienia, nie poprawi się, ale z drugiej strony, dlaczego powinien, jeśli to działa?

Nie planuj zadań w tym zakresie, chociaż plan długoterminowy jest pomocny, podobnie jak forum do omawiania problemów.

Bardzo duże projekty skorzystałyby z pewnego rodzaju schematu blokowania, tak aby dwa kodery nie powodowały jednoczesnej zmiany tego samego fragmentu kodu bez synchronizacji.

/Roger

Powiązane problemy