<?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>Manager Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/manager/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/manager/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 07:28:17 +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>Manager Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/manager/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>SCTM &#8211; Sicherheitsbewusstes Testmanagement für vertrauenswürdige und robuste Softwarelösungen</title>
		<link>https://ceosbay.com/2023/04/05/erklaerung-sctm/</link>
					<comments>https://ceosbay.com/2023/04/05/erklaerung-sctm/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 05 Apr 2023 16:50:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Analysis]]></category>
		<category><![CDATA[Analytisch]]></category>
		<category><![CDATA[Central]]></category>
		<category><![CDATA[Effizienz]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Focus]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Jira]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Micro]]></category>
		<category><![CDATA[NUnit]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Prozessoptimierung]]></category>
		<category><![CDATA[SC]]></category>
		<category><![CDATA[SCTM]]></category>
		<category><![CDATA[Silk]]></category>
		<category><![CDATA[SilkCentral]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testablauf]]></category>
		<category><![CDATA[Testfall]]></category>
		<category><![CDATA[Testfälle]]></category>
		<category><![CDATA[Testlauf]]></category>
		<category><![CDATA[Testplan]]></category>
		<category><![CDATA[TestTeams]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[VersionOne]]></category>
		<category><![CDATA[Vorteile]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1323</guid>

					<description><![CDATA[<p>Der SilkCentral Test Manager (SCTM) ist ein Testmanagement-Tool, von Micro Focus, um die Effizienz und Effektivität von Softwaretestprozessen zu verbessern. Mit einer umfassenden Palette von Funktionen ermöglicht SCTM-Testteams, Testpläne und -fälle zu erstellen, auszuführen und &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/05/erklaerung-sctm/">SCTM &#8211; Sicherheitsbewusstes Testmanagement für vertrauenswürdige und robuste Softwarelösungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Der SilkCentral Test Manager (SCTM) ist ein Testmanagement-Tool, von Micro Focus, um die Effizienz und Effektivität von Softwaretestprozessen zu verbessern. Mit einer umfassenden Palette von Funktionen ermöglicht SCTM-Testteams, Testpläne und -fälle zu erstellen, auszuführen und zu verwalten sowie Testdaten und -ergebnisse zentral zu speichern und zu analysieren.&nbsp;</p>



<p>Hauptmerkmale des SilkCentral Test Managers</p>



<ul class="wp-block-list">
<li>Der SCTM unterstützt Testteams bei der Erstellung, Organisation und Verwaltung von Testplänen. Wobei es sowohl manuelle als auch automatisierte Testfälle berücksichtigt. Mit dem hierarchischen Ansatz kann man Testpläne in einer strukturierten Weise erstellen, sodass Testteams leicht Prioritäten setzen und Testfälle nach Modulen oder Funktionen gruppieren können.</li>
</ul>



<ul class="wp-block-list">
<li>Man kann damit Testfälle erstellen und die Schritte, die zur Durchführung des Tests erforderlich sind und die erwarteten Ergebnisse dokumentieren. Auch die Verknüpfung der Testfälle mit Anforderungen sowie Defekten sind möglich. Dies schafft die Möglichkeit einer lückenlosen Nachverfolg- und Rückverfolgbarkeit.</li>
</ul>



<ul class="wp-block-list">
<li>Bei der Testausführung selbst ermöglicht der SCTM den Testteams, sowohl manuelle als auch automatisierte Testfälle auszuführen. Dadurch kann man Fortschritte und Ergebnisse besser verfolgen. Testmanager können Testläufe planen und steuern während man die Testausführung nach Bedarf anpassen kann. Integrationsmöglichkeiten mit anderen Testautomatisierungstools wie Silk Test und Selenium erweitern die Automatisierungsfähigkeiten des SCTM.</li>
</ul>



<ul class="wp-block-list">
<li>Der SCTM verwaltet Testdaten zentral und stellt sicher, dass alle Testergebnisse und -daten an einem Ort gespeichert und zugänglich sind. Testmanager können auf Testdaten und -ergebnisse zugreifen, um schnell Probleme zu erkennen und entsprechende Maßnahmen zu ergreifen.</li>
</ul>



<ul class="wp-block-list">
<li>Umfangreiche Berichts- und Analysefunktionen, helfen dabei, Erkenntnisse aus Testaktivitäten zu gewinnen und die Qualität der Softwareprodukte kontinuierlich zu verbessern. Vorgefertigte Berichte und Dashboards ermöglichen es Testmanagern, den Fortschritt und die Ergebnisse von Testaktivitäten leicht zu visualisieren und zu kommunizieren.</li>
</ul>



<ul class="wp-block-list">
<li>Man kann den SCTM mit einer Vielzahl von Tools und Plattformen integrieren, um Testteams bei der Einrichtung eines nahtlosen Testprozesses zu unterstützen. Integrationen mit Anforderungsmanagement-, Fehlerverfolgungs-, Versionskontroll- und Testautomatisierungstools ermöglichen eine lückenlose Zusammenarbeit und verbessern die Transparenz und Effizienz des gesamten Testprozesses.&nbsp;</li>
</ul>



<h3 class="wp-block-heading">Einige der wichtigsten Integrationen sind:</h3>



<p>a. Anforderungsmanagement-Tools: Durch die Integration mit Anforderungsmanagement-Tools wie Jira, TFS oder VersionOne können Testteams Anforderungen erfassen, verwalten und verfolgen und diese direkt mit Testfällen verknüpfen. Diese Verknüpfung verbessert die Rückverfolgbarkeit und erleichtert die Identifizierung von Abhängigkeiten zwischen Anforderungen und Testfällen.</p>



<p>b. Fehlerverfolgungs-Tools: Die Integration mit Fehlerverfolgungssystemen wie Bugzilla, Mantis oder Jira ermöglicht es Testteams, Defekte direkt aus dem SCTM heraus zu melden und zu verwalten. Dadurch kann man gegebenenfalls die Kommunikation zwischen Testern, Entwicklern und Stakeholdern verbessern und die Zeit zur Behebung von Fehlern verkürzen.</p>



<p>c. Versionskontrollsysteme: Durch die Integration mit Versionskontrollsystemen wie Git, Subversion oder Mercurial können Testteams ihre Testartefakte verwalten, versionieren und nachverfolgen. Diese Integration unterstützt die Zusammenarbeit und Kontrolle über die Testdokumentation, was zu einer verbesserten Qualitätssicherung führen kann.</p>



<p>d. Testautomatisierungstools: SCTM bietet Integrationen mit einer Vielzahl von Testautomatisierungstools wie Silk Test, <a href="https://ceosbay.com/2022/11/25/selenium/" target="_blank" rel="noreferrer noopener">Selenium</a>, <a href="https://ceosbay.com/2023/03/18/erklaerung-junit/" target="_blank" rel="noreferrer noopener">JUnit</a>, NUnit und anderen. Durch die Integration dieser Tools können Testteams ihre Testfälle automatisieren, Testläufe planen und die Testabdeckung erhöhen, um die Softwarequalität weiter zu verbessern.</p>



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



<p>Der SilkCentral Test Manager ist ein leistungsstarkes Testmanagement-Tool, das Testteams bei der Planung, Durchführung und Verwaltung von Testaktivitäten unterstützt. Mit der umfassenden Palette von Funktionen und Integrationen hilft der SCTM-Testteams, ihre Testprozesse zu optimieren, die Softwarequalität zu verbessern und die Kommunikation und Zusammenarbeit zwischen den verschiedenen Mitgliedern eines Softwareentwicklungsteams zu stärken. Insgesamt ist der SCTM ein wertvolles Werkzeug für Testteams. </p>



<p>Doch wie bei jedem Testmanagement-Tool gibt es auch beim SilkCentral Test Manager (SCTM) einige Makel oder Nachteile, die potenzielle Anwender berücksichtigen sollten. Da SCTM eine Vielzahl von Funktionen und Einstellungsoptionen bietet, kann es für neue Benutzer schwierig sein, sich zurechtzufinden. Die Lernkurve kann steil sein und es kann einige Zeit dauern, bis sich Benutzer mit der Benutzeroberfläche und den verschiedenen Funktionen vertraut gemacht haben. Darüber hinaus ist SCTM nicht das günstigste Testmanagement-Tool auf dem Markt. Je nach Bedarf und Größe des Testteams kann die Investition in eine SCTM-Lizenz eine erhebliche finanzielle Verpflichtung darstellen, insbesondere für kleinere Unternehmen oder Start-ups. </p>



<p>Die umfangreiche Funktionspalette von SCTM kann für manche Benutzer überwältigend sein, insbesondere wenn man nicht alle Funktionen benötigt. Die Komplexität des Tools kann dazu führen, dass einige Benutzer Schwierigkeiten haben, effektive Testprozesse einzurichten und zu verwalten. Obwohl SCTM in vielen Bereichen anpassbar ist, sind die Anpassungsmöglichkeiten möglicherweise nicht so umfassend wie bei einigen anderen Testmanagement-Tools. Dadurch kann es schwierig sein, das Tool an bestimmte Arbeitsabläufe oder Anforderungen eines Testteams anzupassen. </p>



<p>Aus Onlineforen geht hervor, dass Benutzer manchmal von unzureichendem oder langsamem Kundensupport seitens des Herstellers berichten. Dies kann frustrierend sein, wenn Testteams auf Probleme stoßen, die sie ohne Unterstützung nicht lösen können. Trotz dieser Makel bleibt SCTM ein leistungsstarkes Testmanagement-Tool mit einer Vielzahl von Funktionen und Integrationen, die für viele Testteams von großem Nutzen sein können. Bei der Auswahl eines Testmanagement-Tools sollten potenzielle Benutzer jedoch die spezifischen Anforderungen ihres Testteams sowie ihr Budget und ihre Ressourcen berücksichtigen. Es kann auch hilfreich sein, mehrere Tools zu evaluieren, um herauszufinden, welches am besten zu den Bedürfnissen des Teams passt.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/05/erklaerung-sctm/">SCTM &#8211; Sicherheitsbewusstes Testmanagement für vertrauenswürdige und robuste Softwarelösungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/05/erklaerung-sctm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1323</post-id>	</item>
		<item>
		<title>IntelliJ IDEA &#8211; Die intelligente und leistungsstarke Entwicklungsumgebung</title>
		<link>https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/</link>
					<comments>https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 10 Mar 2023 18:34:56 +0000</pubDate>
				<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Cython]]></category>
		<category><![CDATA[Dart]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Haml]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Less]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Markdown]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python and Jython]]></category>
		<category><![CDATA[Ruby and JRuby]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[SCSS]]></category>
		<category><![CDATA[Slim]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testfall]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Ultimate]]></category>
		<category><![CDATA[Umfeld]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XSL]]></category>
		<category><![CDATA[YAML]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1084</guid>

					<description><![CDATA[<p>IntelliJ IDEA ist eine integrierte Entwicklungsumgebung (IDE) des Softwareunternehmens JetBrains. Es existieren derzeit zwei verschiedene Editionen. Zum einen die kostenpflichtige Ultimate Edition und die kostenfreie Community Edition. Features Im Wesentlichen unterscheiden sich die beiden Versionen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/">IntelliJ IDEA &#8211; Die intelligente und leistungsstarke Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>IntelliJ IDEA ist eine integrierte Entwicklungsumgebung (IDE) des Softwareunternehmens JetBrains. Es existieren derzeit zwei verschiedene Editionen. Zum einen die kostenpflichtige Ultimate Edition und die kostenfreie Community Edition.</p>



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



<p>Im Wesentlichen unterscheiden sich die beiden Versionen im Funktionsumfang. Hierzu von der Ultimate Version unterstützte Sprachen: Java, Groovy, Kotlin, Scala, Python and Jython, Cython, <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a> and JRuby, Rust, PHP, Go, Dart, SQL, HTML, XML, JSON, YAML, XSL, XPath, Markdown, <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, TypeScript, CSS, Sass, SCSS, Less, Haml, Slim, Liquid</p>



<p>Wobei zu beachten ist, dass die Ultimate Edition von IntelliJ IDEA neben den nativ unterstützten Sprachen, einige der Sprachen lediglich durch den Einsatz von PlugIns unterstützt. In der Community Edition sind auch einige Sprachen gar nicht berücksichtigt. Eine explizite bzw. genaue Differenzierung möchte ich in diesem Beitrag nicht vornehmen. Also sind die Angaben bzgl. der Features mit Vorsicht zu genießen.</p>



<p>Auch ist zu beachten, dass lediglich die Ultimate Edition von IntelliJ IDEA die umfangreiche <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Unterstützung mitbringt. Im Enterprise Umfeld sind diese in der Regel unabdingbar.</p>



<p>Auch bei den Build Tools gibt es Unterschiede. Besonders auffällig ist dabei die Tatsache, dass <a href="https://ceosbay.com/2022/11/11/node-js-mit-npm-auf-macos/" target="_blank" rel="noreferrer noopener">npm</a> zwar in der Ultimate Edition läuft, jedoch nicht in der Community Edition. Ich habe es auch in der Community Version zum Laufen gebracht. Dennoch ist dies mit Vorsicht zu genießen, da ich aufgrund von Fehlern dennoch auf die Ultimate Edition geswitched bin.</p>



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



<p>Auf die Funktionsfähigkeit bei der Versionskontrolle bzw. bei <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/" target="_blank" rel="noreferrer noopener">Cloud</a>-basierten Diensten wie <a href="https://ceosbay.com/2022/11/18/erklaerung-git/" target="_blank" rel="noreferrer noopener">Git</a>, <a href="https://ceosbay.com/2022/11/19/erklaerung-github/" target="_blank" rel="noreferrer noopener">GitHub</a>, Subversion, Mercurial und Team Foundation Server kann man sich verlassen. Bei Perforce ist man zumindest in der Community Edition verlassen.</p>



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



<p>Während die Community Edition lediglich <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/" target="_blank" rel="noreferrer noopener">Docker</a> für das Deployment unterstützt sind es mit der Ultimate Edition <a href="https://ceosbay.com/2022/12/24/erklaerung-kubernetes/" target="_blank" rel="noreferrer noopener">Kubernetes</a>, Java Applications Servers als auch <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/" target="_blank" rel="noreferrer noopener">Docker</a>.</p>



<h3 class="wp-block-heading">Codevervollständigung</h3>



<p>Die Codevervollständigung ist eine Funktion, die vor allem Programmieranfängern sehr entgegenkommt. Nur wenige werden als Coder geboren, oder!? Da vergisst man schon mal schnell eine import-Anweisung, IDEA aber nicht. Meistens weist IntelliJ einen auf den Fehler hin und schlägt Korrekuren vor. Dies gilt auch für nicht verwendete Importe, die IntelliJ entsprechend einer manuellen Zustimmung entsorgt.</p>



<p>Es nimmt einem den Grossteil der Tipparbeit ab, damit man sich dem Programmdesign widmen kann und nicht über korrekt formulierte JAVA-Anweisungen nachdenken muss. Ich muss gestehen, dass ich mich bisher noch nicht wirklich mit JAVA auseinandergesetzt habe. Doch dies hole ich derzeit nach und auch darüber gibt es in der nahen Zukunft einen Beitrag.</p>



<h3 class="wp-block-heading">Code Layout Manager</h3>



<p>Den Code Layout Manager weiß man spätestens dann zu schätzen, wenn man im eigenen Quelltext nicht mehr durchblickt oder fremden Quelltext bearbeiten muss. Dann kann man Text markieren und von IDEA neu formatieren lassen. Dies geht relativ intelligent von statten.</p>



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



<p>Auch die Refactoringfähigkeiten von IntelliJ sind nicht zu unterschätzen. Wer die Funktionen einmal in Aktion erlebt hat, der möchte sie nicht mehr missen. Dazu gehören u.A. das Renaming, Move, Introduce Explaining Variable, Extract Method usw.</p>



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



<p>Ich arbeite noch nicht lange mit dem Programm. Doch IntelliJ hat scheinbar in enger Kooperation mit den Anwendern ein relativ gutes Produkt entwickelt, mit dem man gut im Enterprise Umfeld arbeiten kann. Besonders die große PlugIn Bibliothek als auch die individuelle Erweiterbarkeit durch eine offen gelegte API haben mir persönlich sehr gefallen. Dadurch ist es auch möglich eigene PlugIns für IntelliJ zu schreiben und diese zu selbst zu implementieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/">IntelliJ IDEA &#8211; Die intelligente und leistungsstarke Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1084</post-id>	</item>
		<item>
		<title>Pact.io &#8211; Für die nahtlose Integrationstestautomatisierung durch Contract Tests</title>
		<link>https://ceosbay.com/2022/12/26/erklaerung-pact-io/</link>
					<comments>https://ceosbay.com/2022/12/26/erklaerung-pact-io/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 26 Dec 2022 17:30:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Alternativen]]></category>
		<category><![CDATA[Änderungen]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Broker]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Consumer]]></category>
		<category><![CDATA[Contracts]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[pact]]></category>
		<category><![CDATA[Provider]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[Type]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1049</guid>

					<description><![CDATA[<p>Pact ist ein Open Source Code-First-Tool zum Testen von https- und Nachrichtenintegrationen mithilfe von Contract Tests. Diese stellen sicher, dass die Nachrichten zwischen den Anwendungen mit einem gemeinsamen Verständnis übereinstimmen, dass in einem Contract dokumentiert &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/26/erklaerung-pact-io/">Pact.io &#8211; Für die nahtlose Integrationstestautomatisierung durch Contract Tests</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Pact ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Code-First-Tool zum Testen von https- und Nachrichtenintegrationen mithilfe von Contract Tests. Diese stellen sicher, dass die Nachrichten zwischen den Anwendungen mit einem gemeinsamen Verständnis übereinstimmen, dass in einem Contract dokumentiert ist. Die Alternative zu Contract Tests, sind Integrationstests, auf die ich in späteren Beiträgen eingehen werde. Alles in allem sind sie dafür da, um sicherzustellen, dass die Anwendungen korrekt zusammenarbeiten.</p>



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



<p>Bis zum Aufkommen der Microservice-Architekturen wurde Software klassischerweise als Monolith entworfen. Dabei gab es keinerlei interne Schnittstellen, da alle Informationen im Monolithen weitergereicht werden konnten. Dementsprechend konnte man sich im Testing nur auf die Stufen Unittests, Integrationstests und End-to-End-Tests konzentrieren. Mit dem Aufkommen der Microservice-Architekturen existiert nun eine Vielzahl an internen Schnittstellen und damit entsteht die Notwendigkeit, diese zu testen. Die Kommunikation der Services untereinander geschieht dabei nicht zufällig, sondern folgt klar definierten Regeln, den sogenannten Schnittstellen-Contracts.</p>



<h3 class="wp-block-heading">Was ist Contract Testing?</h3>



<p>Wie bereits angesprochen, wurde die korrekte Zusammenarbeit von API und Consumer meist durch Integrationstests sichergestellt. Da diese allerdings eine lauffähige Systemlandschaft benötigen, können Fehler erst relativ spät erkannt werden. Bei der Entwicklung ist es jedoch von Vorteil, das Feedback so früh wie möglich zu erhalten. Hinzu kommt, dass Integrationstests eigentlich zum Prüfen der Fachlichkeit dienen. In heutigen Testlandschaften stellen sie strenggenommen &#8222;nur nebenher&#8220; fest, wenn es technische Probleme an der Schnittstelle gibt. Das kann sowohl bedeuten, dass der Aufwand bei der Fehlersuche steigt, weil neben fachlichen Problemen auch technische Ursachen zum Fehlschlag des Tests führen können, als auch der Wartungsaufwand der Tests sich erhöht.</p>



<p>Macht also Sinn, dedizierte Tests zu nutzen, um Fehler an Schnittstellen zu finden. Hier bietet sich Contract Testing, genauer gesagt, Consumer Driven Contract Testing (CDCT) an. Verträge für Softwarekomponenten. Der Zusatz &#8222;Consumer Driven&#8220; bedeutet, der Consumer bestimmt den Vertrag (Aus diesem Grund nennt man es auch Consumer Contract) und das sich die API nach dessen Vorgaben richten muss.</p>



<p>Neben Consumer Contracts gibt es die etwas verbreiteteren Provider Contracts wie WSDL-/XML-Schemata von SOAP-APIs oder Werkzeuge wie Swagger im Kontext von <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/" target="_blank" rel="noreferrer noopener">REST-Services</a>.</p>



<p>Auch wenn sich die Funktionsweise von <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zu <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> unterscheidet, bleibt die Idee dahinter gleich. Der Provider erfüllt den vom Consumer definierten Vertrag.</p>



<p>Der Vertrag enthält die API samt Parameter und die erwartete (minimale) Antwort. Dabei kann die Beschreibung der Parameter durch den Einsatz von regulären Ausdrücken beliebig präzise sein. So kann der Consumer erwarten, beim Aufruf der API einen unbestimmten String-Parameter oder einen bestimmten String-Parameter aus einem vordefinierten Set zu übergeben. Der zweite Fall ist äußerst hilfreich, wenn der Provider diesen String-Parameter in einen Enum-Wert übersetzt.</p>



<h3 class="wp-block-heading">Der Consumer Test mit Pact</h3>



<p>Sämtliche Verträge zwischen dem Consumer und dem Provider werden in einer JSON-Datei, auch Pact-Datei genannt, definiert. Der Consumer generiert diese Pact-Datei beim Ausführen seiner Pact-Tests und veröffentlicht sie auf dem Pact-Broker. Bei den Tests handelt es sich um gewöhnliche Unit-Tests und sie basieren auf einem der vielen von Pact unterstützen Test-Frameworks wie JUnit oder Jest. In dem Test ruft der Consumer die zu testende API inklusive Parameter auf. Der Aufruf wird von einem Mock-Provider, der vom Pact-Framework zur Verfügung gestellt wird, entgegengenommen. Der Mock-Provider prüft, ob dieser Aufruf mit dem Aufruf aus dem Vertrag übereinstimmt. Sind keine Abweichungen gefunden, antwortet der Mock-Provider mit der minimalen Antwort, die ebenfalls aus dem Vertrag stammt. Der Consumer empfängt in seinem Test die Antwort und vergleicht sie mit seiner Erwartung. Stimmen sie überein, ist der Test erfolgreich. Auf diesem Weg stellt der Pact-Test sicher, dass der Consumer den Aufruf tätigen und die Antwort verarbeiten kann.</p>



<p>Der Pact-Broker ist ein Webserver, der sowohl vom Consumer als auch vom Provider erreichbar sein muss. Er verwaltet die Verträge, indem er sie versioniert ablegt, sie dem Provider zur Verfügung stellt und die Testergebnisse speichert. Die Art und Weise wie der Consumer die Verträge auf dem Pact-Broker veröffentlicht, ist abhängig von der eingesetzten Programmiersprache der Tests und/oder dem eingesetzten Dependendency-Management. Für Maven beispielsweise gibt es ein spezielles Pact-Plugin, das den publish-Goal anbietet, für <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> existiert hingegen eine spezielle Pact-Version mit dem Namen Pact-js.</p>



<h3 class="wp-block-heading">Der Provider Test</h3>



<p>Analog zum Consumer-Test ist der Provider-Test auch ein Unit-Test und wird im Rahmen der restlichen Unit-Tests ausgeführt. Hierbei werden alle Verträge, die der Provider mit seinen Consumern abgeschlossen hat, vom Pact-Broker heruntergeladen. Der Aufruf der APIs erfolgt lokal, sodass ein Aufruf durch den Consumer simuliert wird. Der Provider verarbeitet den Aufruf und generiert seine Antwort, die mit der erwarteten Antwort aus dem Vertrag verglichen wird. Sollten sie gleich sein, hat der Provider den Pact-Test bestanden. Ansonsten gilt der Test als fehlgeschlagen und das Artefakt des Providers kann nicht ordnungsgemäß gebaut werden. Die Ursache für Fehlschläge sind in den meisten Fällen Code-Änderungen am Provider ohne den Consumer entsprechend angepasst zu haben oder die Erwartungshaltung des Consumers ist fehlerhaft. In beiden Fällen wird durch CDCT ein Missstand aufgedeckt, der erst zur Laufzeit bemerkbar gewesen wäre.</p>



<h3 class="wp-block-heading">Alternativen zu Pact</h3>



<p>Natürlich ist Pact nicht das einzige Framework zum Implementieren von CDCT, wenn auch aktuell eines der am weitesten verbreiteten. Neben Pact existieren noch ein paar weitere Möglichkeiten für das vertragsbasierte Testen wie Postman, Spring Cloud Contract Project oder Dredd, auf die ich noch in zukünftigen Beiträgen eingehen werde. Aus diesem Grund erfolgt auch das Fazit erst, wenn ich ein paar Vergleiche aufstellen kann.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/26/erklaerung-pact-io/">Pact.io &#8211; Für die nahtlose Integrationstestautomatisierung durch Contract Tests</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/26/erklaerung-pact-io/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1049</post-id>	</item>
		<item>
		<title>Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</title>
		<link>https://ceosbay.com/2022/12/22/erklaerung-maven/</link>
					<comments>https://ceosbay.com/2022/12/22/erklaerung-maven/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 05:53:15 +0000</pubDate>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[1]]></category>
		<category><![CDATA[4]]></category>
		<category><![CDATA[Abhängigkeiten]]></category>
		<category><![CDATA[Artifact]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Central]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Don&#039;t repeat yourself]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[installieren]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JFrog]]></category>
		<category><![CDATA[Klasse]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kompilieren]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Konvention]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Paket]]></category>
		<category><![CDATA[pom]]></category>
		<category><![CDATA[Programmierer]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[verifizieren]]></category>
		<category><![CDATA[verify]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1025</guid>

					<description><![CDATA[<p>Maven ist ein Open Source Build-Tool der Apache Software Foundation für die Projektverwaltung. Man kann damit Java-Projekte automatisieren. Es wurde für die Java-Programmierplattform entwickelt und ist in integrierten Entwicklungsumgebungen für Java, beispielsweise in Apache NetBeans, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Maven ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Build-Tool der Apache Software Foundation für die Projektverwaltung. Man kann damit Java-Projekte automatisieren. Es wurde für die Java-Programmierplattform entwickelt und ist in integrierten Entwicklungsumgebungen für Java, beispielsweise in Apache NetBeans, Eclipse, IntelliJ IDEA bereits implementiert, sodass oftmals keine separate Installation notwendig ist. und es ist aus einem Teil des Jakarta-Projekts hervorgegangen. Über die genannten IDE’s (Entwicklungsumgebungen) werde ich in zukünftigen Beiträgen schreiben.</p>



<p>Maven vereinfacht den Softwareerstellungsprozess, bietet ein einheitliches System für die Entwicklerarbeit, hochwertige Projektinformationen, Richtlinien für das Festlegen von Best Practices und erleichtert die Migration zu neuen Funktionen durch mehr Transparenz. Es beschreibt sowohl, wie Software gebaut wird, als auch deren Abhängigkeiten. Apache hilft sowohl bei der Verwaltung von Projekten und dient als Tool zum Verständnis. Es hilft also dabei, den Zustand eines Projekts zu organisieren und relativ schnell darzustellen.</p>



<p>Primär wird das Programm von Entwicklern und Projektmanagern bei Java-Anwendungsprojekten verwendet. Das Tool kann nützlich sein, um den Zustand eines Projektes auf einem Blick für technisch weniger versierte Personen, wie Führungspersönlichkeiten und Investoren, zusammenzufassen und gleichzeitig, um einige Prozesse bei der Softwareentwicklung zu automatisieren.</p>



<p>Maven basiert auf dem Objektmodell. Projekte werden als eine Pom.xml-Datei gespeichert. Das Tool verwaltet Projekt-Builds, Reportings und Dokumentationen aus einer zentralen XML-Informationsbasis. Mit der Standard-Plug-in-Architektur kann man es über den Standard-Input mit so gut wie jeder Anwendung nutzen und kollaborieren. Es vereinfacht den Prozess für das Erstellen von Java-Anwendungen erheblich, sodass der Nutzer den Status des Projektes viel einfacher einschätzen kann.</p>



<p>Der Name Maven kommt aus dem Jiddischen und bedeutet so viel wie „Sammler des Wissens“.</p>



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



<p>Maven entstand in der Apache Software Foundation aus Frust über den Build-Prozess von Turbine. Es wurde bald zum Top-Level-Projekt aufgrund der Notwendigkeit, die Builds der vielen unterschiedlichen Projekte der Apache Software Foundation möglichst zu vereinheitlichen und somit auch zu vereinfachen.</p>



<p>Durch die vereinheitlichten Strukturen konnten Mitglieder unterschiedlicher Entwicklungsteams zwischen den einzelnen Teilprojekten wechseln und produktivere Arbeitsergebnisse erzielen. Dank der projektübergreifenden Standardisierung war es nicht mehr notwendig, sich in komplizierte Prozesse einzuarbeiten, um das Projekt ausführen und testen zu können.</p>



<p>Die Entwicklung von Maven 1 wurde im Jahr 2003 begonnen und am 13. Juli 2004 als Version 1.0 veröffentlicht. Die Umsetzung wurde jedoch sehr schnell realisiert, sodass einige Eigenheiten nicht bedacht wurden. Beispielsweise gab es Probleme bei der Performance sowie einen Überschuss an Konfigurationsdateien und -angaben, die es zu beherrschen galt. 2014 wurde das End of Life (EoL) von Maven 1 verkündet. Die letzte veröffentlichte Version ist 1.1 vom 25. Juni 2007.</p>



<p>Im Jahr 2005 wurde parallel damit begonnen, Maven 2 zu entwickeln, welches mit Version 2.0 am 19. Oktober 2005 fertiggestellt wurde. Mit dem Major-Release 2 wurde Maven von Grund auf überarbeitet und bekannte Probleme aus der Vorgängerversion wurden behoben. Aus diesem Grund sind Maven 1 und Maven 2 untereinander inkompatibel. Am 18. Februar 2014 wurde das End of Life von Maven 2 kommuniziert. Die letzte veröffentlichte Version ist 2.2.1 aus November 2009.</p>



<p>Die Entwicklung von Maven 3 begann im Jahr 2008, bei der man sich insbesondere auf die Kompatibilität zwischen Maven 2 und 3 konzentrierte.</p>



<p>In der zweiten Hälfte des Jahres 2021 wurden die Arbeiten an Maven 4 begonnen. Eine wesentliche Verbesserung ist die stark optimierte Unterstützung von Multi-Modul-Projekten.</p>



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



<p>Maven benötigt zur Ausführung eine Java virtuelle Maschine (JVM) und ist aufgrund dieses Umstandes plattformunabhängig. Aus diesem Grund kann es auf jedem Betriebssystem ausgeführt werden, für das eine Java VM verfügbar ist.</p>



<p>Der Kern von Maven ist mit wenigen Megabyte als Paket kompakt gehalten. Die interne Struktur ist modular aufgebaut. Sämtliche Funktionen werden über Erweiterungen, sogenannte Plugins, bei der erstmaligen Verwendung über ein öffentliches im Internet verfügbares Repository, Maven Central genannt, nachgeladen und in einem lokalen Repository abgelegt.</p>



<p>Maven ist deklarativ und basiert auf zwei wesentlichen Paradigmen. Zum einen auf „Don’t Repeat Yourself“ (DRY bzw. Wiederhole dich nicht selbst) bedeutet sinngemäß im Kontext von Maven, dass man nicht bei jedem Projekt dieselben Build-Schritte neu definiert muss. Und auf „Convention over Configuration“ (CoC bzw. Konvention vor Konfiguration). Dies bezieht sich auf die Konfigurationsdatei (POM), mit denen Maven-Projekte beschrieben werden. Durch festgelegte Konventionen haben möglichst viele Konfigurationseinträge gemeingültige Vorbelegungen (Default-Werte), die für die meisten Anwendungsfälle bereits die erwünschten Ergebnisse produzieren.</p>



<p>Maven folgt den beiden beschriebenen Paradigmen über den gesamten Zyklus der Softwareerstellung konsequent. Eine wichtige Voraussetzung für eine erfolgreiche Automatisierung der einzelnen Schritte des Softwareerstellungsprozesses sind strikte Vereinheitlichungen, wie sie durch die beiden Paradigmen DRY und CoC geschaffen werden.</p>



<p>Obwohl Maven bereits sehr viele Vorgaben liefert, können Projekte diese Vorgaben an ihre tatsächlichen Bedürfnisse anpassen. Sowohl für künftige neuere Versionen von Maven als auch bei der Anbindung von Drittanbieterprodukten ist es eine bewährte Praxis, möglichst nahe am Maven-Standard zu bleiben.</p>



<h3 class="wp-block-heading">Wichtige Begriffe bei der Arbeit mit Maven</h3>



<p>Im Zusammenhang mit Maven werden wichtige Begriffe verwendet, mit denen man vertraut sein sollte, um effektiv damit zu arbeiten:</p>



<ul class="wp-block-list">
<li><strong>Artifacts</strong> (Artefakte) Diese werden in Maven sowohl Plugins als auch Abhängigkeiten zu externen Programmbibliotheken und die selbst erstellten binären Programmdateien des eigenen Softwareprojektes bezeichnet.</li>



<li><strong>Lifecycles</strong> (Lebenszyklen) Dies kann auch als Workflow oder Prozess verstanden werden. Maven kennt drei Lifecycles: „clean“, „site“ und „build“.</li>



<li><strong>Phases</strong> (Phasen) In diesen werden die einzelnen Schritte innerhalb eines „Lifecycles“ bezeichnet, die in festgelegter linearer Reihenfolge durchlaufen werden. Der Build-Lifecycle Default kennt 23 Schritte.</li>



<li><strong>Goals</strong> (Ziele) Sind einzelne Aktionen bzw. Funktionalitäten, die in einem Plugin bereitgestellt werden.</li>



<li><strong>Archetypes</strong> (Archetypen) In diesen können Gerüste für unterschiedlichste Arten von Softwareprojekten erstellt werden, deren Struktur dem Standard von Maven entspricht. Was auch als ein wesentliches Merkmal von Maven-Projekten ist. Die einheitliche Verzeichnisstruktur, auf die ich nachfolgend eingehen werde.</li>
</ul>



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



<p>my-project/ – Wurzelverzeichnis</p>



<p>pom.xml – Projektbeschreibung (Build-Logik)</p>



<p>src/ – alle Eingabedateien</p>



<p>main/ – Eingabedateien für die Erstellung des eigentlichen Produkts</p>



<p>java/ – Java-Quelltext-Dateien</p>



<p>resources/ – Projektdateien, die kein Java-Quellcode sind, aber für die Übersetzung oder zur Laufzeit benötigt werden, z. B. Bilder, <a href="https://ceosbay.com/2022/10/29/structured-query-language-sql/">SQL</a>, Java-Properties-Dateien etc.</p>



<p>test/ – Eingabedateien, die für automatisierte Testläufe benötigt werden</p>



<p>java/ – Testfälle, die als Java-Quellcode vorliegen, z. B. JUnit-Testfälle</p>



<p>resources/ – Zusätzliche Ressourcen für Testfälle</p>



<p>target/ – Alle durch Maven während des Build-Vorgangs erstellten Dateien</p>



<p>classes/ – kompilierte Java-Klassen</p>



<h3 class="wp-block-heading">Die Konfigurationsdatei &#8222;pom.xml&#8220;</h3>



<p>Die Konfigurationsdatei für Maven-Projekte hat die offizielle Bezeichnung &#8222;Project Object Model (POM)&#8220;und ist als pom.xml im Wurzelverzeichnis des Projektes abgelegt. Im Kontext des Build-Managements ist die pom.xml die Build-Logik, die von externen Werkzeugen wie dem Automatisierungsserver Jenkins aufgerufen wird. <a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Über Jenkins habe ich bereits geschrieben.</a></p>



<p>Die zwingenden Basisangaben für ein Projekt innerhalb einer POM sind die sogenannten GAV-Parameter, zuzüglich des Packagetyps. GAV steht für (G) = GroupID, (A) = ArtifactId und (V) = Version. Die GAV-Koordinaten müssen für jedes Projekt eindeutig sein und dürfen nicht mehrfach Verwendung finden.</p>



<h3 class="wp-block-heading">Abhängigkeiten bzw. (Dependency Management)</h3>



<p>Einer der wichtigsten Faktoren für den Erfolg von Maven ist der einfache Umgang mit fremden Abhängigkeiten, sogenannten 3rd Party Libraries. Externe Abhängigkeiten werden in der pom.xml notiert und über ihre GAV-Koordinaten eindeutig und transitiv aufgelöst. Die definierten Abhängigkeiten werden nicht physisch in die Versionsverwaltung mit aufgenommen, sondern während des Buildvorgangs im Projekt-Ausgabeverzeichnis target bereitgestellt.</p>



<p>Bei der Verwendung eines Artefaktes prüft Maven, ob es bereits lokal im Repository vorhanden ist. Das lokale Repository ist ein verstecktes Verzeichnis mit der Bezeichnung .m2/repository und findet sich im home-Verzeichnis des am Betriebssystem angemeldeten Nutzers.</p>



<p>Wird von Maven das angeforderte Artefakt im lokalen Repository nicht gefunden, wird in einem öffentlichen Remote-Repository danach gesucht. Bei erfolgreicher Suche wird das Artefakt im lokalen Repository verfügbar gemacht. Das Wichtigste öffentlich frei verfügbare Repository für Java-Artefakte lautet &#8222;Maven Central&#8220; und wird von dem Unternehmen Sonatype betrieben.</p>



<p>Es besteht die Möglichkeit, einen eigenen Repository-Server zu betreiben, um selbst erstellte Artefakte im Unternehmen bzw. im Intranet für andere Projekte bereitzustellen oder diese über das Internet zur Verfügung zu stellen.</p>



<p>Wichtige Implementierungen zum Hosten eigener Artefakte sind Sonatype Nexus OSS oder JFrog Artifactory, für die es sowohl freie Community Versionen als auch kommerzielle Enterprise-Varianten gibt. Diese Lösungen können neben den verschiedenen Java-Artefakten auch andere Formate wie beispielsweise Docker Images, RubyGems, .NET nuget oder NPM verwalten. Maven Central, das größte Open-Source-Repository, wird mit Nexus OSS betrieben.</p>



<h3 class="wp-block-heading">Maven-Lebenszyklen (Lifecycles)</h3>



<p>Wie bereits vorher erwähnt, kommen in einem Maven Workflow verschiedene Lebenszyklen zum Einsatz. Diese sind:</p>



<ul class="wp-block-list">
<li><strong>clean</strong> (Zum Löschen von Ergebnissen vorheriger Builds, mit den Phasen pre-clean, clean, post-cl</li>



<li><strong>build</strong> (default) (Zum Erstellen eines Projekts im Rahmen der verschiedenen Phasen</li>



<li><strong>site</strong> (Zum Erstellen von Webseiten zur Projektdokumentation und Reports, mit den Phasen pre-site, site, post-site, site-deploy.</li>
</ul>



<p>Maven geht dabei jeweils von einem Zyklus aus, der bei der Softwareerstellung im Allgemeinen durchlaufen wird. Es muss aber nicht jedes Softwareprojekt alle Phasen des im Folgenden verkürzt dargestellten Default-Zyklus verwenden. Die Standardfunktionalität kann durch die Einbindung von zusätzlichen Plug-ins an die entsprechende Phase erweitert werden.</p>



<ul class="wp-block-list">
<li><strong>validate</strong> bzw. validieren (Es wird überprüft, ob die pom.xml und die Projektstrukturen vollständig, valide und gültig sind.</li>



<li><strong>compile</strong> bzw. kompilieren (In dieser Phase wird der Quellcode kompiliert.</li>



<li><strong>test</strong> bzw. testen (Hier wird der kompilierte Code durch das eingebundene Unit-Test-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (z. B. JUnit, TestNG) getestet. Maven berücksichtigt dabei in späteren Zyklen, dass Testklassen normalerweise nicht in der auszuliefernden Software vorhanden sind.</li>



<li><strong>package</strong> bzw. verpacken (Das Kompilat wird – ggf. mit anderen nicht kompilierbaren Dateien – zur Weitergabe verpackt. Häufig handelt es sich dabei um eine JAR-Datei.</li>



<li><strong>integration-test</strong> bzw. Integrationstests (Bereitstellen der programmatisch erstellten Integrationstests mittels Behavior Driven Development (z. B. Cucumber, jGiven).</li>



<li><strong>verify</strong> bzw. Gültigkeitsprüfung des Softwarepakets (Überprüfung der Artefakte, ob die festgelegten Spezifikationen erfüllt wurden, D.H. die bereitgestellten Integrationstests werden ausgeführt.</li>



<li><strong>install</strong> bzw. das Kopieren in die lokale Maven-Repository (Kopiert das Softwarepaket ins lokale Maven-Repository, um es dann in anderen lokalen Maven-Projekten verwenden zu können. Dies ist insbesondere für modulare Projekte von Bedeutung.</li>



<li><strong>deploy</strong> bzw. anwenden (Lädt das Softwarepaket in ein entferntes Maven-Repository hoch, wonach es auch anderen Entwicklern global zur Verfügung steht.</li>
</ul>



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



<p>Hierbei kann man sich relativ kurzfassen. Ein Software-Projekt sollte stehts mit einem vernünftigen Buildmanagement ausgestattet sein. Das <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Tool bietet sich dabei vor allem bei Java-Projekten an, zumal es selbst auf Java basiert. Es ist ebenso möglich, Maven durch selbst entwickelte Plugins zu erweitern. Aufgrund dieser Eigenschaft wird es auch als Plugin Execution Framework bezeichnet. Man kann damit die Kollaboration bei der Entwicklung durch Programmierer und Projektmanager mit verschiedensten Skill-Sets wesentlich erleichtern bzw. vereinfachen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/22/erklaerung-maven/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1025</post-id>	</item>
		<item>
		<title>Git &#8211; Die Codeverwaltung für effiziente Zusammenarbeit revolutionieren</title>
		<link>https://ceosbay.com/2022/11/18/erklaerung-git/</link>
					<comments>https://ceosbay.com/2022/11/18/erklaerung-git/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 18 Nov 2022 11:30:00 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[Branch]]></category>
		<category><![CDATA[Distribution]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[equo]]></category>
		<category><![CDATA[Fork]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GitKraken]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kollaboration]]></category>
		<category><![CDATA[Kraken]]></category>
		<category><![CDATA[Lizenz]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Merge]]></category>
		<category><![CDATA[Offener]]></category>
		<category><![CDATA[Offiziell]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Pakete]]></category>
		<category><![CDATA[Paketmanager]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Quelle]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Repository Manager]]></category>
		<category><![CDATA[Sabayon]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Source Control Manager]]></category>
		<category><![CDATA[Stupid Content Tracker]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<category><![CDATA[Zusammenarbeit]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=609</guid>

					<description><![CDATA[<p>Git ist eine freie und Open Source Software für die verteilte Versionskontrolle. Es hilft Entwicklern dabei, Code zu speichern, zu verwalten, Änderungen darin zu verfolgen und zu kontrollieren. Zu den weiteren Zielen gehören Geschwindigkeit, Datenintegrität &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git &#8211; Die Codeverwaltung für effiziente Zusammenarbeit revolutionieren</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Git ist eine freie und <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Software für die verteilte Versionskontrolle. Es hilft Entwicklern dabei, Code zu speichern, zu verwalten, Änderungen darin zu verfolgen und zu kontrollieren. Zu den weiteren Zielen gehören Geschwindigkeit, Datenintegrität und Unterstützung für verteilte, nicht-lineare Arbeitsabläufe (Dabei können tausende von parallelen Zweigen auf verschiedenen Systemen entstehen &#8211; Dies ist keine Metapher sondern wörtlich gemeint! 😉 ).</p>



<p>Git wurde ursprünglich von Linus Torvalds im Jahr 2005 für die Entwicklung des Linux-Kernels entwickelt, wobei andere Kernel-Entwickler zur anfänglichen Entwicklung wesentliche Beiträge geleistet haben. Seit 2005 ist Junio Hamano der Hauptverantwortliche. Wie bei den meisten anderen verteilten Versionskontrollsystemen und im Gegensatz zu den meisten Client-Server-Systemen ist jedes Git-Verzeichnis auf jedem Computer ein vollwertiges Repository mit einer vollständigen Historie und vollständigen Versionsverfolgungsfunktionen, unabhängig vom Netzwerkzugang oder einem zentralen Server. Git ist, wie Anfangs angesprochen, freie und <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source Software</a>, die unter der <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html" target="_blank" rel="noreferrer noopener">GPL-2.0-Lizenz</a> vertrieben wird.</p>



<h3 class="wp-block-heading">Eine kurze Anekdote über Git und dessen Abbreviatur</h3>



<p>Linus Torvalds witzelte sarkastisch über den Namen git (was im britischen Slang &#8222;unangenehme Person&#8220; bedeutet): &#8222;Ich bin ein egoistischer Mistkerl und benenne alle meine Projekte nach mir selbst. Erst &#8222;Linux&#8220;, jetzt &#8222;Git&#8220;. Die Manpage beschreibt Git als &#8222;the stupid content tracker&#8220; Die Read-me-Datei des Quellcodes führt weiter aus:<br>&#8222;Git&#8220; kann alles Mögliche bedeuten, je nach Laune (Ich werde dies in der englischen Sprache belassen, da es so wahrscheinlich mehr Sinn macht 😉 ).</p>



<ul class="wp-block-list">
<li>Random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of &#8222;get&#8220; may or may not be relevant.</li>



<li>Stupid. Contemptible and despicable. Simple. Take your pick from the dictionary of slang.</li>



<li>&#8222;Global information tracker&#8220;: you&#8217;re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.</li>



<li>&#8222;Goddamn idiotic truckload of sh*t&#8220;: when it breaks.</li>
</ul>



<p>Um Git zu verstehen sind im Prinzip 8 Begriffe relevant. Repository (Kurz: Repo), die Versionskontrolle, Fork bzw. Forking (Gabel bzw. Gabelung), Branch (Verzweigung), Stage (Phase oder Stadium), Modified (modifiziert), Commit (Verbindlichkeit) und Merge (Zusammenführung). Diese Begriffe werde ich nachfolgend beschreiben.</p>



<h3 class="wp-block-heading">Was ist eine Repository?</h3>



<p>Eine Repository, kurz Repo genannt, ist ein Speicherort für Softwarepakete. Oft wird auch ein Inhaltsverzeichnis zusammen mit Metadaten (Metainformationen bzw. -daten sind strukturierte Daten, die Informationen über Merkmale anderer Daten enthalten) gespeichert. Eine Software-Repository wird in der Regel von Source-Control-Managern (SCM) oder Repository-Managern (Ein Repository-Manager ist eine dedizierte Server-Anwendung, die für die Verwaltung von Repositories mit binären Komponenten entwickelt wurde) verwaltet &#8211; Dazu teilweise mehr in der Versionskontrolle und in späteren Beiträgen. Paketmanager ermöglichen die automatische Installation und Aktualisierung von Repositories (Deshalb auch &#8222;Pakete&#8220; genannt).</p>



<p>Viele Organisationen und Softwarehersteller unterhalten zu diesem Zweck Server im Internet, teilweise kostenlos oder gegen eine Gebühr. Repositories können können verschiedene Programmiersprachen, Betriebssysteme, Spiele oder andere Anwendungen sowie Dokumente und Daten beherbergen. Die Betreiber solcher Repositories stellen in der Regel ein Paketverwaltungssystem zur Verfügung. Folglich Werkzeuge, mit denen Softwarepakete aus den Repositories gesucht, installiert und anderweitig bearbeitet werden können. Viele Linux-Distributionen (Der Begriff Distribution stammt aus dem Lateinischen &#8222;distributio&#8220; und hat im Zusammenhang mit Software zwei unterschiedliche Bedeutungen: Softwarepaketierung und Softwareverteilung) verwenden z. B. das Advanced Packaging Tool (APT), das häufig in Debian-basierten Distributionen zu finden ist oder yum in Red Hat-basierten Distributionen. Es gibt auch mehrere unabhängige Paketverwaltungssysteme, wie z. B. pacman, dass in Arch Linux verwendet wird und equo, welches in Sabayon Linux zu finden ist. Ich bin primär mit Debian-basierten Distributionen unterwegs. Werde ich aber in zukünftigen Beiträgen ausführlicher thematisieren.</p>



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



<p>Die Versionskontrolle unterstützt Entwickler bei der Verfolgung und Verwaltung von Änderungen am Quellcode eines Softwareprojekts. Wenn ein Projekt und die Anzahl der Programmierer wachsen, wird die Versionskontrolle unabdingbar. Doch in der Regel kommen sowohl bei kleineren als auch größeren Softwareprojekten mehrere Personen zum Einsatz, die gemeinsam an dem Quellcode arbeiten. Wenn man beispielsweise als Core-Entwickler an einem bestimmten Teil der Codebasis arbeiten möchte, ist es nicht förderlich oder effizient, wenn der Quellcode direkt bearbeitet wird, da zeitgleich noch andere die an dem Projekt beteiligt sind und daran arbeiten. Dies kann am Ende des Tages für ein enormes Durcheinander sorgen 😀</p>



<p>Da man auf dieses Durcheinander gut verzichten kann, arbeitet man als Entwickler mit einer Versionskontrolle &#8222;sicher&#8220; durch branching (Verzweigungen) und merging (Zusammenführungen). &#8222;Sicher&#8220; in Anführungszeichen, da es auch da einige Stolpersteine gibt 😉</p>



<p>Beim branching dupliziert ein Entwickler den Teil des Quellcodes (Das so genannte Repository bzw. die Repo), der für ihn relevant ist und kann die Änderungen genau an diesem Teil des Codes vornehmen, ohne den Rest des Projekts zu beeinträchtigen. Sobald der Entwickler seinen Teil des Codes ordnungsgemäß fertiggestellt hat, kann er diesen Code wieder in den Hauptquellcode mergen (einbinden), um es offiziell zu machen. All diese Änderungen werden protokolliert, kommentiert und können bei Bedarf eingesehen, kontrolliert oder rückgängig gemacht werden.</p>



<h3 class="wp-block-heading">Was ist Fork. bzw. Forking?</h3>



<p>Ein Fork ist eine Kopie einer Repository. Das Forken einer Repository ermöglicht es, frei mit Änderungen zu experimentieren, ohne das Originalprojekt zu beeinträchtigen. Dieser Begriff wird auch anderweitig genutzt, doch darauf werde ich jetzt nicht weiter eingehen 😀</p>



<h3 class="wp-block-heading">Was ist Branch bzw. Branching?</h3>



<p>Ein Branch (Zweig) ist ein hervorstehender Teil eines Baumes. Etwas, dass aus einem Hauptteil herausragt. So, auch in unserem Kontext. Ein Zweig stellt eine unabhängige Entwicklungslinie dar. Zweige dienen als Abstraktion für den Prozess der Bearbeitung (Stage/Commit). Man kann sie sich als eine Möglichkeit vorstellen, ein neues Arbeitsverzeichnis, einen Bereitstellungsbereich und/oder einen Projektverlauf anzufordern.</p>



<h3 class="wp-block-heading">Was ist Modified bzw. Modifying?</h3>



<p>Modified (Geändert) bedeutet, dass die Datei(en) geändert wurden aber noch nicht in die Datenbank bzw. Repository übertragen wurden.</p>



<h3 class="wp-block-heading">Was ist Stage bzw. Staging?</h3>



<p>Staged (Phase/Stadium) bedeutet, dass eine geänderte Datei in ihrer aktuellen Version markiert wurde, um sie in dem nächsten Commit-Snapshot (Schnappschuss) zu übernehmen.</p>



<h3 class="wp-block-heading">Was ist Commit bzw. Committing ?</h3>



<p>Commits (Verbindlichkeiten) sind die zentralen Bausteineinheiten einer Git-Projektzeitleiste. Sie können als Schnappschüsse oder Meilensteine entlang der Zeitachse eines Git-Projekts betrachtet werden. Commits werden mit dem Befehl &#8222;git commit&#8220; erstellt, um den Zustand eines Projekts zu diesem Zeitpunkt festzuhalten. Im Endeffekt wie das Zwischenspeichern mit F5 bei Spielen oder Strg + S bei der regulären Arbeit am Computer. In der Betrachtungsweise einiger interessanter und manchmal nervtötender Zeitgenossen &#8211; Lediglich etwas fundamentaler 😉</p>



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



<p>Mit dem Merging-Befehl fügt Git einen geforkten (aufgegabelten) Verlauf wieder zusammen. Mit dem Befehl &#8222;git merge&#8220; kann man die unabhängigen Entwicklungslinien, die mit dem Befehl &#8222;git branch&#8220; erstellt wurden, in einen einzigen Zweig integrieren.</p>



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



<p>Alles in allem sollte dies für eine kurze Erklärung reichen. In naher Zukunft werde ich auch ein Tutorial über die Nutzung von Git schreiben. Sicherlich gibt es heutzutage auch kommerzielle Cloud-Lösungen wie GitHub oder GitKraken, die diese Schritte auf wenige Mausklicks reduzieren und so eine nahtlosere Zusammenarbeit ohne etwaige Vorkenntnisse ermöglichen, doch dies werde ich auch in zukünftigen Beiträgen thematisieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git &#8211; Die Codeverwaltung für effiziente Zusammenarbeit revolutionieren</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/18/erklaerung-git/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">609</post-id>	</item>
	</channel>
</rss>
