{"id":1,"date":"2019-12-19T18:34:00","date_gmt":"2019-12-19T18:34:00","guid":{"rendered":"http:\/\/ctoinsight.com\/\/?p=1"},"modified":"2019-12-29T18:14:01","modified_gmt":"2019-12-29T18:14:01","slug":"software-evolution","status":"publish","type":"post","link":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/","title":{"rendered":"Software evolution &#8211; Software is never done &#8230; it is abandoned!"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I\u2019m not sure who should get credit for the aphorism &#8220;Software is never done &#8230; it is abandoned,&#8221; but it seems a corollary to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Lehman%27s_laws_of_software_evolution\">Lehman\u2019s laws of software evolution<\/a>.&nbsp; <a href=\"https:\/\/en.wikipedia.org\/wiki\/Manny_Lehman_(computer_scientist)\">Meir \u201cManny\u201d Lehman<\/a> worked at IBM\u2019s research division from 1964 to 1972.  Lehman&#8217;s studies of software development lifecycle provided a foundation for his early recognition of the software evolution phenomenon. After IBM, he became Professor and Head of the Computing Department at <a href=\"https:\/\/www.imperial.ac.uk\/\">Imperial College London<\/a> and then Professor at <a href=\"https:\/\/www.mdx.ac.uk\/\">Middlesex University<\/a>. I\u2019ll discuss three of his eight laws that resonate the most with me, and their implications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Functional content must grow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The functional content of a software system must be continually increased to maintain user satisfaction over its lifetime<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a good thing!&nbsp; People like using your software!&nbsp; They will find ways to use it that you hadn\u2019t thought of. They will have wonderful ideas on how it can be more efficient and more comprehensive.&nbsp; But if you don\u2019t keep releasing new features and enhancements to keep up with their requests, they may become dissatisfied and move on to something else.&nbsp; <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Complexity must be managed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>As a software system evolves, its complexity increases unless work is done to maintain or reduce it<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is in reference to increasing <a href=\"https:\/\/en.wikipedia.org\/wiki\/Software_entropy\">software entropy<\/a>.&nbsp; As new functionality is added, the software will eventually become more complex and more disorganized as it departs from its original design.&nbsp; At some point, it may well be time for a redesign.&nbsp; That in no way means that the original design was a failure, just that the system has evolved, which is a good thing!&nbsp; This concept of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Software_entropy\">software entropy<\/a> is orthogonal to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Technical_debt\">technical debt<\/a>.  Taking on technical debt may lower complexity when easier short-term solutions are selected over better longer-term solutions with higher <a href=\"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/\">complexity<\/a> and longer implementation times.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quality may appear to be declining<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The quality of a software system will appear to be declining unless it is rigorously maintained and adapted to operational environment changes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The environment that our software operates in is likely to be ever-changing. There will be new platforms, new operating systems, new devices, new frameworks, new protocols, new databases, new APIs, and new resource constraints and unconstraints. &#8220;Adapt or perish, now as ever, is nature&#8217;s inexorable imperative.&#8221; \u2013 <a href=\"https:\/\/en.wikipedia.org\/wiki\/H._G._Wells\">H.G. Wells<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Software evolution is not the enemy; it is the consequence of a successful system.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Software is never done &#8230; it is abandoned.&#8221; Software evolution is something to be understood (Lehman&#8217;s Laws) and embraced<\/p>\n","protected":false},"author":1,"featured_media":100,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[8],"tags":[19,6,7],"class_list":["post-1","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-software-entropy","tag-software-evolution","tag-software-maintenance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Software evolution - Software is never done ... it is abandoned! - CTO Insights<\/title>\n<meta name=\"description\" content=\"&quot;Software is never done ... it is abandoned.&quot; Software evolution is something to be understood (Lehman&#039;s Laws) and embraced\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Software evolution - Software is never done ... it is abandoned! - CTO Insights\" \/>\n<meta property=\"og:description\" content=\"&quot;Software is never done ... it is abandoned.&quot; Software evolution is something to be understood (Lehman&#039;s Laws) and embraced\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/\" \/>\n<meta property=\"og:site_name\" content=\"CTO Insights\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-19T18:34:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-29T18:14:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/01\/evolution.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1385\" \/>\n\t<meta property=\"og:image:height\" content=\"570\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Steve Kowalski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Kowalski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/\"},\"author\":{\"name\":\"Steve Kowalski\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#\\\/schema\\\/person\\\/ae035f84ffb32d94aa6f4aa9b3780df0\"},\"headline\":\"Software evolution &#8211; Software is never done &#8230; it is abandoned!\",\"datePublished\":\"2019-12-19T18:34:00+00:00\",\"dateModified\":\"2019-12-29T18:14:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/\"},\"wordCount\":415,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#\\\/schema\\\/person\\\/ae035f84ffb32d94aa6f4aa9b3780df0\"},\"image\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/evolution.jpg\",\"keywords\":[\"Software Entropy\",\"Software Evolution\",\"Software Maintenance\"],\"articleSection\":[\"Software\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/\",\"url\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/\",\"name\":\"Software evolution - Software is never done ... it is abandoned! - CTO Insights\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/evolution.jpg\",\"datePublished\":\"2019-12-19T18:34:00+00:00\",\"dateModified\":\"2019-12-29T18:14:01+00:00\",\"description\":\"\\\"Software is never done ... it is abandoned.\\\" Software evolution is something to be understood (Lehman's Laws) and embraced\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/evolution.jpg\",\"contentUrl\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/evolution.jpg\",\"width\":1385,\"height\":570,\"caption\":\"Software Evolution\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/19\\\/software-evolution\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ctoinsight.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software evolution &#8211; Software is never done &#8230; it is abandoned!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#website\",\"url\":\"https:\\\/\\\/ctoinsight.com\\\/\",\"name\":\"CTO Insights\",\"description\":\"Thoughts on software and technology leadership\",\"publisher\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#\\\/schema\\\/person\\\/ae035f84ffb32d94aa6f4aa9b3780df0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ctoinsight.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#\\\/schema\\\/person\\\/ae035f84ffb32d94aa6f4aa9b3780df0\",\"name\":\"Steve Kowalski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g\",\"caption\":\"Steve Kowalski\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g\"},\"description\":\"Chief Technology Officer (CTO) - SaaS, Cloud, Agile\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/drstevekowalski\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software evolution - Software is never done ... it is abandoned! - CTO Insights","description":"\"Software is never done ... it is abandoned.\" Software evolution is something to be understood (Lehman's Laws) and embraced","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:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/","og_locale":"en_US","og_type":"article","og_title":"Software evolution - Software is never done ... it is abandoned! - CTO Insights","og_description":"\"Software is never done ... it is abandoned.\" Software evolution is something to be understood (Lehman's Laws) and embraced","og_url":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/","og_site_name":"CTO Insights","article_published_time":"2019-12-19T18:34:00+00:00","article_modified_time":"2019-12-29T18:14:01+00:00","og_image":[{"width":1385,"height":570,"url":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/01\/evolution.jpg","type":"image\/jpeg"}],"author":"Steve Kowalski","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Steve Kowalski","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#article","isPartOf":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/"},"author":{"name":"Steve Kowalski","@id":"https:\/\/ctoinsight.com\/#\/schema\/person\/ae035f84ffb32d94aa6f4aa9b3780df0"},"headline":"Software evolution &#8211; Software is never done &#8230; it is abandoned!","datePublished":"2019-12-19T18:34:00+00:00","dateModified":"2019-12-29T18:14:01+00:00","mainEntityOfPage":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/"},"wordCount":415,"commentCount":0,"publisher":{"@id":"https:\/\/ctoinsight.com\/#\/schema\/person\/ae035f84ffb32d94aa6f4aa9b3780df0"},"image":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#primaryimage"},"thumbnailUrl":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/01\/evolution.jpg","keywords":["Software Entropy","Software Evolution","Software Maintenance"],"articleSection":["Software"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/","url":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/","name":"Software evolution - Software is never done ... it is abandoned! - CTO Insights","isPartOf":{"@id":"https:\/\/ctoinsight.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#primaryimage"},"image":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#primaryimage"},"thumbnailUrl":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/01\/evolution.jpg","datePublished":"2019-12-19T18:34:00+00:00","dateModified":"2019-12-29T18:14:01+00:00","description":"\"Software is never done ... it is abandoned.\" Software evolution is something to be understood (Lehman's Laws) and embraced","breadcrumb":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#primaryimage","url":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/01\/evolution.jpg","contentUrl":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/01\/evolution.jpg","width":1385,"height":570,"caption":"Software Evolution"},{"@type":"BreadcrumbList","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/19\/software-evolution\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ctoinsight.com\/"},{"@type":"ListItem","position":2,"name":"Software evolution &#8211; Software is never done &#8230; it is abandoned!"}]},{"@type":"WebSite","@id":"https:\/\/ctoinsight.com\/#website","url":"https:\/\/ctoinsight.com\/","name":"CTO Insights","description":"Thoughts on software and technology leadership","publisher":{"@id":"https:\/\/ctoinsight.com\/#\/schema\/person\/ae035f84ffb32d94aa6f4aa9b3780df0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ctoinsight.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/ctoinsight.com\/#\/schema\/person\/ae035f84ffb32d94aa6f4aa9b3780df0","name":"Steve Kowalski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g","caption":"Steve Kowalski"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/558ae6d325255bc5d2dd8dbf91724b3d5df6dbbd5c48e45bf8981de2b32907bb?s=96&d=mm&r=g"},"description":"Chief Technology Officer (CTO) - SaaS, Cloud, Agile","sameAs":["https:\/\/www.linkedin.com\/in\/drstevekowalski\/"]}]}},"_links":{"self":[{"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/posts\/1","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/comments?post=1"}],"version-history":[{"count":30,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":300,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/posts\/1\/revisions\/300"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/media\/100"}],"wp:attachment":[{"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}