{"id":144,"date":"2017-08-21T12:02:21","date_gmt":"2017-08-21T11:02:21","guid":{"rendered":"http:\/\/www.smharter.com\/blog\/?p=144"},"modified":"2020-08-14T16:31:54","modified_gmt":"2020-08-14T15:31:54","slug":"the-7-fundamental-principles-of-software-requirements","status":"publish","type":"post","link":"https:\/\/www.smharter.ai\/blog\/2017\/08\/21\/the-7-fundamental-principles-of-software-requirements\/","title":{"rendered":"The 7 fundamental principles of Software Requirements"},"content":{"rendered":"<ol>\n<li><strong>From Wicked problems definition:<\/strong><br>\n<em class=\"font-colorPrimary\">A problem is not understood until after you have developed a solution.<\/em><p><\/p>\n<p>Reference: Horst Rittel and Melvin Webber, Jeff Conklin, 1967-2008. See <a href=\"http:\/\/en.wikipedia.org\/wiki\/Wicked_problems\">http:\/\/en.wikipedia.org\/wiki\/Wicked_problems<\/a> and <a href=\"http:\/\/www.cognexus.org\/wpf\/wickedproblems.pdf\">http:\/\/www.cognexus.org\/wpf\/wickedproblems.pdf<\/a><\/p><\/li>\n<li><strong>Humphrey law:<\/strong><br>\n<em class=\"font-colorPrimary\">For a new software system, the requirements will not be completely known until after the users have used it.<\/em><p><\/p>\n<p>Reference: Watts S. Humphrey, A Discipline for Software Engineering, Addison-Wesley, 1995. See <a href=\"http:\/\/en.wikipedia.org\/wiki\/Watts_Humphrey\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/en.wikipedia.org\/wiki\/Watts_Humphrey<\/a><\/p><\/li>\n<li><strong>The Uncertainty Principle in Software Engineering:<\/strong><br>\n<em class=\"font-colorPrimary\">Uncertainty is inherent and inevitable in software development processes and products.<br>\nSometimes also referred as Ziv&#8217;s law: specifications will never be fully understood.<\/em><p><\/p>\n<p>Reference: H. Ziv and D.J. Richardson, May 1996. See <a href=\"http:\/\/www.ics.uci.edu\/~ziv\/papers\/icse97.ps\">http:\/\/www.ics.uci.edu\/~ziv\/papers\/icse97.ps<\/a><\/p><\/li>\n<li><strong>Wegner\u2019s lemma:<\/strong><br>\n<em class=\"font-colorPrimary\">It is not possible to completely specify an interactive system.<\/em><p><\/p>\n<p>Reference: Peter Wegner, Why interaction is more powerful than algorithms, Comm. of the ACM, May 1997.<br>\nSee <a href=\"http:\/\/www.cs.brown.edu\/people\/pw\/papers\/ficacm.ps\">http:\/\/www.cs.brown.edu\/people\/pw\/papers\/ficacm.ps<\/a><\/p><\/li>\n<li><strong>From the Lehman&#8217;s laws of software evolution:<\/strong><br>\n<em class=\"font-colorPrimary\">Software embedded in the real world become part of it, changing it and evolving in concert.<\/em><p><\/p>\n<p>Reference: Meir M. Lehman and Laszlo Belady, 1974-1996. See E-type programs in <a href=\"http:\/\/users.ece.utexas.edu\/~perry\/education\/SE-Intro\/lehman.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Programs, Life Cycles, and Laws of Software Evolution<\/a><br>\nand see <a href=\"http:\/\/en.wikipedia.org\/wiki\/Lehman%27s_laws_of_software_evolution\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/en.wikipedia.org\/wiki\/Lehman&#8217;s_laws_of_software_evolution<\/a><\/p><\/li>\n<li><strong>The Cone of Uncertainty:<\/strong><br>\n<em class=\"font-colorPrimary\">The actual effort or scope can be 4 times or 1\/4 of the first estimate.<\/em><p><\/p>\n<p>Reference: McConnell, 2006. See <a href=\"http:\/\/en.wikipedia.org\/wiki\/Cone_of_Uncertainty\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/en.wikipedia.org\/wiki\/Cone_of_Uncertainty<\/a><\/p><\/li>\n<li><strong>Langdon\u2019s lemma:<\/strong><br>\n<em class=\"font-colorPrimary\">Software evolves more rapidly as it approaches chaotic regions.<\/em><p><\/p>\n<p>Reference: W. B. Langdon. See also <a href=\"http:\/\/www.cs.ucl.ac.uk\/staff\/W.Langdon\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.cs.ucl.ac.uk\/staff\/W.Langdon\/<\/a><\/p><\/li>\n<\/ol>\n\n\n<div style=\"height:47px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"420\" height=\"339\" src=\"https:\/\/www.smharter.com\/blog\/wp-content\/uploads\/boost.png\" alt=\"\" class=\"wp-image-2044\"\/><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"text-ads\">\n\t<h3>Boost your Agile to a whole new level of mastery.<\/h3>\n\t<p>\n\t<br>\n\tSee how we can help.\n\t<br>\n\tYou, your team, your organisation.\n\t<br>\n\t<br>\n\t<\/p>\n\n\t<div class=\"local-scroll\">\n\t\t<a href=\"\/coaching.html#one_session\" target=\"_blank\" class=\" btn elastic-btn-mod btn-mod btn-dark btn-medium btn-round\" onclick=\"ga('send','event','Blog agile-ads','Click one_session button','Virtual Mentoring');\" rel=\"noopener noreferrer\">\n\t\tVirtual Mentoring\n\t\t<\/a> \n\t\t<a href=\"\/coaching.html#assessments\" target=\"_blank\" class=\"btn elastic-btn-mod btn-mod btn-dark btn-medium btn-round\" onclick=\"ga('send','event','Blog agile-ads','Click assessments button','Virtual Assessments');\" rel=\"noopener noreferrer\">\n\t\tVirtual Assessments\n\t\t<\/a>\n\t<\/div>\n<\/div>\n\n\n\n<p><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Given the complex nature of the problems we try to solve and the solutions we try to envision, there&#8217;s no surprise the devil is in the details. <\/p>\n<p>Sometimes we have to be highly intelligent and well-informed just to be undecided about them.<\/p>\n<p>These seven principles are seven chances to spot the complexity hidden in the details.<\/p>\n","protected":false},"author":2,"featured_media":238,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-144","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"_links":{"self":[{"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/posts\/144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/comments?post=144"}],"version-history":[{"count":24,"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/posts\/144\/revisions"}],"predecessor-version":[{"id":2053,"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/posts\/144\/revisions\/2053"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/media\/238"}],"wp:attachment":[{"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/media?parent=144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/categories?post=144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.smharter.ai\/blog\/wp-json\/wp\/v2\/tags?post=144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}