{"id":2940,"date":"2023-05-24T08:03:43","date_gmt":"2023-05-24T06:03:43","guid":{"rendered":"https:\/\/risc.web-email.at\/fachbeitraege-test-driven-development\/"},"modified":"2023-11-02T16:36:17","modified_gmt":"2023-11-02T15:36:17","slug":"technical-article-test-driven-development","status":"publish","type":"publication","link":"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-test-driven-development\/","title":{"rendered":"Agile &#038; Test-Driven: Focus on the customer"},"content":{"rendered":"\n<h2 class=\"wp-block-heading is-style-v2-telegrafico\">How test-driven-development benefits both customers and the development team<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">by Yvonne Marneth, BSc<\/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>Agile methods are used to actively involve customers in the development process. At regular intervals, they get the opportunity to check the progress and direction of their product with their feedback. This results in a valuable product that can be delivered quickly. With the use of test-driven development, this core concept is also transferred to technical development.<\/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>What is Test-Driven Development?<\/li>\n\n\n\n<li>Quality improvement<\/li>\n\n\n\n<li>Test-Driven-Development in an agile context<\/li>\n\n\n\n<li>Conclusion<\/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=\"540\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-1202205418-1-1024x540.jpg\" alt=\"Journey\" class=\"wp-image-2928 size-full\" srcset=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-1202205418-1-1024x540.jpg 1024w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-1202205418-1-300x158.jpg 300w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-1202205418-1-768x405.jpg 768w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-1202205418-1-1536x810.jpg 1536w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-1202205418-1.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\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\">What is Test-Driven Development?<\/h3>\n\n\n\n<p>Test-Driven-Development (TDD) is a process model in software development that is based on testing software automatically using various test methods. Traditionally, a feature is first implemented and then tested. Test-Driven-Development reverses this process: Here, a test is first written for a new feature and then the associated logic is implemented incrementally until the test runs successfully. Then the code is revised to improve it and make it more understandable. Finally, it is integrated into the code base, where it is checked against all existing tests. Only then is the feature considered successfully implemented.<\/p>\n\n\n\n<p>This approach can seem very unintuitive and time-consuming at first. In fact, however, it brings many advantages &#8211; especially when integrated into an agile work mode &#8211; and can even make the development process more effective in the long term.<\/p>\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<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"910\" height=\"910\" sizes=\"(max-width: 910px) 100vw, 910px\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_prozess.png\" alt=\"cyclical development process\" class=\"wp-image-2920\" srcset=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_prozess.png 910w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_prozess-300x300.png 300w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_prozess-150x150.png 150w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_prozess-768x768.png 768w\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><em>Figure 1: Test-Driven Development describes a cyclical development process in which tests are created for code even before it is implemented.<\/em><\/p>\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\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\">Quality improvement<\/h3>\n\n\n\n<p>Probably the most obvious consequence of Test-Driven Development is the higher code quality that results from the measures taken. This increase becomes measurable via various quality parameters such as the number of \u201ccode smells\u201c (unpleasantness in the code), bugs, etc.. These parameters are also summarized under the term \u201ctechnical debt\u201c. Also these measured values can be determined automatically and give an overview of the general condition of a software product. The goal of TDD here is to keep an eye on the technical debt and to keep it as low as possible. This results in significantly lower costs for changes and enhancements later on.<\/p>\n\n\n\n<p>The feedback loop can be used to ensure that the code behaves correctly, but also to check that undesirable behavior does not occur. Developers are therefore not only concerned with the optimal case, but also with possible pitfalls that would otherwise only become apparent in actual user tests. The time-consuming testing phase with users can thus be shortened considerably, developers deal with the cases directly and do not first try to recreate and understand a reported error scenario. In addition, they handle bugs while the code is still \u201cfresh\u201c in their minds and do not have to think their way back into it.<\/p>\n\n\n\n<p>Code reviews are a good way to give colleagues an insight into the written code during the revision phase. On the one hand, this prevents the formation of so-called \u201cknowledge silos\u201c. This means that only a single team member has knowledge about a particular code component. This dependency is to be avoided. On the other hand the code quality increases, since constructive feedback is brought in. Code reviews can also be used to introduce new employees to a project or to distribute knowledge within the team. The process can also improve the division of labor and team dynamics in the long term.<\/p>\n\n\n\n<p>If users still find further errors, existing tests support the reading of the code and thus the quick elimination of the error. New tests then immediately ensure that a specific error cannot creep in again in the future.<\/p>\n\n\n\n<p>Customers have the advantage that the life expectancy of their software is increased and users experience fewer errors. This reduces the costs for support. However, the higher quality is only a partial goal of this process.<\/p>\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<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"649\" height=\"374\" sizes=\"(max-width: 649px) 100vw, 649px\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_Cost_of-change.png\" alt=\"Cost of Change compared to a traditional workflow\" class=\"wp-image-2922\" srcset=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_Cost_of-change.png 649w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/2022-01-10-test-driven-development_Cost_of-change-300x173.png 300w\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><em>Figure 2: The goal of Test-Driven-Development is to sustainably reduce the Cost of Change compared to a traditional workflow.<\/em><\/p>\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\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\">Test-Driven-Development in an agile context<\/h3>\n\n\n\n<p>In agile process models such as Scrum or Kanban, an iterative development cycle is depicted in contrast to traditional methods. This is designed to deliver a usable product to customers as quickly as possible and to obtain feedback as early as possible. In this way, problems can be addressed directly in the further development process and the direction can be corrected. Test-Driven-Development transfers this cyclical workflow to the technical development level. As shown in Figure 1, the cycle consists of continuously writing tests, implementing functions and revising the written code. Working in cycles selectively reduces the complexity of a task and helps maintain focus.<\/p>\n\n\n\n<p>In agile processes, customer requirements can change again and again. Therefore, flexibility and ease of change in the code base must be taken into account as early as the development stage. This, in turn, is only possible if the code base is lean and focused, which is ensured by constant revision. High technical debt means that changes can lead to regressions, which are sometimes time-consuming and expensive to fix, or even only become apparent on the production system and thus cause additional support costs. The goal of TDD is shown in Fig. 2.<\/p>\n\n\n\n<p>Test coverage, successful test runs and reviews can help to formulate a meaningful \u201cDefinition of Done\u201c in an agile environment and to verify its fulfillment objectively. A good Definition of Done is necessary to create clear expectations for the completion of a feature between the development team and the customer. It is usually not limited to the pure development time a developer needs until a feature is visible, but until it meets all mutually agreed requirements. These can be of a functional, qualitative and security nature. If there is no common understanding between the development team and the customer, functions that have actually been completed often have to be reworked. This can disrupt the workflow and ultimately lead to functions taking a very long time to implement.<\/p>\n\n\n\n<p>Test-Driven Development builds on agile values and helps to exploit the full potential of this way of working. Initially, the cycle time in a team can increase while the developers learn to use the new methods. Over time, as new concepts become routine and experience is built up, the effort becomes negligible and pays off with a lower cost of change. The controlled increase in software quality is ultimately the only reliable method for accelerating the development process in the long term.<\/p>\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<figure class=\"wp-block-image size-large is-style-rounded\"><img decoding=\"async\" width=\"1024\" height=\"683\" sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Agile-Softwareentwicklung_C_iStock-1024x683.jpg\" alt=\"Development\" class=\"wp-image-1243\" srcset=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Agile-Softwareentwicklung_C_iStock-1024x683.jpg 1024w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Agile-Softwareentwicklung_C_iStock-300x200.jpg 300w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Agile-Softwareentwicklung_C_iStock-768x512.jpg 768w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Agile-Softwareentwicklung_C_iStock-1536x1024.jpg 1536w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Agile-Softwareentwicklung_C_iStock.jpg 1920w\" \/><\/figure>\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\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>Agile workflows and test-driven development are both designed to obtain and respond to feedback quickly. Agile process models focus primarily on the organizational side. To ensure that this can also function smoothly from a technical point of view, Test-Driven-Development introduces the agile values at the development level. As with the implementation of the agile framework, it is essential here to adapt Test-Driven-Development to the circumstances, the team, the project context, etc., so that it is effective and brings benefits for both customers and the development team.<\/p>\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<figure class=\"wp-block-image size-large is-style-rounded\"><img decoding=\"async\" width=\"1024\" height=\"683\" sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-494345930-1024x683.jpg\" alt=\"Progamming\" class=\"wp-image-1292\" srcset=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-494345930-1024x683.jpg 1024w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-494345930-300x200.jpg 300w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-494345930-768x512.jpg 768w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-494345930-1536x1025.jpg 1536w, https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-494345930.jpg 1920w\" \/><\/figure>\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\" 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\/2940#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-69de8f9f15713-wrapper\" class=\"wpcf7-form-control-wrap phone-95-wrap\" style=\"display:none !important; visibility:hidden !important;\"><label for=\"wpcf7-69de8f9f15713-field\" class=\"hp-message\">Please leave this field empty.<\/label><input id=\"wpcf7-69de8f9f15713-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-69de8f9f15c396.71837241\" 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=\"c96e028190\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/publication\/2940\" \/><\/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=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/ymarneth2-Background-Removed.png\"\n           alt=\"\">\n    <\/picture>\n    \n\n<h5 class=\"wp-block-heading\">Yvonne Marneth, BSc<\/h5>\n\n\n\n<p>Software Developer<\/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 class=\"posts-slider-block\" data-aos=\"fade-up\" data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\">\n        <section class=\"splide posts-slider\" aria-label=\"Gallery Slides\">\n            <div class=\"splide__arrows\">\n                <button class=\"splide__arrow splide__arrow--prev\">\n                    <span class=\"sr-only\">Previous<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/risc.web-email.at\/app\/themes\/risc-theme\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Previous\">\n                <\/button>\n                <button class=\"splide__arrow splide__arrow--next\">\n                    <span class=\"sr-only\">Next<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/risc.web-email.at\/app\/themes\/risc-theme\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Next\">\n                <\/button>\n            <\/div>\n            <div class=\"inner\">\n                <div class=\"splide__track\">\n                    <div class=\"splide__list\">\n\n                                                    <a href=\"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-agile-vs-classic-software\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Agile-Softwareentwicklung_C_iStock-360x214.jpg\"\n                                                 alt=\"Agile vs. classic software development\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Agile vs. classic software development<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Classic approaches such as waterfall, V-model or spiral model or agile approaches such as Scrum or Kanban? At the beginning of a project, the question arises as to which of the existing process models is best suited for the current project.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-welcome-change-the-new-scrum-guide\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/Poster_Scrum_RISC_Software_GmbH_v5-360x214.jpg\"\n                                                 alt=\"Welcome Change \u2013 The new Scrum Guide\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Welcome Change \u2013 The new Scrum Guide<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        In November 2020, the time had come: The new Scrum Guide was published. Here you can find the fundamental changes at first glance.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-estimating-in-agile-projects-with-story-points\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/07\/RISC_Software_GmbH_Story-Points-1_small-360x214.jpg\"\n                                                 alt=\"Estimating in Agile Projects with Story Points\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Estimating in Agile Projects with Story Points<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        This article highlights a type of effort estimation that is particularly useful in agile projects: Story Points.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-kanban-in-research-projects-a-short-case-study\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-543081358-1-360x214.jpg\"\n                                                 alt=\"Kanban in research projects: a short case study\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Kanban in research projects: a short case study<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Using agile methods in traditional research projects &#8211; is that possible? Andreas Lettner, expert and agile coach at RISC Software GmbH, describes how a research project was led to success.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-software-modernisation\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-1194677324-1-360x214.jpg\"\n                                                 alt=\"Modernization of software\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Modernization of software<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        In the case of long-lasting software systems, the maintenance costs far exceed the initial development costs. Escape the cost trap by taking proactive modernization measures in good time. An evolutionary approach guarantees predictable costs, continuous releases and immediate customer benefits with manageable risk.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/risc.web-email.at\/en\/technicalarticles\/technical-article-technical-debt-and-legacy-systems\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-532278630-1-360x214.jpg\"\n                                                 alt=\"Technical debt and legacy systems\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Technical debt and legacy systems<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        How can you avoid a system or legacy system becoming a legacy system? Read the following article to learn how to identify legacy systems in time, remove them and ultimately avoid them.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                            <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n    <\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>With the use of Test-Driven-Development, the concept of agile methods is also transferred to technical development.<\/p>\n","protected":false},"featured_media":1293,"template":"","publication-category":[49],"class_list":["post-2940","publication","type-publication","status-publish","has-post-thumbnail","hentry","publication-category-software-development"],"acf":[],"portrait_thumb_url":"https:\/\/risc.web-email.at\/app\/uploads\/2023\/06\/iStock-494345930-360x214.jpg","_links":{"self":[{"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication\/2940","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":6,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication\/2940\/revisions"}],"predecessor-version":[{"id":4923,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication\/2940\/revisions\/4923"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/media\/1293"}],"wp:attachment":[{"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/media?parent=2940"}],"wp:term":[{"taxonomy":"publication-category","embeddable":true,"href":"https:\/\/risc.web-email.at\/en\/wp-json\/wp\/v2\/publication-category?post=2940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}