쓰기 요구 사항의 Shall 및 필수 사용법에 대한 모범 사례


22

파생 된 요구 사항에 'Shall'이라는 단어를 사용하면 기능 요구 사항을 준수해서는 안된다는 사실을 개발자에게 미리 알려주는 전자 메일을 보냈습니다 . 기능 요구 사항을 작성할 때 '필수'라는 단어는 파생 요구 사항이 수행해야하는 기능을 설명하는 데 사용됩니다.
파생 = 시스템이 요구 사항 임
기능 = 시스템 이 요구 사항을 수행해야 함

그것은 우리의 선배 중 한 사람에 의해 반송되었으며, 그것은 틀 렸으며 모든 요구 사항에 사용해야합니다.

내가 여기 잘못하고 모든 요구 사항에 사용해야합니다. 나는 그것을 뒷받침할만한 것을 찾을 수 없었습니다.


우리는 필수 인 모든 요구 사항에 "할당"을 사용합니다. 그러나 "하다"와 "해야한다"는 거의 같은 의미입니다. tynerblain.com/blog/2009/04/22/dont-use-shall
Robert Harvey

4
RFC 의 MUSTvs SHOULD에 대해 생각하고 있습니까? ietf.org/rfc/rfc2119.txt
user10326


어, 파티를하는 사람이 아니어야하지만, 모든 사람이 올바른 상황에서 올바른 단어를 사용하면 무엇을 얻습니까?
Peter

답변:


43

RFC 2119 "요구 사항 수준을 나타 내기 위해 RFC에서 사용하는 키워드"는 요구 사항에 대한 다른 단어의 의미를 구체적으로 설명합니다.

이 문서에서 핵심 단어 "MUST", "MUST NOT", "필수", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY"및 "OPTIONAL" RFC 2119에 설명 된대로 해석됩니다.

이 문서에서 :

  • MUST동등 REQUIREDSHALL정의는 절대 조건 인 것을 나타낸다.
  • MUST NOTSHALL NOT스펙과 동일하며 스펙을 절대적으로 금지 함을 나타냅니다.
  • SHOULDRECOMMENDED이는 특정 요구 사항을 무시해야하는 유효한 이유가 있음 을 의미하지만 그 의미를 평가해야합니다.
  • SHOULD NOT그리고 NOT RECOMMENDED특정 행동이 수용 가능하거나 유용 할 수 있음을 의미하지만, 그 의미를 다시 고려해야합니다.
  • MAYOPTIONAL그리고 요구 사항이 실제로 선택 사항임을 의미합니다 . 선택적 요구 사항을 구현하거나 구현하지 않을 수있는 다른 시스템과의 상호 운용성을 수행해야합니다.

이 RFC에 따라 SHOULD내부 문서와 표준 세계 간의 통신 일관성을 보장 할 수 있습니다.


1
확실한 대답; RFC를 파기위한 소품

1
@ GlenH7 나는 그것을 알았습니다 (4 월 1 일 RFC를 읽고 유머 중 일부는 'should'와 'must'에 있고 2119는 wikipedia 페이지에 있습니다). 나는 그것을 찾아서 찾은 다음 읽었습니다. 내가 만들려고했던 의견-다시 RFC였습니다. 그래서하지 전적으로 그것을 파고 거대한 소품.

내 생각은 필수 요구 사항 / 기능적 요구 사항이 존재하는 파생 객체에 대한 모든 기능을 요구해야한다는 것입니다. 그러나 주어진하며 반드시 정의와 다른 사람들은 그냥 잘못을 사용하는 방법
팀 리버만

6

확실하지 당신은 결론에 그 출처 shallmust문서의 개별 수준에 속한다. 그것은 내가 아는 어떤 출처에 의해 뒷받침되지 않는 꽤 임의적 인 구별입니다.

Shallmust어휘 동일합니다. 필요한 조치입니다.

당신이 사용하는지 shall또는 must실제로 당신이 쓰고있는 문서의 나머지 부분과 그 특정 문장에 대해 문법적으로 의미가있는 것에 달려 있습니다.

네, 당신은 틀 렸습니다. 그러나 항상 shall대신에 사용하는 것이 잘못되었습니다 must. 그것들은 같은 정도의 의무를 나타냅니다.


3
Should그리고 may동등하지 않습니다. 둘 다 선택적 기능을 나타내지 만 should,와 달리 may구현하지 않는 충분한 이유가 있어야 함을 나타냅니다 . 나는 당신에 동의 shallmust하지만.
Keith Thompson

@ KeithThompson-좋은 지적이며, 맞습니다. 나는 그 선을 답에서 뽑았다.

1
파생 된 객체가 존재하면 모든 기능이 작동해야하기 때문에 기능 요구 사항을 사용해야한다고 생각했습니다.
Tim Lieberman 2013

나는 어느 시점에서 내 머리에 새로운 물체로 삽입되어 기능해야한다고 생각합니다.
Tim Lieberman

@TimLieberman-그것은 두 가지 사양 계층을 연결하기 때문에 사물을 보는 나쁜 방법이 아닙니다. 실제로 일부 사람들은 용어의 의미론에 혼동되기 때문에 유용합니다. 특히 "shall"이 "should"대신 사용되지 않는 프로세스 문서를 수정했기 때문에. 그러나 특정 표준으로 요구하기에는 충분하지 않습니다.

2

DO-178 또는 DO-254 가이드 라인 의 프레임 워크 내에서 작업하는 경우 , 일반적인 요구 사항파생 된 요구 사항 에 대한 자체 정의가 있습니다. 그러나이 지침은 요구 사항을 명시하기 위해 어떤 단어를 사용 해야하는지 명시하지는 않는다 .

요구 사항 관리 도구가 자동으로 당신을 위해 도출 된 요구 사항, a의 사용에 의해 기능적 요구 사항에서 이러한 구별을 지적하지 않을 경우 반드시 대신을 하여야한다 예를 파생 요구 사항에 대한 검증 목표도 충족되었음을 입증하는 데 도움이 될 수 있습니다. 이것은 임의적으로 보이는 문서 요구 사항에 대한 가능한 이유 일 수 있습니다.

DO-178 및 DO-254 에서 파생 요구 사항은 실제로 상위 요구 사항에서 파생 되지 않은 요구 사항을 의미합니다 . 따라서 도출 된 요구 사항은 본질적으로 새로운 추적 성 체인을 시작합니다.

DO-178 및 DO-254는 항공 전자 소프트웨어 및 전자 제품 개발에 사용되는 상용 가이드 라인 문서이며 www.rtca.org 에서 유료로 제공 됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.