Jestem programistą Java, ale zostałem poproszony o nauczenie się stosowania Six Sigma w celu zwiększenia zysków naszej organizacji. Czytałem, że Six Sigma może być stosowana we wszystkich środowiskach, ale interesują mnie niuanse zastosowania jej w rozwoju oprogramowania.
Jakie koncepcje Six Sigma można zastosować w środowisku programistycznym i jak mogę je skutecznie zastosować?
Rozumiem, że Six Sigma koncentruje się na:
- identyfikowanie i usuwanie pierwotnych przyczyn wad
- minimalizowanie zmienności w stosowaniu procesów produkcyjnych lub biznesowych
Wydaje mi się, że te koncepcje można zastosować w tworzeniu oprogramowania, ale czy można je skutecznie zastosować w cyklu rozwoju oprogramowania (SDLC)?
quality
process-improvement
Dinesh Kumar
źródło
źródło
Odpowiedzi:
Podstawowe działania Six Sigma są przechwytywane przez akronim DMAIC , który oznacza: Definiuj, Mierz, Analizuj, Ulepsz, Kontroluj . Stosujesz je do procesu, który chcesz ulepszyć: zdefiniuj proces, zmierz go, użyj pomiarów, aby sformułować hipotezy dotyczące przyczyn problemów, wdrożyć ulepszenia i upewnić się, że proces pozostaje statystycznie „pod kontrolą”.
W przypadku oprogramowania proces ten obejmuje cykl życia oprogramowania (SDLC) lub jego część. Prawdopodobnie nie próbowałbyś zastosować zasad Six Sigma do całego SDLC (a przynajmniej nie początkowo). Zamiast tego szukałbyś obszarów, w których uważasz, że masz problem (np. Nasz wskaźnik wad jest zbyt wysoki; zbyt wiele regresji; nasz harmonogram przepada zbyt często; zbyt wiele nieporozumień między deweloperami a klientem itp.). Powiedzmy na razie, że problem polega na tym, że co tydzień produkuje się (lub przynajmniej zgłasza) zbyt wiele błędów. Zdefiniuj więc proces tworzenia oprogramowania / tworzenia błędów. Następnie zaczniesz zbierać dane, takie jak liczba wierszy kodu pisanych każdego dnia, częstotliwość zmian wymagań, liczba godzin spędzanych przez każdego inżyniera na spotkaniach,
Następnie patrzysz na dane i próbujesz dostrzec wzorce. Być może zauważysz, że zespół inżynierów A dotrzymuje każdego wyznaczonego terminu, a często nawet kończy zadania wcześniej! Początkowo drużyna B nie wydaje się całkiem taka na piłce - nie dotrzymuje terminów o dzień lub dwa co najmniej o połowę czasu, a czasami spóźnia się o tydzień lub dłużej. Zarząd postrzega zespół B jako problem i stara się go zmienić. Jednak bliższe spojrzenie na dane pokazuje, że wskaźnik błędów w zespole B jest znacznie niższy niż w zespole A, a ponadto zespół B jest często proszony o naprawienie błędów, które można przypisać zespołowi A, ponieważ kierownictwo uważa, że zespół A jest zbyt cenny, aby wydać dużo czasu na utrzymanie.
Więc co robisz? Korzystając z zebranych danych i przeprowadzonej analizy, sugerujesz zmianę: zespół A i zespół B naprawią swoje własne błędy. Z błogosławieństwem kierownictwa (i przeciwko gwałtownej opozycji drużyny A) wprowadzacie tę zmianę. Następnie kontynuujesz zbieranie danych i kontynuujesz analizę danych, aby sprawdzić, czy zmiana coś zmieniła. Powtarzaj ten cykl pomiaru / analizy / wdrożenia, aż wskaźnik błędów zostanie uznany za akceptowalny. Ale jeszcze nie skończyłeś. W rzeczywistości nigdy nie skończyłeś ... musisz ciągle mierzyć współczynnik błędów i sprawdzać, czy wskaźnik błędów pozostaje w dopuszczalnym zakresie, tj. Jest statystycznie „kontrolowany”.
Zauważ, że nie ma tu nic, co byłoby specyficzne dla rozwoju oprogramowania, poza specyfiką ulepszanego procesu, rodzajami zbieranych danych itp. Działania, których używasz do ulepszania procesu tworzenia oprogramowania, są takie same jak te, które „ d używać do procesu produkcji widgetów, mimo że tworzenie oprogramowania różni się znacznie od produkcji widgetów. Wszystko to oznacza, że musisz zachować zdrowy rozsądek w rodzajach celów wyznaczonych dla twojego procesu.
źródło
Jak wspomniano @Peter
Mogę podać prosty scenariusz, pracowałem dla firmy z branży lotniczej. Istnieje zespół, który projektuje obwody dla samolotów. Napotkali oni wiele trudności w projektowaniu obwodów dla skomplikowanych samolotów. Z tego powodu nie dotrzymali terminów, mimo że mieli doświadczonych projektantów. Analizowałem ich pracę i zauważyłem, że za każdym razem rozwijają układy od zera. Zaprojektowałem więc oprogramowanie, które będzie śledzić ich uprzednio zaprojektowane obwody, a gdy tylko będą miały nowe samoloty, będą korzystać z mojego oprogramowania i wybierać wcześniej zaprojektowane samoloty, które mają podobne obwody i używają ich z niewielkimi modyfikacjami. Ponieważ obwody te były wcześniej projektowane i testowane na rzeczywistych samolotach, mogą teraz bardziej skupiać się na nowych obwodach.
To tylko scenariusz, w którym śledziłem proces SIX Sigma, aby zebrać wszystkie dane o ich błędach i przeanalizować, jakie są tego przyczyny. Następnie ulepsz je za pomocą mojego oprogramowania.
źródło
Zastosowanie Six Sigma w rozwoju oprogramowania nazywa się Software Six Sigma. Six Sigma jest zasadniczo opracowany do produkcji, w procesie produkcyjnym pomaga firmom poprawić dostawę, jakość produktu przy niskim koszcie. To samo może dotyczyć również tworzenia oprogramowania.
Zastosowanie Six Sigma w tworzeniu oprogramowania zapewnia ciągłą poprawę w rozwoju oprogramowania. Zastosowanie szóstej sigmy w rozwoju oprogramowania powoduje szybką integrację i testowanie oprogramowania, pomaga stworzyć oprogramowanie wolne od błędów i pomaga w bardziej wydajnym zarządzaniu programem.
Jednak oprogramowanie Six Sigma jest nową koncepcją, której potrzebujesz szkolenie od właściwych ludzi. Pomoże Ci w tym skuteczny program treningowy Six Sigma. W przypadku internetowego szkolenia Six Sigma na temat środowiska programistycznego sugerowałbym http://www.6sigma.us /. Sugeruję je na podstawie rekomendacji otrzymanej od innej firmy.
źródło