czy jest jakiś elegancki sposób na analizę procesu inżyniera?

12

Istnieje wiele sentymentów, że pomiar zobowiązań jest nieodpowiedni.

Czy przeprowadzono jakieś badania, które próbują pobrać więcej źródeł niż zatwierdzeń - takie jak:

  • wzorce przeglądania
  • Praca IDE (wstępne zatwierdzenie)
  • czas bezczynności
  • wielozadaniowość

Nie mogę wymyślić łatwego sposobu na wykonanie tych działań, ale zastanawiam się, czy przeprowadzono jakieś badania.


Osobiście uważam, że refleksja nad własnymi „wskaźnikami” może być cenna niezależnie od (lub w przypadku braku) wykorzystania ich do oceny wydajności. IE to bezstronny sposób na refleksję nad swoimi nawykami. Ale jest to kwestia dyskusji poza pytaniami i pytaniami.

Nowa Aleksandria
źródło

Odpowiedzi:

6

Nie jestem pewien, czy uważasz to za eleganckie, ale Watts Humphrey napisał całą książkę o nazwie Personal Software Process, która polegała na pomiarze własnej wydajności. Nakreślił miary danych wejściowych, takich jak czas przy biurku vs. przerwy, czas spędzony na pracy nad różnego rodzaju cyklami życia oprogramowania, defekty na ilość kodu. Raport techniczny zawiera krótką wersję pod adresem:

http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm

Jeśli chcesz spojrzeć na jakość kodu programisty, Chidamber & Kemerer zaproponował kilka wskaźników dla kodu obiektowego.

Metryki dla kodu obiektowego

  • głębokość drzewa spadkowego,
  • ważona liczba metod,
  • liczba funkcji składowych,
  • liczba dzieci oraz
  • sprzężenie między obiektami.

Korzystając z podstawy kodu, próbowali skorelować te wskaźniki z gęstością defektów i nakładem prac konserwacyjnych przy użyciu analizy kowariantnej. Późniejsze badania przeprowadziły podobną analizę w setkach projektów Java Source Forge w celu określenia ich cech w stosunku do CK Metrics i niektórych dodatkowych metryk zaproponowanych później.

Dane powstałe w kontekście recenzji kodu

Wady można podzielić na wiele kryteriów:

  • nasilenie: (poważne, niewielkie, kosmetyczne, badane / nieznane),
  • typ (logika, literówka, pisownia, standardowe naruszenie kodowania itp.),
  • pochodzenie / ograniczenie fazowe (wymagania, projekt, kod itp.).

Istnieją również wskaźniki przygotowania i kontroli (czas na recenzenta, czas na wiersz kodu) i gęstość defektów (na KLOC (tysiąc linii kodu), na minutę czasu inspektora / recenzenta).

Wykreślenie tych wartości na wykresach kontrolnych może pokazać nam, czy jesteśmy w granicach procesu (na przykład zespół, który sprawdza 200 wierszy kodu, który nie znajduje żadnych defektów w grupie, która średnio dwudziestu pięciu defektów na KLOC może działać nieprawidłowo).

Inne dane

Inne dane, które mogą pomóc, obejmują te dla

Ograniczenia analizy

Istnieją ogromne ograniczenia wartości metryk. Błędy naprawione na programistę mogą znaczyć prawie wszystko, a kiedy zaczniesz karać lub nagradzać za ten pomiar, założę się, że błędy będą liczniejsze i bardziej szczegółowe, a mieszanka trudnych do łatwych błędów zmieni się również, gdy zespół wiśni wybierze ścigać się, aby mieć jak najwięcej.

Występuje także pewne rozproszenie uwagi i potencjalnie utrata koncentracji i przyjemności, które mogą wynikać z uciążliwych pomiarów. Nie możesz stać się bardziej elegancki (i obciążony emocjonalnie) niż poeta z jeziora, taki jak Wordsworth, który powiedział:

      Sweet is the lore which Nature brings;
      Our meddling intellect
      Mis-shapes the beauteous forms of things:--
      We murder to dissect.

Chociaż oprogramowanie nie jest dokładnie naturą, daj mi trochę swobody, ponieważ myślałem, że nigdy nie będę mógł używać niczego z liceum z literatury angielskiej.

