{"id":3430,"date":"2013-08-07T08:30:56","date_gmt":"2013-08-07T15:30:56","guid":{"rendered":"https:\/\/www.jamasoftware.com\/?p=3430"},"modified":"2023-01-12T16:56:46","modified_gmt":"2023-01-13T00:56:46","slug":"elements-of-requirements-style-part-2","status":"publish","type":"post","link":"https:\/\/www.jamasoftware.com\/legacy\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/","title":{"rendered":"Elements of Requirements Style, Part 2"},"content":{"rendered":"<h2>Parent and Child Requirements<\/h2>\n<p>When writing requirements in a hierarchical fashion, the BA records a parent requirement and one or more child requirements. The parent requirement is satisfied by implementing all of its children. Here\u2019s an illustration of a hierarchical requirement with some problems: 3.4 The requester shall enter a charge number for each chemical ordered. 3.4.1 The system shall validate charge numbers against the master corporate charge number list. If the charge number is invalid, the system shall notify the requester and shall not accept the order. 3.4.2 The charge number entered shall apply to an entire order, not to individual line items in the order. Notice that this parent requirement, 3.4, is written in the form of a functional requirement. It\u2019s not entirely clear how many requirements are represented here: two or three? Also notice that there is a conflict between the parent requirement and one of its child requirements, 3.4.2. If each ordered chemical is a line item, exactly how many charge numbers is the requester supposed to enter? These sorts of problems disappear if the parent requirement is written in the form of a heading or title instead of in the form of a functional requirement. Consider using this style whenever you have a set of child requirements that, in the aggregate, constitute a parent requirement. Following is an improved version of the preceding example: 3.4 Charge Numbers 3.4.1 The requester shall enter a charge number for each chemical in an order. 3.4.2 The system shall validate charge numbers against the master corporate charge number list. If the charge number is not found on this list, the system shall notify the requester and shall not accept the order.<\/p>\n<h2>What Was That Again?<\/h2>\n<p>Ambiguity is the great bugaboo of software requirements. Ambiguity shows up in two forms. One form I can catch myself. I read a requirement and realize that I can interpret it in more than one way. I don\u2019t know which interpretation is correct, but at least I caught the ambiguity. The other type of ambiguity is much harder to spot. Suppose the BA gives the requirements specification to several reviewers. The reviewers encounter an ambiguous requirement that makes sense to each of them but means something different to each of them. The reviewers all report back, \u201cThese requirements are fine.\u201d They didn\u2019t find the ambiguity because each reviewer knows only his own interpretation of that requirement. Let\u2019s see some sources of ambiguity to watch for and some suggestions about how to write less ambiguous requirements.<\/p>\n<h2>Complex Logic<\/h2>\n<p>Complex Boolean logic offers many opportunities for ambiguities and missing requirements. Consider the following paragraph: If an order is placed for a chemical to a vendor, the system shall check to see if there are any other pending orders for that chemical. If there are, the system shall display the vendor name, vendor catalog number, and the name of the person who placed each previous order. If the user wishes to contact any person who placed a previous order, the system shall allow the user to send that person an e-mail message. This long requirement is difficult to read and contains multiple functionality descriptions that should be split into separate requirements. Plus, it has some gaps. Writing requirements in this style makes it difficult to see whether the outcomes of all the if\/then branches are specified. \u201cElse\u201d conditions are often overlooked with this sort of textual representation. Nested \u201cor\u201d, \u201cand\u201d, and \u201cnot\u201d clauses are better represented using a decision table or decision tree. A decision tree such as that shown in Figure 1 would immediately reveal that the system\u2019s behavior is not specified if there are no pending orders for that particular chemical. Other false outcomes from the decisions are also unspecified. Implicitly, perhaps the reader will conclude that the system should do nothing if the various \u201cif\u201d conditions described here are false, but that\u2019s an assumption forced by the incompleteness.<\/p>\n<div id=\"attachment_26134\" style=\"width: 552px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-26134\" src=\"https:\/\/static.jamasoftware.com\/www\/imports\/2013\/08\/a9f1.jpg\" alt=\"\" width=\"542\" height=\"187\" class=\"size-full wp-image-26134\" \/><p id=\"caption-attachment-26134\" class=\"wp-caption-text\">Figure 1. Sample decision tree for complex logic.<\/p><\/div>\n<p><span style=\"font-size: 13px; line-height: 19px;\">Expressions involving compound operators\u2014such as \u201cIF this AND (that OR the other)\u201d\u2014are even more confusing:<\/span> If the amount of the cash refund is less than $50 or the amount of the cash refund is $50 or greater and the current user is a supervisor, then the system shall open the cash register drawer. Making this requirement understandable and unambiguous requires either parentheses (awkward) or splitting into multiple requirements (better).<\/p>\n<h2>Negative Requirements<\/h2>\n<p>Negative (or inverse) requirements are another source of confusion. Try to recast inverse requirements in a positive sense, to state what the system <i>will<\/i> do under certain circumstances. Table 1 states several functional requirements, all drawn from actual projects, that contain negation, along with possible ways to rewrite them in a positive sense. I\u2019ve also restated these passive-voice requirements into the less ambiguous active voice, which clearly shows what entity is taking each action. Note that changing a negative requirement into a positive one often requires inserting the word <i>only<\/i> to identify the conditions that permit the system action being described to take place. In the third example, note also the ambiguity between <i>cannot<\/i> (as in \u201cnot able to\u201d) and <i>may not<\/i> (as in \u201cnot permitted to\u201d). Table 1. Removing Negation from Functional Requirements<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"294\">Before<\/td>\n<td valign=\"top\" width=\"294\">After<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"294\">All users with three or more accounts should not be migrated.<\/td>\n<td valign=\"top\" width=\"294\">The system shall migrate only users having fewer than three accounts.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"294\">The registration process will default to International English and will not present a localized experience until country and language are selected.<\/td>\n<td valign=\"top\" width=\"294\">The registration process shall default to International English. After the user selects the country and language, the registration process shall present a localized experience.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"294\">A domain name cannot be transferred to another registrar during the registration grace period.<\/td>\n<td valign=\"top\" width=\"294\">The domain administrator may transfer a domain name to another registrar only after the registration grace period.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"294\">The PC administrator will not have the ability to change the FZL-Web user.<\/td>\n<td valign=\"top\" width=\"294\">Only the system administrator shall be able to change the FZL-Web user.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Avoid double and triple negatives in all circumstances. Consider this example: Training rewards and points will not be visible to users who cannot participate in training rewards. We can rephrase this double negative into a positive statement that\u2019s easier to understand: The system shall display training rewards and points only to users who are permitted to participate in training rewards. Following is another illustration of recasting a double negative into a positive using an \u201conly\u201d constraint. The original requirement said: Users who are delivered service without being authenticated should not generate accounting records. Let\u2019s state it as a positive action that the developer can actually implement: The system shall generate accounting records only for users who are delivered service after being authenticated. Multiple negations can lead to ambiguous requirements, as illustrated here: Records, however, should not fail validation if these attributes are not present at all. Does this mean that the records should fail validation if the attributes are present? Probably not. The context might make the meaning of this requirement clearer, but as it\u2019s written, it raises a question in my mind. The main message here is to think positive when writing requirements! <\/p>\n<p>Also read\u00a0<a title=\"Elements of Requirements Style, Part 1\" href=\"https:\/\/www.jamasoftware.com\/blog\/elements-of-requirements-style-part-1\">Elements of Requirements Style, Part 1<\/a><br \/>\nAlso read\u00a0<a title=\"Elements of Requirements Style, Part 3\" href=\"https:\/\/www.jamasoftware.com\/blog\/elements-of-requirements-style-part-3\">Elements of Requirements Style, Part 3<\/a><br \/>\nAlso read\u00a0<a title=\"Elements of Requirements Style, Part 4\" href=\"https:\/\/www.jamasoftware.com\/blog\/elements-of-requirements-style-part-4\">Elements of Requirements Style, Part 4<\/a> <\/p>\n<p><i>Jama Software has partnered with Karl Wiegers to share licensed content from his books and articles on our web site via a series of blog posts, whitepapers and webinars.\u00a0 Karl Wiegers is an independent consultant and not an employee of Jama. \u00a0He can be reached at\u00a0<\/i><i><a href=\"http:\/\/www.processimpact.com\">http:\/\/www.processimpact.com<\/a><\/i><i>.\u00a0 Enjoy these free\u00a0<\/i><i><a href=\"https:\/\/www.jamasoftware.com\/resources\/\">requirements management resources<\/a><\/i><i>.<\/i><\/p>\n<input class=\"fooboxshare_post_id\" type=\"hidden\" value=\"3430\"\/>","protected":false},"excerpt":{"rendered":"<p>Parent and Child Requirements When writing requirements in a hierarchical fashion, the BA records a parent requirement and one or more child requirements. The parent requirement is satisfied by implementing all of its children. Here\u2019s an illustration of a hierarchical requirement with some problems: 3.4 The requester shall enter a charge number for each chemical [&hellip;]<\/p>\n","protected":false},"author":68,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[50],"tags":[51,115,38],"industry":[],"class_list":["post-3430","post","type-post","status-publish","format-standard","hentry","category-requirements-management","tag-business-requirements","tag-elements","tag-karl-wiegers"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.1 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Elements of Requirements Style, Part 2 - Jama Software<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Elements of Requirements Style, Part 2\" \/>\n<meta property=\"og:description\" content=\"Parent and Child Requirements When writing requirements in a hierarchical fashion, the BA records a parent requirement and one or more child requirements. The parent requirement is satisfied by implementing all of its children. Here\u2019s an illustration of a hierarchical requirement with some problems: 3.4 The requester shall enter a charge number for each chemical [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Jama Software\" \/>\n<meta property=\"article:published_time\" content=\"2013-08-07T15:30:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-13T00:56:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.jamasoftware.com\/www\/imports\/2013\/08\/a9f1.jpg\" \/>\n<meta name=\"author\" content=\"Karl Wiegers\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Karl Wiegers\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/\"},\"author\":{\"name\":\"Karl Wiegers\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\"},\"headline\":\"Elements of Requirements Style, Part 2\",\"datePublished\":\"2013-08-07T15:30:56+00:00\",\"dateModified\":\"2023-01-13T00:56:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/\"},\"wordCount\":1275,\"image\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2013\\\/08\\\/a9f1.jpg\",\"keywords\":[\"business requirements\",\"elements\",\"karl wiegers\"],\"articleSection\":[\"Requirements &amp; Requirements Management\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/\",\"name\":\"Elements of Requirements Style, Part 2 - Jama Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2013\\\/08\\\/a9f1.jpg\",\"datePublished\":\"2013-08-07T15:30:56+00:00\",\"dateModified\":\"2023-01-13T00:56:46+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2013\\\/08\\\/a9f1.jpg\",\"contentUrl\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2013\\\/08\\\/a9f1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2013\\\/08\\\/07\\\/elements-of-requirements-style-part-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.jamasoftware.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Elements of Requirements Style, Part 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#website\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/\",\"name\":\"Jama Software\",\"description\":\"Jama Connect\u00ae #1 in Requirements Management\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.jamasoftware.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\",\"name\":\"Karl Wiegers\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g\",\"caption\":\"Karl Wiegers\"},\"description\":\"Subject matter expert Karl Wiegers writes on best practices for writing requirements, requirements management, and requirements traceability.\",\"sameAs\":[\"alison@makes-magic.com\"],\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/author\\\/kwiegers\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Elements of Requirements Style, Part 2 - Jama Software","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/","og_locale":"en_US","og_type":"article","og_title":"Elements of Requirements Style, Part 2","og_description":"Parent and Child Requirements When writing requirements in a hierarchical fashion, the BA records a parent requirement and one or more child requirements. The parent requirement is satisfied by implementing all of its children. Here\u2019s an illustration of a hierarchical requirement with some problems: 3.4 The requester shall enter a charge number for each chemical [&hellip;]","og_url":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/","og_site_name":"Jama Software","article_published_time":"2013-08-07T15:30:56+00:00","article_modified_time":"2023-01-13T00:56:46+00:00","og_image":[{"url":"https:\/\/static.jamasoftware.com\/www\/imports\/2013\/08\/a9f1.jpg","type":"","width":"","height":""}],"author":"Karl Wiegers","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Karl Wiegers","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/#article","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/"},"author":{"name":"Karl Wiegers","@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47"},"headline":"Elements of Requirements Style, Part 2","datePublished":"2013-08-07T15:30:56+00:00","dateModified":"2023-01-13T00:56:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/"},"wordCount":1275,"image":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/static.jamasoftware.com\/www\/imports\/2013\/08\/a9f1.jpg","keywords":["business requirements","elements","karl wiegers"],"articleSection":["Requirements &amp; Requirements Management"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/","url":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/","name":"Elements of Requirements Style, Part 2 - Jama Software","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/#primaryimage"},"image":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/static.jamasoftware.com\/www\/imports\/2013\/08\/a9f1.jpg","datePublished":"2013-08-07T15:30:56+00:00","dateModified":"2023-01-13T00:56:46+00:00","author":{"@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47"},"breadcrumb":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/#primaryimage","url":"https:\/\/static.jamasoftware.com\/www\/imports\/2013\/08\/a9f1.jpg","contentUrl":"https:\/\/static.jamasoftware.com\/www\/imports\/2013\/08\/a9f1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jamasoftware.com\/blog\/2013\/08\/07\/elements-of-requirements-style-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jamasoftware.com\/"},{"@type":"ListItem","position":2,"name":"Elements of Requirements Style, Part 2"}]},{"@type":"WebSite","@id":"https:\/\/www.jamasoftware.com\/#website","url":"https:\/\/www.jamasoftware.com\/","name":"Jama Software","description":"Jama Connect\u00ae #1 in Requirements Management","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jamasoftware.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47","name":"Karl Wiegers","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d4992a28dda9ae47cf239c04be9a0bc554586672cba38949c070d2fed228aef?s=96&d=mm&r=g","caption":"Karl Wiegers"},"description":"Subject matter expert Karl Wiegers writes on best practices for writing requirements, requirements management, and requirements traceability.","sameAs":["alison@makes-magic.com"],"url":"https:\/\/www.jamasoftware.com\/blog\/author\/kwiegers\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts\/3430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/comments?post=3430"}],"version-history":[{"count":0,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts\/3430\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/media?parent=3430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/categories?post=3430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/tags?post=3430"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/industry?post=3430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}