{"id":71,"date":"2019-12-20T18:41:03","date_gmt":"2019-12-20T18:41:03","guid":{"rendered":"http:\/\/ctoinsight.com\/?p=71"},"modified":"2020-01-03T23:55:24","modified_gmt":"2020-01-03T23:55:24","slug":"software-complexity","status":"publish","type":"post","link":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/","title":{"rendered":"Software complexity &#8211; Is it worth measuring?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Software is among mankind\u2019s most complex creations. How do we measure software complexity and does it even make sense to do so?&nbsp; When I think of the most complex structures we have created, the arts (especially music), and \u2026 software come to mind. From an economic perspective, we consider software complexity to be a bad thing because the more complex the software, the more time and expense it takes to build and maintain.&nbsp; But sometimes it needs to be complex in order to solve complex problems.&nbsp; There can also be an aesthetic beauty to software that only developers seem equipped to appreciate. I recall once looking at code that controlled a spacecraft and being blown away not only by its complexity but also how by how very well written it was.&nbsp; <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Music is different in that how complicated it is seems to affect people in different ways.&nbsp; The high level of complexity in a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Wolfgang_Amadeus_Mozart\">Mozart<\/a> symphony seems to contribute to its immortality. On the other hand, simple popular music tunes have a wide fanbase.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Complexity of Music<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-22-at-9.02.40-AM.png\" alt=\"Fractal\" class=\"wp-image-131\" width=\"195\" height=\"144\" srcset=\"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-22-at-9.02.40-AM.png 870w, https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-22-at-9.02.40-AM-300x223.png 300w, https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-22-at-9.02.40-AM-768x570.png 768w\" sizes=\"auto, (max-width: 195px) 85vw, 195px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In his 1933 book&nbsp;<em><a href=\"https:\/\/www.hup.harvard.edu\/catalog.php?isbn=9780674734470\">Aesthetic Measure<\/a><\/em><sup>1<\/sup>, preeminent American mathematician <a href=\"https:\/\/en.wikipedia.org\/wiki\/George_David_Birkhoff\">George David Birkhoff<\/a> proposed a mathematical theory of aesthetics. In the course of writing the book, he spent a year studying art, music, and poetry of various cultures around the world.&nbsp; He developed a formula to measure the aesthetic quality of an art object (e.g., a work of music) as being the ratio between its order and complexity.&nbsp; Since that time, researchers have built upon his work to come up with other ways of analyzing complexity of music. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Benoit_Mandelbrot\">Mandelbrot\u2019s<\/a> prot\u00e9g\u00e9 <a href=\"http:\/\/123.physics.ucdavis.edu\/week_3_files\/voss-clarke.pdf\">Richard Voss together with John Clark<\/a> applied <a href=\"https:\/\/mathigon.org\/world\/Fractals\">fractals<\/a> to mathematical analysis of music<sup>2<\/sup>.&nbsp; <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0960077918300213\">April Pease <\/a>and her colleagues extended this work by searching for the presence of crucial musical events based on an analysis of volume and using this as a measure of complexity<sup>3<\/sup>.&nbsp; I find it interesting that in music complexity, the performance is measured, not the static sheet music (or electronic equivalent).&nbsp; Music played by a computer reading sheet music has been found be less complex than a performance by accomplished musicians!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Software Complexity<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The software profession has struggled with how to measure software complexity for decades.&nbsp; Thomas McCabe came up with the idea of using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cyclomatic_complexity\">Cyclomatic Complexity<\/a> to measure the number of logical paths through code<sup>4<\/sup>.&nbsp; But this has been shown to not be any better than just counting source lines of code (SLOC).&nbsp; Two methods currently in use are a set of six metrics proposed by <a href=\"http:\/\/www.pitt.edu\/~ckemerer\/CK%20research%20papers\/MetricForOOD_ChidamberKemerer94.pdf\">Shyam R. Chidamber and C.F. Kemerer<\/a> specifically designed for object-oriented code<sup>5<\/sup>, and a different set of six metrics proposed by <a href=\"https:\/\/en.wikipedia.org\/wiki\/Halstead_complexity_measures\">Maurice H. Halstead<\/a><sup>6<\/sup>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comparison of Software Complexity Metrics<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"\"><tbody><tr><td>\n  <strong>Chidamber and Kemerer Metrics<\/strong><br> <small>Note that these metrics are per class so you would sum them up for\n  all classes in the program<\/small>\n  <\/td><td style=\"vertical-align:top\">\n  <strong>Halstead Metrics<\/strong>\n  <\/td><\/tr><tr><td>   <strong>WMC<\/strong> &#8211; weighted methods per class is the sum the complexities   of each class method but they used a complexity of 1 for each method so this   is really just the number of methods in a class   <\/td><td style=\"vertical-align:top\">   <strong>Program Vocabulary<\/strong> n = n<sub>1<\/sub> + n<sub>2<\/sub><br>\n  n<sub>1<\/sub> \u2013 number of distinct operators<br>\n  n<sub>2<\/sub> \u2013 number of distinct operands   <\/td><\/tr><tr><td>   <strong>CBO<\/strong> &#8211; coupling between object classes is the   number of other classes which are coupled (using or being   used)   <\/td><td style=\"vertical-align:top\">   <strong>Program Length <\/strong>N = N<sub>1<\/sub> + N<sub>2<\/sub> <br>\n  N<sub>1<\/sub> \u2013 total number of operators<br>\n  N<sub>2<\/sub> \u2013 total number of operands\n  <\/td><\/tr><tr><td>   <strong>RFC<\/strong> &#8211; response for a class is the number of methods called   by each class method summed together   <\/td><td style=\"vertical-align:top\">   <strong>Calculated Estimated Program Length<\/strong> = n<sub>1<\/sub> log<sub>2<\/sub> n<sub>1<\/sub> + n<sub>2<\/sub> log<sub>2<\/sub>   n<sub>2<\/sub>   <\/td><\/tr><tr><td>   <strong>NOC<\/strong> &#8211; number of children is the sum of all classes that   inherit this class or a descended of it   <\/td><td style=\"vertical-align:top\">   <strong>Volume V <\/strong>= N x log<sub>2<\/sub> n   <\/td><\/tr><tr><td>   <strong>DIT<\/strong> &#8211; depth of inheritance tree is the maximum depth of   the inheritance tree for this class   <\/td><td style=\"vertical-align:top\">  <strong> Difficulty D<\/strong> = (n<sub>1<\/sub> \/ 2) x (N<sub>2<\/sub> \/ n<sub>2<\/sub>)   <\/td><\/tr><tr><td>   <strong>LCOM<\/strong>&#8211; lack of cohesion of methods measures the   intersection of the attributes used in common by the class methods   <\/td><td style=\"vertical-align:top\">   <strong>Effort E<\/strong> = D x V   <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Measuring Software Complexity<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/measurement_750.png\" alt=\"Measurement\" class=\"wp-image-146\" width=\"203\" height=\"125\" srcset=\"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/measurement_750.png 750w, https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/measurement_750-300x184.png 300w\" sizes=\"auto, (max-width: 203px) 85vw, 203px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">So why should we care about measuring software complexity?&nbsp; Here are some claims, in many instances being made by companies that are selling complexity measurement products or consultants that will help you figure out how to use them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">B<strong>etter estimates on software maintenance effort<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I suppose if you had enough empirical data to somehow relate\ncomplexity to maintenance cost, this might be useful.&nbsp; There certainly have been a lot of studies on\nthis.&nbsp; The problem is that there are other\nsignificant factors that affect software maintenance costs like <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>the number and type of new or changed user requirements concerning functional enhancements<\/li><li>the amount of adaptation that needs to be done to support a changing environment (e.g., Database, Operating System)<\/li><li>the amount of preventative maintenance that needs to be done to improve reliability or prevent future problems<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Monitoring complexity so as to keep it lower, saving cost and reducing risk<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">So, do we have the Software Development Manager tell developers that their LCOM or DIT is too high and they need to fix it?&nbsp; Really?&nbsp; I suppose this could be an indicator that could be used to focus code reviews (i.e., spend more time reviewing code that has higher complexity) but I don\u2019t see that there would be much value in doing this especially if your team is already doing effective code reviews with good coverage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Using complexity as criteria for deciding to refactor or rewrite software<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The suggestion here is that a software development manager would monitor the complexity across the codebase and when a module gets above a certain threshold, a <a href=\"https:\/\/ctoinsight.com\/index.php\/2019\/12\/22\/management-performance-matrix\/\">decision to refactor or rewrite<\/a> would be considered.&nbsp; My experience is that the development team already knows which sections of code are the best candidates for refactoring based on the effort required to maintain them.&nbsp; I\u2019d trust that measure much more than a complexity metric. Another consideration is how often complex code needs to be touched.&nbsp; I\u2019ve worked in organizations where we had a large, complex legacy codebase that we didn\u2019t touch, just wrap it with a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Facade_pattern\">fa\u00e7ade<\/a> or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Adapter_pattern\">adaptor<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My view on software complexity is that there is little if any value in measuring it outside of academia.&nbsp; There is a <a href=\"https:\/\/www.youtube.com\/watch?v=arCITMfxvEc\">hospital sketch<\/a> in Monty Python\u2019s Meaning of Life movie where doctors call for the operating room to be filled with the most expensive equipment in order to impress the administrators should they drop in for a visit.&nbsp; John Kleese specifically asks for staff to bring in \u201cthe machine that goes \u2018Bing\u2019.\u201d&nbsp; A software complexity dashboard would seem to have equivalent utility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><small> <sup>1<\/sup> <a href=\"https:\/\/www.hup.harvard.edu\/catalog.php?isbn=9780674734470\">George D. Birkhoff, Aesthetic Measure, Harvard University Press, 1933.<\/a> <br> <sup>2<\/sup>  <a href=\"http:\/\/123.physics.ucdavis.edu\/week_3_files\/voss-clarke.pdf\">R.V. Voss, J. Clarke, 1\/f Noise in Music and Speech, Nature, 258 (1975).<\/a> <br> <sup>3<\/sup> <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0960077918300213\">April Pease, Korosh Mahmoodi, Bruce J. West,Complexity Measures of Music, Chaos, Solitons and Fractals 108 (2018) 82\u201386.  <\/a><br> <sup>4<\/sup> <a href=\"https:\/\/ieeexplore.ieee.org\/document\/1702388\">McCabe (December 1976). &#8220;A Complexity Measure&#8221;. IEEE Transactions on Software Engineering (4): 308\u2013320. <\/a><br> <sup>5<\/sup> <a href=\"http:\/\/www.pitt.edu\/~ckemerer\/CK%20research%20papers\/MetricForOOD_ChidamberKemerer94.pdf\">Chidamber, S.R.; Kemerer, C.F. IEEE Transactions on Software Engineering Volume 20, Issue 6, Jun 1994 Page(s):476 \u2013 493. <\/a><br> <sup>6<\/sup> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Halstead_complexity_measures\">Halstead, Maurice H. (1977). Elements of Software Science. Amsterdam: Elsevier North-Holland, Inc. ISBN 0-444-00205-7. <\/a><\/small><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><small>Featured image of Barcelona Cathedral Copyright \u00a9 2019 Steve Kowalski<\/small> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Software is among mankind\u2019s most complex creations. How do we measure software complexity and is there value in doing so?<\/p>\n","protected":false},"author":1,"featured_media":119,"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":[18,20,7],"class_list":["post-71","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-software-complexity","tag-software-cost","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 complexity - Is it worth measuring? - CTO Insights<\/title>\n<meta name=\"description\" content=\"Software is among mankind\u2019s most complex creations. How do we measure software complexity and is there value in doing so?\" \/>\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\/20\/software-complexity\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Software complexity - Is it worth measuring? - CTO Insights\" \/>\n<meta property=\"og:description\" content=\"Software is among mankind\u2019s most complex creations. How do we measure software complexity and is there value in doing so?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/\" \/>\n<meta property=\"og:site_name\" content=\"CTO Insights\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-20T18:41:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-01-03T23:55:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-21-at-6.12.18-PM-1024x512.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"6 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\\\/20\\\/software-complexity\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/\"},\"author\":{\"name\":\"Steve Kowalski\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#\\\/schema\\\/person\\\/ae035f84ffb32d94aa6f4aa9b3780df0\"},\"headline\":\"Software complexity &#8211; Is it worth measuring?\",\"datePublished\":\"2019-12-20T18:41:03+00:00\",\"dateModified\":\"2020-01-03T23:55:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/\"},\"wordCount\":1210,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#\\\/schema\\\/person\\\/ae035f84ffb32d94aa6f4aa9b3780df0\"},\"image\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/Screen-Shot-2019-12-21-at-6.12.18-PM.png\",\"keywords\":[\"Software Complexity\",\"Software Cost\",\"Software Maintenance\"],\"articleSection\":[\"Software\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/\",\"url\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/\",\"name\":\"Software complexity - Is it worth measuring? - CTO Insights\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/Screen-Shot-2019-12-21-at-6.12.18-PM.png\",\"datePublished\":\"2019-12-20T18:41:03+00:00\",\"dateModified\":\"2020-01-03T23:55:24+00:00\",\"description\":\"Software is among mankind\u2019s most complex creations. How do we measure software complexity and is there value in doing so?\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/Screen-Shot-2019-12-21-at-6.12.18-PM.png\",\"contentUrl\":\"https:\\\/\\\/ctoinsight.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/Screen-Shot-2019-12-21-at-6.12.18-PM.png\",\"width\":2400,\"height\":1200,\"caption\":\"Barcelona Cathedral - Complexity\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ctoinsight.com\\\/index.php\\\/2019\\\/12\\\/20\\\/software-complexity\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ctoinsight.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software complexity &#8211; Is it worth measuring?\"}]},{\"@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 complexity - Is it worth measuring? - CTO Insights","description":"Software is among mankind\u2019s most complex creations. How do we measure software complexity and is there value in doing so?","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\/20\/software-complexity\/","og_locale":"en_US","og_type":"article","og_title":"Software complexity - Is it worth measuring? - CTO Insights","og_description":"Software is among mankind\u2019s most complex creations. How do we measure software complexity and is there value in doing so?","og_url":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/","og_site_name":"CTO Insights","article_published_time":"2019-12-20T18:41:03+00:00","article_modified_time":"2020-01-03T23:55:24+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-21-at-6.12.18-PM-1024x512.png","type":"image\/png"}],"author":"Steve Kowalski","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Steve Kowalski","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#article","isPartOf":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/"},"author":{"name":"Steve Kowalski","@id":"https:\/\/ctoinsight.com\/#\/schema\/person\/ae035f84ffb32d94aa6f4aa9b3780df0"},"headline":"Software complexity &#8211; Is it worth measuring?","datePublished":"2019-12-20T18:41:03+00:00","dateModified":"2020-01-03T23:55:24+00:00","mainEntityOfPage":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/"},"wordCount":1210,"commentCount":0,"publisher":{"@id":"https:\/\/ctoinsight.com\/#\/schema\/person\/ae035f84ffb32d94aa6f4aa9b3780df0"},"image":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#primaryimage"},"thumbnailUrl":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-21-at-6.12.18-PM.png","keywords":["Software Complexity","Software Cost","Software Maintenance"],"articleSection":["Software"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/","url":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/","name":"Software complexity - Is it worth measuring? - CTO Insights","isPartOf":{"@id":"https:\/\/ctoinsight.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#primaryimage"},"image":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#primaryimage"},"thumbnailUrl":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-21-at-6.12.18-PM.png","datePublished":"2019-12-20T18:41:03+00:00","dateModified":"2020-01-03T23:55:24+00:00","description":"Software is among mankind\u2019s most complex creations. How do we measure software complexity and is there value in doing so?","breadcrumb":{"@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#primaryimage","url":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-21-at-6.12.18-PM.png","contentUrl":"https:\/\/ctoinsight.com\/wp-content\/uploads\/2019\/12\/Screen-Shot-2019-12-21-at-6.12.18-PM.png","width":2400,"height":1200,"caption":"Barcelona Cathedral - Complexity"},{"@type":"BreadcrumbList","@id":"https:\/\/ctoinsight.com\/index.php\/2019\/12\/20\/software-complexity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ctoinsight.com\/"},{"@type":"ListItem","position":2,"name":"Software complexity &#8211; Is it worth measuring?"}]},{"@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\/71","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=71"}],"version-history":[{"count":49,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":310,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/posts\/71\/revisions\/310"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/media\/119"}],"wp:attachment":[{"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ctoinsight.com\/index.php\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}