Zwinność można uznać za reakcję na scentralizowany, duży proces. Czasami ten tryb pracy może wymagać tak dużego wysiłku analitycznego, że zdolność do osiągnięcia przepływu podczas tworzenia oprogramowania prawie zniknęła.

DeveloperDon
źródło
Podoba mi się ta odpowiedź, niezależnie od tego, czy ktoś inny przejdzie z lepszymi informacjami - więc edytowałem ją dla treści podzielonych na sekcje.
Nowa Aleksandria,
Nie rozumiem twojego komentarza na temat tego, że zarobiona wartość jest dla „programistów, którzy nie przeszli na Agile”. Po prostu wyszukiwanie „wartości wypracowanej w zwinnej” i „wartości zarobkowej zwinnej” przywołuje wielu ludzi, którzy zastosowali tradycyjne techniki EVM w środowiskach zwinnych ...
Thomas Owens
Uzyskana wartość wydaje się dobrą techniką adaptacyjną w odniesieniu do oszacowania. Doszedłem do wniosku, że ocena Agile ma swoje własne podejście związane głównie z punktami. Zobaczę, czy uda mi się przeredagować rzeczy, aby były włączające.
DeveloperDon
Istnieje wiele książek na temat zwinnego szacowania, więc jest dość wyczerpująca. Pracowałem jednak w zwinnych środowiskach, które ze względu na charakter raportowania i aktualizacji wymagały zastosowania EVMS.
Thomas Owens
2

Chcę dodać alternatywną odpowiedź, która wskazuje na odejście od standardowej praktyki inżynierii oprogramowania do innej dziedziny w celu kradzieży podstawowych narzędzi, które możemy dostosować w razie potrzeby. Ludzie zajmujący się zapewnianiem jakości zajmują się produkcją, wydajnością oraz wykrywaniem wad i zapobieganiem im, podobnie jak twórcy oprogramowania.

http://en.wikipedia.org/wiki/Seven_Basic_Tools_of_Quality

Lubię tabelę kontrolną.

http://en.wikipedia.org/wiki/Control_chart

Wykonaj działanie, wykreśl metrykę, zrób inną, wykreśl metrykę i tak dalej. Na przykład wykres zatwierdza na dzień. Wykres rozproszy dane w zakresie od pewnego minimum do pewnego maksimum. Być może później można scharakteryzować wyniki, aby ustalić, że gdy wartość jest niska, coś utrudnia postęp, a gdy jest zbyt wysoka, praca rozpoczyna się w szybki, ale niechlujny sposób. To, jak zachęcisz pracowników do przyspieszenia lub zwolnienia, zależy od ciebie.

Dane osobowe mogą być czymś, co można skorelować, zaczynając od pytania typu „Czuję się najbardziej produktywny, kiedy ...”

  • Napisz kompletny przypadek użycia przed rozpoczęciem kodowania.
  • Napisz moje testy jednostkowe przed moim kodem.
  • Często konsultuj się z interesariuszami, aby upewnić się, że wymagania się nie zmienią, i dokonaj ogromnej przeróbki prac wykonanych w kierunku nieaktualnego planu.
  • Zmień jak najwięcej kodu.
  • Przekaż dobrze zdefiniowane zmiany członkom zespołu, którzy są najbardziej ekspertami w zakresie części, o które prosiłem ich o zmianę.
    • Daj mojemu zespołowi pełny przegląd, ale dzięki priorytetom możemy ukończyć bieżący sprint.
    • Rozpocznij mój przebieg refaktoryzacji od hierarchicznej listy katalogów, plików, klas, metod, równań, zmiennych, dokumentacji itp., Które zmienię.
    • Zbadaj problem na wysokim poziomie, aby znaleźć rozwiązania ze stanu techniki, oszacowanie zakresu i kluczowych ulepszeń potrzebnych do uzyskania lepszego rozwiązania.

Stare stwierdzenie, że mierzymy, co się robi, może doprowadzić do zaatakowania problemu na podstawie tego, co uważasz za czynnik ograniczający

lub wiele czynników w kolejności priorytetów na podstawie diagramu Pareto.

http://en.wikipedia.org/wiki/Pareto_chart

DeveloperDon
źródło