<?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>Standard Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/standard/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/standard/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sun, 16 Apr 2023 07:55:41 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Standard Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/standard/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<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>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><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>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>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>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>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>„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>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>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>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>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>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>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>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>Ü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>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>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>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>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>Alles in allem sind Analyseergebnisse immer gut als Argumentationsgrundlage. Mit Hilfe der Projekthistorie, die eine Auswahl gut darstellbarer Kennzahlen beinhaltet, kann man vor Kunden oder Entscheidern besser über ein eventuell nötiges technisches Release diskutieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/">SonarQube &#8211; Das Code-Qualitätsmanagement-Tool</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/17/erklaerung-sonarqube/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1176</post-id>	</item>
		<item>
		<title>RSS &#8211; Immer auf dem Laufenden bleiben</title>
		<link>https://ceosbay.com/2022/12/28/erklaerung-rss/</link>
					<comments>https://ceosbay.com/2022/12/28/erklaerung-rss/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 28 Dec 2022 19:00:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[2000]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Dev Ops]]></category>
		<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Feeds]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Nachrichten]]></category>
		<category><![CDATA[Netscape]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Parsing]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[Reader]]></category>
		<category><![CDATA[Rich Site Summary]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[RSS Rich]]></category>
		<category><![CDATA[Rss-Feeds]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[Summary]]></category>
		<category><![CDATA[Syndikat]]></category>
		<category><![CDATA[Vlog]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Websites]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1077</guid>

					<description><![CDATA[<p>RSS Rich Site Summary sind Dateiformate für Web-Feeds. Sie zeigen Änderungen auf Websites, z. B. auf News-Seiten, Blogs, Podcasts, Vlogs u.v.m. Das Akronym steht aktuell für Really Simple Syndication (Sehr einfache Verbreitung), vormals waren bereits &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/28/erklaerung-rss/">RSS &#8211; Immer auf dem Laufenden bleiben</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>RSS Rich Site Summary sind Dateiformate für Web-Feeds. Sie zeigen Änderungen auf Websites, z. B. auf News-Seiten, Blogs, Podcasts, Vlogs u.v.m. Das Akronym steht aktuell für Really Simple Syndication (Sehr einfache Verbreitung), vormals waren bereits andere Bedeutungen gegeben.</p>



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



<p>Es wurde 1999 von Netscape Communications entwickelt. Damals stand die Abkürzung für RDF Site Summary, eine Technologie, die im Rahmen des individualisierbaren Nachrichtenangebots My Netscape Network zum Einsatz kam. Bereits ein Jahr später wurde das Ressource Description Framework (RDF) durch ein einfacheres <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML-Format</a> ersetzt, was eine Umdeutung der Abkürzung RSS in Rich Site Summary zur Folge hatte. Siehe meinen Beitrag über <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>. Mit der Version 2.0 wurde dann die Bezeichnung Really Simple Syndication eingeführt. Als Nachfolger gilt das daran angelehnte Format Atom. Dies thematisiere ich dann in einem zukünftigen Beitrag.</p>



<p>Solche Dienste waren in den späteren 2000er-Jahren populär und meist auf speziellen Service-Websites vorzufinden, sogenannten RSS-Channels. Ein solcher gewöhnlicher Channel versorgt den Adressaten, ähnlich einem Nachrichtenticker, mit kurzen Informationsblöcken, die aus einer Schlagzeile mit Textanriss und einem Link zur Originalseite bestehen. Zunehmend werden aber auch komplette Inhalte klassischer Webangebote ergänzend als Volltext-RSS bereitgestellt.</p>



<p>Durchsetzen konnte es sich um das Jahr 2005. Besonders durch den Blog Hype, da die meisten Autoren sehr früh RSS-Feeds für ihre Artikel anboten und viele Blogs diese automatisch generierten und es heute noch machen. Ursprünglich ging es dabei vor allem um Text. In der zweiten Hälfte der 2000er wurden auch Podcasts darüber verbreitet, die dann z. B. auf mobile Endgeräte geladen wurden und bis heute noch geladen werden.</p>



<p>Die Bereitstellung von Daten im RSS-Format bezeichnet man auch als RSS-Feed, von engl. to feed – im Sinne von füttern, einspeisen, zuführen. Wenn ein Benutzer einen Channel abonniert hat, so sucht der Client in regelmäßigen Abständen beim Server nach Aktualisierungen im RSS-Feed.</p>



<h3 class="wp-block-heading">Wie funktioniert ein RSS-Feed?</h3>



<p>Wenn man einen RSS-Feed abonniert, kann man die Nachrichten mit einem Feedreader einlesen. Als Abonnent kann man sich dann den (in vielen Feeds enthaltenen) Inhalt direkt anzeigen lassen oder den angebotenen Links folgen und die vollständige Meldung der verlinkten Seite lesen. Die Adresse eines RSS-Feeds entspricht dem Aufbau einer URL, wie sie auch für Webseiten verwendet wird.</p>



<p>Zum Lesen eines RSS-Feeds dienen spezielle Programme, die auf die Ähnlichkeit zum Nachrichtenticker angepasst sind. Diese nennt man (synonym) RSS-Aggregatoren, RSS-Reader oder Feedreader. Einige E-Mail-Programme bieten oder boten RSS-Lesefunktionen, teils via Plugins, an. Früher unterstützten einige populäre Webbrowser dies ebenfalls. Neben diesen nutzte man auch Anwendungen, die wie als Bildschirmschoner agierten. Statt umherfliegende Seifenblasen oder prozedural generierte Rohrsysteme, bekam man dann eben bei Inaktivität die abonnierten Feeds angezeigt.</p>



<p>Im Unterschied zur Benachrichtigung per E-Mail geht die Initiative bei RSS vom Empfänger aus, der den Feed abonniert hat. Dies bedeutet, dass der Anbieter die Leser nicht auswählen kann, sich im Gegenzug aber auch nicht um eine Verwaltung des Leserstammes (zum Beispiel mit einer Mailinglisten-Software) kümmern muss. Der Leser muss nicht offenlegen, dass er die Quelle beobachtet, und kann Quellen wesentlich leichter abonnieren bzw. das Abonnement widerrufen, indem er einfach die Einstellung in seinem Aggregator vornimmt.</p>



<p>Es vereinfacht die Beobachtung einer großen Menge von Quellen wie z. B. Blogs, in denen es eher selten zu Änderungen kommt, deren Aktualisierung der Leser aber ggf. nicht verpassen möchte.</p>



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



<p>Da Inhalte via RSS in einem standardisierten Format vorliegen, eignen sie sich auch für die maschinelle Weiterverarbeitung. So lassen sich damit beispielsweise Texte einer Webseite automatisch mit Hilfe eines Parsers in eine andere Webseite integrieren oder sehr einfach auf verschiedenen Endgeräten speziell aufbereitet darstellen.</p>



<p>Das Aufbereiten von Informationen in ein standardisiertes Austauschformat/-objekt nennt man auch Aggregation, das Veröffentlichen auf anderen Seiten Content-Syndication. Websites können damit automatisch mit den neuesten Nachrichten aktualisiert werden, ohne dass der Seitenbetreiber jeweils eine Aktualisierung vornehmen muss. Eine Reihe von Content-Management-Systemen wie WordPress unterstützen diese Funktionalität. Auch dieser Blog wurde mit WordPress erstellt.</p>



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



<p>Wenn man lediglich ein paar Webseiten gerne regelmäßig mehrmals in der Woche liest, dann kann die Nutzung eines RSS-Feeds etwas übertrieben sein. Für Vielleser führt jedoch weiterhin kein sinnvoller Weg an Rich Site Summary und einem RSS-Reader vorbei.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/28/erklaerung-rss/">RSS &#8211; Immer auf dem Laufenden bleiben</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/28/erklaerung-rss/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1077</post-id>	</item>
	</channel>
</rss>
