Mam dwa problemy ze Scrumem w systemach wbudowanych. Po pierwsze, jest wiele zadań do wykonania, szczególnie na wczesnych etapach, których nie można wykazać. Zaczęliśmy od płyty programistycznej, bez systemu operacyjnego, bez wyświetlacza, bez komunikacji szeregowej itp. Nie mieliśmy naszego wyświetlacza przez sześć sprintów.
Pierwsze cztery sprinty to:
- Pierwsze RTOS uruchomiony
- Tworzenie zadań pisania sterowników sieciowych i szeregowych
- Pisanie procedur przerwań dla przycisków, komunikacji itp.
- Pisanie podstawowych klas i metod bazy danych
- Pisanie menu debugowania szeregowego
Większość z tych zadań nie jest dobrze dopasowana do historii użytkowników. W rzeczywistości jedynym interfejsem w całym systemie było menu debugowania szeregowego, wbudowane w sprint 3, więc na końcu sprintów nie było nic do zademonstrowania. Nawet menu szeregowe było przeznaczone do użytku wewnętrznego, a nie użytkownika końcowego. Niemniej jednak nadal chcę śledzić i zarządzać tymi działaniami programistycznymi za pośrednictwem Scrum.
Skończyliśmy pisać „historie użytkowników”, takie jak „Jako programista ...”, z czego nie jestem zadowolony, ale korzystając z Target Process (www.targetprocess.com), nie ma pojęcia o pozycji zaległości, która jest zadanie lub obowiązek.
Po drugie, jak radzisz sobie z wydaniami i testami? To dla nas prawdziwy ból, ponieważ testerzy nie mają debugerów sprzętowych, dlatego musimy zbudować wersje flash kodu i wypalić je na płytach programistycznych, aby przetestować. Testerzy nie są technicznie tak bystrzy jak programiści i często wymagają dużo wsparcia, aby wszystko działało na wczesnych etapach (resetowanie płyty, podłączenie komunikacji szeregowej itp.), A nawet zrozumienie wyniku.
Wreszcie, jeśli chodzi o definicję ukończenia, sprint nie może zostać ukończony, dopóki wszystkie historie nie zostaną ukończone. Wszystkie historie nie są kompletne, dopóki nie zostaną zweryfikowane przez testerów. Nie ma sposobu, aby uniknąć „okradania” czasu programisty, aby dać testerom. Innymi słowy, jeśli ostatnie trzy historie użytkowników w sprincie będą testowane przez pięć dni, należy je zakodować i przetestować jednostkowo pięć dni przed końcem sprintu. Co powinien zrobić programista? Przestać działać?
Jestem żartobliwy, ale to prawdziwy problem, próbując dostosować się do zasad. Teraz nie mam nic przeciwko naginaniu reguł, ale problem polega na tym, że to psuje wszystkie moje wskaźniki wypalenia, jeśli nie mogę oznaczyć rzeczy zrobionych, dopóki nie zostaną przetestowane.
Chciałbym usłyszeć, jak inni poradzili sobie z tymi sytuacjami.