<?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>Anwendung Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/anwendung/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/anwendung/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Wed, 26 Apr 2023 04:20:57 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Anwendung Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/anwendung/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>OAuth &#8211; Login ohne Preisgabe von Anmeldeinformationen</title>
		<link>https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/</link>
					<comments>https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 22 Apr 2023 19:44:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[1]]></category>
		<category><![CDATA[1.0]]></category>
		<category><![CDATA[2]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[Abhängigkeit]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Ausgabe]]></category>
		<category><![CDATA[Autorisierung]]></category>
		<category><![CDATA[Autorisierungsantwort]]></category>
		<category><![CDATA[Benutzerfreundlichkeit]]></category>
		<category><![CDATA[Benutzerkontrolle]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Datenschutzbedenken]]></category>
		<category><![CDATA[Einfachheit]]></category>
		<category><![CDATA[Eingeschränkte]]></category>
		<category><![CDATA[Endbenutzer]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Fluss]]></category>
		<category><![CDATA[Friendly]]></category>
		<category><![CDATA[Geschützt]]></category>
		<category><![CDATA[Granulare]]></category>
		<category><![CDATA[Granularität]]></category>
		<category><![CDATA[Hauptkomponenten]]></category>
		<category><![CDATA[Hauptversionen]]></category>
		<category><![CDATA[Hijacking]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Nachteil]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Nativ]]></category>
		<category><![CDATA[Native]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Offen]]></category>
		<category><![CDATA[Offenes]]></category>
		<category><![CDATA[On]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Owner]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Ressourcenbesitzer]]></category>
		<category><![CDATA[Ressourcenserver]]></category>
		<category><![CDATA[Sicherheitsmechanismen]]></category>
		<category><![CDATA[Sicherheitsrisiken]]></category>
		<category><![CDATA[Sign]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Token]]></category>
		<category><![CDATA[Unterschied]]></category>
		<category><![CDATA[Unterschiede]]></category>
		<category><![CDATA[User]]></category>
		<category><![CDATA[Version]]></category>
		<category><![CDATA[Versionen]]></category>
		<category><![CDATA[Vorteil]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[Zugriff]]></category>
		<category><![CDATA[Zugriffsberechtigungen]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1794</guid>

					<description><![CDATA[<p>OAuth (Open Authorization) ist ein weit verbreitetes und offenes Protokoll, um die sichere Autorisierung von Anwendungen und Diensten im Internet zu ermöglichen. OAuth ermöglicht es Benutzern einer Anwendung Zugriff auf Ressourcen und Daten bei anderen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/">OAuth &#8211; Login ohne Preisgabe von Anmeldeinformationen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">OAuth (Open Authorization) ist ein weit verbreitetes und offenes Protokoll, um die sichere Autorisierung von Anwendungen und Diensten im Internet zu ermöglichen. OAuth ermöglicht es Benutzern einer Anwendung Zugriff auf Ressourcen und Daten bei anderen Anbietern zu gewähren, ohne dabei Anmeldeinformationen preisgeben zu müssen. In diesem Beitrag geht es um OAuth, dessen Funktionsweise, die wichtigsten Komponenten, den Vorteilen, Nachteilen und Best Practices.</p>



<h3 class="wp-block-heading">Grundlagen</h3>



<h4 class="wp-block-heading">Warum OAuth?</h4>



<ul class="wp-block-list">
<li><strong>Benutzerkontrolle</strong>: OAuth ermöglicht es Benutzern, Anwendungen und Diensten den Zugriff auf ihre Konten bei verschiedenen Anbietern zu gewähren, ohne dabei ihre Benutzername/Passwort-Kombinationen preiszugeben.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Sicherheit</strong>: Da die Anmeldeinformationen nicht direkt geteilt werden, reduziert OAuth das Risiko von Datendiebstahl und Missbrauch von Anmeldeinformationen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Granulare Berechtigungen</strong>: OAuth erlaubt es Benutzern, den Umfang und die Dauer der Zugriffsberechtigungen, die an eine Anwendung vergeben werden, präzise zu steuern.</li>
</ul>



<h3 class="wp-block-heading">Hauptkomponenten von OAuth</h3>



<ul class="wp-block-list">
<li><strong>Ressourcenbesitzer (Resource Owner)</strong><br>Der Ressourcenbesitzer ist normalerweise der Endbenutzer, der den Zugriff auf seine Daten und Ressourcen bei einem Ressourcenserver gewährt.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Ressourcenserver (Resource Server)</strong><br>Der Ressourcenserver hostet die geschützten Daten und Ressourcen des Ressourcenbesitzers. Er ist dafür verantwortlich, die Autorisierung und Authentifizierung von Anfragen mithilfe von OAuth-Tokens zu überprüfen. (Kleiner Tipp am Rande. Bei den Tokens handelt es sich nicht um die Tokens, die man aus den <a href="https://ceosbay.com/2022/11/01/erklaerung-crypto-bzw-kryptowaehrung/">Kryptowährungen</a> kennt 😉 )</li>
</ul>



<ul class="wp-block-list">
<li><strong>Client</strong><br>Die Client-Anwendung ist der Konsument der geschützten Ressourcen. Sie stellt Anfragen an den Ressourcenserver, um im Namen des Ressourcenbesitzers auf die Daten zuzugreifen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Autorisierungsserver (Authorization Server)</strong><br>Der Autorisierungsserver ist für die Ausgabe, Überprüfung und den Widerruf von OAuth-Zugriffstokens zuständig. Er agiert als Vermittler zwischen dem Ressourcenbesitzer, dem Client und dem Ressourcenserver.</li>
</ul>



<h3 class="wp-block-heading">OAuth-Fluss</h3>



<h4 class="wp-block-heading">Man kann den OAuth-Fluss in vier grundlegende Schritte unterteilen:</h4>



<ul class="wp-block-list">
<li><strong>Anfordern der Autorisierung</strong>: Der Client fordert die Autorisierung des Ressourcenbesitzers an, um auf dessen Ressourcen zuzugreifen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Autorisierungsantwort</strong>: Der Ressourcenbesitzer gewährt die Autorisierung und leitet den Client an den Autorisierungsserver weiter. Der Client erhält einen Autorisierungscode.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Anfordern eines Zugriffstokens</strong>: Der Client sendet den Autorisierungscode an den Autorisierungsserver und fordert ein Zugriffstoken an.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Token-Ausgabe</strong>: Der Autorisierungsserver überprüft den Autorisierungscode, stellt ein Zugriffstoken aus und sendet es an den Client.</li>
</ul>



<p class="wp-block-paragraph">Nachdem der Client das Zugriffstoken erhalten hat, kann er es verwenden, um auf die geschützten Ressourcen des Ressourcenbesitzers zuzugreifen, indem er Anfragen an den Ressourcenserver stellt. Der Ressourcenserver überprüft das Token und gewährt den Zugriff entsprechend der Berechtigungen, die vom Ressourcenbesitzer festgelegt wurden.</p>



<h3 class="wp-block-heading">Versionen und Unterschiede von OAuth</h3>



<p class="wp-block-paragraph">Es gibt zwei Hauptversionen. OAuth 1.0 und OAuth 2.0. Die Veröffentlichung von OAuth 1.0 fand im Jahr 2010 statt und verwendet einen komplexeren kryptografischen Ansatz für die Sicherheit. Im Jahr 2012 folgte OAuth 2.0 und ist eine überarbeitete Version, die eine einfachere und flexiblere Architektur bietet. Zweiteres basiert auf Bearer-Tokens. Bei beiden handelt es sich nach wie vor um offene Standardprotokolle zur sicheren Delegierung von Zugriffsberechtigungen. Obwohl sie gemeinsame Ziele verfolgen, unterscheiden sie sich in ihrer Architektur, ihren Sicherheitsmechanismen und besonders in der Benutzerfreundlichkeit. Durch die unterschiedliche Architektur ist keine Abwärtskompatibilität gegeben.</p>



<p class="wp-block-paragraph"><strong>Sicherheitsmechanismen</strong>:</p>



<p class="wp-block-paragraph"><strong>1.0</strong>: Verwendet einen kryptografischen Ansatz, bei dem man Anfragen mithilfe von kryptografischen Signaturen und einem gemeinsamen Geheimnis (Shared Secret) zwischen dem Client und dem Autorisierungsserver signiert. Diese Methode erfordert einen erhöhten Aufwand bei der Implementierung und Konfiguration.</p>



<p class="wp-block-paragraph"><strong>2.0</strong>: Verwendet Bearer-Token, bei denen der Besitzer des Tokens (Client) Zugriff auf die geschützten Ressourcen erhält. Die Sicherheit basiert hauptsächlich auf der sicheren Übertragung und Aufbewahrung von Tokens (z. B. über https). Diese Methode ist einfacher zu implementieren und erfordert weniger kryptografische Kenntnisse.</p>



<p class="wp-block-paragraph"><strong>Flexibilität</strong>:</p>



<p class="wp-block-paragraph"><strong>1.0</strong>: Bietet einen starren Ablauf zur Anforderung und Nutzung von Zugriffstokens, der weniger Anpassungsmöglichkeiten für verschiedene Anwendungsszenarien bietet.</p>



<p class="wp-block-paragraph"><strong>2.0</strong>: Ermöglicht eine größere Flexibilität und Anpassungsfähigkeit, indem man verschiedene &#8222;Grant Types&#8220; (Genehmigungsarten) zur Verfügung stellt, um unterschiedlichen Anwendungsszenarien und Plattformen Genüge zu tun.</p>



<p class="wp-block-paragraph"><strong>Einfachheit</strong>:</p>



<p class="wp-block-paragraph"><strong>1.0</strong>: Die Implementierung und das Debugging von OAuth 1.0 können komplex sein, da Entwickler den kryptografischen Prozess und das Signieren von Anfragen verstehen müssen.</p>



<p class="wp-block-paragraph"><strong>2.0</strong>: Die Implementierung von OAuth 2.0 ist einfacher und erfordert weniger kryptografische Kenntnisse. Dies führt zu einer schnelleren und einfacheren Integration in Anwendungen und Dienste.</p>



<p class="wp-block-paragraph"><strong>Mobile und native Anwendungen:</strong></p>



<p class="wp-block-paragraph"><strong>1.0</strong>: Aufgrund seiner komplexeren Natur und der kryptografischen Anforderungen ist OAuth 1.0 weniger geeignet für mobile und native Anwendungen, bei denen Ressourcen und Konnektivität eingeschränkt sein können.</p>



<p class="wp-block-paragraph"><strong>2.0:</strong> Durch die einfachere Implementierung und den flexibleren Ablauf eignet sich OAuth 2.0 besser für die Integration in mobile und native Anwendungen.</p>



<h3 class="wp-block-heading">Vorteile</h3>



<p class="wp-block-paragraph"><strong>Sicherheit</strong>: Es erhöht die Sicherheit, indem man Anmeldeinformationen nicht direkt teilen muss und Tokens verwendet, um auf Ressourcen zuzugreifen.</p>



<p class="wp-block-paragraph"><strong>Benutzerfreundlichkeit</strong>: Es ermöglicht Single Sign-On (SSO) und reduziert die Notwendigkeit, mehrere Benutzernamen und Passwörter zu verwalten.</p>



<p class="wp-block-paragraph"><strong>Flexibilität</strong>: Es bietet eine flexible Architektur, die für verschiedene Anwendungsszenarien und Plattformen geeignet ist.</p>



<p class="wp-block-paragraph"><strong>Granularität</strong>: Es ermöglicht, den Umfang und die Dauer der gewährten Berechtigungen genau zu steuern.</p>



<h3 class="wp-block-heading">Nachteile</h3>



<p class="wp-block-paragraph"><strong>Komplexität</strong>: Die Implementierung von OAuth, insbesondere bei OAuth 1.0, kann komplex sein, da es verschiedene Abläufe und Mechanismen beinhaltet. Dies kann zu einer steileren Lernkurve für Entwickler führen, die sich nicht mit dem Protokoll auskennen.</p>



<p class="wp-block-paragraph"><strong>Sicherheitsrisiken</strong>: Trotz der verbesserten Sicherheit, die OAuth bietet, gibt es immer noch Sicherheitsrisiken. Fehlkonfigurationen, unzureichende Validierungen und direkte Angriffe auf den Autorisierungscode oder das Zugriffstoken können die Sicherheit weiter gefährden.</p>



<p class="wp-block-paragraph"><strong>Abhängigkeit von Drittanbietern</strong>: Die Verwendung von OAuth kann eine Abhängigkeit von Drittanbieter-Autorisierungsservern schaffen, die möglicherweise Ausfallzeiten, Sicherheitsverletzungen oder andere Probleme aufweisen können.</p>



<p class="wp-block-paragraph"><strong>Datenschutzbedenken</strong>: Bei der Verwendung von OAuth besteht das Risiko, dass Benutzer mehr Daten preisgeben als erforderlich, da Anwendungen möglicherweise Zugriff auf mehr Informationen anfordern, als für ihre Funktionen notwendig ist.</p>



<p class="wp-block-paragraph"><strong>Token-Hijacking</strong>: Obwohl es die Sicherheit gegenüber der direkten Weitergabe von Anmeldeinformationen verbessert, besteht immer noch die Gefahr, dass Angreifer Zugriffstoken abfangen oder stehlen können. Dies kann zu unbefugtem Zugriff auf Benutzerdaten führen.</p>



<p class="wp-block-paragraph"><strong>Eingeschränkte Implementierung</strong>: Die Nutzung von OAuth in bestimmten Anwendungsszenarien, wie beispielsweise bei Geräten mit eingeschränkter Internetkonnektivität oder eingeschränkten Eingabemöglichkeiten, kann sich als schwierig oder teilweise unmöglich gestalten.</p>



<h3 class="wp-block-heading">Best Practices</h3>



<ul class="wp-block-list">
<li>Man sollte immer die neueste Version (aktuell OAuth 2.0) für bessere Sicherheit und Flexibilität verwenden.</li>



<li>Implementierung von &#8222;Proof Key for Code Exchange&#8220; (PKCE) Erweiterung ist zu empfehlen, um Angriffe, die den Autorisierungscode abfangen, verhindern zu können.</li>



<li>Sichere Speicherung des Zugriffstokens und der Client-Anmeldeinformationen, um den Missbrauch zu verhindern.</li>



<li>Verwenden von kurzen Gültigkeiten und Lebensdauern für Zugriffstokens und Erneuerungen bei Bedarf mithilfe von Aktualisierungstokens.</li>



<li>Implementierung von Zustimmungsbildschirmen, um Benutzer über den Umfang und die Dauer der Berechtigungen, die man gewährt, zu informieren.</li>
</ul>



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



<p class="wp-block-paragraph">OAuth ist ein leistungsstarkes Protokoll, das die sichere Delegierung von Zugriffsberechtigungen im Internet ermöglicht. Durch das Verständnis der Grundlagen von OAuth und die Einhaltung der Best Practices können Entwickler Anwendungen erstellen, die eine sichere und benutzerfreundliche Erfahrung bei Login-Verfahren bieten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/">OAuth &#8211; Login ohne Preisgabe von Anmeldeinformationen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1794</post-id>	</item>
		<item>
		<title>Tosca &#8211; Testautomatisierung für agile und fehlerfreie Softwareentwicklung</title>
		<link>https://ceosbay.com/2023/04/04/erklaerung-tosca/</link>
					<comments>https://ceosbay.com/2023/04/04/erklaerung-tosca/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 04 Apr 2023 13:36:21 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Methode]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Suite]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Systeme]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1320</guid>

					<description><![CDATA[<p>Tosca Testsuite ist ein umfassendes Testmanagement-Tool, von der Firma Tricentis. Speziell für die Testautomatisierung von Anwendungen und IT-Systemen entwickelt und bietet eine umfassende Suite von Tools und Funktionen, um das Testen von Anwendungen zu vereinfachen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/04/erklaerung-tosca/">Tosca &#8211; Testautomatisierung für agile und fehlerfreie Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Tosca Testsuite ist ein umfassendes Testmanagement-Tool, von der Firma Tricentis. Speziell für die Testautomatisierung von Anwendungen und IT-Systemen entwickelt und bietet eine umfassende Suite von Tools und Funktionen, um das Testen von Anwendungen zu vereinfachen und zu automatisieren.</p>



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



<p class="wp-block-paragraph">Die Tosca Testsuite ist eine Entwicklung der österreichischen Firma Tricentis und die Veröffentlichung fand erstmals im Jahr 2007 statt. Gegründet von Wolfgang Platz und Franz Fuchsberger, die beide Erfahrung in der Software-Entwicklung hatten.</p>



<p class="wp-block-paragraph">Als sie in ihrem Berufsleben immer wieder auf die Probleme von manuellen Tests und fehleranfälliger Testautomatisierung stießen, beschlossen sie, eine Lösung zu entwickeln, die den Testprozess effizienter und präziser machen sollte.</p>



<p class="wp-block-paragraph">Im Laufe der Jahre hat die Tosca Testsuite eine Reihe von Verbesserungen und Erweiterungen erhalten. Funktionen kamen hinzu, um die Unterstützung verschiedener Plattformen und Technologien zu verbessern und die Testdatenverwaltung und Berichterstattung zu optimieren.</p>



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



<p class="wp-block-paragraph">Die Tosca Testsuite bietet eine breite Palette von Funktionen, die den Testprozess vereinfachen und beschleunigen. Ein wichtiges Merkmal ist die Möglichkeit, Testszenarien aufzunehmen und automatisch zu generieren. Bewerkstelligt durch die Verwendung von Model-Based Testing (MBT), bei dem man Testszenarien aus Modellen der Anwendung automatisch generiert. Diese Methode bietet eine höhere Effizienz und Präzision als manuelle Tests. An dieser Stelle verweise ich auch gerne auf (<a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a>), dem <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a>.</p>



<p class="wp-block-paragraph">Die Testsuite bietet auch eine integrierte Testdatenverwaltung, die grundsätzlich die Erstellung, Verwaltung und Wiederverwendbarkeit von Testdaten ermöglicht. Dies kann den Testprozess signifikant vereinfachen und reduziert die Fehlerquote.</p>



<p class="wp-block-paragraph">Ein weiteres wichtiges Merkmal der Tosca Testsuite ist die Möglichkeit, Tests in einer Vielzahl von Umgebungen durchzuführen. Es unterstützt verschiedene Plattformen und Technologien wie Web-Anwendungen, mobile Anwendungen, SAP-Systeme und Legacy-Systeme.</p>



<p class="wp-block-paragraph">Die Testsuite bietet auch eine umfassende Berichterstattungsfunktion, die eine genaue Übersicht über den Testprozess und über die Ergebnisse bietet. Man kann die Berichte auch anpassen, um die individuellen Anforderungen zu erfüllen. Unter anderem ermöglicht dies den Benutzern auch, schnell und einfach Einsicht in den Status des Testprozesses zu erhalten.</p>



<p class="wp-block-paragraph">Die Tosca Testsuite ist relativ einfach zu bedienen und zu erlernen. Es bietet eine intuitive Benutzeroberfläche und eine umfangreiche Dokumentation, um den Einstieg zu erleichtern.</p>



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



<p class="wp-block-paragraph">Insgesamt bietet die Tosca Testsuite eine umfassende Lösung für das Testmanagement, die Automatisierung und die Überwachung von Anwendungen. Es verbessert die Effizienz des Testprozesses und reduziert die Fehlerquote, was zu einer höheren Qualität der Anwendung und einer besseren Benutzererfahrung führt.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/04/erklaerung-tosca/">Tosca &#8211; Testautomatisierung für agile und fehlerfreie Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/04/erklaerung-tosca/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1320</post-id>	</item>
		<item>
		<title>Unit Tests &#8211; Fundament für stabile und effiziente Software</title>
		<link>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/</link>
					<comments>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 26 Mar 2023 17:50:20 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Algorithmen]]></category>
		<category><![CDATA[Algorithmus]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Auto]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Baustein]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codebasis]]></category>
		<category><![CDATA[Contract]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Driven]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Jacoco]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kompilierung]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Komponententest]]></category>
		<category><![CDATA[Lauffähigkeit]]></category>
		<category><![CDATA[Modul]]></category>
		<category><![CDATA[Modultest]]></category>
		<category><![CDATA[Nachteil]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Produkt]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testarten]]></category>
		<category><![CDATA[Teststufe]]></category>
		<category><![CDATA[Unit]]></category>
		<category><![CDATA[Unittests]]></category>
		<category><![CDATA[Vertrag]]></category>
		<category><![CDATA[Vorteil]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[Weise]]></category>
		<category><![CDATA[Zehnerregel]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1246</guid>

					<description><![CDATA[<p>Ein Unit Test, auch Modul- oder Komponententest bezeichnet, ist ein Test, mit dem man in der Architektur eines Systems einzelne, abgrenzbare Teile (z. B. ausgewählte Codeabschnitte, Module, Unterprogramme, Units oder im Fall objektorientierter Programmierung als &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/26/erklaerung-unit-tests/">Unit Tests &#8211; Fundament für stabile und effiziente Software</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ein Unit Test, auch Modul- oder Komponententest bezeichnet, ist ein Test, mit dem man in der Architektur eines Systems einzelne, abgrenzbare Teile (z. B. ausgewählte Codeabschnitte, Module, Unterprogramme, Units oder im Fall objektorientierter Programmierung als Klassen), meist auf niedrigster Ebene überprüft. Ziel dieser häufig durch den Softwareentwickler selbst durchgeführten Softwaretests ist, deren technische Lauffähigkeit und die Korrektheit ihrer fachlichen (Teil-)Ergebnisse nachzuweisen.</p>



<p class="wp-block-paragraph">Man verwendet den Ausdruck Modultest unter anderem bei frühen Teststufen, in denen man die inneren, detailliertesten Komponenten der Software testet. Gemäß Software Validation &amp; Verification Plan sind diese Tests nur für Module mit geringer Kritikalität nicht notwendig. Im Grunde genommen bei Fehlern, die dem User nur geringfügige Unannehmlichkeiten bereiten.</p>



<p class="wp-block-paragraph">In einer Abstraktion der verwendeten Programmiersprache, spricht man von Komponente oder Softwarebaustein. Den Test eines solchen einzelnen Softwarebausteins bezeichnet man auch allgemeiner als Komponententest.</p>



<p class="wp-block-paragraph">Als Testbasis kann man in der Regel die komponentenspezifische Anforderung und das Softwaredesign der Komponente (auch Komponentenspezifikation genannt) heranziehen. Für Whitebox-Testfälle oder um Aussagen zur Codeüberdeckung zu erhalten, kann man zusätzlich den Sourcecode einer Komponente analysieren und diesen als Testbasis verwenden. Wobei dabei auch Tools wie <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/" target="_blank" rel="noreferrer noopener">Jacoco</a> helfen können. Ob die Komponente auf einen Testfall richtig reagiert, muss man allerdings auch hier auf Basis der Design- und Anforderungsdokumente beurteilen.</p>



<p class="wp-block-paragraph">Typische Testobjekte sind wie bereits beschrieben Programmunits, -Module bzw. Klassen. Aber auch Kommandozeilenskripte des Betriebssystems (Shell-Skripte), Datenbankskripte, Datenkonvertierungs- oder Migrationsprozeduren, Datenbankinhalte sowie Konfigurationsdaten können Testobjekte sein. Kennzeichnend ist in der Regel der isolierte Test eines einzelnen Softwarebausteins. Dies dient primär, um komponentenexterne Einflüsse beim Testen auszuschließen. Alle so ermittelten Fehler kann man so dem spezifischen Modul zuordnen.</p>



<p class="wp-block-paragraph">Klar zu unterscheiden ist auf jeden Fall der Integrationstest, den ich in einem separaten Beitrag thematisiere. Bei einem Integrationstest konzentriert man sich auf die Wechselwirkung mit Nachbarkomponenten.</p>



<p class="wp-block-paragraph">Die Erstellung solcher Tests ist in der Regel die Aufgabe eines Programmierers. Dies liegt zum einen daran, dass man ein ausgeprägtes Verständnis für die Programmiersprache in der die Anwendung geschrieben ist haben muss. Und zum anderen daran, dass man meist auch einen Testtreiber benötigt, dessen Programmierung in der Regel auch der Entwickler übernimmt.</p>



<h3 class="wp-block-heading">Einordnung im Testprozess</h3>



<p class="wp-block-paragraph">Algorithmen auf Unitebene besitzen meist nur eine begrenzte Komplexität und man kann sie über klar definierte Schnittstellen aktivieren. Daher kann sie mit relativ wenigen Testfällen weitgehend vollständig testen. Dies gilt als Voraussetzung für die anschließende Teststufe. Dem Integrationstest, um dort die Testfälle auf das integrierte Zusammenwirken größerer Funktionsteile oder der gesamten Anwendung ausrichten zu können. Die modulspezifischen Detailkonstellationen lassen sich damit auf Stichproben beschränken, was die Anzahl der erforderlichen Testfälle signifikant reduziert.</p>



<p class="wp-block-paragraph">Zum Vergleich: Ein Gerät wird erst dann als Ganzes getestet, wenn die Funktionsfähigkeit seiner Einzelteile gesichert ist.</p>



<h3 class="wp-block-heading">Test des Vertrages und nicht der Algorithmen</h3>



<p class="wp-block-paragraph">Man testet bei Modultests gemäß dem Design-by-contract-Prinzip möglichst nicht die Interna einer Methode, sondern nur ihre externen Auswirkungen (Rückgabewerte, Ausgaben, Zustandsänderungen, Zusicherungen). Sind die internen Details der Methode geprüft (dies wird als White-Box-Testing bezeichnet), kann der Test fehlschlagen, obwohl sich die externen Auswirkungen nicht geändert haben. Daher empfiehlt man in der Regel das sogenannte Black-Box-Testing, bei dem man sich auf das Prüfen der externen Auswirkungen beschränkt.</p>



<h3 class="wp-block-heading">Was sind die Vorteile von Unit Tests?</h3>



<ul class="wp-block-list">
<li>Mittels automatisierter Unittests kann man im Schnitt 30 % der Fehler erkennen. Bei der Verwendung von <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a> (<a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/">Test Driven Development</a>) kann man im Schnitt 45 % und im besten Fall 85 % der Fehler vermeiden.</li>



<li>Fehler erkennt man durch Modultests bereits während der Entwicklung. Die durch Unittests vermiedenen Fehlerkosten sind daher gemäß der Rule of Ten (Dazu später mehr) um ein Vielfaches höher als bei späteren Teststufen, was Unittests zur effizientesten Teststufe machen.</li>



<li>Im Falle eines Fehlers kann man diesen sehr viel genauer eingrenzen und damit schneller finden und beheben.</li>



<li>Die Tests erfüllen den Zweck einer lebenden Dokumentation. In Kombination mit einer sinnvollen Benamung der Objekte (Clean Code) können zusätzliche Dokumentationsmaßnahmen entfallen.</li>



<li>Da einzelne Module nur wenige mögliche Codeausführungspfade besitzen, muss man viel weniger mögliche kombinatorische Ausführungspfade berücksichtigen als bei anderen Testarten. Bei übergeordneten Tests kann man sich dann stichprobenartig auf die wichtigsten Ausführungspfade konzentrieren und damit die Anzahl dieser Tests deutlich reduzieren.</li>



<li>Da man nur einzelne Module testet, kann man Modultests, oft um mehrere Größenordnungen, schneller und damit öfter (bzw. kontinuierlich) ausführen als andere Testarten.</li>



<li>Wenn man Fehler mit einem Test absichert, kann man den erneuten Auftritt des gleichen Fehlers verhindern.</li>



<li>Durch die Fehlerreduktion ergeben sich Geschwindigkeitsvorteile in der Entwicklung in mittleren bis großen Softwareprojekten.</li>



<li>Da man Abhängigkeiten zwingend vermeiden muss, um einen Modultest zu ermöglichen, bleibt der Code verhältnismäßig schnell änderbar. Hierdurch kann man schneller auf wechselnde Anforderungen reagieren. Siehe <a href="https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/" target="_blank" rel="noreferrer noopener">Agile Manifest</a> 😉</li>



<li>Da automatisch ausgeführte Tests um mehrere Größenordnungen schneller sind als manuelle Tests, reduziert sich der Zeitaufwand für das Testen deutlich. Hierdurch kann man die Entwicklungsstufen schneller durchlaufen und die Release-Zyklen signifikant verkürzen.</li>
</ul>



<h3 class="wp-block-heading">Was sind die Nachteile von Unit Tests?</h3>



<ul class="wp-block-list">
<li>Bei der Implementierung neuer Funktionen muss man nicht nur die Funktion implementieren, sondern auch die dazugehörenden Tests vorbereiten bzw. definieren. Dadurch ergibt sich ein oft mehrfacher Implementierungsaufwand.</li>



<li>Bei Änderungen muss man nicht nur die geänderten Funktionen, sondern auch die dazugehörenden Tests anpassen. Insbesondere bei der Entwicklung von Prototypen, bei der sich die Codebasis schnell verändert, ist das Testen daher oft eher ein Hindernis.</li>



<li>Da man die Funktionalität der Tests verwendet, ist in den IDEs schwerer ersichtlich, ob eine Funktionalität keine Verwendung mehr findet und ob man es daher entfernen kann.</li>



<li>Weisen die Tests untereinander Abhängigkeiten auf (z. B. durch gemeinsame Testdaten), so können einzelne Änderungen an der Codebasis eine Vielzahl von Tests beeinflussen, was den Änderungsaufwand mit der Größe der Codebasis exponentiell erhöht.</li>
</ul>



<h3 class="wp-block-heading">Fehlerkosten 10er Regel (Rule of ten)</h3>



<p class="wp-block-paragraph">Die Zehnerregel der Fehlerkosten besagt, dass je weiter ein Fehler sich unentdeckt in die späten Phasen des Werdegangs eines Produktes oder Prozesses bewegt – oder gar bis zum Kunden –, desto höher steigen die Kosten zur Behebung des Fehlers. Eindrucksvoll untermauert durch die Ergebnisse einiger Studien aus den 70er Jahren in Japan, USA und Großbritannien, die sich mit den Ursachen von Produkt- bzw. Qualitätsmängeln beschäftigten. Alle Analysen lieferten nahezu die gleichen Ergebnisse: Ca. 70 % aller Produktmängel hatten ihre Ursache bereits in der Entwicklung, Konstruktion und Arbeitsvorbereitung. Der Herstellungsprozess selbst hat bezüglich der Endqualität des Produktes offensichtlich eher einen sekundären Einfluss. Eine VDMA-Studie zum Thema „Qualitätsbezogene Kosten“ Anfang der 90er Jahre in der Bundesrepublik Deutschland bestätigt dieses Ergebnis.</p>



<p class="wp-block-paragraph">Die Zehnerregel der Fehlerkosten oder „Rule of ten“ sagt aus, dass sich die Fehlerkosten für einen nicht entdeckten Fehler von Stufe zu Stufe der Wertschöpfung um den Faktor 10 erhöhen. Je früher ein Fehler entdeckt und beseitigt wird, desto kostengünstiger ist dies für die Organisation und schlussendlich auch für den User bzw. Kunden.</p>



<p class="wp-block-paragraph">Ansonsten sind diese auch in der DIN 55350-11 im Rahmen des Qualitätsmanagements festgehalten. Doch darauf gehe ich in einem separaten Beitrag ein.</p>



<h3 class="wp-block-heading">Wo sind die Grenzen der Unit Tests?</h3>



<p class="wp-block-paragraph">Unit Tests können (wie jeder Test) die Fehlerfreiheit der getesteten Units, Module usw. nicht garantieren oder nachweisen, sondern lediglich unterstützen. Die Grenzen von Unit Tests liegen primär nur in den Fällen vor in denen man Fehler finden kann, zu deren Entdeckung die verwendeten Tests geeignet sind. Eine Softwarekomponente, die „grün“ testet, ist also nur bedingt fehlerfrei.</p>



<p class="wp-block-paragraph">Das Merkmal von Code, „grün“ zu testen, und durchaus auch der Wunsch nach diesem Ergebnis, kann dazu führen, dass man tatsächlich (unbewusst) nur so viel testet, bis alle Tests „grün“ sind. Module, die keine fehlschlagenden Modultests haben, als fehlerfrei zu behandeln, ist ein Fehlschluss in der Praxis des (<a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a>) <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a>.</p>



<p class="wp-block-paragraph">Um eine ausreichende Testabdeckung zu erzielen, lohnt es sich u.U., vor dem Erstellen der Testfälle Refactoring-Maßnahmen anzuwenden. Dies erst nach abgeschlossenen Unit Tests (für den alten Code) zu tun, schafft Raum (wie jede Änderung im Code) für neue Fehlerrisiken und kann deshalb wiederholtes Testen erforderlich machen.</p>



<p class="wp-block-paragraph">Wenn der Autor von Unit Tests mit dem Autor der Module identisch ist, können Denkfehler in der Implementierung auch im Test erscheinen und verpasst gegebenenfalls die Chance, diese aufzudecken. Wenn es sich um dieselbe Person handelt, kann man die vorrangige Entwicklung der Tests ebenfalls nicht garantieren, da sowohl die beabsichtigte Funktionsweise des Codes als auch die zukünftige Gestalt bereits im Gedankengut des Testautors und späteren Codeautors präsent sein können. Dies kann im Extreme Programming durch „Test Ping-Pong“ abgefangen werden, bei der sich Entwickler bei der Implementierung der Funktionalität und der Tests abwechseln.</p>



<p class="wp-block-paragraph">Bei der Entwicklung von Modultests können Testfälle entstehen, die der Zielsetzung und dem Charakter von Modultests nicht oder nur zum Teil entsprechen. Wie bei der Programmierung existieren daher auch für die Entwicklung von Modultests Anti-Pattern, die man möglichst vermeiden sollte.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/26/erklaerung-unit-tests/">Unit Tests &#8211; Fundament für stabile und effiziente Software</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1246</post-id>	</item>
		<item>
		<title>Agile Manifest &#8211; Die bessere Art der Softwareentwicklung</title>
		<link>https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/</link>
					<comments>https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 21:22:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[12]]></category>
		<category><![CDATA[2001]]></category>
		<category><![CDATA[Agilität]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Beedle]]></category>
		<category><![CDATA[Bennekum]]></category>
		<category><![CDATA[Brian]]></category>
		<category><![CDATA[C.]]></category>
		<category><![CDATA[Cockburn]]></category>
		<category><![CDATA[Cunningham]]></category>
		<category><![CDATA[Dark]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Faux]]></category>
		<category><![CDATA[Fowler]]></category>
		<category><![CDATA[Highsmith]]></category>
		<category><![CDATA[Hunt]]></category>
		<category><![CDATA[James]]></category>
		<category><![CDATA[Jeffries]]></category>
		<category><![CDATA[Jim]]></category>
		<category><![CDATA[Ken]]></category>
		<category><![CDATA[Kernaussagen]]></category>
		<category><![CDATA[Kult]]></category>
		<category><![CDATA[Less]]></category>
		<category><![CDATA[Manifest]]></category>
		<category><![CDATA[Manifesto]]></category>
		<category><![CDATA[Manifesto for Agile Software Development]]></category>
		<category><![CDATA[Marick]]></category>
		<category><![CDATA[Martin]]></category>
		<category><![CDATA[Mike]]></category>
		<category><![CDATA[Mountains]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Prinzipien]]></category>
		<category><![CDATA[Ron]]></category>
		<category><![CDATA[Schwaber]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Steve]]></category>
		<category><![CDATA[Thomas]]></category>
		<category><![CDATA[van]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1199</guid>

					<description><![CDATA[<p>Das Agile Manifest beschreibt Verhaltensregeln und Werte agiler Entwickler Teams. Seit der Entstehung im Jahr 2001 stellt es die Basis für agiles Projektmanagement dar und ist bekannt unter dem Namen „Manifesto for Agile Software Development &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/">Agile Manifest &#8211; Die bessere Art der Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Das Agile Manifest beschreibt Verhaltensregeln und Werte agiler Entwickler Teams. Seit der Entstehung im Jahr 2001 stellt es die Basis für agiles Projektmanagement dar und ist bekannt unter dem Namen „Manifesto for Agile Software Development von Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas“. Man erreicht das Manifest über den folgenden <a href="https://agilemanifesto.org/iso/de/manifesto.html" target="_blank" rel="noreferrer noopener">Link</a>. </p>



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



<p class="wp-block-paragraph">Anfang 2001 trafen sich vor der Kulisse der Wasatch Mountains in Snowbird, Utah, 17 Personen, um über die Zukunft der Softwareentwicklung zu diskutieren. Die Mitglieder der Gruppe teilten die Enttäuschung über den aktuellen Stand der Dinge, wenn es um die Softwareentwicklung in agilen Teams ging. Zu diesem Zeitpunkt waren Sie sich einig, dass man etwas ändern muss. Lediglich bestand noch keine Einigkeit darüber, was genau und wie genau es aussehen sollte.</p>



<p class="wp-block-paragraph">Das Problem, so waren sie sich einig, bestand darin, dass die Unternehmen sich so sehr auf die exzessive Planung und Dokumentation ihrer Softwareentwicklungszyklen konzentrierten, dass sie das Wesentliche aus den Augen verloren &#8211; die Zufriedenheit der Kunden.</p>



<p class="wp-block-paragraph">Die Unternehmen rühmten sich zwar mit Unternehmenswerten wie &#8222;Exzellenz&#8220; und &#8222;Integrität&#8220;, aber diese Werte trugen wenig dazu bei, die Menschen &#8211; insbesondere die Softwareentwickler &#8211; auf einen besseren Weg zu bringen. Das musste sich ändern. Viele der Snowbird 17 hatten bereits Ideen, wie man die neue Ära der Softwareentwicklung einläuten kann. Die Reise in die Berge war die Chance, dies zu diskutieren.</p>



<p class="wp-block-paragraph">Aus diesem verlängerten Wochenende ging das Agile Manifest mit gerade einmal 68 Wörtern hervor. Dieses kurze und knappe Dokument sollte die Softwareentwicklung für immer beeinflussen. In den zwei Jahrzehnten, die seit der Entstehung vergangen sind, haben unzähligen Einzelpersonen, Teams und Unternehmen (in unterschiedlichem Maße) diese Worte bzw. die nachfolgenden 4 Kernaussagen und 12 Prinzipien übernommen.</p>



<h3 class="wp-block-heading">Die 4 Kernaussagen</h3>



<p class="wp-block-paragraph">&#8222;<strong><em>Individuals and interactions</em></strong><em>&nbsp;over processes and tools</em></p>



<p class="wp-block-paragraph"><strong><em>Working software</em></strong><em>&nbsp;over comprehensive documentation</em></p>



<p class="wp-block-paragraph"><strong><em>Customer collaboration</em></strong><em>&nbsp;over contract negotiation</em></p>



<p class="wp-block-paragraph"><strong><em>Responding to change</em></strong><em>&nbsp;over following a plan</em>&#8222;</p>



<h4 class="wp-block-heading">Folglich</h4>



<p class="wp-block-paragraph"><strong>Individuen und Interaktionen stehen</strong>&nbsp;über Prozessen und Werkzeugen</p>



<p class="wp-block-paragraph"><strong>Funktionierende Software steht</strong>&nbsp;über umfassender Dokumentation</p>



<p class="wp-block-paragraph"><strong>Zusammenarbeit mit dem Kunden</strong>&nbsp;steht über der Vertragsverhandlung</p>



<p class="wp-block-paragraph"><strong>Eingehen auf Veränderung steht</strong>&nbsp;über dem Befolgen eines Plans</p>



<h3 class="wp-block-heading">Die 12 Prinzipien:</h3>



<p class="wp-block-paragraph">&#8222;<em>Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.</em>&#8222;</p>



<p class="wp-block-paragraph">Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Lieferung von wertvoller Software zufrieden zu stellen.</p>



<p class="wp-block-paragraph">&#8222;<em>Welcome changing requirements, even late in development. Agile processes harness change for the customer&#8217;s competitive advantage.</em>&#8222;</p>



<p class="wp-block-paragraph">Anforderungsänderungen sind auch spät in der Entwicklung willkommen. Agile Prozesse machen Veränderungen für den Wettbewerbsvorteil des Kunden nutzbar.</p>



<p class="wp-block-paragraph">&#8222;<em>Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.</em>&#8222;</p>



<p class="wp-block-paragraph">Liefern Sie regelmäßig, alle paar Wochen bis alle paar Monate, funktionierende Software, wobei ein kürzerer Zeitrahmen bevorzugt wird.</p>



<p class="wp-block-paragraph">&#8222;<em>Business people and developers must work together daily throughout the project.</em>&#8222;</p>



<p class="wp-block-paragraph">Geschäftsleute (Fachleute) und Entwickler müssen während des gesamten Projekts täglich zusammenarbeiten.</p>



<p class="wp-block-paragraph">&#8222;<em>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.</em>&#8222;</p>



<p class="wp-block-paragraph">Bauen Sie Projekte um motivierte Einzelpersonen herum auf. Geben Sie ihnen das Umfeld und die Unterstützung, die sie brauchen, und vertrauen Sie darauf, dass die Arbeit erledigt wird.</p>



<p class="wp-block-paragraph">&#8222;<em>The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.</em>&#8222;</p>



<p class="wp-block-paragraph">Die effizienteste und effektivste Methode der Vermittlung von Informationen an und innerhalb eines Entwicklungsteams ist ein Gespräch von Angesicht zu Angesicht.</p>



<p class="wp-block-paragraph">&#8222;<em>Working software is the primary measure of progress.</em>&#8222;</p>



<p class="wp-block-paragraph">Funktionierende Software ist der primäre Maßstab für den Fortschritt.</p>



<p class="wp-block-paragraph"><em>&#8222;Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.</em>&#8222;</p>



<p class="wp-block-paragraph">Agile Prozesse fördern die nachhaltige Entwicklung. Sponsoren, Entwickler und Benutzer sollten in der Lage sein, auf unbestimmte Zeit ein konstantes Tempo beizubehalten.</p>



<p class="wp-block-paragraph">&#8222;<em>Continuous attention to technical excellence and good design enhances agility.</em>&#8222;</p>



<p class="wp-block-paragraph">Kontinuierliche Aufmerksamkeit für technische Exzellenz und gutes Design erhöht die Agilität.</p>



<p class="wp-block-paragraph">&#8222;<em>Simplicity&#8211;the art of maximizing the amount of work not done&#8211;is essential.</em>&#8222;</p>



<p class="wp-block-paragraph">Einfachheit &#8211; die Kunst, die Menge nicht-getaner Arbeit zu maximieren &#8211; ist essenziell.</p>



<p class="wp-block-paragraph">&#8222;<em>The best architectures, requirements, and designs emerge from self-organizing teams.</em>&#8222;</p>



<p class="wp-block-paragraph">Die besten Architekturen, Anforderungen und Designs gehen aus sich selbst organisierenden Teams hervor.</p>



<p class="wp-block-paragraph">&#8222;<em>At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.</em>&#8222;</p>



<p class="wp-block-paragraph">In regelmäßigen Abständen reflektiert das Team darüber, wie es effektiver werden kann und passt sein Verhalten entsprechend an.</p>



<p class="wp-block-paragraph">Und das war&#8217;s. Seitdem hat sich die Website des Agilen Manifests, wenn überhaupt, nur minimal verändert. Aber die Welt rund um Agile könnte nicht unterschiedlicher sein.</p>



<h3 class="wp-block-heading">Die große Debatte</h3>



<p class="wp-block-paragraph">Den Snowbird 17 ist es gelungen, ihre unterschiedlichen Standpunkte unter einigen wenigen Kernpunkten zu vereinen. Doch damit war die Debatte noch nicht beendet. In gewisser Weise hat sich Agile in viel mehr Arbeitsweisen aufgesplittert, als die Visionäre es ursprünglich geplant hatten bzw. erahnen konnten. Es scheint, als ob jeder seine eigene Sichtweise von dem Begriff „Agile“ hat und so auch an der eigenen Suppe kocht.</p>



<p class="wp-block-paragraph">Heute gibt es SAFe und LeSS. Anwendungen von Agile, die nichts mit Softwareentwicklung zu tun haben, auch wenn es im Manifest zu Beginn heißt: &#8222;Wir entdecken bessere Wege, Software zu entwickeln, indem wir es tun und anderen helfen, es zu tun&#8220;.</p>



<p class="wp-block-paragraph">Grundsätzlich kann man sagen, dass Zwei Fragen unmittelbar zusammengehören. Die eine richtet sich auf die Wahl des passenden Frameworks als Tool. Die andere auf die Entwicklung der agilen Kultur im Unternehmen. Beides lässt sich nicht getrennt voneinander betrachten.</p>



<p class="wp-block-paragraph">Darum sollte man sich gleich zu Beginn die Fragen stellen: Was erwartet man? Was soll am Ende des Tages als Ergebnis stehen? Das Skalierungs-Framework selbst ist letztendlich nur ein methodisches Stützrad, um Organisationen Agilität beizubringen. Aber dazu in einem separaten Beitrag mehr.</p>



<p class="wp-block-paragraph">Dave West, CEO von Scrum.org, der zu verschiedenen Organisationen reist, um agile Praktiken zu beobachten, nannte in einer Publikation ein Forschungsteam, dass agile Methoden einsetzt, um mit Hilfe von Viren ein Heilmittel für genetische Blindheit zu entwickeln.</p>



<p class="wp-block-paragraph">In der Tat hat sich agiles Vorgehen außerhalb des Softwarebereichs durchgesetzt. Aber es ist nicht unbedingt das, was die Urheber des Manifests beabsichtigten.</p>



<h3 class="wp-block-heading">Der agile Industriekomplex</h3>



<p class="wp-block-paragraph">Viele argumentieren, dass &#8222;Faux Agile&#8220; und sein böser Zwilling &#8222;Dark Agile&#8220;, durch die Monetarisierung der agilen Ausbildung und Beratung, die gesamte Situation verschlimmern bzw. verschlimmert haben. Einige gehen sogar so weit, dass sie die Organisationen, die hinter dieser Monetarisierung stehen, als &#8222;The Agile Industrial Complex&#8220; bezeichnen.</p>



<p class="wp-block-paragraph">&#8222;Es gibt den agilen Cargo-Kult, bei dem man zwar die richtigen Dinge tut und sagt aber die grundlegenden Prinzipien nicht versteht bzw. schlichtweg nicht einhält. Ich selbst kann dies noch nicht so gut beurteilen, da ich noch nicht so viele agile Teams in Aktion gesehen habe, um eine global repräsentative Aussage zu treffen.</p>



<p class="wp-block-paragraph">Man kann es nennen, wie man will. Ob &#8222;faux&#8220;, &#8222;dark&#8220; oder &#8222;Cargo-Kult&#8220;, diese agilen Subversionen führen oft zu Situationen, die den Intentionen des Manifests zuwiderlaufen &#8211; Mikromanagement, Burnout-Rate, mangelnde Lieferfähigkeiten und das Festhalten an veralteten Prozessen bzw. Konzepten, statt an Prinzipien, sind die auffälligsten Beispiele. Selbst wenn man in dem Bereich ein Zertifikat erworben hat, führen Erfahrungen wie diese, die man in Zusammenhang mit agilen Methoden hatte, oft dazu, dass manche Menschen agilen Methoden ganz abschwören oder sie so umschreiben, dass sie ihre realen Erfahrungen damit widerspiegeln.</p>



<p class="wp-block-paragraph">Ron Jeffries, einer der Snowbird 17, hat versucht, diesen Irrwegen mit folgender Einschränkung zu begegnen:</p>



<p class="wp-block-paragraph"><em>“Here and in other writings, I use the quoted word ‘Agile’ to refer to the many instances, approaches, and processes that use the word ‘agile’ to describe themselves, but that do not necessarily adhere to the letter or spirit of Agile Software Development we wrote about in the Agile Manifesto. I will sometimes refer to ‘Faux Agile’ for emphasis, or to ‘Dark Agile’, which I use to describe so-called ‘Agile’ approaches that have really gone bad. I might refer to ‘Manifesto Agile’ to mean the core ideas from the Manifesto, in which I still believe.”</em></p>



<p class="wp-block-paragraph">&#8222;Hier und in anderen Schriften verwende ich das zitierte Wort &#8218;Agile&#8216;, um mich auf die vielen Instanzen, Ansätze und Prozesse zu beziehen, die das Wort &#8218;Agile&#8216; verwenden, um sich selbst zu beschreiben, die aber nicht unbedingt den Buchstaben oder dem Geist der Agilen Softwareentwicklung entsprechen, über die wir im Agilen Manifest geschrieben haben. Ich beziehe mich manchmal auf &#8222;Faux Agile&#8220;, um dies zu betonen, oder auf &#8222;Dark Agile&#8220;, womit ich sogenannte &#8222;agile&#8220; Ansätze beschreibe, die wirklich schlecht geworden sind. Mit &#8218;Manifest Agile&#8216; bezeichne ich die Kernideen des Manifests, an die ich immer noch glaube.&#8220;</p>



<p class="wp-block-paragraph">Jetzt kann man sich natürlich die Frage stellen, ob das Agile Manifest angesichts der weiten und manchmal fehlgeleiteten Verbreitung von Agile immer noch ein Dokument darstellt, auf das man sich beziehen sollte oder ob es nicht schon obsolet ist.</p>



<h3 class="wp-block-heading">Ist das Manifest noch relevant?</h3>



<p class="wp-block-paragraph">Nun, nachdem ich mich erst seit kurzer Zeit mit dieser Thematik auseinandersetze, mag meine Einschätzung nicht qualifiziert genug sein. Dennoch glaube ich, dass Zeit relativ ist. Und soweit es mir meine Recherchen und unzähligen Gespräche mit Mitstreitern sowie Entwicklerfreunden gestatten, bin ich davon überzeugt, ein recht gutes Bild von der Ist-Situation erhalten zu haben. Die Antwort lautet „Ja!“. Man kann sich meiner Meinung nach immer noch auf das Manifest beziehen!</p>



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



<p class="wp-block-paragraph">Die zwölf Prinzipien machen deutlich, dass die Anfänge des agilen Projektmanagements von einer Ablehnung traditionellen Projektmanagements mit intensiver Planung, Überwachung und Steuerung geprägt sind.</p>



<p class="wp-block-paragraph">Das agile Manifest beinhaltet vier Werte und zwölf Prinzipien. Damit ist es keine Checkliste, die man befolgt und abhakt. Vielmehr gilt es, diese Werte und Prinzipien im Team zu etablieren und damit ein agiles Mindset zu entwickeln.</p>



<p class="wp-block-paragraph">Damit lassen sich meiner Meinung nach komplexe Anwendungen sinnvoll und human, sowohl mit kleinen als auch großen Teams realisieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/">Agile Manifest &#8211; Die bessere Art der Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1199</post-id>	</item>
		<item>
		<title>SonarQube &#8211; Das Code-Qualitätsmanagement-Tool</title>
		<link>https://ceosbay.com/2023/03/17/erklaerung-sonarqube/</link>
					<comments>https://ceosbay.com/2023/03/17/erklaerung-sonarqube/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 17 Mar 2023 16:12:48 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[1061]]></category>
		<category><![CDATA[1998]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Checkstyle]]></category>
		<category><![CDATA[Cobol]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codebasis]]></category>
		<category><![CDATA[Entwicklungsprozess]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[FindBugs]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[IEEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Komplexität]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[PMD]]></category>
		<category><![CDATA[Prüfung]]></category>
		<category><![CDATA[Qube]]></category>
		<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Quelle]]></category>
		<category><![CDATA[Quelltext]]></category>
		<category><![CDATA[Rechner]]></category>
		<category><![CDATA[Richtlinien]]></category>
		<category><![CDATA[Schnittstellen]]></category>
		<category><![CDATA[Schulden]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sonar]]></category>
		<category><![CDATA[SonarQube]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[Sting]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Überprüfen]]></category>
		<category><![CDATA[Zyklomatisch]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1176</guid>

					<description><![CDATA[<p>SonarQube früher Sonar, ist eine Plattform für die statische Analyse und Bewertung der technischen Qualität von Quelltext bzw. Code. SonarQube analysiert den Quelltext hinsichtlich verschiedener Qualitätsmerkmale und stellt die Ergebnisse über eine Website dar. SonarQube &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/">SonarQube &#8211; Das Code-Qualitätsmanagement-Tool</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">SonarQube früher Sonar, ist eine Plattform für die statische Analyse und Bewertung der technischen Qualität von Quelltext bzw. Code. SonarQube analysiert den Quelltext hinsichtlich verschiedener Qualitätsmerkmale und stellt die Ergebnisse über eine Website dar. SonarQube ist in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> programmiert, unterstützt aber neben der Analyse von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Anwendungen mit entsprechenden Plugins unter anderem die Programmiersprachen <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, Groovy, Flex, PHP, PL/SQL, C#, Cobol und die des .Net-Frameworks.</p>



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



<p class="wp-block-paragraph"><strong>SonarQube besteht aus drei Komponenten</strong></p>



<ol class="wp-block-list" type="1">
<li>Einem Modul für Build-Management-Tools wie <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Apache Maven</a> oder Apache Ant. (Hauptsächlich für die Analyse des Quelltextes hinsichtlich verschiedener Qualitätsmerkmale.)</li>



<li>Einer Datenbank, für Speicherung der Ergebnisse der Qualitätsanalyse.</li>



<li>Einer Website für die visuelle Darstellung, Auswertung und das Management der Qualitätsanalyse-Ergebnisse.</li>
</ol>



<p class="wp-block-paragraph">Durch diese Architektur kann man sowohl eine Prüfung des Quelltextes auf dem Entwicklungsrechner ermöglichen als auch eine Einbindung von SonarQube in den Entwicklungsprozess gewährleisten. Dies unterstützt die Ermittlung der Qualitätsmetriken auf einem Build-Server für die kontinuierliche Integration.</p>



<p class="wp-block-paragraph">SonarQube analysiert den Quelltext hinsichtlich der Abdeckung durch Modultests, checkt den Quellcode nach doppeltem Code und in Bezug auf die Komplexität. Auch werden unter anderem potenzielle Fehler im Code, Kodier-Richtlinien als auch Kommentare überprüft.</p>



<h3 class="wp-block-heading">Modularer Aufbau und Erweiterungen</h3>



<p class="wp-block-paragraph">SonarQube ist modular aufgebaut und integriert selbst einige bekannte Entwicklungswerkzeuge zur Analyse der Codequalität, darunter PMD und Checkstyle für die Erkennung von doppeltem Code für die Prüfung von Kodier-Richtlinien. Damit wird unter anderem auch nach ineffizientem Code gesuche. FindBugs dient beispielsweise zum Aufdecken potenzieller Fehler sowie Surefire und Cobertura zur Messung der Qualität der Modultests.</p>



<p class="wp-block-paragraph">Diese Werkzeuge nutzen entsprechend ihrer Natur und Einsatzgebiete Metriken, um die jeweiligen Auswertungen bzw. Statistiken zu erzeugen. Der Name „Metrik“ trägt jedoch wenig Bedeutung von dem in sich, was eine Metrik ausmacht. Schlägt man nämlich nach woher der Name kommt, landet man im Lateinischen: „ars metrica„, die Lehre von den Maßen. Fragt man jedoch das Institute of Electrical and Electronics Engineers, was eine Softwaremetrik ist, erhält man folgende Antwort:</p>



<p class="wp-block-paragraph">„software quality metric: A function whose inputs are software data and whose output is a single numerical value that can be interpreted as the degree to which software possesses a given attribute that affects its quality.“ „Eine Softwarequalitätsmetrik ist eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet, der als Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit interpretierbar ist.“ – IEEE Standard 1061, 1998</p>



<p class="wp-block-paragraph">Folglich bedeutet dies, dass es sich bei einer Metrik am Ende des Tages um eine Funktion handelt, die für beliebige Eingaben Zahlen erzeugt. Die Beschaffenheit ist so, dass sie, nur so&nbsp;</p>



<p class="wp-block-paragraph">lange sie von derselben Funktion erzeugt wurden, vergleichbar sind. Dadurch kann man Rückschlüsse auf die Eingabe mit Hinblick auf die Funktion erzielen.</p>



<p class="wp-block-paragraph">Ein Beispiel dafür ist die McCabe-Metrik, auch zyklomatische Komplexität genannt. Diese sehr grundlegende Metrik berechnet die Anzahl der unterschiedlichen Pfade durch ein Stück Code. Die Formel ist relativ einfach: Es wird die Anzahl an Kontrollstrukturen wie if, while, case und boolescher Operatoren wie &amp;&amp; und || summiert und nochmals mit 1 addiert. Möchte man diese Information nochmals anhand eines Beispiels betrachten, sieht es folgendermaßen aus:</p>



<pre class="wp-block-code"><code>String nameDesWochenTags(int nr) {
  switch(nr) {
    case 1: return "Montag";
    case 2: return "Dienstag";
    case 3: return "Mittwoch";
    case 4: return "Donnerstag";
    case 5: return "Freitag";
    case 6: return "Samstag";
    case 7: return "Sonntag";
  }
  return "";
}</code></pre>



<p class="wp-block-paragraph">Diese relativ einfache Methode gibt den Namen eines Wochentages entsprechend seiner 1-indizierten Position innerhalb der Woche zurück. Ihre zyklomatische Komplexität beträgt 8. Zumal 1 + 7 x case. Dies ist ein verhältnismäßig hoher Wert. Ein Maximalwert von 10 gilt als allgemein akzeptiert und ausreichend erprobt. Um also die Komplexität dieser Methode zu verringern, findet eine Refaktorisierung statt, die folgendermaßen aussehen kann:</p>



<pre class="wp-block-code"><code>String nameDesWochenTags(int nr) {
  String&#91;] names = new String&#91;] {
    "Montag", "Dienstag", "Mittwoch",
    "Donnerstag", "Freitag", "Samstag",
    "Sonntag"
  };
  if(nr) &gt; 0 &amp;&amp; &lt;= names.length) {
    return names&#91;nr - 1];
  }
  return "";
}</code></pre>



<p class="wp-block-paragraph">Die zyklomatische Komplexität dieser Methode beträgt 3. Zumal 1 + 1 x if + 1 x &amp;&amp;. Durch den unterschiedlichen Ansatz kann man die Komplexität verringern. Dennoch ist es relativ unstrittig, dass die erste Version leichter zu verstehen ist.</p>



<p class="wp-block-paragraph">Will man nun also alle Tools gemeinsam benutzen, muss man alle konfigurieren und ihre Ergebnisse zusammenführen, damit sich ein Gesamtbild darstellen lässt. Außerdem kommt es dabei zwangsweise zu Dopplungen in ausgewerteten Metriken oder anderen Kennzahlen. PMD beispielsweise besitzt durch seinen relativ vagen Aufgabenbereich Überschneidungen im Hinblick auf Codestil mit checkstyle, während es aber auch genauso wie FindBugs auf toten Code achtet. An solchen und weiteren Stellen kann SonarQube Verbesserungen herbeiführen.</p>



<p class="wp-block-paragraph">Neben der visuellen Anzeige der Ergebnisse der einzelnen Bereiche, ermöglicht SonarQube das Drill-Down der Ergebnisse bis auf die einzelne Metrik und Codezeile sowie die Verknüpfung der einzelnen Metriken sowie die Darstellung ihrer historischen Entwicklung in einer recht übersichtlichen grafischen Oberfläche.</p>



<p class="wp-block-paragraph">Über einen ausgeklügelten Plugin-Mechanismus ist eine relativ einfache Integration von Erweiterungen möglich. Neben den Erweiterungen für die Analyse zusätzlicher Programmiersprachen gibt es Plugins für ergänzende Metriken, Governance, Schnittstellen zu Entwicklungsumgebungen, Visualisierungen, Integration sowie zur Berechnung der technischen Schuld(en).</p>



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



<p class="wp-block-paragraph">Ich arbeite noch nicht so lange mit SonarQube. Um genau zu sein, habe ich es mir erst heute das erste Mal angeschaut. Zusammenfassend kann ich folgendes sagen:</p>



<p class="wp-block-paragraph">Statistiken sind zwar interessant und es kann Spaß machen, sich diese anzuschauen, doch ist eine statische Codeanalyse erst dann wirklich vollständig, wenn ein Mindestmaß an Interpretation hineingeflossen ist.</p>



<p class="wp-block-paragraph">Die Codeanalyse liefert ein gutes Gefühl für die Codebasis. Erst so kann man fundierte Aussagen darüber treffen, welche Bereiche des Projekts besonders gefährdet, instabil oder verbesserungsfähig sind.</p>



<p class="wp-block-paragraph">Regelmäßige Analysen können die Teammotivation erhöhen. Eine positive Issuebilanz am Ende eines Sprints und aufwärtszeigende Historiengraphen sollten gute Treiber für eine Gruppe Entwickler und ein Beweis für die eigene Leistung sein.</p>



<p class="wp-block-paragraph">Alles in allem sind Analyseergebnisse immer gut als Argumentationsgrundlage. Mit Hilfe der Projekthistorie, die eine Auswahl gut darstellbarer Kennzahlen beinhaltet, kann man vor Kunden oder Entscheidern besser über ein eventuell nötiges technisches Release diskutieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/">SonarQube &#8211; Das Code-Qualitätsmanagement-Tool</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/17/erklaerung-sonarqube/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1176</post-id>	</item>
		<item>
		<title>JSON &#8211; Schönheit der einfachen Datenübertragung</title>
		<link>https://ceosbay.com/2023/03/14/erklaerung-json/</link>
					<comments>https://ceosbay.com/2023/03/14/erklaerung-json/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 14 Mar 2023 18:23:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[8]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Bibliotheken]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Echtzeit]]></category>
		<category><![CDATA[Gründer]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[ISO]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Notation]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Parser]]></category>
		<category><![CDATA[Socket]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1071</guid>

					<description><![CDATA[<p>JSON JavaScript Object Notation, ist ein offenes Standard-Datei- und Datenaustauschformat, dass menschenlesbaren Text zur Speicherung und Übertragung (Serialisierung) von Datenobjekten, einschließlich dem von Webanwendungen mit Servern ermöglicht. JSON ist von JavaScript abgeleitet und Programmiersprachen unabhängig. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/14/erklaerung-json/">JSON &#8211; Schönheit der einfachen Datenübertragung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">JSON <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> Object Notation, ist ein offenes Standard-Datei- und Datenaustauschformat, dass menschenlesbaren Text zur Speicherung und Übertragung (Serialisierung) von Datenobjekten, einschließlich dem von Webanwendungen mit Servern ermöglicht. JSON ist von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> abgeleitet und Programmiersprachen unabhängig. Parser und Generatoren existieren in allen verbreiteten Sprachen.&nbsp;</p>



<p class="wp-block-paragraph">Insbesondere trifft man auf JSON bei Webanwendungen und mobilen Apps in Verbindung mit <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, Ajax oder WebSockets zum Übertragen von Daten zwischen dem Client und dem Server.</p>



<h3 class="wp-block-heading">Serialisierung</h3>



<p class="wp-block-paragraph">Bei einer Abbildung von strukturierten Daten auf eine sequenzielle Darstellungsform, spricht man in der Informatik von einer Serialisierung. Die Serialisierung wird hauptsächlich für die Speicherung von Objekten in Dateien und für die Übertragung von Objekten über das Netzwerk bei verteilten Softwaresystemen verwendet.</p>



<p class="wp-block-paragraph">Übliche Speichermedien sind nur in der Lage, Datenströme zu speichern. Serialisierung für die Persistenz von Objekten. Hier wird der komplette Zustand des Objektes, inklusive aller referenzierten Objekte, in einen Datenstrom umgewandelt, der anschließend auf ein Speichermedium geschrieben wird.</p>



<p class="wp-block-paragraph">Nach der Serialisierung liegt ein Objekt mehrfach vor. Sowohl in der externen Darstellung, beispielsweise als Datei als auch im Arbeitsspeicher. Wird nach der Serialisierung eine Änderung am Objekt im Arbeitsspeicher vorgenommen, hat dieses keine Auswirkung auf das serialisierte Objekt in der externen Darstellung.</p>



<p class="wp-block-paragraph">Die Umkehrung der Serialisierung, also die Umwandlung eines Datenstroms in Objekte, bezeichnet man als Deserialisierung.</p>



<p class="wp-block-paragraph">In der Linguistik bezeichnet man mit Serialisierung die Art und Weise, wie hierarchische grammatikalische Strukturen in eine lineare Abfolge gebracht sind, damit sie in einer zeitlichen Abfolge sprachlicher Ausdrücke dargestellt werden kann. Diese Reihenfolge kann in verschiedenen Sprachen unterschiedlich sein.</p>



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



<p class="wp-block-paragraph">JSON entstand aus der Notwendigkeit heraus, ein zustandsloses (stateless) Echtzeit-Kommunikationsprotokoll zwischen Server und Browser zu haben, ohne Browser-PlugIns wie Flash oder Java-Applets zu verwenden, die sich Anfang der 2000er Jahre als vorherrschende Methoden, im Einsatz befanden.</p>



<p class="wp-block-paragraph">Crockford spezifizierte und verbreitete als Erster das JSON-Format. Das Akronym stammt von State Software, ein von Crockford und anderen im März 2001 gegründetes Unternehmen. Die Gründer hatten sich geeinigt, ein System zu entwickeln, dass Standard-Browser-Funktionen nutzte und eine Abstraktionsschicht für Web-Entwickler bereitstellte, um zustandsbehaftete (abstraction layer) Web-Anwendungen zu erstellen, die über eine dauerhafte Duplex-Verbindung zu einem Web-Server verfügten. Sie hielten dafür zwei Hypertext Transfer Protocol (https)-Verbindungen offen und bauten die Verbindung wieder auf, bevor die Standard-Browser-Timeouts eintraten, wenn kein Datenaustausch stattfand. Die Gründer stimmten darüber ab, ob das Datenformat JSML (<a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> Markup Language) oder JSON (<a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> Object Notation) genannt und unter welcher Lizenz die Verfügungstellung stattfinden sollte. Die Website JSON.org ging dann im Jahr 2002 online. Im Dezember 2005 begann Yahoo! damit, die ersten Webdienste (Web-Services) in JSON anzubieten.</p>



<h3 class="wp-block-heading">Vorgänger geht auf ein Spiel für Kinder</h3>



<p class="wp-block-paragraph">Ein Vorläufer der JSON-Bibliotheken wurde in einem Projekt für Kinder, einem digitalen Trading-Spiel namens Cartoon Orbit bei Communities.com (Die Gründer von State hatten alle zuvor bei diesem Unternehmen gearbeitet), für Cartoon Network verwendet, dass ein browserseitiges Plugin mit einem proprietären Nachrichtenformat zur Manipulation von DHTML-Elementen nutzte (Dieses System gehört übriges 3DO). Nach der Entdeckung der frühen Ajax-Fähigkeiten verwendeten digiGroups, Noosh und andere, Frames, um Informationen in das visuelle Feld des Browsers zu übertragen, ohne den visuellen Kontext einer Webanwendung aktualisieren zu müssen. So hatten sie Rich-Web-Anwendungen in Echtzeit erstellt, die nur die Standard https-, <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>&#8211; und <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Fähigkeiten von Netscape 4.0.5+ und IE 5+ verwendeten. Crockford fand darauf heraus, dass <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> als objektbasiertes Nachrichtenformat für ein solches System verwendet werden kann. Das System wurde später an Sun Microsystems, Amazon.com und EDS verkauft.</p>



<p class="wp-block-paragraph">JSON basiert teilweise auf <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> und wird häufig auch mit <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> verwendet. Dennoch ist es ein sprachunabhängiges Datenformat. Code zum Parsen und Generieren von JSON-Daten ist in vielen Programmiersprachen leicht verfügbar. Auf der JSON-Website sind die JSON-Bibliotheken nach Sprachen geordnet.</p>



<p class="wp-block-paragraph">Im Oktober 2013 veröffentlichte Ecma International die erste Ausgabe seines JSON-Standards ECMA-404. Im selben Jahr verwendete RFC 7158 ECMA-404 als Referenz. 2014 wurde RFC 7159 zur Hauptreferenz für die Verwendung von JSON im Internet und löste RFC 4627 sowie RFC 7158 ab (wobei ECMA-262 und ECMA-404 als Hauptreferenzen beibehalten wurden). Im November 2017 veröffentlichte ISO/IEC JTC 1/SC 22 ISO/IEC 21778:2017 als internationalen Standard. Am 13. Dezember 2017 hat die Internet Engineering Task Force RFC 7159 durch die Veröffentlichung von RFC 8259, der aktuellen Version des Internet-Standards STD 90, überholt (ersetzt).</p>



<p class="wp-block-paragraph">Crockford fügte der JSON-Lizenz eine Klausel hinzu, die besagt, dass &#8222;die Software für das Gute, nicht für das Böse verwendet werden soll&#8220;, um die JSON-Bibliotheken zu öffnen und sich gleichzeitig über Unternehmensjuristen und diejenigen lustig zu machen, die übermäßig pedantisch sind. Ironischer- und lustigerweise führte diese Klausel zu Konflikten der JSON-Lizenz mit anderen <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Lizenzen, da <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Software und freie Software in der Regel keine Einschränkungen hinsichtlich des Verwendungszwecks implizieren.</p>



<h3 class="wp-block-heading">Wie ist JSON aufgebaut?</h3>



<p class="wp-block-paragraph">Die Daten können beliebig verschachtelt werden, beispielsweise ist ein Array (indizierte Liste) von Objekten möglich, die wiederum Arrays oder Objekte enthalten. Als Zeichenkodierung benutzt JSON standardmäßig UTF-8. Auch UTF-16 und UTF-32 werden unterstützt.</p>



<h3 class="wp-block-heading">JSON und die Typen von Elementen</h3>



<ul class="wp-block-list">
<li>null = Nullwert (Wird durch das Schlüsselwort null dargestellt.)</li>



<li>Boolean = Boolescher Wert (Wird durch die Schlüsselwörter true und false dargestellt. Dies sind keine Zeichenketten. Sie werden daher, wie null, nicht in Anführungszeichen gesetzt.</li>



<li>Number = Zahl (Ist eine Folge der Ziffern 0–9. Diese Folge kann durch ein negatives Vorzeichen &#8211; eingeleitet und durch einen Dezimalpunkt . unterbrochen sein. Die Zahl kann durch die Angabe eines Exponenten e oder E ergänzt werden, dem ein optionales Vorzeichen + oder &#8211; und eine Folge der Ziffern 0–9 folgt.)</li>



<li>String = Zeichenkette (Eine Folge von null oder mehr Unicode-Zeichen. Es beginnt und endet mit doppelten geraden Anführungszeichen (&#8222;). Es kann Unicode-Zeichen und durch \ eingeleitete Escape-Sequenzen enthalten.</li>



<li>Array = Anordnung (Beginnt mit [ und endet mit ]. Es enthält eine durch Kommata geteilte, indizierte Liste von Elementen gleichen oder verschiedenen Typen. Leere Arrays sind ebenfalls zulässig.</li>



<li>Object = Objekt (Beginnt mit { und endet mit }. Es enthält eine durch Kommata geteilte, ungeordnete Liste von Eigenschaften. Objekte ohne Eigenschaften („leere Objekte“) sind ebenfalls zulässig. Das Objekt besteht aus einem Schlüssel und einem Wert, getrennt durch einen Doppelpunkt (Schlüssel : Wert). Die Schlüssel sollten eindeutig sein, da unterschiedliche Parser mit mehrfach vorkommenden Schlüsseln unterschiedlich umgehen. Während ECMA-404 keine Eindeutigkeit voraussetzt, fordert RFC 7159, dass Schlüssel innerhalb eines Objekts eindeutig sind. Folglich ist der Schlüssel eine Zeichenkette und der Wert ein beliebiges Element.</li>
</ul>



<p class="wp-block-paragraph">Nicht signifikante Leerraum-Zeichen sind erlaubt, also Leerzeichen (Unicode U+0020), horizontale Tabs (U+0009), Zeilenumbrüche mittels LF und / oder CR (U+000D und U+000A). Diese Zeichen werden außerhalb von Zeichenketten bei der Interpretation ignoriert.</p>



<h3 class="wp-block-heading">Die Grenzen von JSON</h3>



<p class="wp-block-paragraph">JSON unterstützt nicht alle von JavaScript unterstützten Datentypen. Bei nicht unterstützten Datentypen wird folgendermaßen serialisiert:</p>



<ul class="wp-block-list">
<li>NaN, Infinity und -Infinity werden zu null serialisiert.</li>



<li>Date-Objekte werden in eine Zeichenkette konvertiert, die einer Datumsformatbeschreibung nach ISO-8601 genügt.</li>



<li>Function-, RegExp- und Error-Objekte werden verworfen.</li>
</ul>



<h3 class="wp-block-heading">Das folgende Beispiel zeigt eine mögliche JSON-Darstellung zur Beschreibung meiner Person.</h3>



<pre class="wp-block-code"><code>{
  "Unternehmen": "COEZBAY",
  "Nummer": "2023-23-23-777",
  "Waehrung": "BTC",
  "Inhaber": "CEO"
  {
    "Name": "Oezbay",
    "Vorname": "Cagatay",
    "maennlich": true,
    "Hobbys": &#91;"IT", "Schach", "Basketball"],
    "Alter": 38,
    "Kinder": &#91;],
    "Partner": null
  }
}</code></pre>



<h3 class="wp-block-heading">Das JSON-Schema</h3>



<p class="wp-block-paragraph">Das JSON-Schema gibt ein JSON-basiertes Format an, um die Struktur von JSON-Daten für die Validierung, Dokumentation und Interaktionssteuerung zu definieren. Es enthält einen Contract für die JSON-Daten, die für eine bestimmte Anwendung erforderlich sind und wie diese Daten geändert werden können.</p>



<p class="wp-block-paragraph">Das Schema basiert auf den Konzepten des <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Schemas, ist jedoch JSON-basiert. Wie in XSD (<a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> Schema Definition) können dieselben Serialisierungs- und Deserialisierungsprogramme sowohl für das Schema als auch für die Daten verwendet werden. Es ist selbstbeschreibend und in einem Internet-Entwurf der <a href="https://www.ietf.org" target="_blank" rel="noreferrer noopener">Internet Engineering Task Force</a>&nbsp;festgelegt. Für verschiedene Programmiersprachen stehen mehrere Validatoren mit jeweils unterschiedlichen Konformitätsstufen zur Verfügung.</p>



<h3 class="wp-block-heading">Der Vergleich mit XML</h3>



<p class="wp-block-paragraph">Sowohl JSON als auch <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> beschreiben die Struktur eines Datensatzes. Der Datensatz kann weitere Datensätze enthalten. Dadurch sind beliebig tief verschachtelte Strukturen möglich.</p>



<p class="wp-block-paragraph">In XML sind die einzelnen Knoten der Datenstruktur benannt, während die Knoten in JSON unbenannt bleiben.</p>



<p class="wp-block-paragraph">Einfache Zeichenketten in <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> können sowohl als Attribut eines Elements als auch als eigenständiges Element beschrieben sein. In JSON gibt es diese Unterscheidung nicht. Diese in den meisten Fällen irrelevante Flexibilität führt dazu, dass sich die Struktur von <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Dokumenten häufig unnötigerweise unterscheidet.</p>



<p class="wp-block-paragraph">Sowohl für JSON als auch für <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> gibt es Beschreibungssprachen, um weiter einzugrenzen, wie „gültige“ Dokumente auszusehen haben. Ganz im Gegensatz zu „wohlgeformten“ Dokumenten.</p>



<p class="wp-block-paragraph">Die Syntax von JSON ist einfacher gestaltet und erscheint daher oft lesbarer und insbesondere leichter schreibbar. In der Regel produziert JSON auch einen geringeren Overhead im Vergleich zu <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>.</p>



<p class="wp-block-paragraph">Sowohl JSON als auch <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> müssen von einem speziellen Parser eingelesen werden. Traditionell ist jedes wohlgeformte JSON-Dokument ein gültiger <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Ausdruck. Das unaufmerksame Interpretieren von JSON-Dokumenten mit eval() führt jedoch zu Sicherheitslücken, die nicht zu unterschätzen sind.</p>



<p class="wp-block-paragraph">Sowohl JSON als auch <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> sind nicht gut zum Repräsentieren von Binärdaten geeignet, da beide Datenformate als Grundelement zeichenbasiert sind und nicht bytebasiert.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/14/erklaerung-json/">JSON &#8211; Schönheit der einfachen Datenübertragung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/14/erklaerung-json/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1071</post-id>	</item>
		<item>
		<title>Flow &#8211; Anwendungen einfach auf die Blockchain</title>
		<link>https://ceosbay.com/2023/03/05/erklaerung-flow/</link>
					<comments>https://ceosbay.com/2023/03/05/erklaerung-flow/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 05 Mar 2023 11:03:00 +0000</pubDate>
				<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[Blockchain Games]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Krypto]]></category>
		<category><![CDATA[Metaverse]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[NFT]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[3]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Block]]></category>
		<category><![CDATA[Chain]]></category>
		<category><![CDATA[Concept]]></category>
		<category><![CDATA[Crypto]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[ETH]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Gas]]></category>
		<category><![CDATA[Gebühren]]></category>
		<category><![CDATA[Industrie]]></category>
		<category><![CDATA[Kryptowährung]]></category>
		<category><![CDATA[Kryptowährungen]]></category>
		<category><![CDATA[Kunst]]></category>
		<category><![CDATA[Kunstwerke]]></category>
		<category><![CDATA[Layer]]></category>
		<category><![CDATA[PoS]]></category>
		<category><![CDATA[PoW]]></category>
		<category><![CDATA[Proof]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[Web3]]></category>
		<category><![CDATA[Werke]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1296</guid>

					<description><![CDATA[<p>Flow ist ein Begriff, den man derzeit im Zusammenhang mit der Web3-Technologie häufiger hört. Klar zu unterscheiden von Flow Framework der UC Berkeley aber dies thematisiere ich in einem anderen Beitrag ;). Web3 ist eine &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/05/erklaerung-flow/">Flow &#8211; Anwendungen einfach auf die Blockchain</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Flow ist ein Begriff, den man derzeit im Zusammenhang mit der Web3-Technologie häufiger hört. Klar zu unterscheiden von Flow <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> der UC Berkeley aber dies thematisiere ich in einem anderen Beitrag ;). Web3 ist eine neue Generation des Internets, die auf <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>&#8211; und dezentralisierten Technologien basiert. Es verspricht, das aktuelle Modell des Internets zu revolutionieren und neue Anwendungen und Geschäftsmodelle zu schaffen. Im Kontext von Web3 bezieht sich der Begriff Flow auf eine Plattform, die speziell für die Erstellung von Anwendungen auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> ausgelegt ist. Darüber hinaus soll es Entwicklern eine einfache Möglichkeit geben, Anwendungen auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> zu erstellen.</p>



<h3 class="wp-block-heading">Wer hat es erfunden?</h3>



<p class="wp-block-paragraph">Entwickelt hat es Dapper Labs, einem in Kanada ansässigen Unternehmen, dass im Jahr 2018 gegründet wurde. Das Unternehmen ist ein Pionier in der Entwicklung von <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>-Technologien und hat sich auf die Erstellung von dezentralen Anwendungen (<a href="https://ceosbay.com/2022/12/13/erklaerung-dapp/" target="_blank" rel="noreferrer noopener">DApps</a>) spezialisiert. Unter anderem ist es besonders bekannt für die Entwicklung von <a href="https://ceosbay.com/2022/12/14/erklaerung-cryptokitties/" target="_blank" rel="noreferrer noopener">CryptoKitties</a>, einer der ersten Anwendungen auf der <a href="https://ceosbay.com/2022/11/02/erklaerung-kryptowaehrung-ethereum-ether/" target="_blank" rel="noreferrer noopener">Ethereum</a>&#8211;<a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>, die die Verwendung von Non-Fungible Tokens (<a href="https://ceosbay.com/2022/11/04/erklaerung-nft/" target="_blank" rel="noreferrer noopener">NFTs</a>) populär machte.</p>



<p class="wp-block-paragraph">Dapper Labs hat sich auch als Vorreiter in der Entwicklung von <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>-Technologien im Bereich des Sports etabliert. Das Unternehmen hat Partnerschaften mit der National Basketball Association (NBA) und der Union Cycliste Internationale (UCI) geschlossen, um <a href="https://ceosbay.com/2022/11/04/erklaerung-nft/" target="_blank" rel="noreferrer noopener">NFTs</a> und andere dezentrale Anwendungen im Sport zu fördern. Das Unternehmen arbeitet auch mit verschiedenen Künstlern und Unterhaltungsunternehmen zusammen, um innovative Anwendungen auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> zu erstellen.</p>



<p class="wp-block-paragraph">Insgesamt hat Dapper Labs eine führende Rolle bei der Entwicklung von <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>-Technologien und der Erstellung von Anwendungen auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> übernommen. Das Unternehmen hat eine breite Palette von Anwendungen entwickelt, die auf verschiedenen <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>-Plattformen wie <a href="https://ceosbay.com/2022/11/02/erklaerung-kryptowaehrung-ethereum-ether/" target="_blank" rel="noreferrer noopener">Ethereum</a> und Flow laufen. Es hat auch Partnerschaften mit verschiedenen Branchen und Institutionen geschlossen, um die Akzeptanz und Verbreitung von <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>-Technologien zu fördern.</p>



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



<p class="wp-block-paragraph">Flow verwendet ein einzigartiges Modell, das darauf abzielt, die Skalierbarkeit von Anwendungen auf der Blockchain zu verbessern. Es verwendet eine Architektur, die man als &#8222;Layer-1&#8220; bezeichnet, um die Geschwindigkeit und Leistung von Anwendungen zu verbessern. Dies erreicht man durch die Verwendung eines neuen Konsensmechanismus, den man als &#8222;<a href="https://ceosbay.com/2022/12/11/erklaerung-proof-of-stake-pos/" target="_blank" rel="noreferrer noopener">Proof of Stake</a>&#8220; bezeichnet. <a href="https://ceosbay.com/2022/12/11/erklaerung-proof-of-stake-pos/" target="_blank" rel="noreferrer noopener">Proof of Stake</a> (<a href="https://ceosbay.com/2022/12/11/erklaerung-proof-of-stake-pos/" target="_blank" rel="noreferrer noopener">PoS</a>) ist ein alternatives Konsensmodell, dass man anstelle von <a href="https://ceosbay.com/2022/12/12/erklaerung-proof-of-work-pow/" target="_blank" rel="noreferrer noopener">Proof of Work</a> (<a href="https://ceosbay.com/2022/12/12/erklaerung-proof-of-work-pow/" target="_blank" rel="noreferrer noopener">PoW</a>) verwendet. </p>



<p class="wp-block-paragraph">Man hat die Flow-Plattform speziell für die Erstellung von Non-Fungible Tokens (<a href="https://ceosbay.com/2022/11/04/erklaerung-nft/" target="_blank" rel="noreferrer noopener">NFTs</a>) entwickelt, die in der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>-Industrie immer mehr an Beliebtheit gewinnen. <a href="https://ceosbay.com/2022/11/04/erklaerung-nft/" target="_blank" rel="noreferrer noopener">NFTs</a> sind digitale Assets, auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> und einzigartig sind. Man verwendet sie in der Regel für digitale Kunstwerke, Musikstücke, Videos und andere digitale Inhalte bzw. Assets.</p>



<p class="wp-block-paragraph">Die Flow-Plattform hat eine Reihe von Funktionen, die sie von anderen <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>-Plattformen unterscheiden. Es ist benutzerfreundlich, skalierbar und verhältnismäßig sicher. Die Plattform verwendet auch ein Modell für die Verwaltung von Transaktionsgebühren, die man als &#8222;Gasgebühren&#8220; bezeichnet. Gasgebühren sind ein Mechanismus, die man dazu verwendet, um die Verarbeitung von Transaktionen auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> zu priorisieren.</p>



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



<p class="wp-block-paragraph">Insgesamt ist Flow eine vielversprechende Plattform für die Erstellung von Anwendungen auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a>. Es bietet Entwicklern eine benutzerfreundliche Umgebung, die auf die Erstellung von Non-Fungible Tokens spezialisiert ist. Mit der Skalierbarkeit, Sicherheit und Leistung von Flow können Entwickler Anwendungen erstellen, die in der Lage sind, auf der <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> zu wachsen und zu gedeihen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/05/erklaerung-flow/">Flow &#8211; Anwendungen einfach auf die Blockchain</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/05/erklaerung-flow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1296</post-id>	</item>
		<item>
		<title>React &#8211; Die Bibliothek für eine dynamische und interaktive Benutzeroberfläche</title>
		<link>https://ceosbay.com/2022/12/21/erklaerung-react/</link>
					<comments>https://ceosbay.com/2022/12/21/erklaerung-react/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 21 Dec 2022 21:47:05 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bibliothek]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSX]]></category>
		<category><![CDATA[Leichtgewicht]]></category>
		<category><![CDATA[LightWeight]]></category>
		<category><![CDATA[Lizenz]]></category>
		<category><![CDATA[Node]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Performant]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Schnell]]></category>
		<category><![CDATA[Streit]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1017</guid>

					<description><![CDATA[<p>React wird häufig im Zusammenhang mit Web-UI-Frameworks wie Vue.js oder Angular genannt – tatsächlich handelt es sich bei React aber nicht um ein Framework im eigentlichen Sinn. Stattdessen ist es eine vergleichsweise kleine und einfache &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/21/erklaerung-react/">React &#8211; Die Bibliothek für eine dynamische und interaktive Benutzeroberfläche</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">React wird häufig im Zusammenhang mit Web-UI-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie Vue.js oder Angular genannt – tatsächlich handelt es sich bei React aber nicht um ein <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> im eigentlichen Sinn. Stattdessen ist es eine vergleichsweise kleine und einfache Programmbibliothek zum Rendern webbasierter grafischer Oberflächen. Anders als UI-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> verzichtet es auf Konzepte für Datenbindung, Routing, Dependency-Injection und Ähnliches. Das macht React zunächst einmal viel &#8222;leichtgewichtiger&#8220; als viele der Alternativen.</p>



<p class="wp-block-paragraph">Das Modell von React verspricht durch die Konzepte des unidirektionalen Datenflusses und des Virtual DOM den einfachen, aber trotzdem performanten Aufbau komplexer Anwendungen. React bildet aus diesem Grund die Basis für Single-Page-Webanwendungen, kann jedoch auch mit <a href="https://ceosbay.com/2022/11/11/node-js-mit-npm-auf-macos/" target="_blank" rel="noreferrer noopener">Node.js</a> serverseitig (vor-)gerendert werden.</p>



<p class="wp-block-paragraph">Ja, im Jahr 2013 war dies schon etwas ziemlich Gutes. Vor allem im Vergleich zum damaligen Angular, dass zwar komfortabel zu benutzen war aber aufgrund einer mäßigen Performance und der fehlenden Skalierbarkeit kaum in der Lage war, komplexe UIs abzubilden. Genau diese Probleme hat React damals bereits adressiert und führte zu diesem Zweck verschiedene Konzepte aus der funktionalen Programmierung in die UI-Welt ein.</p>



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



<p class="wp-block-paragraph">React ist die Entwicklung von Jordan Walke, einem Softwareentwickler bei Facebook. Erstmals 2011 für den Facebooks Newsfeed und später für Instagram eingesetzt. Facebook kündigte 2013 an, dass die Weiterführung des Projekts zukünftig als <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a> stattfindet. Im Oktober 2014 wurde die Lizenz von der anfangs Apache-Lizenz auf die BSD-Lizenz mit zusätzlicher Patentlizenz geändert, welche den Widerruf der Lizenz bei Klagen gegen oder bei Patentstreitigkeiten mit Facebook vorbehält.</p>



<p class="wp-block-paragraph">Diese unkonventionelle Klausel führte zu einer kontroversen Diskussion. Eine Umformulierung dieser Patentklausel im April 2015 beendete die Auseinandersetzung nicht. Im Juli 2017 kündigte die Apache Software Foundation an, keine Apache-Projekte mehr mit dieser Zusatzlizenz zu erlauben. Entgegen anfänglichen Angaben, nicht von der Klausel abrücken zu wollen, veröffentlichte Facebook im September 2017 React in der Version 16.0.0 unter der MIT-Lizenz. Vielleicht werde ich in der Zukunft noch die verschiedenen Lizenzmodelle etwas näher erläutern.</p>



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



<p class="wp-block-paragraph">Wie bereits erwähnt, ist es eine sehr spezialisierte und leichtgewichtige Programmbibliothek, sodass man es als einen Baustein von vielen betrachten kann. Da man React zwingend mit anderen Modulen kombinieren muss, um eine vollständige Anwendung zu entwickeln, kann React nicht zu einer systemrelevanten Größe heranwachsen. Gleichzeitig bildet diese Tatsache auch den Nachteil. Bei Angular hat man beispielsweise weniger Aufwand. Doch über Angular werde ich noch später schreiben.</p>



<p class="wp-block-paragraph">Nicht zu vergessen ist die Integration mit <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>. Anders als zum Beispiel in Vue.js oder Angular gibt es in React keinen proprietären Weg, um eine Schleife, eine Bedingung oder eine Datenbindung herzustellen. Stattdessen verwendet React hierfür schlichtweg die Konstrukte, die es in <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> ohnehin gibt. Alles in allem ist es eine gute Lösung, mit einer eigenen Philosophie und einer relativ hohen Einstiegshürde, da man sich mit JSX auseinandersetzen muss. Ja, auch ich werde mich in einem zukünftigen Beitrag damit auseinandersetzen 🙂 Aber Einstiegshürden sind ja in der Regel relativ und es lässt sich darüber diskutieren, ob der Einstieg nun leicht oder schwer ist 😉</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/21/erklaerung-react/">React &#8211; Die Bibliothek für eine dynamische und interaktive Benutzeroberfläche</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/21/erklaerung-react/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1017</post-id>	</item>
	</channel>
</rss>
