<?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>Agile Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/agile/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 07:27:06 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Agile Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/agile/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>JQL (Jira Query Language) &#8211; Eine Abfragesprache</title>
		<link>https://ceosbay.com/2025/02/04/jql-jira-query-language-eine-abfragesprache/</link>
					<comments>https://ceosbay.com/2025/02/04/jql-jira-query-language-eine-abfragesprache/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 04 Feb 2025 19:39:00 +0000</pubDate>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Business & Strategie]]></category>
		<category><![CDATA[Datenwissenschaft]]></category>
		<category><![CDATA[Abfragesprache]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Backlog-Management]]></category>
		<category><![CDATA[Bug-Tracking]]></category>
		<category><![CDATA[Datenabfragen]]></category>
		<category><![CDATA[Datenfilterung]]></category>
		<category><![CDATA[Datenvisualisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[Issue-Tracking]]></category>
		<category><![CDATA[IT-Management]]></category>
		<category><![CDATA[IT-Support]]></category>
		<category><![CDATA[Jira]]></category>
		<category><![CDATA[JQL]]></category>
		<category><![CDATA[Logische Operatoren]]></category>
		<category><![CDATA[Produktentwicklung]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Projektsteuerung]]></category>
		<category><![CDATA[Query Optimization]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software-Testing]]></category>
		<category><![CDATA[Software-Wartung]]></category>
		<category><![CDATA[Sprint-Management]]></category>
		<category><![CDATA[Sprint-Planung]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Suchabfragen]]></category>
		<category><![CDATA[Task Management]]></category>
		<category><![CDATA[Ticket-Analyse]]></category>
		<category><![CDATA[Ticketing-System]]></category>
		<category><![CDATA[Workflow-Automatisierung]]></category>
		<category><![CDATA[Workflows]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=3975</guid>

					<description><![CDATA[<p>Jira ist eines der am weitesten verbreiteten Tools für das Projektmanagement und die Fehlerverfolgung. Eine der leistungsstärksten Funktionen von Jira ist die Jira Query Language (JQL). Sie ermöglicht es Benutzern, gezielt nach Aufgaben und Vorgängen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/02/04/jql-jira-query-language-eine-abfragesprache/">JQL (Jira Query Language) &#8211; Eine Abfragesprache</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Jira ist eines der am weitesten verbreiteten Tools für das Projektmanagement und die Fehlerverfolgung. Eine der leistungsstärksten Funktionen von Jira ist die Jira Query Language (JQL). Sie ermöglicht es Benutzern, gezielt nach Aufgaben und Vorgängen zu suchen. In diesem Blog-Beitrag erklären wir, was JQL ist, wie es funktioniert und welche Möglichkeiten es bietet.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="871" height="871" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/JQL.jpg?resize=871%2C871&#038;ssl=1" alt="JQL" class="wp-image-3984" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/JQL.jpg?w=1024&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/JQL.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/JQL.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/JQL.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



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



<p class="wp-block-paragraph">JQL ist eine speziell für Jira entwickelte Abfragesprache. Es lassen sich damit komplexe Suchanfragen erstellen, um bestimmte Vorgänge in Jira zu finden. Im Vergleich zur einfachen Suchfunktion bietet es eine deutlich höhere Flexibilität.</p>



<p class="wp-block-paragraph">Es kombiniert Schlüsselwörter, Felder, Operatoren und Funktionen. Dadurch können Benutzer spezifische Kriterien für ihre Suche definieren.</p>



<p class="wp-block-paragraph">Dementsprechend ist die Jira Query Language <strong>keine</strong> vollwertige Programmiersprache, sondern eine <strong>Abfragesprache</strong>. Während Programmiersprachen wie <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> oder <a href="https://ceosbay.com/2022/12/20/erklaerung-python/">Python</a> vollständige Kontrollstrukturen, Variablenzuweisungen und Schleifen enthalten, dient JQL ausschließlich dazu, Daten innerhalb von Jira zu suchen und zu filtern. Es ähnelt eher <a href="https://ceosbay.com/2022/10/29/structured-query-language-sql/">SQL</a> in Bezug auf seine Suchmöglichkeiten, hat aber keinen Zugriff auf komplexe Programmierlogik oder externe <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a>.</p>



<h2 class="wp-block-heading">Grundlegende Syntax von JQL</h2>



<p class="wp-block-paragraph">Die grundlegende Syntax einer JQL-Abfrage setzt sich aus drei Elementen zusammen:</p>



<ul class="wp-block-list">
<li><strong>Feld</strong>: Das Jira-Feld, das abgefragt wird (z.B. <code>status</code>, <code>assignee</code>, <code>priority</code>).</li>



<li><strong>Operator</strong>: Bestimmt die Beziehung zwischen dem Feld und dem Wert (z.B. <code>=</code>, <code>!=</code>, <code>IN</code>).</li>



<li><strong>Wert</strong>: Der Wert, nach dem gesucht wird (z.B. <code>Open</code>, <code>High</code>, <code>John Doe</code>).</li>
</ul>



<h3 class="wp-block-heading">Einfache JQL-Abfragen</h3>



<p class="wp-block-paragraph">Einige Beispiele für einfache Abfragen:</p>



<ol class="wp-block-list">
<li>Um alle offenen Aufgaben anzuzeigen:</li>
</ol>



<pre class="wp-block-code"><code>   status = Open</code></pre>



<ol start="2" class="wp-block-list">
<li>Wenn man Aufgaben eines bestimmten Benutzers finden möchte:</li>
</ol>



<pre class="wp-block-code"><code>   assignee = "Max Mustermann"</code></pre>



<ol start="3" class="wp-block-list">
<li>Falls man nur Aufgaben mit hoher Priorität anzeigen möchte:</li>
</ol>



<pre class="wp-block-code"><code>   priority = High</code></pre>



<ol start="4" class="wp-block-list">
<li>Wenn man alle Aufgaben eines bestimmten Projekts sucht:</li>
</ol>



<pre class="wp-block-code"><code>   project = "Marketing"</code></pre>



<h2 class="wp-block-heading">Erweiterte JQL-Funktionen</h2>



<p class="wp-block-paragraph">Es kann nicht nur einfache, sondern auch komplexe Abfragen durchführen. Dabei kommen logische Operatoren, Vergleichsoperatoren und Funktionen zum Einsatz.</p>



<h3 class="wp-block-heading">Logische Operatoren</h3>



<ul class="wp-block-list">
<li><strong>AND</strong>: Verknüpft mehrere Bedingungen, sodass beide erfüllt sein müssen.</li>
</ul>



<pre class="wp-block-code"><code>  status = Open AND priority = High</code></pre>



<ul class="wp-block-list">
<li><strong>OR</strong>: Eine der Bedingungen muss erfüllt sein.</li>
</ul>



<pre class="wp-block-code"><code>  status = Open OR status = In Progress</code></pre>



<ul class="wp-block-list">
<li><strong>NOT</strong>: Negiert eine Bedingung.</li>
</ul>



<pre class="wp-block-code"><code>  status != Closed</code></pre>



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



<ul class="wp-block-list">
<li><code>=</code> : Ist gleich</li>



<li><code>!=</code> : Ist ungleich</li>



<li><code>></code> : Größer als</li>



<li><code>&lt;</code> : Kleiner als</li>



<li><code>>=</code> : Größer oder gleich</li>



<li><code>&lt;=</code> : Kleiner oder gleich</li>
</ul>



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



<pre class="wp-block-code"><code>created &gt;= "2024-01-01" AND created &lt;= "2024-02-01"</code></pre>



<h3 class="wp-block-heading">Listen-Operatoren</h3>



<ul class="wp-block-list">
<li><strong>IN</strong>: Vergleicht mit einer Liste von Werten.</li>
</ul>



<pre class="wp-block-code"><code>  status IN (Open, "In Progress", Reopened)</code></pre>



<ul class="wp-block-list">
<li><strong>NOT IN</strong>: Ausschluss einer Liste von Werten.</li>
</ul>



<pre class="wp-block-code"><code>  priority NOT IN (Low, Medium)</code></pre>



<h3 class="wp-block-heading">Funktionen in JQL</h3>



<p class="wp-block-paragraph">Es bietet einige eingebaute Funktionen, die flexiblere Suchanfragen ermöglichen:</p>



<ul class="wp-block-list">
<li><strong>startOfDay()</strong>: Beginn des aktuellen Tages</li>



<li><strong>endOfWeek()</strong>: Ende der aktuellen Woche</li>



<li><strong>now()</strong>: Aktueller Zeitpunkt</li>



<li><strong>updated()</strong>: Zeigt an, wann ein Vorgang zuletzt aktualisiert wurde</li>
</ul>



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



<pre class="wp-block-code"><code>updated &gt;= startOfDay()</code></pre>



<p class="wp-block-paragraph">Diese Abfrage liefert alle Vorgänge, deren Aktualisierung heute stattgefunden hat.</p>



<h2 class="wp-block-heading">Praxisbeispiele für JQL</h2>



<h3 class="wp-block-heading">1. Alle Aufgaben, deren Erstellung in den letzten 7 Tagen erfolgt ist</h3>



<pre class="wp-block-code"><code>created &gt;= -7d</code></pre>



<h3 class="wp-block-heading">2. Alle abgeschlossenen Aufgaben eines bestimmten Benutzers</h3>



<pre class="wp-block-code"><code>status = Done AND assignee = "Max Mustermann"</code></pre>



<h3 class="wp-block-heading">3. Aufgaben mit Kommentaren in den letzten 24 Stunden</h3>



<pre class="wp-block-code"><code>updated &gt;= -1d AND comment IS NOT EMPTY</code></pre>



<h3 class="wp-block-heading">4. Aufgaben in einem bestimmten Sprint</h3>



<pre class="wp-block-code"><code>sprint = "Sprint 15"</code></pre>



<h3 class="wp-block-heading">5. Alle Aufgaben mit bestimmten Schlagwörtern</h3>



<pre class="wp-block-code"><code>labels IN (Bug, "Customer Request")</code></pre>



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



<p class="wp-block-paragraph">JQL ist ein leistungsstarkes Werkzeug, das Jira-Benutzern hilft, gezielt nach Aufgaben zu suchen und komplexe Filter zu erstellen. Dank der Kombination aus Feldern, Operatoren und Funktionen lassen sich nahezu alle gewünschten Abfragen formulieren. Wer JQL beherrscht, kann Jira effizienter nutzen und relevante Informationen schneller finden.</p>



<p class="wp-block-paragraph">Wenn Du Jira häufig verwendest, lohnt es sich, Dich damit näher zu beschäftigen. So kannst Du individuelle Abfragen erstellen und eine bessere Übersicht über Deine Projekte erhalten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/02/04/jql-jira-query-language-eine-abfragesprache/">JQL (Jira Query Language) &#8211; Eine Abfragesprache</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/02/04/jql-jira-query-language-eine-abfragesprache/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3975</post-id>	</item>
		<item>
		<title>Inkrementelles Entwicklungsmodell &#8211; Kleine Schritte, große Fortschritte</title>
		<link>https://ceosbay.com/2023/10/24/inkrementelles-entwicklungsmodell-kleine-schritte-grosse-fortschritte/</link>
					<comments>https://ceosbay.com/2023/10/24/inkrementelles-entwicklungsmodell-kleine-schritte-grosse-fortschritte/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 24 Oct 2023 04:00:00 +0000</pubDate>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Anforderungen]]></category>
		<category><![CDATA[Anwendungsdesign]]></category>
		<category><![CDATA[Benutzerakzeptanz]]></category>
		<category><![CDATA[Code-Implementierung]]></category>
		<category><![CDATA[Code-Review]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[End-to-End-Testing]]></category>
		<category><![CDATA[Entwicklungsframeworks]]></category>
		<category><![CDATA[Entwicklungsmodell]]></category>
		<category><![CDATA[Entwicklungspraxis]]></category>
		<category><![CDATA[Entwicklungsstrategie]]></category>
		<category><![CDATA[Evaluation]]></category>
		<category><![CDATA[Funktionalitätstests]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[Inkrementell]]></category>
		<category><![CDATA[Integrationstesting]]></category>
		<category><![CDATA[Iterativ]]></category>
		<category><![CDATA[Modellierung]]></category>
		<category><![CDATA[Moduldesign]]></category>
		<category><![CDATA[Planung]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Prototyping]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Release-Management]]></category>
		<category><![CDATA[Software-Design]]></category>
		<category><![CDATA[Software-Lebenszyklus]]></category>
		<category><![CDATA[Software-Maintenance]]></category>
		<category><![CDATA[Software-Projektplanung]]></category>
		<category><![CDATA[Softwarearchitektur]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Softwaremethodik]]></category>
		<category><![CDATA[Softwareoptimierung]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Softwarezyklus]]></category>
		<category><![CDATA[Systemanalyse]]></category>
		<category><![CDATA[Systemdesign]]></category>
		<category><![CDATA[Systemintegration]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2894</guid>

					<description><![CDATA[<p>Inkrementelles Entwicklungsmodell &#8211; In der dynamischen Welt der Softwareentwicklung spielt die Wahl des richtigen Entwicklungsmodells eine entscheidende Rolle für den Erfolg eines Projekts. Das inkrementelle Entwicklungsmodell zählt zu den bewährten Ansätzen, die Flexibilität und Effizienz &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/10/24/inkrementelles-entwicklungsmodell-kleine-schritte-grosse-fortschritte/">Inkrementelles Entwicklungsmodell &#8211; Kleine Schritte, große Fortschritte</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Inkrementelles Entwicklungsmodell &#8211; In der dynamischen Welt der Softwareentwicklung spielt die Wahl des richtigen Entwicklungsmodells eine entscheidende Rolle für den Erfolg eines Projekts. Das inkrementelle Entwicklungsmodell zählt zu den bewährten Ansätzen, die Flexibilität und Effizienz in den Entwicklungsprozess integrieren. In diesem Beitrag beleuchte ich die Grundlagen des inkrementellen Entwicklungsmodells. Ein besonderes Augenmerk gilt dem Ursprung, den optimalen Anwendungsmethoden und illustriere dies anhand von Beispielen aus der Praxis.</p>



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



<p class="wp-block-paragraph">Das inkrementelle Entwicklungsmodell basiert auf der Idee, ein umfangreiches Softwareprojekt in kleinere, handhabbare Teile zu zerlegen. Entwickler implementieren diese Teile in aufeinanderfolgenden Phasen, wobei jedes Inkrement auf dem vorherigen aufbaut und es erweitert. Diese Vorgehensweise ermöglicht eine frühzeitige Auslieferung von Teilfunktionalitäten, was wiederum eine schnelle Rückmeldung von den Endnutzern erlaubt. Die konsequente Einbindung von Nutzerfeedback in den Entwicklungsprozess führt zu einer höheren Benutzerzufriedenheit und ermöglicht eine effektivere Fehlerbehebung.</p>



<h3 class="wp-block-heading">Ursprung und Entwicklung</h3>



<p class="wp-block-paragraph">Die Ursprünge des inkrementellen Entwicklungsmodells liegen in den 1960er und 1970er Jahren. Als Softwareingenieure nach flexibleren Alternativen zu den bis dahin vorherrschenden, starren Entwicklungsmodellen suchten. Das inkrementelle Modell bildete eine Antwort auf die wachsenden Anforderungen an Softwarelösungen. Besonders, die Notwendigkeit, sich schnell an veränderte Benutzeranforderungen und Marktbedingungen anzupassen.</p>



<h3 class="wp-block-heading">Optimale Anwendungsmethoden </h3>



<h4 class="wp-block-heading">Für eine erfolgreiche Anwendung des inkrementellen Entwicklungsmodells gilt es, einige Schlüsselelemente zu berücksichtigen:</h4>



<ol class="wp-block-list">
<li><strong>Klare Definition der Inkremente</strong>: Teams sollten jedes Inkrement klar definieren und festlegen, welche Funktionen es umfasst.</li>



<li><strong>Kontinuierliche Integration und Testing</strong>: Die kontinuierliche Integration neuer Inkremente und deren umfassendes Testing sind unerlässlich. Dadurch lassen sich Fehler frühzeitig identifizieren und somit die Softwarequalität sichern. (Siehe meinen Beitrag über <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/">CI/CD – Continuous Integration und Continuous Deployment</a>.)</li>



<li><strong>Nutzerfeedback einbeziehen</strong>: Entwicklerteams müssen Nutzerfeedback aktiv einfordern und in den Entwicklungsprozess integrieren, um die Software stetig zu verbessern.</li>
</ol>



<h3 class="wp-block-heading">Inkrementelles Entwicklungsmodell Beispiele aus der Praxis</h3>



<ol class="wp-block-list">
<li>Mobile Applikationen: Bei der Entwicklung mobiler Apps hat sich das inkrementelle Modell als besonders effektiv erwiesen. Entwicklerteams können einzelne Funktionen wie Benutzeranmeldung, Profilerstellung und Nachrichtenfunktion in separaten Inkrementen implementieren und ausliefern.</li>



<li>Web-Plattformen: Auch im Bereich der Web-Entwicklung findet das inkrementelle Modell breite Anwendung. Beispielsweise kann ein E-Commerce-Unternehmen seinen Online-Shop schrittweise um Funktionen wie Produktsuche, Warenkorb und Zahlungsabwicklung erweitern.</li>
</ol>



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



<p class="wp-block-paragraph">Ein inkrementelles Entwicklungsmodell stellt einen flexiblen und effizienten Ansatz in der Softwareentwicklung dar. Durch die Zerlegung des Gesamtprojekts in kleinere Teile, die man schrittweise implementiert und testet, ermöglicht eine schnelle Reaktion auf Benutzerfeedback und sich verändernde Anforderungen. Zahlreiche Erfolgsbeispiele aus der Praxis belegen die Effektivität dieses Modells. Dies macht es zu einer attraktiven Wahl für Softwareentwicklungsprojekte unterschiedlichster Art.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/10/24/inkrementelles-entwicklungsmodell-kleine-schritte-grosse-fortschritte/">Inkrementelles Entwicklungsmodell &#8211; Kleine Schritte, große Fortschritte</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/10/24/inkrementelles-entwicklungsmodell-kleine-schritte-grosse-fortschritte/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2894</post-id>	</item>
		<item>
		<title>Strukturelle Tests in der Softwareentwicklung</title>
		<link>https://ceosbay.com/2023/07/31/strukturelle-tests-in-der-softwareentwicklung/</link>
					<comments>https://ceosbay.com/2023/07/31/strukturelle-tests-in-der-softwareentwicklung/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 31 Jul 2023 18:28:07 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Testautomatisierung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Codeabdeckung]]></category>
		<category><![CDATA[Codeanalyse]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Durchführung]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Fehlerfreiheit]]></category>
		<category><![CDATA[Kundenzufriedenheit]]></category>
		<category><![CDATA[Lösung]]></category>
		<category><![CDATA[Nachhaltigkeit]]></category>
		<category><![CDATA[Notwendigkeit]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Präzision]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Soft]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Softwarequalität.]]></category>
		<category><![CDATA[Softwaretestprozess]]></category>
		<category><![CDATA[Stabil]]></category>
		<category><![CDATA[Stabilität]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[Strukturelle Tests]]></category>
		<category><![CDATA[Technologiekompetenz]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testprozesse]]></category>
		<category><![CDATA[Ware]]></category>
		<category><![CDATA[White-Box-Tests]]></category>
		<category><![CDATA[Zukunftssicherheit]]></category>
		<category><![CDATA[Zuverlässigkeit]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1940</guid>

					<description><![CDATA[<p>Strukturelle Tests bilden einen integralen Bestandteil des Softwaretestprozesses. Die Tiefgründigkeit dieser Methode ermöglicht es, die interne Struktur einer Anwendung zu evaluieren, anstatt nur deren Funktion. In diesem Artikel versuche ich die Bedeutung von strukturellen Tests &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/31/strukturelle-tests-in-der-softwareentwicklung/">Strukturelle Tests in der Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Strukturelle Tests bilden einen integralen Bestandteil des Softwaretestprozesses. Die Tiefgründigkeit dieser Methode ermöglicht es, die interne Struktur einer Anwendung zu evaluieren, anstatt nur deren Funktion. In diesem Artikel versuche ich die Bedeutung von strukturellen Tests hervorzuheben und zu erläutern, wie man diese Tests durchführen kann und welche Vorteile sie bieten, wenn man es richtig anstellt.</p>



<h3 class="wp-block-heading">Definition &#8211; Strukturelle Tests</h3>



<p class="wp-block-paragraph">Auch bekannt als White-Box-Tests oder Glasbox-Tests, konzentrieren sich auf die interne Perspektive einer Softwareanwendung. Im Gegensatz zu funktionalen Tests, die nur die Anforderungen von Außen prüfen, bieten strukturelle Tests eine vollständige Prüfung der internen Logik und Struktur einer Anwendung.</p>



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



<p class="wp-block-paragraph">Es gibt mehrere Vorteile. Sie identifizieren verborgene Fehler, die andere Testmethoden möglicherweise übersehen, erhöhen die Codeabdeckung und verbessern die Qualität der Software. Sie ermöglichen auch eine bessere Identifizierung von Problembereichen, wodurch man effektivere Fehlerbehebungsmaßnahmen einleiten kann.</p>



<h3 class="wp-block-heading">Durchführung von strukturellen Tests</h3>



<p class="wp-block-paragraph">Strukturelle Tests erfordern ein gründliches Verständnis der internen Softwarearchitektur. Dies schließt Wissen über Datenflüsse, Kontrollstrukturen, Schnittstellen und weitere Details ein. Tester führen eine detaillierte Analyse der Codebasis durch, um Schwachstellen und mögliche Fehlerquellen zu identifizieren. Anschließend erstellt man geeignete Testfälle und führt diese aus, um die Funktionsweise der Anwendung zu überprüfen.</p>



<h3 class="wp-block-heading">Typen &#8211; Strukturelle Tests</h3>



<p class="wp-block-paragraph">Verschiedene Typen struktureller Tests richten sich an spezifische Bereiche der Codebasis. Einige der gängigen Arten sind Kontrollflusstests, Datenflusstests, Pfadtests und Schleifentests. Jeder dieser Tests konzentriert sich auf ein bestimmtes Aspekt des Codes und liefert wichtige Informationen über dessen Leistung und Zuverlässigkeit.</p>



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



<p class="wp-block-paragraph">Zusammenfassend lässt sich sagen, dass strukturelle Tests ein effektives Mittel sind, um die Qualität und Zuverlässigkeit von Softwareanwendungen zu gewährleisten. Durch eine detaillierte Überprüfung der internen Struktur einer Anwendung tragen sie dazu bei, verborgene Fehler zu identifizieren und sicherzustellen, dass alle Komponenten korrekt funktionieren. Mit ihrer Hilfe kann das Vertrauen in die entwickelte Software erhöht und das Risiko von Fehlern reduziert werden. Es lohnt sich also, in diese Tests zu investieren und sie als festen Bestandteil des Softwaretestprozesses zu etablieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/31/strukturelle-tests-in-der-softwareentwicklung/">Strukturelle Tests in der Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/07/31/strukturelle-tests-in-der-softwareentwicklung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1940</post-id>	</item>
		<item>
		<title>Blackbox Tests &#8211; Software prüfen, ohne eine Zeile Code zu sehen</title>
		<link>https://ceosbay.com/2023/06/02/blackbox-tests-software-pruefen-ohne-eine-zeile-code-zu-sehen/</link>
					<comments>https://ceosbay.com/2023/06/02/blackbox-tests-software-pruefen-ohne-eine-zeile-code-zu-sehen/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 02 Jun 2023 19:33:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Testautomatisierung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Akzeptanztests]]></category>
		<category><![CDATA[Anforderungsüberprüfung]]></category>
		<category><![CDATA[Black]]></category>
		<category><![CDATA[Blackbox-Tests]]></category>
		<category><![CDATA[Box]]></category>
		<category><![CDATA[Codeprüfung]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Fehlererkennung]]></category>
		<category><![CDATA[Funktionalitätsprüfung]]></category>
		<category><![CDATA[Nutzerschnittstelle]]></category>
		<category><![CDATA[Performance-Tests]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Regressionstests]]></category>
		<category><![CDATA[Schwarz]]></category>
		<category><![CDATA[Schwarze]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Softwaretests]]></category>
		<category><![CDATA[Systemtests]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testmethoden]]></category>
		<category><![CDATA[Wasserfall]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2096</guid>

					<description><![CDATA[<p>Blackbox Tests nehmen im Softwareentwicklungs- und Testprozess eine wesentliche Rolle ein. Sie bieten eine einzigartige Möglichkeit, die Funktionalität einer Software zu überprüfen, ohne das Detailwissen über die interne Funktionsweise oder der Programmierung vorliegt. In diesem &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/06/02/blackbox-tests-software-pruefen-ohne-eine-zeile-code-zu-sehen/">Blackbox Tests &#8211; Software prüfen, ohne eine Zeile Code zu sehen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Blackbox Tests nehmen im Softwareentwicklungs- und Testprozess eine wesentliche Rolle ein. Sie bieten eine einzigartige Möglichkeit, die Funktionalität einer Software zu überprüfen, ohne das Detailwissen über die interne Funktionsweise oder der Programmierung vorliegt. In diesem Beitrag versuche ich die Prinzipien, Vorteile und Anwendungen von diesen Tests eingehend zu erläutern und darzulegen, wie sie dazu beitragen, fehlerfreie Software zu entwickeln.</p>



<h2 class="wp-block-heading"><strong>Was sind Blackbox Tests?</strong></h2>



<p class="wp-block-paragraph">Es handelt es sich dabei um eine Methode des Softwaretestens, bei der man die interne Struktur oder Implementierung der zu testenden Software oder Komponente ignoriert. Im Vordergrund steht vielmehr die Überprüfung des Eingabe-Ausgabe-Verhaltens und die Interaktion mit der Nutzer*innenschnittstelle. Sie konzentrieren sich also auf das &#8222;Was&#8220; und nicht auf das &#8222;Wie&#8220;. Das Pendant dazu sind die &#8222;<a href="https://ceosbay.com/2023/06/01/whitebox-tests-bugs-aufspueren-und-qualitaet-sicherstellen/">Whitebox Tests</a>&#8222;, über die ich gestern geschrieben habe.</p>



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



<p class="wp-block-paragraph">Blackbox Tests folgen grundlegenden Prinzipien, um eine effektive Überprüfung der Software sicherzustellen. </p>



<ol class="wp-block-list">
<li>Man behandelt das System als unsichtbare Blackbox. </li>



<li>Die Tests basieren auf Anforderungs- und Funktionsbeschreibungen.</li>



<li>Die Kenntnis der internen Struktur des Systems spielt für die Durchführung der Tests keine Rolle.</li>



<li>Sie ermöglichen die Identifizierung von Fehlern in Bezug auf falsche oder fehlende Funktionen, Fehler bei der Schnittstelleninteraktion, Datenstrukturfehler und Performance-Probleme.</li>
</ol>



<h2 class="wp-block-heading"><strong>Vorteile von Blackbox Tests</strong></h2>



<p class="wp-block-paragraph">Sie bieten zahlreiche Vorteile. Sie erfordern kein spezifisches technisches Wissen und auch  Nicht-Programmierer*innen können sie durchführen. Diese Testmethode hilft außerdem dabei, Unstimmigkeiten in den Anforderungen zu entdecken, bevor der Testprozess beginnt. Sie ermöglichen auch eine effektive Überprüfung von Systemreaktionen auf Eingaben und deren Handhabung von Ausnahmesituationen.</p>



<h2 class="wp-block-heading"><strong>Anwendungen von Blackbox</strong> <strong>Tests</strong></h2>



<ol class="wp-block-list">
<li>Sie finden in unterschiedlichsten Phasen und Bereichen der Softwareentwicklung Anwendung. </li>



<li>Man setzt sie häufig in der System-, Akzeptanz- und Regressionstestphase ein. </li>



<li>Besonders nützlich sind sie für Web- und Mobile-Anwendungen, Datenbanken (Siehe auch den Beitrag über <a href="https://ceosbay.com/2022/10/29/structured-query-language-sql/">SQL</a>) und Systeme mit benutzerdefinierten Benutzeroberflächen.</li>
</ol>



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



<p class="wp-block-paragraph">Blackbox Tests stellen eine unverzichtbare Methode in der Qualitätssicherung von Software dar. Sie ermöglichen es, den Fokus auf die Nutzer*innensicht und die Erfüllung der Softwareanforderungen zu legen, anstatt sich auf die interne Funktionsweise zu konzentrieren. Indem man den Prinzipien, Vorteilen und Anwendungen von Blackbox Tests Beachtung schenkt, können effektive und benutzerorientierte Softwarelösungen erstellt und bereitgestellt werden.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/06/02/blackbox-tests-software-pruefen-ohne-eine-zeile-code-zu-sehen/">Blackbox Tests &#8211; Software prüfen, ohne eine Zeile Code zu sehen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/06/02/blackbox-tests-software-pruefen-ohne-eine-zeile-code-zu-sehen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2096</post-id>	</item>
		<item>
		<title>Scrum &#8211; Kontinuierliche Verbesserung und Anpassungsfähigkeit</title>
		<link>https://ceosbay.com/2023/04/17/scrum-kontinuierliche-verbesserung-und-anpassungsfaehigkeit/</link>
					<comments>https://ceosbay.com/2023/04/17/scrum-kontinuierliche-verbesserung-und-anpassungsfaehigkeit/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 17 Apr 2023 21:51:23 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Adaption]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Artefakte]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Entwicklerteam]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Inspektion]]></category>
		<category><![CDATA[Kontinuierlich]]></category>
		<category><![CDATA[Kontinuierliche]]></category>
		<category><![CDATA[Kontinuität]]></category>
		<category><![CDATA[Owner]]></category>
		<category><![CDATA[Prinzipien]]></category>
		<category><![CDATA[Produktentwicklung]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Transparenz]]></category>
		<category><![CDATA[Verbesserung]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1763</guid>

					<description><![CDATA[<p>Scrum ist ein Rahmenwerk für agiles Projektmanagement und Produktentwicklung, aus den 90er Jahren von Ken Schwaber und Jeff Sutherland. Es bietet einen iterativen und inkrementellen Ansatz für die Planung und Steuerung von Projekten und ermöglicht &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/17/scrum-kontinuierliche-verbesserung-und-anpassungsfaehigkeit/">Scrum &#8211; Kontinuierliche Verbesserung und Anpassungsfähigkeit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Scrum ist ein Rahmenwerk für agiles Projektmanagement und Produktentwicklung, aus den 90er Jahren von Ken Schwaber und Jeff Sutherland. Es bietet einen iterativen und inkrementellen Ansatz für die Planung und Steuerung von Projekten und ermöglicht es Teams, schnell auf Veränderungen zu reagieren und bessere Ergebnisse zu erzielen. In diesem Beitrag geht es um die Grundprinzipien von Scrum, die Rollen und Artefakte, die es umfasst, und wie es zur erfolgreichen Umsetzung von Projekten beitragen kann.</p>



<h3 class="wp-block-heading">Die Grundprinzipien von Scrum</h3>



<p class="wp-block-paragraph">Scrum basiert auf drei grundlegenden Säulen: Transparenz, Inspektion und Adaption. Diese Säulen stellen sicher, dass alle Beteiligten über den Projektstatus informiert sind, kontinuierlich überprüfen, wie die Arbeit voranschreitet, und bei Bedarf Anpassungen vornehmen, um die Ziele zu erreichen.</p>



<p class="wp-block-paragraph"><strong>Transparenz</strong>: Alle Projektinformationen müssen für alle Teammitglieder sichtbar und zugänglich sein. Dazu gehören Fortschritt, Hindernisse und Änderungen am Projektplan.</p>



<p class="wp-block-paragraph"><strong>Inspektion</strong>: Das Team prüft regelmäßig die Fortschritte und identifiziert Probleme oder Verbesserungspotenziale. Dies geschieht durch verschiedene Meetings und Feedback-Loops.</p>



<p class="wp-block-paragraph"><strong>Adaption</strong>: Hat man Probleme identifiziert, müssen Maßnahmen folgen, um diese zu beheben und den Prozess zu verbessern. Die Umsetzung der Änderungen sollte schnell und effektiv erfolgen.</p>



<h3 class="wp-block-heading">Rollen in Scrum</h3>



<p class="wp-block-paragraph"><strong>Product Owne</strong>r: Der Product Owner ist für die Definition und Priorisierung der Anforderungen an das Produkt verantwortlich. Verantwortlich für den sogenannten &#8222;Product Backlog&#8220;, eine Liste von Aufgaben und Funktionen, deren Implementierung in das Produkt erforderlich ist.</p>



<p class="wp-block-paragraph"><strong>Scrum Master:</strong> Der Scrum Master ist ein Coach und Vermittler für das Team. Verantwortlich für die Einhaltung der Scrum-Prinzipien und -Praktiken. Hilft bei der Beseitigung von Hindernissen, die die Arbeit des Teams beeinträchtigen können.</p>



<p class="wp-block-paragraph"><strong>Entwicklerteam</strong>: Das Entwicklerteam ist eine Gruppe von Fachleuten, die zusammenarbeiten, um die Aufgaben des Product Backlogs in funktionsfähige Produktinkremente umzusetzen.</p>



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



<p class="wp-block-paragraph">Scrum verwendet mehrere Artefakte, um die Planung und den Fortschritt des Projekts zu verfolgen:</p>



<p class="wp-block-paragraph"><strong>Product Backlog:</strong> Eine Liste aller gewünschten Funktionen, Anforderungen und Verbesserungen, deren Umsetzung im Produkt erforderlich ist. Der Product Owner ist für die Priorisierung und Aktualisierung des Backlogs verantwortlich.</p>



<p class="wp-block-paragraph"><strong>Sprint Backlog:</strong> Eine Liste der Aufgaben, die das Team im aktuellen Sprint (einem festgelegten Zeitraum von normalerweise zwei bis vier Wochen) abgeschließt. Die Erstellung des Sprint Backlogs ist die Aufgabe des Entwicklerteams und basiert auf den Prioritäten des Product Backlogs.</p>



<p class="wp-block-paragraph"><strong>Inkrement</strong>: Das Ergebnis eines jeden Sprints, ein potenziell auslieferbares Stück des Produkts, das neue oder verbesserte Funktionen bietet. Inkremente sollen den Wert des Produkts für den Kunden kontinuierlich steigern.</p>



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



<p class="wp-block-paragraph">Scrum definiert verschiedene Events oder Meetings, um den Kommunikationsfluss und die Zusammenarbeit im Team zu fördern und um den Fortschritt zu überwachen:</p>



<p class="wp-block-paragraph"><strong>Sprint Planning:</strong> Zu Beginn jedes Sprints trifft sich das gesamte Team, um den Umfang des nächsten Sprints zu planen. Dabei wählen sie die wichtigsten Elemente aus dem Product Backlog aus und erstellen das Sprint Backlog.</p>



<p class="wp-block-paragraph"><strong>Daily Scrum:</strong> Ein tägliches, kurzes Stand-up-Meeting, bei dem jedes Teammitglied den Fortschritt, die Pläne für den Tag und mögliche Hindernisse teilt. Dies fördert die Transparenz und hilft, Probleme frühzeitig zu identifizieren.</p>



<p class="wp-block-paragraph"><strong>Sprint Review</strong>: Am Ende jedes Sprints präsentiert das Team das fertige Inkrement dem Product Owner und den Stakeholdern, um Feedback zu erhalten und den Fortschritt zu bewerten.</p>



<p class="wp-block-paragraph"><strong>Sprint Retrospektive:</strong> Nach dem Sprint Review reflektiert das Team intern über den Sprint und identifiziert Verbesserungsmöglichkeiten für zukünftige Sprints.</p>



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



<p class="wp-block-paragraph">Scrum ist ein agiles Rahmenwerk, das den Fokus auf Transparenz, Inspektion und Adaption legt, um den Projekterfolg zu fördern. Durch die Definition klarer Rollen, Artefakte und Events unterstützt Scrum die effektive Zusammenarbeit innerhalb des Teams und die kontinuierliche Verbesserung der Arbeitsprozesse. Die Implementierung von Scrum kann zu einer erhöhten Produktivität, schnelleren Anpassungsfähigkeit an Veränderungen und einer besseren Kundenzufriedenheit führen. Unternehmen und Projektteams, die sich für einen agilen Ansatz entscheiden, können Scrum als wertvolles Instrument in Betracht ziehen, um ihre Ziele zu erreichen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/17/scrum-kontinuierliche-verbesserung-und-anpassungsfaehigkeit/">Scrum &#8211; Kontinuierliche Verbesserung und Anpassungsfähigkeit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/17/scrum-kontinuierliche-verbesserung-und-anpassungsfaehigkeit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1763</post-id>	</item>
		<item>
		<title>Test-Harnisch &#8211; Qualität und Zuverlässigkeit von Anfang an durch effektive Teststrategien</title>
		<link>https://ceosbay.com/2023/04/15/erklaerung-test-harnisch/</link>
					<comments>https://ceosbay.com/2023/04/15/erklaerung-test-harnisch/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 15 Apr 2023 13:47:35 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Automatisieren]]></category>
		<category><![CDATA[CD/CI]]></category>
		<category><![CDATA[Continious]]></category>
		<category><![CDATA[Continous Delivery]]></category>
		<category><![CDATA[Continous Integration]]></category>
		<category><![CDATA[Continuous]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Effizienz]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Ergebnisse]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Harness]]></category>
		<category><![CDATA[Harnische]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Jasmine]]></category>
		<category><![CDATA[Kontinuierlich]]></category>
		<category><![CDATA[Kontinuierliches]]></category>
		<category><![CDATA[Manuell]]></category>
		<category><![CDATA[NG]]></category>
		<category><![CDATA[NUnit]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Pytest]]></category>
		<category><![CDATA[Sammlung]]></category>
		<category><![CDATA[Sec]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Skripte]]></category>
		<category><![CDATA[Softwareanwendungen]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testdaten]]></category>
		<category><![CDATA[Testergebnisse]]></category>
		<category><![CDATA[TestNG]]></category>
		<category><![CDATA[Testtreiber]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Unit]]></category>
		<category><![CDATA[Vereinfachung]]></category>
		<category><![CDATA[Wiederverwendbarkeit]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1476</guid>

					<description><![CDATA[<p>In der Welt der Softwareentwicklung ist Qualitätssicherung ein zentrales Thema. Um die Stabilität, Leistung und Effizienz von Softwareanwendungen zu gewährleisten, müssen Entwickler und Tester den Code durch eine Vielzahl von Tests validieren. Eine effiziente Methode &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/15/erklaerung-test-harnisch/">Test-Harnisch &#8211; Qualität und Zuverlässigkeit von Anfang an durch effektive Teststrategien</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In der Welt der Softwareentwicklung ist Qualitätssicherung ein zentrales Thema. Um die Stabilität, Leistung und Effizienz von Softwareanwendungen zu gewährleisten, müssen Entwickler und Tester den Code durch eine Vielzahl von Tests validieren. Eine effiziente Methode zur Automatisierung und Verwaltung dieser Tests ist der Einsatz von Test-Harnischen.</p>



<h3 class="wp-block-heading">Was ist ein Test-Harnisch?</h3>



<p class="wp-block-paragraph">Ein Test-Harnisch (engl. test harness) ist ein <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> oder eine Sammlung von Tools, die dazu beitragen, das Testen von Softwareanwendungen zu automatisieren, zu koordinieren und zu überwachen. Im Wesentlichen stellt ein Test-Harnisch eine Umgebung bereit, in der Entwickler und Tester den Code einer Anwendung testen und sicherstellen können, dass er korrekt funktioniert und die Anforderungen erfüllt. Man kann Test-Harnische sowohl für manuelles als auch für automatisiertes Testen verwenden.</p>



<h3 class="wp-block-heading">Funktionsweise eines Test-Harnisch</h3>



<h4 class="wp-block-heading">Ein Test-Harnisch besteht aus vier Hauptkomponenten:</h4>



<ol class="wp-block-list" type="1">
<li><strong>Testtreiber</strong>: Der Testtreiber ist für die Ausführung der Tests verantwortlich. Er stellt die Schnittstelle zur Verfügung, über die die Tester die Testfälle ausführen und die Ergebnisse erfassen können.</li>



<li><strong>Testdaten</strong>: Testdaten sind die Eingaben, die man während des Testprozesses verwendet. Sie bestehen in der Regel aus verschiedenen Datentypen, die man verwendet, um die verschiedenen Funktionen und Komponenten der Anwendung zu testen.</li>



<li><strong>Testskripte</strong>: Testskripte sind Skripte, die den Testprozess automatisieren. Sie enthalten Anweisungen, wie die Tests ausgeführt und die Analyse der Ergebnisse stattfinden soll.</li>



<li><strong>Testergebnisse</strong>: Testergebnisse sind die gesammelten Informationen, die aus dem Testprozess resultieren. Sie enthalten Daten über die Leistung der Anwendung, Fehler, die während des Testprozesses aufgetreten sind, und Informationen über die Korrektheit der Funktionen.</li>
</ol>



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



<ul class="wp-block-list">
<li><strong>Automatisierung</strong>: Test-Harnische automatisieren den Testprozess und reduzieren so den Zeitaufwand und die Mühe, die mit manuellem Testen verbunden sind. Dies ermöglicht es Entwicklern und Testern, sich auf die Analyse der Testergebnisse und die Verbesserung der Softwarequalität zu konzentrieren.</li>



<li><strong>Wiederverwendbarkeit</strong>: Test-Harnische ermöglichen es, Testfälle und Testdaten wiederverwendbar zu gestalten, sodass man sie in verschiedenen Projekten und Anwendungen einsetzen kann.</li>



<li><strong>Vereinfachung</strong>: Test-Harnische vereinfachen den Testprozess, indem sie alle Testaktivitäten zentralisieren und eine einheitliche Testumgebung bereitstellen.</li>



<li><strong>Effizienz</strong>: Test-Harnische steigern die Effizienz des Testprozesses, indem sie die Testabdeckung erhöhen, den Testaufwand reduzieren und eine schnellere Fehlerbehebung ermöglichen.</li>



<li><strong>Kontinuierliche Integration</strong>: Test-Harnische unterstützen kontinuierliche Integration (CI) und kontinuierliche Bereitstellung (CD) in der Softwareentwicklung, indem sie die automatisierte Ausführung von Tests bei jedem Commit oder Build sicherstellen. Siehe hierzu den <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">Beitrag</a> über <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">CI/CD</a>.</li>



<li><strong>Berichterstattung und Analyse</strong>: Test-Harnische bieten umfangreiche Berichtsfunktionen, die es Entwicklern und Testern ermöglichen, den Fortschritt und den Status der Tests zu überwachen, Fehler und Schwachstellen schnell zu identifizieren und fundierte Entscheidungen über die Softwarequalität zu treffen.</li>
</ul>



<h3 class="wp-block-heading">Gängige Test-Harnisch-Tools in der Softwarebranche</h3>



<p class="wp-block-paragraph">Es gibt viele Test-Harnisch-Tools und <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> auf dem Markt, die verschiedene Programmiersprachen und Anforderungen unterstützen. Einige der bekanntesten sind:</p>



<p class="wp-block-paragraph"><strong>JUnit</strong>: <a href="https://ceosbay.com/2023/03/18/erklaerung-junit/" target="_blank" rel="noreferrer noopener">JUnit</a> ist ein weit verbreitetes Testframework für Java-Anwendungen, das Test-Harnisch-Funktionalitäten wie Testausführung, Testdatenverwaltung und Ergebnisberichterstattung bietet.</p>



<p class="wp-block-paragraph"><strong>TestNG</strong>: TestNG ist ein Testframework für Java-Programme, das auf <a href="https://ceosbay.com/2023/03/18/erklaerung-junit/" target="_blank" rel="noreferrer noopener">JUnit</a> basiert und erweiterte Funktionen wie Paralleltestausführung, Testkonfiguration und flexible Testskripterstellung bietet.</p>



<p class="wp-block-paragraph"><strong>NUnit</strong>: NUnit ist ein Testframework für .NET-Anwendungen, das Test-Harnisch-Funktionen wie Testausführung, Testdatenverwaltung und Berichterstattung bietet.</p>



<p class="wp-block-paragraph"><strong>Pytest</strong>: Pytest ist ein Testframework für Python-Anwendungen, das Test-Harnisch-Funktionalitäten wie Testausführung, Testdatenverwaltung und Ergebnisberichterstattung bietet.</p>



<p class="wp-block-paragraph"><strong>Jasmine</strong>: Jasmine ist ein Testframework für JavaScript-Anwendungen, das Test-Harnisch-Funktionalitäten wie Testausführung, Testdatenverwaltung und Ergebnisberichterstattung bietet.</p>



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



<p class="wp-block-paragraph">Test-Harnische spielen eine entscheidende Rolle in der Softwareentwicklung, indem sie den Testprozess automatisieren, vereinfachen und effizienter gestalten. Durch den Einsatz von Test-Harnischen können Entwickler und Tester sicherstellen, dass ihre Anwendungen die gewünschte Qualität erfüllen und potenzielle Fehler frühzeitig identifiziert und behoben sind, bevor der Release stattfindet. Mit der wachsenden Anzahl von Test-Harnisch-Tools und <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> auf dem Markt können Entwickler und Tester leicht eine Lösung finden, die ihren spezifischen Anforderungen und Projektzielen entspricht.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/15/erklaerung-test-harnisch/">Test-Harnisch &#8211; Qualität und Zuverlässigkeit von Anfang an durch effektive Teststrategien</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/15/erklaerung-test-harnisch/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1476</post-id>	</item>
		<item>
		<title>JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/25/erklaerung-jacoco/</link>
					<comments>https://ceosbay.com/2023/03/25/erklaerung-jacoco/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 25 Mar 2023 20:22:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></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[Abdeckung]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[City]]></category>
		<category><![CDATA[Co]]></category>
		<category><![CDATA[Codeabdeckungsanalyse]]></category>
		<category><![CDATA[Coverage]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Ecl]]></category>
		<category><![CDATA[EclEmma]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[EMMA]]></category>
		<category><![CDATA[Fälle]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Gradle]]></category>
		<category><![CDATA[Grün]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Ja]]></category>
		<category><![CDATA[Jacoco]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Modular]]></category>
		<category><![CDATA[Modulare]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Qube]]></category>
		<category><![CDATA[Rot]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Sonar]]></category>
		<category><![CDATA[SonarQube]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testfall]]></category>
		<category><![CDATA[Testfälle]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1238</guid>

					<description><![CDATA[<p>JaCoCo ist ein Open-Source-Toolkit zur Analyse und Anzeige der Java-Codeabdeckung. Es wird unter der Eclipse Public License vertrieben. Man hat es als Ersatz für EMMA entwickelt, unter dem Dach des EclEmma Plugins für Eclipse. Im &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/">JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">JaCoCo ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Toolkit zur Analyse und Anzeige der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Codeabdeckung. Es wird unter der <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> Public License vertrieben. Man hat es als Ersatz für EMMA entwickelt, unter dem Dach des EclEmma Plugins für <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a>.</p>



<p class="wp-block-paragraph">Im Grunde genommen handelt es sich dabei um zwei Arten von Tools, die zum einen Anweisungen dem <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Quellcode hinzufügen und dessen Neukompilierung einfordern und zum anderen Tools, die den Bytecode entweder vor oder während der Ausführung instrumentieren. Das Ziel von JaCoCo ist es, herauszufinden, welche Teile des Codes getestet werden, indem es die Codezeilen registriert, die man bei der Ausführung eines Tests ausführt. <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a> bzw. <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a> ist diesbezüglich ebenfalls ein gutes Stichwort.</p>



<h3 class="wp-block-heading">Features von JaCoCo</h3>



<ul class="wp-block-list">
<li>Abdeckungsanalyse von Anweisungen (C0), Verzweigungen (C1), Zeilen, Methoden, Typen und zyklomatischer Komplexität (McCabe-Metrik).</li>



<li>Basiert auf <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Bytecode und funktioniert daher auch ohne Quelldateien.</li>



<li>Einfache Integration durch <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Agent-basierte On-the-fly-Instrumentierung. Andere Integrationsszenarien wie benutzerdefinierte class loader sind über die API möglich.</li>



<li><a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>-unabhängig: Reibungslose Integration in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/" target="_blank" rel="noreferrer noopener">VM</a>-basierte Anwendungen wie einfache <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Programme, OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>, Web-Container oder EJB-Server.</li>



<li>Kompatibel mit allen freigegebenen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Klassendateiversionen.</li>



<li>Unterstützung für verschiedene JVM-Sprachen.</li>



<li>Verschiedene Berichtsformate (<a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>, <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>, CSV).</li>



<li>Remote-Protokoll und JMX-Steuerung zur Anforderung von Ausführungsdaten-Dumps vom Coverage Agent zu jedem beliebigen Zeitpunkt.</li>



<li>Ant-Tasks zum Sammeln und Verwalten von Ausführungsdaten und zum Erstellen strukturierter Abdeckungsberichte.</li>



<li><a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>-Plug-in zum Sammeln von Abdeckungsinformationen und Erstellen von Berichten in <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>-Builds.</li>
</ul>



<p class="wp-block-paragraph">JaCoCo bietet die Instructions, Line- und Branchabdeckung. Im Gegensatz zu beispielsweise Atlassian Clover und OpenClover, die eine Instrumentierung des Quellcodes erfordern, kann JaCoCo <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Bytecode mit zwei verschiedenen Ansätzen instrumentieren:</p>



<ol class="wp-block-list" type="1">
<li>JCov on the fly, während der Code mit einem <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Agenten ausgeführt wird beispielsweise wie Cobertura und JCov vor der Ausführung (offline)</li>



<li>Man kann es aber auch so konfigurieren, dass man die gesammelten Daten in einer Datei speichert oder via TCP versendet. Im Gegensatz zu Cobertura und EMMA ist die Unterstützung von so ziemlich allen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Versionen ab der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Version 7 gewährleistet.</li>
</ol>



<h3 class="wp-block-heading">Tools, die JaCoCo verwenden oder enthalten</h3>



<p class="wp-block-paragraph">Einige davon habe ich bereits in diversen Beiträgen thematisiert. Mit einem Klick auf das jeweilige Tool kommt man auf den jeweiligen Beitrag.</p>



<ul class="wp-block-list">
<li><a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/" target="_blank" rel="noreferrer noopener">SonarQube</a> JaCoCo Plugin &#8211; Standardmäßig für Code Abdeckungsanalysen innerhalb der Code-Qualitätsmanagement-Plattform</li>



<li>EclEmma <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> (Software) Code Coverage Plugin</li>



<li><a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Jenkins</a> JaCoCo Plugin</li>



<li>Netbeans JaCoCo support</li>



<li><a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ IDEA</a> (Seit Version 11)</li>



<li>Gradle JaCoCo Plugin</li>



<li>Visual Studio Team Services</li>



<li>TeamCity</li>
</ul>



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



<p class="wp-block-paragraph">JaCoCo bietet sich für die Codeabdeckungsanalyse bei der modularen Softwareentwicklung bzw. bei den Unit Tests an. Die Abdeckungsgrade geben an, wie viele Anweisungen, Zweige usw. die Tests durchlaufen. Auf Basis der so gewonnenen Erkenntnisse kann man weitere sinnvolle Testfälle ermitteln oder aber nicht beanspruchten bzw. toten Code entfernen. Es gibt kein allgemeingültiges Mindestmaß an Codeabdeckung. Man definiert die jeweils erforderliche Testabdeckung in Anbetracht des Anwendungsfalls nach einer Risikoeinschätzung sowie der eigenen Entwickler-Fähigkeiten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/">JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/25/erklaerung-jacoco/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1238</post-id>	</item>
		<item>
		<title>Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</title>
		<link>https://ceosbay.com/2023/03/21/erklaerung-angular/</link>
					<comments>https://ceosbay.com/2023/03/21/erklaerung-angular/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 21 Mar 2023 18:57:09 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Databinding]]></category>
		<category><![CDATA[Dynamisch]]></category>
		<category><![CDATA[Eager]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[ES6]]></category>
		<category><![CDATA[First]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frequenz]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Komplexität]]></category>
		<category><![CDATA[Lade]]></category>
		<category><![CDATA[Ladetechnik]]></category>
		<category><![CDATA[Ladetechniken]]></category>
		<category><![CDATA[LTS]]></category>
		<category><![CDATA[Major]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[Preloading]]></category>
		<category><![CDATA[Releae]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[scopes]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Statisch]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1210</guid>

					<description><![CDATA[<p>AngularJS, als Vorgängerversion von Angular, ist ein JavaScript Framework für Web- und Softwareentwicklung, entwickelt von Goole. Anfangs für die Entwicklung von Single-Page-Apps gedacht und im Nachgang millionenfach für die Web-Anwendungsentwicklung genutzt. Google entwickelte damit das &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">AngularJS, als Vorgängerversion von Angular, ist ein <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für Web- und Softwareentwicklung, entwickelt von Goole. Anfangs für die Entwicklung von Single-Page-Apps gedacht und im Nachgang millionenfach für die Web-Anwendungsentwicklung genutzt. Google entwickelte damit das erste geeignete <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für große Enterprise-Anwendungen. Durch Methoden wie Dependency Injection (Ein Entwurfsmuster, bei dem ein Objekt oder eine Funktion andere Objekte oder Funktionen empfängt, von denen es/sie abhängt) und ein ausgereiftes Tooling, ermöglichen eine effiziente und wartbare Softwareentwicklung auf Basis von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>.</p>



<p class="wp-block-paragraph">Seit 2009 ist es ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Projekt, dass auf gute Testbarkeit ausgelegt ist (An dieser Stelle möchte ich auf den <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a> Beitrag verweisen 😉 ). Dies bietet ein MVC/MVVM-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>, welches bidirektionales Databinding unterstützt.</p>



<h3 class="wp-block-heading">MVC/MVVM?</h3>



<p class="wp-block-paragraph">MVVM teilt die verschiedenen Komponenten des Entwicklungsprozesses in drei Kategorien auf. Model, View und ViewModel. In der Regel handelt es sich dabei um Code-Markup oder grafische Benutzeroberflächen (GUI). MVC (Model-View-Control) ist eine Methode, mit der Entwickler Programme in diese drei Komponenten aufteilen. Auf diese Weise lassen sich geschäftliche Anforderungen und Regeln von der Art und Weise unterscheiden, wie Benutzer mit der Anwendung arbeiten. Gerne gehe ich in einem zukünftigen Beitrag näher darauf ein.</p>



<h3 class="wp-block-heading">Unterschiede zwischen Angular und AngularJS</h3>



<p class="wp-block-paragraph">Angular ist wie bereits erwähnt der Nachfolger von AngularJS. Von Grund auf neu geschrieben, unterscheiden die beiden sich grundsätzlich und in vielerlei Hinsicht.</p>



<ul class="wp-block-list">
<li>Angular kennt keine „scopes“ oder Controller, sondern verwendet eine Hierarchie von Komponenten als zentrales Architekturkonzept.</li>



<li>Angular hat eine einfachere Syntax für Ausdrücke: Mit „[ ]“ werden Bindings für Eigenschaften und mit „( )“ werden Bindings für Events erzeugt.</li>



<li>Mobile-First-Ansatz: Die Anforderungen von mobilen Plattformen haben besondere Priorität.</li>



<li>Modularität: Module können Funktionalitäten auslagern, sodass Code leichtgewichtiger und schneller sein kann.</li>



<li>Es liegt lediglich die Unterstützung moderner Browser vor, wodurch man weniger Workarounds wegen Browser-Kompatibilitätsproblemen benötigt.</li>



<li>Angular empfiehlt die Verwendung von TypeScript. Es bietet Klassenbasierte objektorientierte Programmierung, Statische Typisierung und Generics.</li>



<li>TypeScript ist eine Obermenge von ECMAScript 6 (ES6) und ist rückwärts kompatibel mit ECMAScript 5, damit JavaScript. Angular bietet somit auch die Vorzüge von ES6: (Lambdas, Iteratoren, for…of-Schleifen, Generatoren im Stil von <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, Reflexion)</li>



<li>Verbesserte Dependency Injection: Bindings ermöglichen die Benennung von Abhängigkeiten.</li>



<li>Directives dienen dem Zweck, dass Aussehen und Verhalten eines Tags dynamisch zu verändern.</li>



<li>Dynamisches Laden ist möglich</li>



<li>Asynchrone Kompilierung von Templates</li>



<li>Einfacheres Routing</li>



<li>Kontroller und $scope sind durch Komponenten und Directives ersetzt. Eine Komponente ist eine Directive mit einem Template.</li>



<li>Reaktive Programmierung mit RxJS</li>
</ul>



<h3 class="wp-block-heading">Angular für konventionelle Websites?</h3>



<p class="wp-block-paragraph">Angular ist ideal für Websites mit dynamischem Inhalt, jedoch nicht für kleine Seiten mit statischem Inhalt geeignet. Die Implementierung von Angular erhöht in diesem Fall lediglich die Gesamtgröße des Projekts und folglich auch die Ladezeiten. Dies ist eines der Hauptgründe, warum man Angular nicht für Landing Pages und Websites mit statischem Inhalt verwenden sollte. Davon abgesehen ist Angular weit davon entfernt, <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/" target="_blank" rel="noreferrer noopener">SEO</a>-freundlich zu sein. Und im Zeitalter von <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/" target="_blank" rel="noreferrer noopener">Search-Engine-Optimization</a> gibt es weitaus bessere Alternativen, um dieses Ziel zu erreichen. Auch ist Angular keine gute Lösung für kurzfristige Projekte oder Start-ups mit begrenzten Ressourcen. Die Komplexität des Front-Ends kann in relativ kurzer Zeit immense Ausmaße annehmen und später schwer zu bändigen sein.</p>



<p class="wp-block-paragraph">Das Hauptanwendungsgebiet von Angular bestand darin, Einzelseiten-Webanwendungen zu erstellen. Aus diesem Grund verfügt es über eine breite Palette von Werkzeugen für die SPA-Entwicklung. Darüber hinaus ist es eine ideale Technologie für Websites, bei denen sich der Inhalt auf der Grundlage des Nutzerverhaltens und der Präferenzen der Benutzer dynamisch anpasst. Dependency Injections stellen sicher, dass im Falle der Änderung einer Komponente andere Komponenten, die mit ihr in Zusammenhang stehen, automatisch mitgeändert werden.</p>



<h3 class="wp-block-heading">Die 3 verschiedenen Ladetechniken</h3>



<p class="wp-block-paragraph">Bei der Arbeit mit Angular bieten sich 3 verschiedene Ladetechniken an. Diese sind das Eager Loading, Lazy Loading und Preloading, auf die ich nachfolgend eingehe.</p>



<p class="wp-block-paragraph"><strong>Eager Loading (Eifriges Laden)</strong></p>



<p class="wp-block-paragraph">Der Abruf aller benötigten Daten möglichst wirksam und umgehend bzw. sofort. Hierzu gibt es im Grunde genommen nicht viel anzumerken. Die Technik ist zwar effizient, doch die Tatsache, dass man eventuell nur einen bestimmten Teil der Daten benötigt aber dennoch alle Daten lädt, kann sich schnell zu einem Nachteil entwickeln, wenn es sich um große Datenmengen handelt.</p>



<p class="wp-block-paragraph"><strong>Lazy Loading (Langsames Laden)</strong></p>



<p class="wp-block-paragraph">Die am wenigsten eifrige bzw. nicht eifrige Ladetechnik. Wenn man faul ist, tut man so lange nichts, bis man es wirklich muss oder dazu gezwungen wird. Man stelle sich vor, dass die Anwendung drei Bereiche hat. Home, Admin und das Dashboard. Auf den Home-Bereich wird ständig zugegriffen, auf den Dashboard-Bereich die meiste Zeit. Der Admin-Bereich wird jedoch nur von einigen wenigen Nutzern verwendet. Folglich kann man die Admin-Route nach und nach laden. So lange niemand auf die Idee kommt, auf den Verwaltungsbereich der Anwendung zu klicken, wird der damit verbundene Code auch nicht ausgeführt bzw. nicht geladen.</p>



<p class="wp-block-paragraph">Die Mehrheit der Nutzer lädt den Code für den Verwaltungsbereich schlichtweg nie. Wenn man also Lazy Loading verwendet, kann man grundsätzlich schneller auf die Anwendung zugreifen, da man nicht so viel Code vom Server laden muss. Dies hängt damit zusammen, dass das ORM-Werkzeug (Objekt-Relationales Mapping-Werkzeug) jeglichen Zugriff auf alle Objektreferenzen »abfangen« muss, um hier bei Bedarf die verbundenen Objekte nachladen zu können. Dieses Abfangen erfolgt durch die Verwendung bestimmter Klassen für Einzelreferenzen und Mengenklassen. Der Unterschied zwischen den ORM-Werkzeugen liegt darin, ob der Entwickler diese Klassen explizit im Code verwenden muss oder ob das ORM-Werkzeug diese beim Kompilieren oder zur Laufzeit austauscht.</p>



<p class="wp-block-paragraph"><strong>Preloading (Vorladen)</strong></p>



<p class="wp-block-paragraph">Die „somewhere-in-between“ (Irgendwie Zwischendrin) Ladetechnik. Beim Preloading macht man im Grunde genommen dasselbe wie beim Lazy Loading, nur ein bisschen anders.</p>



<p class="wp-block-paragraph">Anhand des Home, Dashboard und Admin Beispiels lässt sich dies folgendermaßen darstellen. Die Startseite braucht man immer. Also lädt man diese schnell bzw. eifrig. Der Admin-Bereich wird nur selten und nur von wenigen Benutzern benötigt, also kann man diesen erst einmal etwas vernachlässigen bzw. &#8222;lazy&#8220; laden. Aber das Dashboard ist nicht das Erste, was ein Benutzer sieht, also kann es grundsätzlich erst einmal warten. Doch das Dashboard ist gleichzeitig etwas, dass die meisten der Benutzer irgendwann sehen möchten. Also sollte es zumindest dann zur Verfügung stehen, wenn das Laden des Home-Bereichs fertiggestellt ist. Nach jeder erfolgreichen Navigation sucht der Router in seiner Konfiguration nach einem nicht geladenen Modul, das er vorladen kann.</p>



<p class="wp-block-paragraph">Der Home-Bereich wird erfolgreich geladen und unmittelbar danach wird der Dashboard-Bereich im Hintergrund geladen.</p>



<h3 class="wp-block-heading">Welche Ladetechnik kann/soll ich nun verwenden?</h3>



<p class="wp-block-paragraph">Wie bei vielen Angelegenheiten in der IT kommt es hier auf den spezifischen Anwendungsfall und den zur Verfügung stehenden Ressourcen an. Wenn man nicht genau weiß, ob man die zusätzlichen Daten benötigt oder nicht, dann kann es ungünstig sein, sie direkt zu laden. Es kann aber auch ungünstig sein, sie später nachladen zu müssen. Entscheidend bei der Entscheidung ist die Wahrscheinlichkeit, ob und wann man die jeweiligen Daten für wen benötigt, um welche Datenmenge es sich handelt und ob man die Daten später einfach nachladen kann. Zu beachten ist, dass man ein automatisches Nachladen, nach einer Serialisierung, in der Regel nicht mehr initiieren kann.</p>



<h3 class="wp-block-heading">Release-Frequenz</h3>



<p class="wp-block-paragraph">Angular Releases folgen dem Konzept des Semantic Versionings. Man unterscheidet zwischen Major-, Minor- und Bugfix-Releases. Alle 6 Monate gibt es eine neue Major Release. Major Releases enthalten signifikante neue Features, sind aber nicht abwärtskompatibel. Der Umstieg auf eine neuere Major Release benötigt daher oft Update-Scripts, Refactorings des bestehenden Codes, weitere Tests und das Erlernen neuer APIs. Zu jeder Major Release gibt es ein bis drei Minor Releases. Patch Releases und Pre-Releases gibt es fast jede Woche.</p>



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



<p class="wp-block-paragraph">Der Support von Major Releases beträgt typischerweise 18 Monate lang nach Release. Davon 6 Monate aktiv. Aus diesem Grund gibt es in regelmäßigen Abständen Minor Releases und Patch Releases. Es folgt ein 12-monatiger Long Term Support (LTS) in Form von Patch-Releases, ausschließlich zur Behebung kritischer und sicherheitsrelevanter Fehler.</p>



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



<p class="wp-block-paragraph">Bei der Verwendung von Angular sollte von vornherein klar sein, dass die Realisierung eines Projekts mit der Abnahme vieler Entscheidungen über Architektur und des Renderings verbunden ist. Dies hat den Vorteil, dass sich das Projektteam zu 100% auf die Umsetzung von Features konzentrieren kann und nicht die grundlegende Architektur eigenständig aufbauen muss.</p>



<p class="wp-block-paragraph">Durch die sehr einheitliche Struktur von Angular Anwendungen lassen sich gute Entwickler sehr schnell in das Projekt integrieren, da Angular Anwendungen stets einer gewissen Struktur folgen. Dies vereinfacht die Skalierbarkeit des Teams als auch des Projektes selbst als vergleichsweise bei Individuallösungen der Architektur in anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>.</p>



<p class="wp-block-paragraph">Generell ist es für Enterprise Projekte sicherlich eine gute Wahl. Dennoch sollte man andere <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a> und VueJS nicht außer Acht lassen, über die ich in den kommenden Tagen schreibe.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/21/erklaerung-angular/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1210</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>
	</channel>
</rss>
