{"id":2315,"date":"2023-05-24T08:06:43","date_gmt":"2023-05-24T06:06:43","guid":{"rendered":"https:\/\/risc.web-email.at\/fachbeitrag-software-reengineering\/"},"modified":"2023-11-02T16:36:35","modified_gmt":"2023-11-02T15:36:35","slug":"technical-article-software-reengineering","status":"publish","type":"publication","link":"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-software-reengineering\/","title":{"rendered":"Software-Reengineering: When will the legacy system become a problem?"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">by DI (FH) Alexander Leutgeb<\/h3>\n\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><em>Business-critical software is not immune to a certain aging process. However, an equivalent replacement is often not that easily available. But when is the time to replace the legacy system with the help of software reengineering?<\/em><br><br><\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center\"><div class=\"wp-block-media-text__content\">\n<p><strong>Table of contents<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If it ain&#8217;t broke, don&#8217;t fix it<\/li>\n\n\n\n<li>Missing or outdated documentation<\/li>\n\n\n\n<li>Original developers have left the company<\/li>\n\n\n\n<li>The knowledge base for the system is missing<\/li>\n\n\n\n<li>Even the implementation of small changes is very complex<\/li>\n\n\n\n<li>Constant need to fix bugs<\/li>\n\n\n\n<li>Code Smells<\/li>\n\n\n\n<li>The solution: Software Reengineering<\/li>\n\n\n\n<li>Sources<\/li>\n\n\n\n<li>Author<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-526274307-2-1024x683.jpg\" alt=\"Entwicklung\" class=\"wp-image-1222 size-full\" srcset=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-526274307-2-1024x683.jpg 1024w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-526274307-2-300x200.jpg 300w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-526274307-2-768x512.jpg 768w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-526274307-2-1536x1024.jpg 1536w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-526274307-2.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\">If it ain&#8217;t broke, don&#8217;t fix it<\/h3>\n\n\n\n<p>A common saying is: \u201cNever change a running system.\u201d This sentence, which is presumably a modified form of the statement \u201cNever change a winning team\u201d by the British soccer player and coach Sir Alf Ramsey, is, however, hardly known in the English-speaking world. There, the statement \u201cIf it ain\u2018t broke, don\u2018t fix it.\u201d is used instead. The statements are similar, but the second formulation does not seem quite as strict and dogmatic. In other words, one should only try to fix something if it is actually defective or damaged.<\/p>\n\n\n\n<p>From a functional point of view, this would mean that a system is no longer capable of performing the task for which it was designed. For software, we can go a step further here. A software system is \u201cin need of repair \u201d when it reaches a state that makes maintenance difficult or impossible. We have collected six signs for you that indicate that action is needed for your software system:<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div data-aos=\"fade-up\"  data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\" class=\"icon-box is-style-bg-blue\">\n  <div class=\"icon-overlay\">\n          <picture>\n        \n        \n        \n        \n        <img decoding=\"async\"  class=\"\" width=\"44\" height=\"44\"\n             src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/file-excel-solid.png\"\n             alt=\"\">\n      <\/picture>\n      <\/div>\n  \n\n<h5 class=\"has-text-align-center wp-block-heading\">Missing or outdated documentation<\/h5>\n\n\n\n<p class=\"has-text-align-center\">If the documentation of a system is outdated or does not match the actual system in many parts, this is a clear sign of a legacy system on which many changes have already been made. Even worse is the lack of comprehensive documentation. Such a circumstance complicates the maintenance and further development of a system and makes it almost impossible to train new employees quickly.<\/p>\n\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div data-aos=\"fade-up\"  data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\" class=\"icon-box is-style-bg-blue\">\n  <div class=\"icon-overlay\">\n          <picture>\n        \n        \n        \n        \n        <img decoding=\"async\"  class=\"\" width=\"44\" height=\"44\"\n             src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/user-slash-solid.png\"\n             alt=\"\">\n      <\/picture>\n      <\/div>\n  \n\n<h5 class=\"has-text-align-center wp-block-heading\">Original developers have left the company<\/h5>\n\n\n\n<p class=\"has-text-align-center\">Usually, a lot of knowledge about a complex system is stored in the heads of a few employees. This leads to a situation where the continuity of the software is directly dependent on the original developers, especially if the documentation is not adequate. The continuous departure of these employees inevitably leads to a situation that makes further development of the system almost or fully impossible.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div data-aos=\"fade-up\"  data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\" class=\"icon-box is-style-bg-blue\">\n  <div class=\"icon-overlay\">\n          <picture>\n        \n        \n        \n        \n        <img decoding=\"async\"  class=\"\" width=\"44\" height=\"44\"\n             src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/eye-low-vision-solid.png\"\n             alt=\"\">\n      <\/picture>\n      <\/div>\n  \n\n<h5 class=\"has-text-align-center wp-block-heading\">The knowledge base for the system is missing<\/h5>\n\n\n\n<p class=\"has-text-align-center\">A significant alarm signal is when there is hardly any understanding of the basic functioning of the software among the employees. In the worst case, no one in the company knows the original contexts and concepts. This makes it extremely difficult to find sustainable solutions if there is a problem. The solution often is quick \u201chacking\u201d to solve the problem, but these accelerate the malicious circle even more.<\/p>\n\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div data-aos=\"fade-up\"  data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\" class=\"icon-box is-style-bg-blue\">\n  <div class=\"icon-overlay\">\n          <picture>\n        \n        \n        \n        \n        <img decoding=\"async\"  class=\"\" width=\"44\" height=\"44\"\n             src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/shuffle-solid.png\"\n             alt=\"\">\n      <\/picture>\n      <\/div>\n  \n\n<h5 class=\"has-text-align-center wp-block-heading\">Even the implementation of small changes is very complex<\/h5>\n\n\n\n<p class=\"has-text-align-center\">A \u201claw\u201d formulated by Lehman and Belady on the evolution of software [1] states that systems become increasingly complex until active work is done to reduce the complexity. If even the implementation of small changes or enhancements requires a great deal of effort, this is a clear sign that the system has already become too complex. If even small changes require a large amount of time, more difficult changes become almost impossible to implement.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div data-aos=\"fade-up\"  data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\" class=\"icon-box is-style-bg-blue\">\n  <div class=\"icon-overlay\">\n          <picture>\n        \n        \n        \n        \n        <img decoding=\"async\"  class=\"\" width=\"44\" height=\"44\"\n             src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/bug-solid.svg\"\n             alt=\"\">\n      <\/picture>\n      <\/div>\n  \n\n<h5 class=\"has-text-align-center wp-block-heading\">Constant need to fix bugs<\/h5>\n\n\n\n<p class=\"has-text-align-center\">Large software projects will not ever be free of bugs, so, making regular \u201cbug fixes\u201d are necessary. However, if repeatedly fixing a bug leads to the appearance of a new bug, this is a sign that the architecture of the system may no longer meet current requirements. This represents the risk that small changes in the program will have unforeseen negative effects.<\/p>\n\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div data-aos=\"fade-up\"  data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\" class=\"icon-box is-style-bg-blue\">\n  <div class=\"icon-overlay\">\n          <picture>\n        \n        \n        \n        \n        <img decoding=\"async\"  class=\"\" width=\"44\" height=\"44\"\n             src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/laptop-code-solid.png\"\n             alt=\"\">\n      <\/picture>\n      <\/div>\n  \n\n<h5 class=\"has-text-align-center wp-block-heading\">Code Smells<\/h5>\n\n\n\n<p class=\"has-text-align-center\">Code smells are parts of the source code, which are not faulty, but badly structured and implemented. For example, the duplication of source code, i.e., the use of the same lines of code in different parts of the program, has a very bad influence on the subsequent maintainability of the system.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">The solution: Software Reengineering<\/h3>\n\n\n\n<p>If the \u201csymptoms\u201d are recognized in time, the decay of the software can be counteracted by using suitable methods in order to keep the quality of the system at a high level and to avoid possible failures. By Reengineering an existing system is restructured and above all also prepared for future development and extension.<\/p>\n\n\n\n<p>While maintenance involves adapting software that is in a productive environment to changed environmental conditions and correcting detected errors, reengineering involves redesigning and implementing systems or parts of them from scratch.<\/p>\n\n\n\n<p>RISC Software GmbH will gladly support you in the initial analysis as well as in the implementation of a reengineering of your software system.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">Sources<\/h3>\n\n\n\n<p>[1] M. M. Lehman, \u201cPrograms, life cycles, and laws of software evolution,\u201d in&nbsp;<em>Proceedings of the IEEE<\/em>, vol. 68, no. 9, pp. 1060-1076, Sept. 1980 vgl.&nbsp;<a href=\"https:\/\/ieeexplore.ieee.org\/document\/1456074\" target=\"_blank\" rel=\"noopener\">https:\/\/ieeexplore.ieee.org\/document\/1456074<\/a><\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignfull is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\">Contact<\/h3>\n\n\n\n<div class=\"wp-block-contact-form-7-contact-form-selector\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f663-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"663\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/publication\/2315#wpcf7-f663-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"663\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f663-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"form-row\">\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-name\">Your name <\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" id=\"your-name\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Name\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-email\">Your email<\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" id=\"your-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"E-Mail\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n<\/div>\n<div class=\"form-row\">\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-company\">Company <\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"your-company\" aria-invalid=\"false\" placeholder=\"Unternehmen\" value=\"\" type=\"text\" name=\"your-company\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-position\">Position<\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-position\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Position\" value=\"\" type=\"text\" name=\"your-position\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n<\/div>\n<div class=\"form-row\">\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-subject\"> Subject <\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-subject\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" id=\"your-subject\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Thema\" value=\"\" type=\"text\" name=\"your-subject\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n<\/div>\n<p><span id=\"wpcf7-69de248c4133e-wrapper\" class=\"wpcf7-form-control-wrap phone-95-wrap\" style=\"display:none !important; visibility:hidden !important;\"><label for=\"wpcf7-69de248c4133e-field\" class=\"hp-message\">Please leave this field empty.<\/label><input id=\"wpcf7-69de248c4133e-field\"  class=\"wpcf7-form-control wpcf7-text\" type=\"text\" name=\"phone-95\" value=\"\" size=\"40\" tabindex=\"-1\" autocomplete=\"new-password\" \/><\/span><br \/>\n<label class=\"sr-only\" for=\"your-message\"> Your message (optional)<\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" id=\"your-message\" aria-invalid=\"false\" placeholder=\"Ihre Nachricht an uns\" name=\"your-message\"><\/textarea><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"hcap-cf7\">\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tclass=\"hcaptcha-widget-id\"\n\t\t\t\tname=\"hcaptcha-widget-id\"\n\t\t\t\tvalue=\"eyJzb3VyY2UiOlsiY29udGFjdC1mb3JtLTdcL3dwLWNvbnRhY3QtZm9ybS03LnBocCJdLCJmb3JtX2lkIjo2NjN9-5cf29316f0fc31f5a29d11a228757560\">\n\t\t\t\t<span id=\"hcap_cf7-69de248c41a516.15094626\" class=\"wpcf7-form-control h-captcha \"\n\t\t\tdata-sitekey=\"3a6a81c1-2b2e-4b2a-b1eb-d9446bc09afb\"\n\t\t\tdata-theme=\"light\"\n\t\t\tdata-size=\"normal\"\n\t\t\tdata-auto=\"false\"\n\t\t\tdata-ajax=\"false\"\n\t\t\tdata-force=\"false\">\n\t\t<\/span>\n\t\t<input type=\"hidden\" id=\"_wpnonce\" name=\"_wpnonce\" value=\"83fc09d92f\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/publication\/2315\" \/><\/span><input class=\"wpcf7-form-control wpcf7-submit has-spinner btn\" type=\"submit\" value=\"Senden\" \/>\n<\/p><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<h3 class=\"wp-block-heading\">Author<\/h3>\n\n\n<div class=\"contact-person\">\n      <picture>\n      \n      \n      \n      \n      <img decoding=\"async\" data-aos=\"fade-zoom-in\"\n           data-aos-offset=\"0\" class=\"w-full\" width=\"212\" height=\"293\"\n           src=\"\"\n           alt=\"\">\n    <\/picture>\n    \n\n<h5 class=\"wp-block-heading\">DI (FH) Alexander Leutgeb<\/h5>\n\n\n\n<p>Head of Unit Industrial Software Applications<\/p>\n\n  <\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group alignwide is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Business-critical software is not immune to a certain aging process. However, an equivalent replacement is often not so easily available. But when is it time to replace the legacy system with the help of software reengineering?<\/p>\n","protected":false},"featured_media":1222,"template":"","publication-category":[53],"class_list":["post-2315","publication","type-publication","status-publish","has-post-thumbnail","hentry","publication-category-software-reengineering-en"],"acf":[],"portrait_thumb_url":"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-526274307-2-360x214.jpg","_links":{"self":[{"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication\/2315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication"}],"about":[{"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/types\/publication"}],"version-history":[{"count":10,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication\/2315\/revisions"}],"predecessor-version":[{"id":5035,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication\/2315\/revisions\/5035"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/media\/1222"}],"wp:attachment":[{"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/media?parent=2315"}],"wp:term":[{"taxonomy":"publication-category","embeddable":true,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication-category?post=2315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}