Najlepsze praktyki w zakresie korzystania z obowiązkowych dokumentów podczas pisania wymagań

22

Wcześniej wysłałem e-mail z przypomnieniem naszym programistom, że użycie słowa „Shall” w twoich pochodnych wymaganiach nie powinno odpowiadać twoim wymaganiom funkcjonalnym. Podczas pisania wymagań funkcjonalnych słowo „Must” jest używane do opisania funkcji, którą musi spełniać wymaganie pochodne.
Pochodny = system będzie wymaganiem
funkcjonalnym = system musi wykonać wymaganie

Jeden z naszych Seniorów odesłał go, że to było złe i powinno to zostać wykorzystane przy każdym wymaganiu.

Czy się mylę tutaj i powinienem być stosowany w każdym wymaganiu. Nie znalazłem niczego, co by to uzasadniało.

Tim Lieberman
źródło
Używamy „powinien” w każdym wymaganiu, które jest obowiązkowe. Ale „powinien” i „musi” oznaczać mniej więcej to samo. Zobacz także tynerblain.com/blog/2009/04/22/dont-use-shall
Robert Harvey
4
Czy myślisz może o MUSTvs SHOULDw RFC? ietf.org/rfc/rfc2119.txt
user10326
Eee, nie być imprezowiczem, ale co wygrywasz, gdy wszyscy używają właściwego słowa w odpowiedniej sytuacji?
Peter

Odpowiedzi:

43

RFC 2119 „Słowa kluczowe używane w dokumentach RFC w celu wskazania poziomów wymagań” opisują, co oznaczają różne słowa dotyczące wymagań.

Słowa kluczowe „MUSZĄ”, „MUSI NIE”, „WYMAGANE”, „MUSZĄ”, „NIE MUSZĄ”, „POWINNY”, „NIE POWINNY”, „ZALECANE”, „MAJĄ” i „OPCJONALNIE” w tym dokumencie to należy interpretować zgodnie z opisem w RFC 2119.

Z tego dokumentu:

  • MUSTjest równoważne REQUIREDi SHALLwskazujące, że definicja jest bezwzględnym wymogiem.
  • MUST NOTjest równoważne SHALL NOTi wskazuje, że jest to absolutny zakaz specyfikacji.
  • SHOULDjest równoważne ze RECOMMENDEDśrodkami uzasadniającymi zignorowanie określonego wymogu, ale należy rozważyć konsekwencje.
  • SHOULD NOTi NOT RECOMMENDEDoznacza, że ​​określone zachowanie może być do zaakceptowania lub przydatne, ale ponownie implikacje należy rozważyć.
  • MAYoznacza, OPTIONALże wymóg jest naprawdę opcjonalny. Należy zapewnić interoperacyjność z różnymi systemami, które mogą, ale nie muszą, wdrażać opcjonalne wymagania.

Po tym RFC SHOULDnależy zrobić, aby zapewnić spójność komunikacji między dokumentami wewnętrznymi a światem standardów.


źródło
1
solidna odpowiedź; rekwizyty do wykopania RFC
1
@ GlenH7 Wiedziałem o tym (lubię czytać RFC 1 kwietnia, a część humoru znajduje się w „powinien” i „musi”, a 2119 nawet na stronie wikipedii ) szukałem go, znalazłem, a następnie przeczytałem komentarz, który miałem zamiar wypowiedzieć - dwa powyżej to ponownie RFC. Więc nie do końca ogromne rekwizyty do kopania.
Myślałem, że wymagania Must / wymagania funkcjonalne muszą wymagać całej funkcjonalności dla obiektu pochodnego, który będzie istniał. Ale biorąc pod uwagę definicje obowiązkowe i obowiązkowe oraz sposób, w jaki wszyscy je używają, po prostu się myliłem
Tim Lieberman,
6

Nie jestem pewien, gdzie doszedłeś do wniosku shalli że mustnależysz na osobnych poziomach dokumentacji. To dość arbitralne rozróżnienie, które nie jest poparte żadnym znanym źródłem.

Shalli mustsą leksykalnie równoważne. To działanie jest wymagane.

To, czy używasz, shallczy mustnaprawdę zależy od reszty dokumentu, który piszesz, i co ma sens gramatyczny dla tego konkretnego zdania.

Więc tak, mylisz się. Ale mylisz się również, gdy zawsze używasz shallzamiast must. Reprezentują ten sam stopień zobowiązania.


źródło
3
Shouldi maynie są całkiem równoważne. Oba oznaczają funkcje opcjonalne, ale shouldw przeciwieństwie do maytego sugeruje, że musisz mieć dobry powód, aby go nie implementować. Zgadzam się z Tobą na shallwersetach must, choć.
Keith Thompson,
@KeithThompson - to dobry punkt i masz rację. Wyciągnąłem tę linię z odpowiedzi.
1
Myślałem, że wymagania funkcjonalne powinny zostać zastosowane, ponieważ jeśli istnieje pochodny obiekt, to musi funkcjonować cała jego funkcjonalność.
Tim Lieberman,
Wydaje mi się, że w pewnym momencie miałbym osadzić się w mojej głowie jako nowy obiekt i muszę pełnić funkcję.
Tim Lieberman,
@ TimLieberman - to nie jest zły sposób patrzenia na rzeczy, zwłaszcza, że ​​łączy dwie warstwy specyfikacji. Właściwie to przydatne, ponieważ niektórzy ludzie mają wątpliwości co do semantyki terminów. Zwłaszcza, że ​​poprawiłem dokumentację procesu, w której słowo „powinien” było częściej niż nie zastępowane słowem „powinien”. Jednak nie jest wystarczająco użyteczne, aby wymagać tego jako szczególnego standardu.
2

Jeśli zdarzy ci się pracować w ramach wytycznych DO-178 lub DO-254 , mają one własne definicje wymagań ogólnych i wymagań pochodnych . Wytyczne te nie określają jednak, które słowo, np. Powinno, powinno , powinno być użyte do określenia wymagań.

Jeśli oprzyrządowanie zarządzania wymaganiami nie automatycznie podkreślić wymagania pochodzące dla was, czyni te odmienne od wymagań funkcjonalnych przy zastosowaniu moszczu zamiast powinna mogą być korzystne, na przykład w celu wykazania, że cele weryfikacji dla wymogów pochodzących również zostały spełnione. Może to być możliwy powód pozornie arbitralnego wymogu dokumentacji.

Należy zauważyć, że w DO-178 i DO-254 wymaganie pochodne faktycznie oznacza wymaganie, które nie zostało wyprowadzone z wymagania wyższego poziomu. Wyprowadzone wymagania zasadniczo inicjują nowy łańcuch identyfikowalności.

Zarówno DO-178, jak i DO-254 są dokumentami zawierającymi wytyczne handlowe wykorzystywane do tworzenia oprogramowania i elektroniki awionicznej i są dostępne tylko za opłatą na stronie www.rtca.org .

Harmonogram
źródło