Pisanie specyfikacji wymagań oprogramowania

15

Mam kilka pytań na temat pisania specyfikacji i są to:

  1. Kiedy piszemy specyfikację oprogramowania, w temacie „Definicja wymagań użytkownika” musimy określić tylko „Funkcje” i „Ograniczenia”?

  2. Czy „interfejs użytkownika” mieści się w „funkcjach” lub „ograniczeniach”?

  3. Jakie są główne kluczowe obszary (wymagania), na które można podzielić oprogramowanie (np. Interfejs użytkownika)?

Mafahir Fairoze
źródło
Ten artykuł może być pomocny: 10 typowych błędów w specyfikacjach
yegor256,

Odpowiedzi:

16

Chociaż nie jestem wielkim fanem szczegółowego gromadzenia wszystkich wymagań z góry (ponieważ podlegają one tak dużym zmianom w trakcie nietrywialnego projektu), jeśli piszesz dokumenty wymagań, szablon specyfikacji wymagań Volere jest doskonałym przewodnikiem .

Chociaż może to być przesada w przypadku niektórych projektów, zapewnia świetną listę kontrolną rzeczy do przemyślenia, nawet jeśli jest to tylko mentalne sprawdzenie listy, że nie potrzebujesz tego elementu do tego wymagania.

Oto link do dodatkowych informacji o szablonie:

http://www.volere.co.uk/template.htm

Sam szablon (i książka Mastering the Requirements Process - która jest w rzeczywistości nieco tańsza niż szablon i zawiera pełny tekst szablonu) zawiera wiele informacji, przykładów i porad w różnych sekcjach dotyczących tego, co powinno się znaleźć w każdej sekcji.

Oto podsumowanie zawartych w nim sekcji (cytowane z powyższego linku):

  1. Cel projektu

  2. Interesariusze

  3. Obowiązkowe ograniczenia

  4. Konwencje nazewnictwa i definicje

  5. Istotne fakty i założenia

  6. Zakres pracy

  7. Model danych biznesowych i słownik danych

  8. Zakres produktu

  9. Wymagania funkcjonalne i dotyczące danych

  10. Wymagania dotyczące wyglądu i odczuwania

  11. Wymagania dotyczące użyteczności i człowieczeństwa

  12. Wymagania dotyczące wydajności

  13. Wymagania operacyjne i środowiskowe

  14. Wymagania w zakresie konserwacji i wsparcia

  15. Wymagania bezpieczeństwa

  16. Wymagania kulturowe i polityczne

  17. Wymogi prawne

  18. Otwarte kwestie

  19. Gotowe rozwiązania

  20. Nowe problemy

  21. Zadania

  22. Migracja do nowego produktu

  23. Ryzyko

  24. Koszty

  25. Dokumentacja i szkolenie użytkowników

  26. Poczekalnia

  27. Pomysły na rozwiązania

Paddyslacker
źródło
10

Polecam przeczytanie Joela na temat oprogramowania. Nie jestem pewien, czy odpowie na twoje konkretne pytania, ale ma doskonały przegląd tego, co oznacza napisanie specyfikacji funkcjonalnych :

Najważniejszą funkcją specyfikacji jest zaprojektowanie programu . Nawet jeśli sam pracujesz nad kodem i piszesz specyfikację wyłącznie dla własnej korzyści, samo napisanie specyfikacji - opisującej jak program działa w najdrobniejszych szczegółach - zmusi cię do zaprojektowania programu ...

... kiedy projektujesz swój produkt w języku ludzkim, próba wymyślenia kilku możliwości, zmiany i ulepszenia projektu zajmuje tylko kilka minut. Nikt nie czuje się źle, gdy usuwa akapit w edytorze tekstu. Ale kiedy projektujesz swój produkt w języku programowania, tworzenie iteracyjnych projektów zajmuje tygodnie . Co gorsza, programista, który spędził 2 tygodnie na pisaniu kodu, będzie do niego bardzo przywiązany, bez względu na to, jak źle jest ...

... Kiedy piszesz spec, trzeba tylko do komunikowania się, w jaki sposób program ma pracy raz . Wszyscy w zespole mogą po prostu przeczytać specyfikację. Ludzie kontroli jakości czytają go, aby wiedzieli, jak program powinien działać i wiedzieli, na co się testować. Marketingowcy używają go do pisania niejasnych białych ksiąg vaporware, aby rzucać na stronie internetowej o produktach, które nie zostały jeszcze utworzone. Ludzie zajmujący się rozwojem biznesu błędnie odczytali to, by stworzyć dziwne fantazje na temat tego, jak produkt wyleczy łysienie, brodawki i inne rzeczy, ale przyciągają inwestorów, więc to jest w porządku. Programiści czytają go, aby wiedzieli, jaki kod napisać. Klienci czytają to, aby upewnić się, że programiści budują produkt, za który chcieliby zapłacić. Autorzy techniczni przeczytali go i napisali fajną instrukcję ...

