{"id":63,"date":"2022-02-09T12:15:57","date_gmt":"2022-02-09T11:15:57","guid":{"rendered":"https:\/\/www.koenmannaerts.com\/?p=63"},"modified":"2022-02-09T12:15:58","modified_gmt":"2022-02-09T11:15:58","slug":"contract-design-metrics","status":"publish","type":"post","link":"https:\/\/www.koenmannaerts.com\/?p=63","title":{"rendered":"Contract Design Metrics"},"content":{"rendered":"\n<p>In the book <a href=\"https:\/\/www.idesign.net\/Books\/Righting-Software\">Righting Software<\/a>, <a href=\"https:\/\/www.idesign.net\/About\/Team\">Juval Lowy<\/a> describes Contract Design Metrics. Contract Design Metrics give software designers guidelines when designing contracts\/interfaces. The book goes on to describes that there is an optimal range for the number of method on a contract:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Too large makes them less reusable<\/li><li>Too small: although more reusable, when they are too granular it takes assembling them back together more work <\/li><\/ul>\n\n\n\n<p>We have run analysis across several of our projects, all projects are running in production.<\/p>\n\n\n\n<p><strong>Info<\/strong><\/p>\n\n\n\n<p>We gathered all methods on all contracts and captured the following information: service name, service type, context (although it is not used very often), facet, method, return value, input, the architect, year of the projects (these last two are omitted from the screenshot)<\/p>\n\n\n\n<p><strong>Goal<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Validate the Contract Design Metrics (Righting Software)<\/li><li>Library of all methods ever designed: aid for DD<\/li><li>Dashboarding<\/li><\/ul>\n\n\n\n<p><strong>Conclusions<\/strong><\/p>\n\n\n\n<p>The metrics align very well with the Contract Design Metrics. Although this could be linked to a confirmation bias in some sense, but for us it shows the metrics are feasible in projects. After close examination of the outliers we see that they should have been split up into multiple facets.<\/p>\n\n\n\n<p>Dashboarding: we are still playing around with this view.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"info\">Info<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"519\" src=\"https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/List-of-methods-1024x519.png\" alt=\"\" class=\"wp-image-64\" srcset=\"https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/List-of-methods-1024x519.png 1024w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/List-of-methods-300x152.png 300w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/List-of-methods-768x389.png 768w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/List-of-methods-1536x779.png 1536w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/List-of-methods.png 1848w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"metrics\">Metrics<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"859\" src=\"https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Metrics-1024x859.png\" alt=\"\" class=\"wp-image-65\" srcset=\"https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Metrics-1024x859.png 1024w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Metrics-300x252.png 300w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Metrics-768x644.png 768w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Metrics.png 1055w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dashboard\">Dashboard<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"817\" src=\"https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Methods-1024x817.png\" alt=\"\" class=\"wp-image-66\" srcset=\"https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Methods-1024x817.png 1024w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Methods-300x239.png 300w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Methods-768x613.png 768w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Methods-1536x1226.png 1536w, https:\/\/www.koenmannaerts.com\/wp-content\/uploads\/2022\/02\/Methods.png 1589w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Many thanks to my colleagues: <a href=\"http:\/\/www.bartbovendeerdt.com\/\">Bart<\/a>, <a href=\"https:\/\/rob.hodzelmans.eu\/\">Rob<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the book Righting Software, Juval Lowy describes Contract Design Metrics. Contract Design Metrics give software designers guidelines when designing contracts\/interfaces. The book goes on&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/www.koenmannaerts.com\/?p=63\">Continue reading<span class=\"screen-reader-text\">Contract Design Metrics<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[1],"tags":[10,4],"class_list":["post-63","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-detailed-design","tag-systemdesign","entry"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=\/wp\/v2\/posts\/63","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=63"}],"version-history":[{"count":3,"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=\/wp\/v2\/posts\/63\/revisions"}],"predecessor-version":[{"id":69,"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=\/wp\/v2\/posts\/63\/revisions\/69"}],"wp:attachment":[{"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=63"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=63"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.koenmannaerts.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}