{"id":2354,"date":"2018-06-22T10:54:24","date_gmt":"2018-06-22T08:54:24","guid":{"rendered":"https:\/\/launix.de\/launix\/?p=2354"},"modified":"2018-06-22T14:08:25","modified_gmt":"2018-06-22T12:08:25","slug":"was-ist-requirement-oriented-programming","status":"publish","type":"post","link":"https:\/\/launix.de\/launix\/was-ist-requirement-oriented-programming\/","title":{"rendered":"Was ist Requirement Oriented Programming?"},"content":{"rendered":"<p>IT-Projekte werden zunehmend komplexer. Meist ist den Entwicklern nicht einmal mehr klar, welche Anforderungen der Kunde momentan noch stellt, von welchen Anforderungen er abgewichen ist.<!--more--><\/p>\n<p>Das f\u00fchrt unter anderem dazu, dass beim Einbauen einer neuen Funktion in die Software gegen geltende Anforderungen versto\u00dfen wird. Ein Beispiel:<\/p>\n<p><strong>Beispiel 1: Einf\u00e4rbung der Kunden<\/strong><br \/>\nDie Anforderung des Kunden: Jeder Kunde soll eingef\u00e4rbt werden: Schwarz f\u00fcr normal, Gelb mit Zahlungsverzug und Rot mit eingestellter Leistung. Fordert er jetzt eine neue Funktion wie z.B. eine Statistik aller Kunden, muss die Anforderung umgesetzt werden.<\/p>\n<p><strong>Beispiel 2: Erfassung des Geburtsdatums<\/strong><br \/>\nDer Kunde wollte in der Anfangsplanung das Geburtsdatums jedes Kunden erfassen. Da nach der neuen DSGVO eine Speicherung nicht f\u00fcr die Gesch\u00e4ftsbeziehung notwendig ist, m\u00fcsste eine Genehmigung eingeholt werden. Um den Aufwand einzusparen, wird das Geburtsdatum gestrichen. Die Anforderung hat sich ge\u00e4ndert.<\/p>\n<p><strong>Beispiel 3: Zugriffskontrolle<\/strong><br \/>\nDie Anforderung des Kunden ist, alle Zugriffe von Mitarbeitern zu protokollieren und Zugang zu abrechnungsrelevanten Bereichen nur f\u00fcr Buchhaltungs-Mitarbeiter zu erlauben. Beim Umsetzen des neuen SEPA-Einzugs darf der Programmierer die Programmierung Protokollierung nicht vergessen und auch Zugriffspr\u00fcfungen einprogrammieren.<\/p>\n<h2>Kunden-Anforderungen in einer Programmiersprache niederschreiben<\/h2>\n<p>Der Ansatz von Requirement Oriented Programming ist nun, die Anforderungen des Kunden zuerst einmal formal <strong>niederzuschreiben<\/strong>.<\/p>\n<p>Die Software soll dann <strong>automatisch<\/strong> daraus entstehen. Anstatt dass der Programmierer anhand der Anforderungen eine Software programmiert, muss er <strong>Regeln aufstellen<\/strong>, wie die Anforderungen in Software umgewandelt werden. Dadurch kann er flexibel auf \u00c4nderungen der Anforderungen oder Kombination von Anforderungen reagieren. Die Software wird dann einfach neu generiert, \u00e4ndern sich die Anforderungen.<\/p>\n<p>Die Vorteile liegen auf der Hand:<\/p>\n<ul>\n<li>Der Software-Erstellungsprozess ist besser dokumentiert<\/li>\n<li>Die Software ist bei vorhandenem Regelsatz schneller programmiert<\/li>\n<li>Typische Programmierfehler werden vermieden<\/li>\n<li>Man kann schnell auf komplexe \u00c4nderungen der Anforderungen reagieren<\/li>\n<li>Es lassen sich Produktvarianten mit variierenden Anforderungen bereitstellen<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>IT-Projekte werden zunehmend komplexer. Meist ist den Entwicklern nicht einmal mehr klar, welche Anforderungen der Kunde momentan noch stellt, von welchen Anforderungen er abgewichen ist.<\/p>\n","protected":false},"author":2,"featured_media":2363,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-2354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","single-item"],"featured_image_urls_v2":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",1920,1080,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-150x150.jpg",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-300x169.jpg",300,169,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-768x432.jpg",751,422,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-1024x576.jpg",751,422,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",1536,864,false],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",1920,1080,false],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",18,10,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",64,36,false],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",620,349,false]},"post_excerpt_stackable_v2":"<p>IT-Projekte werden zunehmend komplexer. Meist ist den Entwicklern nicht einmal mehr klar, welche Anforderungen der Kunde momentan noch stellt, von welchen Anforderungen er abgewichen ist. Das f\u00fchrt unter anderem dazu, dass beim Einbauen einer neuen Funktion in die Software gegen geltende Anforderungen versto\u00dfen wird. Ein Beispiel: Beispiel 1: Einf\u00e4rbung der Kunden Die Anforderung des Kunden: Jeder Kunde soll eingef\u00e4rbt werden: Schwarz f\u00fcr normal, Gelb mit Zahlungsverzug und Rot mit eingestellter Leistung. Fordert er jetzt eine neue Funktion wie z.B. eine Statistik aller Kunden, muss die Anforderung umgesetzt werden. Beispiel 2: Erfassung des Geburtsdatums Der Kunde wollte in der Anfangsplanung das&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/launix.de\/launix\/category\/allgemein\/\" rel=\"category tag\">Allgemein<\/a>","author_info_v2":{"name":"Carl-Philip H\u00e4nsch","url":"https:\/\/launix.de\/launix\/author\/carli\/"},"comments_num_v2":"0 comments","uagb_featured_image_src":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",1920,1080,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-150x150.jpg",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-300x169.jpg",300,169,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-768x432.jpg",751,422,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920-1024x576.jpg",751,422,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",1536,864,false],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",1920,1080,false],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",18,10,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",64,36,false],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2018\/06\/key-3348307_1920.jpg",620,349,false]},"uagb_author_info":{"display_name":"Carl-Philip H\u00e4nsch","author_link":"https:\/\/launix.de\/launix\/author\/carli\/"},"uagb_comment_info":0,"uagb_excerpt":"IT-Projekte werden zunehmend komplexer. Meist ist den Entwicklern nicht einmal mehr klar, welche Anforderungen der Kunde momentan noch stellt, von welchen Anforderungen er abgewichen ist.","_links":{"self":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/2354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/comments?post=2354"}],"version-history":[{"count":5,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/2354\/revisions"}],"predecessor-version":[{"id":2365,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/2354\/revisions\/2365"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/media\/2363"}],"wp:attachment":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/media?parent=2354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/categories?post=2354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/tags?post=2354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}