Kiedy nie masz specyfikacji, cała ta komunikacja wciąż się dzieje, ponieważ musi , ale odbywa się ad hoc . Ludzie QA wygłupiają się z programem chcąc nie chcąc, a kiedy coś wygląda dziwnie, idą i przerywają programistom po raz kolejny, zadając im kolejne głupie pytanie o to, jak to ma działać ...

bez szczegółowej specyfikacji niemożliwe jest ustalenie harmonogramu ... W zbyt wielu organizacjach programistycznych, za każdym razem, gdy odbywa się debata projektowa, nikomu nie udaje się podjąć decyzji, zwykle z powodów politycznych. Dlatego programiści pracują tylko na kontrowersyjnych rzeczach. W miarę upływu czasu wszystkie trudne decyzje zostają zepchnięte do końca ... Pisanie specyfikacji to świetny sposób na utrudnienie wszystkich irytujących decyzji projektowych, dużych i małych, które zostaną ukryte, jeśli nie masz specyfikacji. ..

Jonathan Swinney
źródło
@gnat Nie sądzę, aby cytat z artykułu był konieczny. Jeśli chcesz podkreślić wybrane fragmenty, proponuję opublikować własną odpowiedź na pytanie.
Jonathan Swinney
zastanów się nad przeczytaniem Twojej odpowiedzi w innym zamku: kiedy odpowiedź nie jest odpowiedzią? „Pozwólcie, że wyjaśnię: ten rodzaj odpowiedzi nie jest odpowiedzią . Jeśli to zobaczysz, oflaguj je. Moderatorzy, jeśli zobaczysz to oflagowane, usuń je
gnat
1
Jeśli nie zgadzasz się z cytowanymi fragmentami, możesz je edytować. Jednak posiadanie odpowiedzi, która jest tylko linkiem, nie jest uważane za dobrą odpowiedź i może zostać usunięte zgodnie z naszymi zasadami jakości. Wpis odnoszący się do zasobu zewnętrznego lub odniesienia powinien zawierać wystarczające informacje, aby nadal zwiększać wartość, jeśli link nie jest dostępny z jakiegokolwiek powodu.
Thomas Owens
6

Kiedy piszemy specyfikację oprogramowania, w temacie „Definicja wymagań użytkownika” musimy określić tylko „Funkcje” i „Ograniczenia”?

Wymaganie to połączenie dwóch rzeczy ...

  1. Co to robi? Wymagania funkcjonalne.
  2. Jak dobrze to robi. Wymóg niefunkcjonalny lub „ograniczenie”

Czy „interfejs użytkownika” mieści się w „funkcjach” lub „ograniczeniach”?

Powiedziałbym, że „Interfejs użytkownika” byłby kategorią wymagań określonych w ostatnim pytaniu.

Jakie są główne kluczowe obszary (wymagania), na które można podzielić oprogramowanie (np. Interfejs użytkownika)?

To zależy od oprogramowania. Możesz pogrupować wymagania w oparciu o części systemu lub pogrupować je na podstawie przypadku użycia lub wymagań biznesowych, które spełniają funkcje.

Oczywiście wszystko to jest drugorzędne w stosunku do twojego rzeczywistego celu, którym jest określenie jasnego, jednoznacznego i testowalnego opisu systemu oprogramowania.

Henz
źródło
4

Głównym wymaganiem dla wymogu jest to, że można go przetestować. Jeśli nie możesz wymyślić, jak przetestować wymaganie, istnieje prawdopodobieństwo, że nie zostanie ono zrealizowane zgodnie z zamierzeniami autora.

Nigdy nie widziałem dokumentu wymagań ograniczonego tylko do Funkcji i Ograniczeń, ale widzę pewną wartość posiadania takiej struktury - zmusza pisarza do podzielenia wymagań na „rzeczy, które oprogramowanie musi zrobić” i „rządzi oprogramowanie musi podążać ”.

Myślę, że interfejs użytkownika ma wymagania w obu kategoriach

Ograniczenia:

  • „ekran startowy powinien wyświetlać dwa przyciski:„ Start ”i„ Stop ”
  • „Czcionka wyświetlacza nie może być mniejsza niż 10 punktów.”

Funkcje:

  • „Po Startnaciśnięciu klawisza oprogramowanie ustanawia połączenie TCP / IP z WOPR
AShelly
źródło
Twoje przykłady nie są wymaganiami, są projektem. Specyfika spełnienia tego wymogu jest decyzją projektową, a nie wymogiem. Zatem „dwa przyciski” to decyzja projektowa. Staje się to oczywiste, gdy uświadomisz sobie, że istnieje wiele innych ważnych sposobów osiągnięcia tego samego celu (Rozpocznij lub Zatrzymaj coś). Dlatego, aby uczynić to bardziej wymagającym, powiesz „Interfejs użytkownika zapewni sposób na uruchomienie i zatrzymanie czegoś”. Ale poszedłbym dalej, ponieważ użycie interfejsu użytkownika jest również decyzją projektową. Tak więc dla wymagań systemowych
Dunk