<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>patkua@work</provider_name><provider_url>https://thekua.com/atwork</provider_url><author_name>Patrick</author_name><author_url>https://thekua.com/atwork/author/patrick/</author_url><title>Three ways to handle CFRs - patkua@work</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="rz1e6plOeS"&gt;&lt;a href="https://thekua.com/atwork/2017/05/three-ways-to-handle-cfrs/"&gt;Three ways to handle CFRs&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://thekua.com/atwork/2017/05/three-ways-to-handle-cfrs/embed/#?secret=rz1e6plOeS" width="600" height="338" title="&#x201C;Three ways to handle CFRs&#x201D; &#x2014; patkua@work" data-secret="rz1e6plOeS" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://thekua.com/atwork/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><thumbnail_url>https://thekua.com/atwork/wp-content/uploads/2017/05/ThreeWaysToHandleCFRs.png</thumbnail_url><thumbnail_width>1024</thumbnail_width><thumbnail_height>512</thumbnail_height><description>Cross-Functional Requirements (CFRs) are some of the key system characteristics that are important to design and account for. Internally we refer to these as CFRs, although classically they might be called Non-Functional Requirements (NFRs) or System Quality Attributes, however their cross-cutting nature means you always need to consider the impact of CFRs on new or [&hellip;]</description></oembed>
