{"id":3184,"date":"2012-12-03T12:19:49","date_gmt":"2012-12-03T20:19:49","guid":{"rendered":"https:\/\/www.jamasoftware.com\/?p=3184"},"modified":"2023-01-12T16:57:02","modified_gmt":"2023-01-13T00:57:02","slug":"when-use-cases-arent-enough-part-2","status":"publish","type":"post","link":"https:\/\/www.jamasoftware.com\/legacy\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/","title":{"rendered":"When Use Cases Aren\u2019t Enough, Part 2"},"content":{"rendered":"<p>I once read a book about use cases that stated, \u201cTo sum up, all functional requirements can be captured as use cases, and many of the nonfunctional requirements can be associated with use cases.\u201d I agree with the second part of this sentence, but not with the first part. It is certainly true that use cases are a powerful technique for discovering the functional requirements for a system being developed. However, this statement suggests that use cases are the only tool needed for representing a software system\u2019s functionality. In most cases, they aren\u2019t.<\/p>\n<p><strong>Use Cases Don\u2019t Replace Functional Requirements<\/strong><\/p>\n<p>This notion that all functional requirements can fit into a set of use cases and that use cases contain all the functional requirements for a system appears in many of the books and methodologies that deal with use cases. The thinking seems to be that the use cases <em>are<\/em> the functional requirements. If the BA writes good use cases, the developers are supposed to be able to build the system from that information, along with additional nonfunctional requirements information that\u2019s included in a supplementary specification. Nonfunctional requirements, such as performance, usability, security, and availability goals, typically relate to a specific use case or even to a particular flow within a use case.<\/p>\n<p>After querying the thousands of students I\u2019ve taught in requirements seminars over the years, I have met just a single person who has found this pure use case approach to work! On the contrary, dozens of BAs have told me, \u201cWe gave our use cases to the developers and they got the general idea, but the use cases just didn\u2019t contain enough information. The developers had to ask a lot of questions to get the additional requirements that weren\u2019t in the use cases.\u201d I suppose you could argue that they must not have been very good use cases. But when dozens of people report the same unsatisfactory experience when trying to apply a particular methodology, I question the methodology\u2019s practicality.<\/p>\n<p>There are three problems with adhering to this philosophy of use case purity. First, your use cases must contain all the functional detail that the analysts need to convey to the developers. That requires writing highly detailed use cases. The sample use cases in some books do include some complex examples. But elaborate use cases become hard to read, review, and understand.<\/p>\n<p>The second problem with this approach is that it forces you to invent use cases to hold all the functional requirements because a use case is the only container you have available to describe system functionality. However, some system functionality does not fit appropriately into a use case. I have seen many new use case practitioners struggle to create inappropriate use cases to hold all the bits of functionality, to no useful end.<\/p>\n<p>Logging in to an ATM or a Web site is an example that illustrates this problem. In their book <em>Use Case Modeling<\/em> (Addison Wesley, 2003) Kurt Bittner and Ian Spence provide this good definition of a use case:<\/p>\n<p><em>Describes how an actor uses a system to achieve a goal and what the system does for the actor to achieve that goal. It tells the story of how the system and its actors collaborate to deliver something of value for at least one of the actors.<\/em><\/p>\n<p>By this definition, logging in to a system is not a legitimate use case because it provides no value to the person who is logging in! No one logs in to a system and feels as though he accomplished something as a result. Logging in is a means to an end, a necessary step to being able to perform use cases that do provide value. Nevertheless, the functionality to permit login and everything associated with it (such as business rules or integrity requirements regarding passwords) must be defined somewhere. If you\u2019re using only use cases as a container for functional requirements, you wind up being forced to invent artificial use cases\u2014those that don\u2019t provide user value\u2014just to have a place to store certain chunks of functionality. This artificiality does not add value to the requirements development process.<\/p>\n<p><strong>Use Cases and an SRS Organize Information Differently<\/strong><\/p>\n<p>A third shortcoming of the use case\u2013only philosophy is that use cases are organized in a way that makes good sense to users but not necessarily to developers. As Figure 1 illustrates, a use case consists of multiple small packages of information. A typical use case template contains sections for preconditions, postconditions, the normal flow of events, zero or more alternative flows (labeled with <em>Alt.<\/em> in Figure 1), zero or more exceptions (labeled with <em>Ex<\/em>.), possibly some business rules, and perhaps some additional special requirements.<\/p>\n<div id=\"attachment_26132\" style=\"width: 772px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" aria-describedby=\"caption-attachment-26132\" src=\"https:\/\/static.jamasoftware.com\/www\/imports\/2012\/12\/a30f1.jpg\" alt=\"\" width=\"762\" height=\"474\" class=\"size-full wp-image-26132\" \/><p id=\"caption-attachment-26132\" class=\"wp-caption-text\">Figure 1. Use case organization (left) differs from SRS organization (right).<\/p><\/div>\n<p>These small packages are easy to understand and review, but they make it hard for the developer to see how the pieces fit together. As a developer myself, I find it more informative to see all the related requirements grouped together in a logical sequence. Suppose I read a functional requirement that implements a step in the normal flow. I want to see the requirements dealing with branch points into alternative flows and conditions that could trigger exceptions immediately following that one functional requirement. I\u2019d like to see the requirements that handle each business rule in context, juxtaposed with the relevant system functionality. This is easier than having to figure out just what bits of the use case the business rule affects on my own.<\/p>\n<p>As Figure 1 illustrates, the functional requirements that come from the various chunks of a use case can be sprinkled throughout a hierarchically organized SRS. Traceability analysis becomes important so that you can make sure every functional requirement associated with the use case traces back to a specific part of the use case. You also want to ensure that every piece of information in the use case leads to the necessary functionality in the SRS. In short, the way a use case is organized is different from the way many developers prefer to work.<\/p>\n<p>It gets even more confusing if you\u2019re employing use cases to describe the bulk of the functionality but have placed additional functional requirements that don\u2019t relate to specific use cases into a supplemental specification. This approach forces the developer to get some information from the use case documentation and then to scour the supplemental specification for other relevant inputs. Before your analysts impose a particular requirements-packaging strategy on the developers, have these two groups work together to determine the most effective ways to communicate requirements information.<\/p>\n<p>My preference is for the analyst to create an SRS as the ultimate deliverable for the developers and testers. This SRS should contain all the known functional and nonfunctional requirements, regardless of whether they came from use cases or other sources. Functional requirements that originated in use cases should be traced back to those use cases so that readers and analysts know where they came from.<\/p>\n<p>In the final article of this three-part series, I\u2019ll describe the thought process I go through when deriving functional requirements from the various elements of a use case.<\/p>\n<p>Read the <a title=\"When Use Cases Aren't Enough, Part 1\" href=\"https:\/\/www.jamasoftware.com\/blog\/when-use-cases-arent-enough-part-1\">When Use Cases Aren&#8217;t Enough, Part 1<\/a>.<\/p>\n<p>Read the <a title=\"When Use Cases Aren't Enough, Part 3\" href=\"https:\/\/www.jamasoftware.com\/blog\/when-use-cases-arent-enough-part-3\">When Use Cases Aren&#8217;t Enough, Part 3<\/a>.<\/p>\n<p><em>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<a href=\"http:\/\/www.processimpact.com\">http:\/\/www.processimpact.com<\/a>.\u00a0 Enjoy these free\u00a0<a href=\"https:\/\/www.jamasoftware.com\/resources\/\">requirements management resources<\/a>.<\/em><\/p>\n<p>&nbsp;<\/p>\n<input class=\"fooboxshare_post_id\" type=\"hidden\" value=\"3184\"\/>","protected":false},"excerpt":{"rendered":"<p>I once read a book about use cases that stated, \u201cTo sum up, all functional requirements can be captured as use cases, and many of the nonfunctional requirements can be associated with use cases.\u201d I agree with the second part of this sentence, but not with the first part. It is certainly true that use [&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,38,61],"industry":[],"class_list":["post-3184","post","type-post","status-publish","format-standard","hentry","category-requirements-management","tag-business-requirements","tag-karl-wiegers","tag-use-cases"],"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>When Use Cases Aren\u2019t Enough, 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\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"When Use Cases Aren\u2019t Enough, Part 2\" \/>\n<meta property=\"og:description\" content=\"I once read a book about use cases that stated, \u201cTo sum up, all functional requirements can be captured as use cases, and many of the nonfunctional requirements can be associated with use cases.\u201d I agree with the second part of this sentence, but not with the first part. It is certainly true that use [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Jama Software\" \/>\n<meta property=\"article:published_time\" content=\"2012-12-03T20:19:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-13T00:57:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.jamasoftware.com\/www\/imports\/2012\/12\/a30f1.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\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/\"},\"author\":{\"name\":\"Karl Wiegers\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\"},\"headline\":\"When Use Cases Aren\u2019t Enough, Part 2\",\"datePublished\":\"2012-12-03T20:19:49+00:00\",\"dateModified\":\"2023-01-13T00:57:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/\"},\"wordCount\":1292,\"image\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2012\\\/12\\\/a30f1.jpg\",\"keywords\":[\"business requirements\",\"karl wiegers\",\"use cases\"],\"articleSection\":[\"Requirements &amp; Requirements Management\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/\",\"name\":\"When Use Cases Aren\u2019t Enough, Part 2 - Jama Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2012\\\/12\\\/a30f1.jpg\",\"datePublished\":\"2012-12-03T20:19:49+00:00\",\"dateModified\":\"2023-01-13T00:57:02+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/e6a00f0ad439a5e1865476b36481aa47\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2012\\\/12\\\/a30f1.jpg\",\"contentUrl\":\"https:\\\/\\\/static.jamasoftware.com\\\/www\\\/imports\\\/2012\\\/12\\\/a30f1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2012\\\/12\\\/03\\\/when-use-cases-arent-enough-part-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.jamasoftware.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"When Use Cases Aren\u2019t Enough, 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":"When Use Cases Aren\u2019t Enough, 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\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/","og_locale":"en_US","og_type":"article","og_title":"When Use Cases Aren\u2019t Enough, Part 2","og_description":"I once read a book about use cases that stated, \u201cTo sum up, all functional requirements can be captured as use cases, and many of the nonfunctional requirements can be associated with use cases.\u201d I agree with the second part of this sentence, but not with the first part. It is certainly true that use [&hellip;]","og_url":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/","og_site_name":"Jama Software","article_published_time":"2012-12-03T20:19:49+00:00","article_modified_time":"2023-01-13T00:57:02+00:00","og_image":[{"url":"https:\/\/static.jamasoftware.com\/www\/imports\/2012\/12\/a30f1.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\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/#article","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/"},"author":{"name":"Karl Wiegers","@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47"},"headline":"When Use Cases Aren\u2019t Enough, Part 2","datePublished":"2012-12-03T20:19:49+00:00","dateModified":"2023-01-13T00:57:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/"},"wordCount":1292,"image":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/static.jamasoftware.com\/www\/imports\/2012\/12\/a30f1.jpg","keywords":["business requirements","karl wiegers","use cases"],"articleSection":["Requirements &amp; Requirements Management"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/","url":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/","name":"When Use Cases Aren\u2019t Enough, Part 2 - Jama Software","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/#primaryimage"},"image":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/static.jamasoftware.com\/www\/imports\/2012\/12\/a30f1.jpg","datePublished":"2012-12-03T20:19:49+00:00","dateModified":"2023-01-13T00:57:02+00:00","author":{"@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/e6a00f0ad439a5e1865476b36481aa47"},"breadcrumb":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/#primaryimage","url":"https:\/\/static.jamasoftware.com\/www\/imports\/2012\/12\/a30f1.jpg","contentUrl":"https:\/\/static.jamasoftware.com\/www\/imports\/2012\/12\/a30f1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jamasoftware.com\/blog\/2012\/12\/03\/when-use-cases-arent-enough-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jamasoftware.com\/"},{"@type":"ListItem","position":2,"name":"When Use Cases Aren\u2019t Enough, 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\/3184","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=3184"}],"version-history":[{"count":0,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts\/3184\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/media?parent=3184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/categories?post=3184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/tags?post=3184"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/industry?post=3184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}