<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Akzeptanz Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/akzeptanz/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/akzeptanz/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 07:26:24 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Akzeptanz Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/akzeptanz/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Softwarearchitektur &#8211; Entstehung, Bedeutung und Best Practices</title>
		<link>https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/</link>
					<comments>https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 02 Aug 2023 19:26:38 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Testautomatisierung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Akzeptanz]]></category>
		<category><![CDATA[Akzeptanzkriterien]]></category>
		<category><![CDATA[Anforderung]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Bedeutung]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Doku]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Entstehung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Funktional]]></category>
		<category><![CDATA[Geschäft]]></category>
		<category><![CDATA[Gestaltung]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[Kompetenz]]></category>
		<category><![CDATA[Kompetenzen]]></category>
		<category><![CDATA[Komplex]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[Sicher]]></category>
		<category><![CDATA[Soft]]></category>
		<category><![CDATA[Softwarearchitektur]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[Systeme]]></category>
		<category><![CDATA[Umsetzung]]></category>
		<category><![CDATA[Ware]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2085</guid>

					<description><![CDATA[<p>Softwarearchitektur ist eine entscheidende Komponente des Software-Entwicklungslebenszyklus. Sie liefert einen strukturierten Plan, der die systemischen Anforderungen definiert und die Systemkomponenten hervorhebt, welche für die Implementierung und Wartung einer Software entscheidend sind. In diesem Blog-Beitrag versuche &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/">Softwarearchitektur &#8211; Entstehung, Bedeutung und Best Practices</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Softwarearchitektur ist eine entscheidende Komponente des Software-Entwicklungslebenszyklus. Sie liefert einen strukturierten Plan, der die systemischen Anforderungen definiert und die Systemkomponenten hervorhebt, welche für die Implementierung und Wartung einer Software entscheidend sind. In diesem Blog-Beitrag versuche ich, einen Einblick in die Entstehung der Softwarearchitektur, ihre Bedeutung und ihre Best Practices zu geben.</p>



<h2 class="wp-block-heading"><strong>Entstehung</strong></h2>



<p>Obwohl das Konzept der Softwarearchitektur so alt ist wie die Softwareentwicklung selbst, gewann der Begriff &#8222;Softwarearchitektur&#8220; erst in den späten 1980er Jahren an Bedeutung. Der Credit für die Etablierung dieses Konzepts geht an Computerwissenschaftler wie David Parnas, Mary Shaw und Fred Brooks, die erkannten, dass eine strukturierte Herangehensweise an die Softwareentwicklung notwendig ist, um komplexe Systeme zu verwalten.</p>



<p>Die Forscher bemerkten, dass die steigende Komplexität von Softwareprojekten eine genaue Planung und Organisation erfordert. Damit begann das Zeitalter der Softwarearchitektur, in dem die Gestaltung eines Systems genauso wichtig wurde wie die Implementierung des Codes selbst.</p>



<h2 class="wp-block-heading"><strong>Was ist Softwarearchitektur?</strong></h2>



<p>Softwarearchitektur bezeichnet die Struktur eines Softwaresystems, das seine Elemente, die Eigenschaften dieser Elemente und die Beziehungen zwischen ihnen umfasst. Sie bietet einen Plan, der die Arbeitsweise des Systems und die Kommunikation zwischen seinen verschiedenen Teilen definiert. Die Softwarearchitektur legt auch die Regeln und Vorgaben für die Softwareentwicklung und -wartung fest, um sicherzustellen, dass das Endprodukt den Anforderungen entspricht.</p>



<h2 class="wp-block-heading"><strong>Umsetzung</strong></h2>



<p>Die Implementierung folgt einer systematischen Methode. Sie beginnt mit der Anforderungsanalyse, in der die funktionalen und nicht-funktionalen Anforderungen des Systems definiert werden. Anschließend wird das Systemdesign erstellt, das die Hauptkomponenten des Systems und ihre Interaktionen definiert. Dieses Design dient als Blaupause für die Entwicklungs- und Wartungsphase.</p>



<p>Es ist wichtig zu beachten, dass die Architektur flexibel genug sein muss, um Änderungen zu ermöglichen, da die Anforderungen oft variieren können. Daher sind iterative Entwicklungsansätze wie Agile (Siehe <a href="https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/">Agile Manifest</a>) und (<a href="https://ceosbay.com/2023/03/02/erklaerung-devops/">DevOps)</a> oft geeignet für die Implementierung der Softwarearchitektur.</p>



<h2 class="wp-block-heading"><strong>Wichtige Punkte bei der Umsetzung der Softwarearchitektur</strong></h2>



<p>Die Umsetzung der Softwarearchitektur erfordert sowohl technische als auch organisatorische Kompetenzen. Hier sind einige Punkte, die zu berücksichtigen sind:</p>



<ul class="wp-block-list">
<li><strong>Verständnis der Geschäftsziele:</strong> Die Architektur sollte auf den Geschäftszielen und Anforderungen basieren und nicht nur auf technologischen Überlegungen.</li>



<li><strong>Verwendung von Design Patterns:</strong> Design Patterns sind bewährte Lösungen für gemeinsame Designprobleme. Ihre Verwendung kann die Entwicklungszeit verkürzen und die Qualität des Endprodukts verbessern.</li>



<li><strong>Dokumentation:</strong> Eine gut dokumentierte Architektur erleichtert die Kommunikation innerhalb des Entwicklungsteams und die Wartung des Systems. Auch fällt es den Entwicklern durch eine gute Dokumentation leichter, sich in den verschiedenen Komponenten zurechtzufinden.</li>



<li><strong>Berücksichtigung von Nicht-Funktionalen Anforderungen:</strong> Neben den funktionalen Anforderungen sind auch Nicht-Funktionale Anforderungen wie Sicherheit, Leistung und Skalierbarkeit entscheidend. (Siehe in diesem Zusammenhang auch &#8222;<a href="https://ceosbay.com/2023/07/23/nicht-funktionale-tests-in-der-softwareentwicklung-damit-es-funktioniert/">Nicht funktionale Tests</a>&#8222;)</li>
</ul>



<h2 class="wp-block-heading"><strong>Fazit</strong></h2>



<p>Die Softwarearchitektur spielt eine entscheidende Rolle in der Softwareentwicklung. Sie bietet einen strukturierten Ansatz, um komplexe Systeme zu verwalten und zu warten. Durch die Berücksichtigung der oben genannten Punkte können Entwickler eine effektive und effiziente Architektur erstellen, die den Anforderungen gerecht wird und die langfristige Wartung des Systems erleichtert.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/">Softwarearchitektur &#8211; Entstehung, Bedeutung und Best Practices</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2085</post-id>	</item>
		<item>
		<title>V-Modell in der Softwareentwicklung &#8211; Leitfaden</title>
		<link>https://ceosbay.com/2023/07/14/v-modell-in-der-softwareentwicklung-leitfaden/</link>
					<comments>https://ceosbay.com/2023/07/14/v-modell-in-der-softwareentwicklung-leitfaden/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 14 Jul 2023 15:49:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Akzeptanz]]></category>
		<category><![CDATA[Akzeptanztest]]></category>
		<category><![CDATA[Anforderungsdefinition]]></category>
		<category><![CDATA[Architekt]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Funktionaler]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Integrationstest]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[IT-Test]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Modelle]]></category>
		<category><![CDATA[Paradigma]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Prozessmodell]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Software-Architektur]]></category>
		<category><![CDATA[Software-Design]]></category>
		<category><![CDATA[Software-Testing]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[System-Test]]></category>
		<category><![CDATA[Systemdesign]]></category>
		<category><![CDATA[Systementwurf]]></category>
		<category><![CDATA[Systemtest]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Technisch]]></category>
		<category><![CDATA[Testphasen]]></category>
		<category><![CDATA[Unit]]></category>
		<category><![CDATA[Unit-Test]]></category>
		<category><![CDATA[V]]></category>
		<category><![CDATA[V-Modell]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1884</guid>

					<description><![CDATA[<p>Was ist das V-Modell? Das V-Modell ist ein Prozessmodell in der Softwareentwicklung, das sich durch seine konsistente Systematik auszeichnet. Es hat seinen Ursprung in der Verifikation und Validierung von Software. In diesem Beitrag versuche ich &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/14/v-modell-in-der-softwareentwicklung-leitfaden/">V-Modell in der Softwareentwicklung &#8211; Leitfaden</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Was ist das V-Modell?</h2>



<p>Das V-Modell ist ein Prozessmodell in der Softwareentwicklung, das sich durch seine konsistente Systematik auszeichnet. Es hat seinen Ursprung in der Verifikation und Validierung von Software. In diesem Beitrag versuche ich die Besonderheiten dieses Modells zu erläutern, die es zu einer effektiven Methode für die Entwicklung qualitativ hochwertiger Software machen.</p>



<p>Per Definition handelt es sich um ein lineares Verfahren zur Softwareentwicklung, das die Beziehung zwischen jedem Entwicklungsstadium und seinem entsprechenden Teststadium definiert. Es legt die Abfolge der Entwicklungsschritte in einer Art V-Form dar, wobei die linke Seite des &#8222;V&#8220; die Entwicklung und die rechte Seite die Integration und das Testen der Software darstellt.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="871" height="555" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/07/IllustrationVModell.png?resize=871%2C555&#038;ssl=1" alt="" class="wp-image-1886" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/07/IllustrationVModell.png?w=1024&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/07/IllustrationVModell.png?resize=300%2C191&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2023/07/IllustrationVModell.png?resize=768%2C489&amp;ssl=1 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<h2 class="wp-block-heading">Phasen im V-Modell</h2>



<p>Die linke Seite des V-Modells beinhaltet die Anforderungsdefinition, System- und Software-Design sowie die Implementierung der Software. Jede Phase auf der linken Seite hat eine korrespondierende Phase auf der rechten Seite, in der das Testen durchgeführt wird.</p>



<ol class="wp-block-list">
<li><strong>Anforderungsdefinition</strong>: In dieser Phase werden die Anforderungen des Benutzers, des Systemanwenders oder des Kunden erfasst und dokumentiert. Dies bildet die Grundlage für die anschließende Entwurfsphase.</li>



<li><strong>Funktionaler Systementwurf bzw. Systemdesign</strong>: Hier werden die Architektur und das High-Level-Design des Systems erstellt. Folglich die Anforderungen auf Funktionen und Dialogabläufe des neuen Systems abgebildet. Man kann auch von der Definition der Hauptkomponenten des Systems und ihre Interaktion sprechen.</li>



<li><strong>Technischer Systementwurf bzw. Software-Design</strong>: In dieser Phase wird der detaillierte Entwurf der Software erstellt. Sie umfasst die Ausarbeitung der Einzelheiten der Software, die Erstellung von Algorithmen, Schnittstellen zur Systemumwelt und die Datenstrukturplanung. Man spricht auch von Komponenten, die möglichst unabhängig voneinander entwickelt werden können.</li>



<li><strong>Komponentenspezifikation</strong>: In dieser Phase werden für jedes Teilsystem Aufgabe, Verhalten, innerer Aufbau und Schnittstellen zu anderen Teilsystemen definiert.</li>



<li><strong>Programmierung</strong>: In dieser Phase wird der Code für die Software geschrieben. Sie basiert auf den Design-Entscheidungen, die in den vorherigen Phasen getroffen wurden. Jeder spezifizierte Baustein (Unit, Klasse usw.) wird in einer Programmiersprache (Siehe <a href="https://ceosbay.com/2023/02/25/erklaerung-c/">C++</a>, <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>, <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>) entwickelt (programmiert bzw. implementiert).</li>
</ol>



<h2 class="wp-block-heading">Auf der rechten Seite des V-Modells finden die entsprechenden Testphasen statt.</h2>



<ol class="wp-block-list">
<li><strong>Komponenten- bzw. Unit-Test</strong>: Hier wird der Code auf Ebene der elementauf Fehler überprüft. Jede Funktion oder Methode wird einzeln getestet, um sicherzustellen, dass sie korrekt arbeitet.</li>



<li><strong>Integrationstest</strong>: In dieser Phase wird überprüft, ob die verschiedenen Teile der Software richtig zusammenarbeiten.</li>



<li><strong>Systemtest</strong>: Hier wird das gesamte System getestet, um sicherzustellen, dass es als Ganzes funktioniert.</li>



<li><strong>Akzeptanztest bzw. Abnahmetest</strong>: Dieser Test wird durchgeführt, um zu überprüfen, ob das System die ursprünglich festgelegten Anforderungen erfüllt.</li>
</ol>



<h2 class="wp-block-heading">Vorteile des V-Modells</h2>



<p>Die Vorgehensweise des V-Modells bietet verschiedene Vorteile. Durch die strikte Trennung von Entwicklungs- und Testphasen ist eine klare Struktur gegeben, die es den Entwicklern ermöglicht, sich auf eine Aufgabe zur Zeit zu konzentrieren. Zudem erlaubt das Modell eine frühe Fehlererkennung und -behebung, da jeder Entwicklungsschritt von einem spezifischen Test begleitet wird.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>Das V-Modell ist ein wichtiger Bestandteil der Softwareentwicklung. Durch seine systematische und strukturierte Herangehensweise hilft es Entwicklerteams, qualitativ hochwertige Software zu erstellen und gleichzeitig effizient zu arbeiten. Obwohl es nicht in jedem Entwicklungsprojekt zum Einsatz kommt, kann es in den richtigen Kontexten einen erheblichen Beitrag zur Verbesserung der Softwarequalität und -effizienz leisten. Insbesondere ist es nicht zu empfehlen, wenn Agilität und Flexibilität gefordert sind, wie beispielsweise in Start-ups oder bei der Entwicklung von Webanwendungen. Doch in Sektoren, in denen Robustheit, Sicherheit und Zuverlässigkeit der Software von zentraler Bedeutung sind, hat sich das V-Modell als äußerst wertvoll erwiesen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/14/v-modell-in-der-softwareentwicklung-leitfaden/">V-Modell in der Softwareentwicklung &#8211; Leitfaden</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/07/14/v-modell-in-der-softwareentwicklung-leitfaden/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1884</post-id>	</item>
		<item>
		<title>Design Thinking &#8211; Kreativität und Innovation fördern</title>
		<link>https://ceosbay.com/2023/07/11/design-thinking-kreativitaet-und-innovation-foerdern/</link>
					<comments>https://ceosbay.com/2023/07/11/design-thinking-kreativitaet-und-innovation-foerdern/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 11 Jul 2023 20:43:33 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Dezentralisierung]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Akzeptanz]]></category>
		<category><![CDATA[Brainstorming]]></category>
		<category><![CDATA[Definition]]></category>
		<category><![CDATA[Denken]]></category>
		<category><![CDATA[Design-Thinking]]></category>
		<category><![CDATA[Einbeziehen]]></category>
		<category><![CDATA[Erfolg]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Förderung]]></category>
		<category><![CDATA[Gestaltung]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Kern]]></category>
		<category><![CDATA[Kreativität]]></category>
		<category><![CDATA[Lösungsorientiert]]></category>
		<category><![CDATA[Methode]]></category>
		<category><![CDATA[Methoden]]></category>
		<category><![CDATA[Nutzer]]></category>
		<category><![CDATA[Offenheit]]></category>
		<category><![CDATA[Op]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Prinzipien]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[Prototyping]]></category>
		<category><![CDATA[Protoyp]]></category>
		<category><![CDATA[Stanford]]></category>
		<category><![CDATA[Techniken]]></category>
		<category><![CDATA[Thinking]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[User]]></category>
		<category><![CDATA[Zeitreise]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1859</guid>

					<description><![CDATA[<p>In der heutigen dynamischen Geschäftswelt ist der Begriff &#8222;Design Thinking&#8220; immer häufiger zu hören. Was genau bedeutet er und warum ist er so wichtig? In diesem Blogbeitrag geht es um die Konzepte und Prinzipien. Unter &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/11/design-thinking-kreativitaet-und-innovation-foerdern/">Design Thinking &#8211; Kreativität und Innovation fördern</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der heutigen dynamischen Geschäftswelt ist der Begriff &#8222;Design Thinking&#8220; immer häufiger zu hören. Was genau bedeutet er und warum ist er so wichtig? In diesem Blogbeitrag geht es um die Konzepte und Prinzipien. Unter anderem auch darum, wie man es nutzen kann, um Innovationen zu fördern und Probleme zu lösen.</p>



<h3 class="wp-block-heading">Was ist Design Thinking?</h3>



<p>Es ist im Grunde genommen eine problemlösende Methode, die darauf abzielt, innovative Lösungen zu entwickeln, indem sie sich auf die menschliche Erfahrung, Experimente, Zusammenarbeit und kreatives Denken konzentriert. Es ist nicht nur auf Produktdesign beschränkt. Man kann es auf alle Bereiche des Lebens anwenden, in denen innovative Lösungen erforderlich sind.</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>Der Ursprung des Konzepts lässt sich auf das letzte Jahrhundert zurückverfolgen und ist eng mit mehreren führenden Denkern und Institutionen verknüpft.</p>



<p>Die frühe Verbindung kann man auf den britischen Designer und Theoretiker John Christopher Jones zurückführen, der in den 1960er Jahren die Idee vorstellte, dass Design ein Denkprozess ist, der nicht auf die Gestaltung von Produkten beschränkt ist.</p>



<p>In den 1970er Jahren prägte der amerikanische Architekt und Städteplaner Horst Rittel den Begriff &#8222;wicked problems&#8220; für komplexe Probleme, die nicht man nicht durch herkömmliche lineare oder logische Ansätze lösen konnte. Diesen Begriff hat man später in den Prozess des Design Thinking integriert.</p>



<p>Die Popularisierung und Weiterentwicklung des Konzepts kann man der <a href="https://www.stanford.edu" target="_blank" rel="noreferrer noopener">Stanford University</a> und dem Hasso-Plattner-Institut für Design (besser bekannt als die &#8222;d.school&#8220;) zuschreiben. Den Begriff selbst haben jedoch erstmals David M. Kelley, dem Gründer von IDEO und Professor an der <a href="https://www.stanford.edu">Stanford Universit</a><a href="https://www.stanford.edu" target="_blank" rel="noreferrer noopener">y</a> sowie Tim Brown, dem CEO von IDEO, in die Geschäftswelt eingeführt. Sozusagen, die Ersten, die Design Thinking als Methode für Innovation und für die Problemlösung definierten und systematisierten.</p>



<p>Es ist demnach nicht nur auf die historischen Persönlichkeiten und Institutionen beschränkt. Es ist ein dynamisches und sich ständig weiterentwickelndes Feld, das Beiträge von Designern, Forschern, Pädagogen und Praktikern aus der ganzen Welt beinhaltet.</p>



<p>Seit der Entstehung hat sich Design Thinking von einer Nischenmethode zu einer weit verbreiteten Praxis entwickelt, die in einer Vielzahl von Kontexten Anwendung findet. Von Produkt- und Servicedesign über soziale Innovation, bis hin zu strategischer Planung und Bildung.</p>



<h3 class="wp-block-heading">Die Prinzipien des Design Thinking</h3>



<h4 class="wp-block-heading">Es basiert auf fünf Kernprinzipien:</h4>



<ol class="wp-block-list">
<li>Empathie für den Nutzer: Hier geht es darum, die Bedürfnisse und Erwartungen der Nutzer zu verstehen, um Lösungen zu finden, die wirklich relevant und effektiv sind.<br></li>



<li>Definieren des Problems: Hier wird das Problem klar und präzise definiert, um den Fokus auf die tatsächlichen Herausforderungen zu legen.<br></li>



<li>Ideenfindung: In diesem Schritt generiert man möglichst viele Lösungsansätze, ohne sie zu bewerten. Der Zweck besteht darin, kreatives Denken und die Innovation zu fördern.<br></li>



<li>Prototyping: Hierbei setzt man ausgewählte Ideen in konkrete Modelle um, um zu sehen, wie sie in der Praxis funktionieren.<br></li>



<li>Testen: In dieser Phase testet man die Prototypen auf ihre Effektivität und gegebenenfalls nimmt man noch Anpassungen vor.</li>
</ol>



<h3 class="wp-block-heading">Warum ist Design Thinking wichtig?</h3>



<p>In einer sich schnell verändernden Welt sind traditionelle Methoden oft nicht mehr ausreichend, um neue Herausforderungen zu bewältigen. Es bietet einen flexiblen und kreativen Ansatz, der es Unternehmen und Individuen ermöglicht, Probleme zu lösen und Innovationen zu entwickeln, die den Bedürfnissen der Nutzer entsprechen.</p>



<p>Durch die Einbeziehung des Nutzers in den Designprozess und die Förderung des kreativen Denkens kann Design Thinking dazu beitragen, Produkte und Dienstleistungen zu schaffen, die wirklich auf die Bedürfnisse der Nutzer abgestimmt sind. Dies kann zu einer höheren Kundenzufriedenheit und zu einem nachhaltigen Geschäftserfolg führen.</p>



<h3 class="wp-block-heading">Wie man Design Thinking in der Praxis anwendet</h3>



<p>Die Anwendung von Design Thinking erfordert ein offenes Denken, Experimentierfreude und die Bereitschaft, aus Fehlern zu lernen. Im Folgenden sind einige Schritte, die man befolgen kann, um es in einer Organisation zu implementieren:</p>



<p>Man beginnt mit Schulungen und Workshops, um das Bewusstsein für Design Thinking zu schaffen und um die notwendigen Fähigkeiten zu entwickeln.</p>



<p>Zielsetzung ist die Förderung einer Kultur der Kreativität und Offenheit, in der neue Ideen willkommen sind und bei der man Fehler als Lernchancen sieht.</p>



<p>Design Thinking-Tools und -Techniken, wie Brainstorming, Storyboarding, Nutzerinterviews und Prototyping helfen dabei, kreative Lösungen zu entwickeln.</p>



<p>Es empfiehlt sich, vielfältige Teams zu bilden, die verschiedene Perspektiven und Fähigkeiten einbringen, um kreative Lösungen zu entwickeln bzw. um die Betrachtung von Herausforderungen aus verschiedenen Blickwinkeln zu ermöglichen.</p>



<p>Schließlich kann man den Erfolg von Design Thinking-Initiativen messen, um zu sehen, ob sie zu den gewünschten Ergebnissen führen und wo man gegebenenfalls ansetzt, um weitere Anpassungen vorzunehmen.</p>



<h3 class="wp-block-heading">Zusammenhang Design Thinking und DevOps</h3>



<p>Der Zusammenhang zwischen Design Thinking und <a href="https://ceosbay.com/2023/03/02/erklaerung-devops/">DevOps</a> liegt in ihrer gemeinsamen Ausrichtung auf kontinuierliche Verbesserung, Benutzerorientierung und Kollaboration. Man kann Design Thinking am Anfang des Produktentwicklungsprozesses anwenden, um Benutzerbedürfnisse zu verstehen, Probleme zu definieren und innovative Lösungen zu entwerfen. Im Anschluss kann man <a href="https://ceosbay.com/2023/03/02/erklaerung-devops/">DevOps</a> nutzen, um diese Lösungen schnell und effizient zu entwickeln, zu testen und zu releasen, wobei man auch eine Kultur der Zusammenarbeit und des kontinuierlichen Verbesserns fördert.</p>



<p>Wenn man Design Thinking und <a href="https://ceosbay.com/2023/03/02/erklaerung-devops/">DevOps</a> zusammen anwendet, kann es dabei helfen, Produkte und Dienstleistungen zu erschaffen, die nicht nur technisch hochwertig und zuverlässig sind, sondern auch die Bedürfnisse und Erwartungen der Benutzer in einem größeren Umfang erfüllen. Diese Synergie kann zu höherer Benutzerzufriedenheit, schnellerer Markteinführungszeit und insgesamt besseren Geschäftsergebnissen führen.</p>



<h3 class="wp-block-heading">Fazit:</h3>



<p>Design Thinking ist eine mächtige Methode, um Innovation zu fördern und um Probleme zu lösen. Indem man Empathie für den Nutzer entwickelt, kreatives Denken fördert und durch iterative Prozesse lernt, kann man Produkte und Dienstleistungen entwickeln, die wirklich den Bedürfnissen der Kunden entsprechen.</p>



<p>Ganz unabhängig davon, ob man ein neues Produkt entwickelt, eine Dienstleistung verbessert oder eine geschäftliche Herausforderung bewältigen möchte, Design Thinking kann dabei helfen, effektive und innovative Lösungen zu finden. Es ist eine Reise, die Neugier, Empathie und Mut erfordert, aber die Ergebnisse können es wert sein.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/11/design-thinking-kreativitaet-und-innovation-foerdern/">Design Thinking &#8211; Kreativität und Innovation fördern</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/07/11/design-thinking-kreativitaet-und-innovation-foerdern/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1859</post-id>	</item>
		<item>
		<title>TDD &#8211; Test Driven Development &#8211; Qualitativ hochwertige Software von Anfang an</title>
		<link>https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/</link>
					<comments>https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 13 Mar 2023 20:24:05 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Akzeptanz]]></category>
		<category><![CDATA[ATDD]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Green]]></category>
		<category><![CDATA[Methode]]></category>
		<category><![CDATA[Middle-Out]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Outside-In]]></category>
		<category><![CDATA[Red]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testerstellung]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1132</guid>

					<description><![CDATA[<p>Test-Driven Development (TDD = Testgetriebene Entwicklung) ist eine Methode, die häufig bei der agilen Entwicklung von Anwendungen eingesetzt wird. Bei der testgetriebenen Entwicklung erstellt der Programmierer Softwaretests vor den zu testenden Komponenten. Übrigens ist BDD &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/">TDD &#8211; Test Driven Development &#8211; Qualitativ hochwertige Software von Anfang an</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Test-Driven Development (TDD = Testgetriebene Entwicklung) ist eine Methode, die häufig bei der agilen Entwicklung von Anwendungen eingesetzt wird. Bei der testgetriebenen Entwicklung erstellt der Programmierer Softwaretests vor den zu testenden Komponenten.</p>



<p>Übrigens ist <a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/" target="_blank" rel="noreferrer noopener">BDD</a> aus der testgetriebenen Entwicklung hervorgegangen. Über <a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/" target="_blank" rel="noreferrer noopener">BDD</a> bzw. <a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/" target="_blank" rel="noreferrer noopener">Behavior Driven Development</a> habe ich bereits gestern geschrieben.</p>



<p>Klassisch und fast schon nostalgisch hat man und praktiziert man die Entwicklung heute noch nach dem Wasserfall- oder dem V-Modell-Prinzip. Man entwickelt die Tests parallel zum und unabhängig vom zu testenden System oder sogar erst nachdem die Anwendung „fertiggestellt“ wurde. Aufgrund dieser Tatsache resultiert meist daraus, dass der Code schwer testbar ist und somit der Aufwand für die Tests verhältnismäßig hoch ausfällt. Darüber hinaus kommt es auch vor, dass die Tests nicht die gewünschten oder erforderlichen Testabdeckungen und Ergebnisse liefern, die man sich erhofft.</p>



<p>Dies kann unter anderem daran liegen, dass die fehlende oder mangelnde Testbarkeit des Systems auf die Nutzung von Fremdkomponenten zurückzuführen ist. Auch die Verweigerung einer Investition in nicht-funktionale Programmteile seitens der Entscheider bzw. Unternehmensführung kann ein Grund dafür sein. So im Sinne von, „Arbeit, von der man später im Programm nichts sieht, seien vergeudete Ressourcen.“ Die Erstellung von Tests unter Zeitdruck, rein um die gewünschte Testabdeckung zu erzielen ist ebenfalls ein Grund dafür. Nicht selten, ist es aber auch die Nachlässigkeit und mangelnde Disziplin der Entwickler bei der Testerstellung. An dieser Stelle sein auch das White-Box-Testing zu erwähnen, den ich aber in einem zukünftigen Beitrag thematisieren werde.</p>



<p>Die Methode der testgetriebenen Entwicklung versucht den Nachteilen entgegenzuwirken und dabei auch ein auf die Aufgabenstellung der Software besser angepasstes und wartbareres Softwaredesign zu liefern.</p>



<p>Alles in allem ist es eine Tatsache, dass man bei der Anwenung von testgetriebener Entwicklung im Schnitt bis zu 45 Prozent aller Fehler erkennen bzw. vermeiden kann. Im Vergleich dazu, werden beim reinen Einsatz von Unittests im Schnitt nur bis zu 30 Prozent der Fehler erkannt.</p>



<h3 class="wp-block-heading">Wie funktioniert TDD?</h3>



<p>Bei der testgetriebenen Entwicklung ist zwischen dem Testen im Großen (Integrationstests, Systemtests, Akzeptanztests) und dem Kleinen Modultests (Unit Tests) zu unterscheiden.</p>



<p>Testgetriebene Entwicklung mit Unit-Tests (Stichwort Tests First bzw. Middle-Out-TDD)</p>



<p>Man schreibt Unit-Tests in der Regel vor der eigentlichen Entwicklung der Anwendung. Es ist nicht festgelegt, ob der Entwickler, der die Implementierung vornimmt, auch die Unit-Tests erstellt. Es ist erlaubt, dass mehrere fehlschlagende Unit-Tests gleichzeitig existieren. Die Umsetzung des von einem Unit-Test geforderten Verhaltens in der Anwendung kann zeitlich verschoben werden.</p>



<p>Die Methode Tests First kann als Vorstufe der testgetriebenen Entwicklung betrachtet werden.</p>



<h3 class="wp-block-heading">TDD nach Kent Beck</h3>



<p>Man entwickelt Unit-Tests und die mit ihnen getesteten Units stets parallel. Die eigentliche Entwicklung erfolgt in kleinen, wiederholten Mikroiterationen. Eine solche Iteration, die nur wenige Minuten dauern sollte, hat drei Hauptteile, die man im englischen schlicht als Red, Green und Refactor bezeichnet.</p>



<ol class="wp-block-list" type="1">
<li>Red: Schreibe einen Test, der ein neues zu programmierendes Verhalten (die Funktionalität) prüfen soll. Dabei fängt man mit dem einfachsten Beispiel an. Ist die Funktion schon älter, kann dies auch ein bekannter Fehler oder eine neu zu implementierende Funktionalität sein. Dieser Test wird vom vorhandenen Programmcode erst einmal nicht erfüllt und muss folglich fehlschlagen.<br></li>



<li>Green: Ändere den Programmcode mit möglichst wenig Aufwand ab und ergänze ihn, bis er nach dem anschließend angestoßenen Testdurchlauf alle Tests besteht.<br></li>



<li>Räume dann im Code auf (Refactoring): Entferne Wiederholungen (Duplizierten Code), abstrahiere wo nötig, richte ihn nach den verbindlichen Code-Konventionen aus. In dieser Phase darf kein neues Verhalten eingeführt werden. Nach jeder Änderung werden die Tests ausgeführt. Der Fehlschlag der Tests verbietet es, die offenbar fehlerhafte Änderung in den bereits genutzten Code zu übernehmen. Ziel des Aufräumens ist es, den Code schlicht, elegant und verständlich zu machen.</li>
</ol>



<p>Diese drei Schritte wiederholt man so lange und so oft, bis die bekannten Fehler bereinigt sind, der Code die gewünschte Funktionalität liefert und dem Entwickler keine sinnvollen weiteren Tests mehr einfallen, die vielleicht noch scheitern könnten. Die so behandelte programmtechnische Einheit (Unit) wird dann als einstweilen fertig angesehen. Die gemeinsam mit ihr geschaffenen Tests werden beibehalten, damit auch nach künftigen Iterationen und Änderungen getestet werden kann, ob die schon erreichten Aspekte des Verhaltens weiterhin erfüllt werden.</p>



<p>Damit die – auch Transformationen genannten – Änderungen in Schritt 2 zum Ziel führen, muss jede Änderung zu einer allgemeineren Lösung führen. Sie darf also nicht etwa nur den aktuellen Testfall auf Kosten anderer behandeln. Tests, die immer mehr ins Detail gehen, treiben den Code so zu einer immer allgemeineren Lösung. Die Beachtung der Transformationsprioritäten führt dabei regelmäßig zu effizienteren Algorithmen und damit Anwendungen. Die konsequente Befolgung dieser Vorgehensweise ist eine evolutionäre Entwurfsmethode, indem jede der einzelnen Änderungen bzw. Iterationen das System von Natur aus weiterentwickelt.</p>



<h3 class="wp-block-heading">Testgetriebene Entwicklung mit System- oder Akzeptanztests (Stichwort Outside-In-TDD)</h3>



<p>Wie bereits erwähnt, entwickelt man Systemtests bei der testgetriebenen Entwicklung immer vor dem System selbst oder aber man erstellt zumindest das Konzept dafür. Aufgabe der Systementwicklung ist bei testgetriebener Entwicklung nicht mehr, wie klassisch, schriftlich formulierte Anforderungen zu erfüllen, sondern spezifizierte Systemtests zu bestehen.</p>



<h3 class="wp-block-heading">Akzeptanztestgetriebene Entwicklung (ATDD)</h3>



<p>ATDD ist zwar mit testgetriebener Entwicklung verwandt, unterscheidet sich jedoch in der Vorgehensweise von testgetriebener Entwicklung. Akzeptanztestgetriebene Entwicklung ist ein Kommunikationswerkzeug zwischen dem Kunden bzw. den Anwendern, den Entwicklern und den Testern. Es soll sicherstellen, dass die Anforderungen gut beschrieben sind. Akzeptanztestgetriebene Entwicklung verlangt keine Automatisierung der Testfälle, wenngleich diese für das <a href="https://ceosbay.com/2023/10/20/regressionstest-qualitaet-zaehlt-sicherheit-garantiert/">Regressionstesten</a> hilfreich sind. Die Tests bei akzeptanztestgetriebener Entwicklung müssen dafür auch für Nicht-Entwickler lesbar sein. Die Tests der testgetriebenen Entwicklung können in vielen Fällen aus den Tests der akzeptanztestgetriebenen Entwicklung abgeleitet werden.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/">TDD &#8211; Test Driven Development &#8211; Qualitativ hochwertige Software von Anfang an</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1132</post-id>	</item>
	</channel>
</rss>
