{"id":42807,"date":"2022-05-02T17:00:34","date_gmt":"2022-05-02T17:00:34","guid":{"rendered":"https:\/\/g9hq0oamq8.onrocket.site\/?post_type=methode&#038;p=42807"},"modified":"2023-08-21T10:53:45","modified_gmt":"2023-08-21T10:53:45","slug":"behavior-driven-development","status":"publish","type":"methode","link":"https:\/\/www.innovation.wiki\/de\/method\/behavior-driven-development\/","title":{"rendered":"Behavior Driven Development"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Software zu entwickeln ist bekannterma\u00dfen nicht einfach. Auch heutzutage schlagen immer noch viele Software-Projekte aus verschiedenen Gr\u00fcnden, wie schlechter Kommunikation, unzureichender Anforderungsermittlung oder unrealistischen Zielen, fehl. Es gibt viele wichtige Kriterien, die f\u00fcr den Erfolg einer Softwareentwicklung entscheidend sind, insbesondere m\u00fcssen aber folgende zwei Dimensionen sichergestellt werden: <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1.\u2002Wir bauen die richtige Software, d. h. die Software muss die Anforderungen korrekt adressieren und einen echten Mehrwert f\u00fcr die Benutzer stiften.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> 2.\u2002Wir bauen die Software richtig, d. h. die Software erf\u00fcllt verschiedene Qualit.tskriterien wie Wartbarkeit, Fehlerfreiheit, Effizienz und Zuverl.ssigkeit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hinzu kommt, dass Software-Projekte zunehmen in agilen und \u201eleanen\u201c Szenarien umgesetzt werden m\u00fcssen, bei denen teilweise alle Anforderungen noch gar nicht klar sind und das Gesch\u00e4ftsmodell erst noch gefunden werden muss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Behavior Driven Development (BDD) ist eine agile Softwareentwicklungsmethode, die auf diese Herausforderungen und Ver.nderungen reagiert. Sie wurde 2003 von Daniel Terhorst-North als Verbesserung gegen\u00fcber Test Driven Development (TDD) entwickelt. Beim TDD schreibt man vor dem eigentlichen Feature einen automatisierten Test (ebenfalls als Code), der dieses Feature testen soll. Selbstverst\u00e4ndlich wird dieser Test zun\u00e4chst fehlschlagen, da das Feature selbst noch nicht entwickelt ist (1). Im Anschluss programmiert man gerade ausreichend Code, damit der Test erfolgreich ist (3). Im Anschluss kann man den Code aufr\u00e4umen und verbessern (3). Der Vorteil hierbei ist, dass man sofort bemerkt, wenn eine \u00c4nderung einen Fehler hervorruft, weil in diesem Fall der Test wieder fehlschlagen w\u00fcrde. Am Ende hat man also einen sauberen, wartbaren und qualitativ hochwertigen Code und ein funktionierendes Feature. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BDD \u00fcbernimmt den Ansatz, geht aber noch einige Schritte weiter. BDD wird auch \u201eanforderungsgetriebene Softwareentwicklung genannt\u201c, denn hier wird der Fokus auf das eigentliche Benutzerverhalten gelegt. Somit kann man BDD auch w\u00e4hrend der Anforderungsermittlung und -dokumentation verwenden. Ein Beispiel zur gemeinsamen Anforderungsspezifikation ist die Sprache \u201eGherkin\u201c (diese Methode ist ebenfalls im Buch beschrieben). BDD tr\u00e4gt somit neben Dimension 2 \u201eWir bauen die Software richtig\u201c ebenfalls insbesondere zu Dimension 1 \u201eWir bauen die richtige Software\u201c bei.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dementsprechend ergeben sich einige Vorteile von BDD, wie folgende unvollst\u00e4ndige Liste zeigt:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 f\u00f6rdert die gemeinsame Kollaboration zwischen Entwicklern, Product Owner, Tester und weiteren Stakeholdern,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 f\u00f6rdert die gemeinsame Kommunikation und Diskussion, bspw. durch die Sprache \u201eGherkin\u201c,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 verbessert die Code-Qualit\u00e4t, minimiert Bugs und erh\u00f6ht diverse Kriterien wie Wartbarkeit und Wiederverwendbarkeit,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 durch die automatisierten Tests und Spezifikationen wird die Dokumentation erh\u00f6ht,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 unterst\u00fctzt die Anforderungsermittlung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 Sicherstellung der Wertsch\u00f6pfung von Features,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2022 wir reduzieren Verschwendung und Kosten, da wir nur die Features bauen, die auch einen Wert stiften.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im Gegenzug muss aber sichergestellt werden, dass das gesamte Team mit dieser Methode vertraut ist und gemeinsam damit arbeitet. Gemeinsame Kommunikation und Kollaboration sind erfolgskritisch, damit BDD seine Vorteile ausspielen kann. Des Weiteren kann BDD seine St\u00e4rken wie oben beschrieben vor allem in agilen Szenarien ausspielen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine agile Methode, die auf die<br \/>\nHerausforderungen und Ver\u00e4nderungen in der<br \/>\nSoftwareentwicklung reagiert.<\/p>\n","protected":false},"featured_media":42808,"template":"","meta":{"_surecart_dashboard_logo_width":"180px","_surecart_dashboard_show_logo":true,"_surecart_dashboard_navigation_orders":true,"_surecart_dashboard_navigation_invoices":true,"_surecart_dashboard_navigation_subscriptions":true,"_surecart_dashboard_navigation_downloads":true,"_surecart_dashboard_navigation_billing":true,"_surecart_dashboard_navigation_account":true,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":""},"working-guide":[],"transformation-blocks":[64,59,62,65,66],"innovation-stage":[],"class_list":["post-42807","methode","type-methode","status-publish","has-post-thumbnail","hentry","transformation-blocks-scaling","transformation-blocks-organizing","transformation-blocks-scanning","transformation-blocks-exploiting","transformation-blocks-exploring"],"_links":{"self":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/methode\/42807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/methode"}],"about":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/types\/methode"}],"version-history":[{"count":0,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/methode\/42807\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/media\/42808"}],"wp:attachment":[{"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/media?parent=42807"}],"wp:term":[{"taxonomy":"working-guide","embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/working-guide?post=42807"},{"taxonomy":"transformation-blocks","embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/transformation-blocks?post=42807"},{"taxonomy":"innovation-stage","embeddable":true,"href":"https:\/\/www.innovation.wiki\/de\/wp-json\/wp\/v2\/innovation-stage?post=42807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}