<?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>Work Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/work/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/work/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 07:23:02 +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>Work Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/work/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Systemtest &#8211; Im Software Testing</title>
		<link>https://ceosbay.com/2023/08/01/systemtest-im-software-testing/</link>
					<comments>https://ceosbay.com/2023/08/01/systemtest-im-software-testing/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 01 Aug 2023 19:52:47 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[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[Windows]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Benutzerfreundlichkeit]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Digitalisierung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Funktionalität]]></category>
		<category><![CDATA[Glenford J. Myers]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JUnit]]></category>
		<category><![CDATA[Kommerziell]]></category>
		<category><![CDATA[Leistung]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Soft]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Softwaretechnik]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Systemtest]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Teststufen]]></category>
		<category><![CDATA[Testverfahren]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Zeitreise]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2088</guid>

					<description><![CDATA[<p>Eines der wichtigsten Elemente in der Softwareentwicklung ist das Software Testing. Eine Methode, die für die Qualitätssicherung von Software wesentlich ist, ist der Systemtest. Er bietet die Möglichkeit, die Funktionalität und Leistungsfähigkeit des gesamten Systems &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/08/01/systemtest-im-software-testing/">Systemtest &#8211; Im Software Testing</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Eines der wichtigsten Elemente in der Softwareentwicklung ist das Software Testing. Eine Methode, die für die Qualitätssicherung von Software wesentlich ist, ist der Systemtest. Er bietet die Möglichkeit, die Funktionalität und Leistungsfähigkeit des gesamten Systems zu überprüfen und Probleme aufzudecken, die bei der Integration von verschiedenen Komponenten auftreten können.</p>



<h2 class="wp-block-heading">Was ist der Systemtest im Software Testing?</h2>



<p>Im Kontext des Software Testings ist der Systemtest eine Teststufe, bei der man das komplette und vollintegrierte Softwareprodukt testet. Dabei prüft man, ob das System als Ganzes die spezifizierten Anforderungen erfüllt und ob alle Komponenten effizient zusammenarbeiten. Neben funktionalen Aspekten beinhaltet der Systemtest auch nicht-funktionale Aspekte wie Leistung, Sicherheit und Benutzerfreundlichkeit.</p>



<p>Systemtests unterscheiden sich von anderen Teststufen, insbesondere von den Unit-Tests und Integrationstests, in ihrem Fokus. Während Unit-Tests einzelne Softwarekomponenten (z.B. Funktionen oder Methoden) testen und Integrationstests die korrekte Interaktion von Komponenten überprüfen, konzentriert sich der Systemtest auf das gesamte Softwareprodukt.</p>



<h2 class="wp-block-heading">Kurze Zeitreise und ein historischer Überblick über den Systemtest</h2>



<p>Die genaue Herkunft des Systemtests als Testmethode lässt sich schwer auf eine einzelne Person oder ein bestimmtes Ereignis zurückführen. Es ist jedoch allgemein anerkannt, dass die Praxis des Software Testings und insbesondere der Systemtests mit der Entwicklung der Softwaretechnik einherging.</p>



<p>In den frühen Tagen der Computertechnik, als man Software noch von Hand mittels Lochkarten programmierte, gab es wenig Bedarf für systematische Tests. Fehler wurden oft &#8222;on-the-fly&#8220; während des Betriebs behoben. Mit zunehmender Komplexität der Software und der Entwicklung von höheren Programmiersprachen wurde jedoch ein systematischer Ansatz zur Fehlervermeidung und -erkennung notwendig.</p>



<p>Einen wichtigen Meilenstein für die Entwicklung des Software Testings stellt das Jahr 1972 dar. In diesem Jahr veröffentlichte die US-amerikanische Software-Ingenieurin und Computerwissenschaftlerin Glenford J. Myers das Buch &#8222;The Art of Software Testing&#8220;, das als eines der ersten umfassenden Werke zum Thema Software Testing gilt. Auch wenn man Myers nicht explizit als &#8222;Erfinder&#8220; der Systemtests bezeichnen kann, so hat doch seine Arbeit maßgeblich dazu beigetragen, das Bewusstsein für die Notwendigkeit des Software Testings und die Entwicklung von standardisierten Testverfahren zu schärfen.</p>



<h2 class="wp-block-heading">Aktueller Stand der Systemtests</h2>



<p>Die Praxis des Systemtests hat sich in den letzten Jahrzehnten weiterentwickelt und professionalisiert. Die Einführung von agilen Methoden in der Softwareentwicklung und das Aufkommen von DevOps haben die Art und Weise, wie Software getestet wird, verändert und den Systemtest weiter in den Mittelpunkt gerückt. Heute ist der Systemtest ein integraler Bestandteil jedes seriösen Softwareentwicklungsprozesses.</p>



<p>Aktuell gibt es verschiedene Tools und <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> zur Unterstützung von Systemtests. Dazu gehören sowohl kommerzielle Lösungen als auch <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Werkzeuge. Mit deren Hilfe kann man Tests automatisiert durchführen und Testergebnisse dokumentieren.</p>



<h2 class="wp-block-heading">Welche Software-Lösungen gibt es?</h2>



<p><a href="https://ceosbay.com/2022/11/25/selenium/">Selenium</a>, ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> für automatisiertes Testen, <a href="https://ceosbay.com/2023/03/18/erklaerung-junit/">JUnit</a>, ein <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> zum Testen von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Anwendungen, TestComplete, eine kommerzielle Lösung für automatisiertes Testen, Postman, ein Tool für <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">API</a>-Tests, LoadRunner, eine kommerzielle Lösung für Leistungs- und Lasttests, und Appium, ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Tool für das automatisierte Testen von mobilen Anwendungen.</p>



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



<p>Im Hinblick auf die Zukunft ist zu erwarten, dass die Bedeutung des Systemtests weiter zunehmen wird. Insbesondere vor dem Hintergrund der fortschreitenden Digitalisierung und der damit einhergehenden Komplexität von Software werden zuverlässige und effiziente Testverfahren immer wichtiger.</p>



<p>Insgesamt trägt der Systemtest dazu bei, die Qualität von Software zu sichern und eine zuverlässige und effiziente Leistung des Softwareprodukts zu gewährleisten. Dabei hat er sich seit seinen Anfängen stetig weiterentwickelt und wird auch in Zukunft ein zentraler Bestandteil des Software Testings bleiben.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/08/01/systemtest-im-software-testing/">Systemtest &#8211; Im Software Testing</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/08/01/systemtest-im-software-testing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2088</post-id>	</item>
		<item>
		<title>Vue.js &#8211; Das progressive JavaScript Framework</title>
		<link>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/</link>
					<comments>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 10:30:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Aktiv]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Ecosystem]]></category>
		<category><![CDATA[Einarbeitung]]></category>
		<category><![CDATA[Einfach]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Ökosystem]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Vast]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1743</guid>

					<description><![CDATA[<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges Open Source JavaScript&#8211;Framework für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat es sich rasch zu einem der beliebtesten <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> für die Webentwicklung entwickelt. In diesem Beitrag geht es um die Hauptmerkmale von Vue.js und warum es für Entwickler in der Webentwicklung von Vorteil ist.</p>



<h3 class="wp-block-heading">Hauptmerkmale von Vue.js</h3>



<ul class="wp-block-list">
<li>Leichtgewichtig und Modularität: Vue.js ist für seine geringe Größe bekannt, wobei die kompilierte und gzip-komprimierte Version gerade einmal 20 KB wiegt. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> ist in verschiedene Module unterteilt, sodass Entwickler nur diejenigen auswählen müssen, die sie für ihr Projekt benötigen, um den Overhead gering zu halten.</li>



<li>Progressive Anpassung: Vue.js ist als progressives <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> konzipiert, was bedeutet, dass man es schrittweise in bestehende Projekte implementieren kann. Es ermöglicht Entwicklern, bestehenden Anwendungen schrittweise Verbesserungen hinzuzufügen, ohne die gesamte Anwendung neu schreiben zu müssen.</li>



<li>Reaktive Datenbindung: Eine der Hauptstärken von Vue.js ist die reaktive Datenbindung. Dies bedeutet, dass die Übertragung aller Änderungen auf die Benutzeroberfläche automatisch stattfindet, ohne dass der Entwickler explizit eingreifen muss.</li>



<li>Single-File-Komponenten: Vue.js bietet eine einfache Möglichkeit, wiederverwendbare Komponenten zu erstellen, indem <a href="https://ceosbay.com/2022/12/29/erklaerung-html/">HTML</a>, <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> und <a href="https://ceosbay.com/2023/02/27/erklaerung-css/">CSS</a> via Kapselung in einer einzigen .vue-Datei zusammengefasst sind. Diese Tatsache vereinfacht die Strukturierung und Wartung von Projekten maßgeblich.</li>



<li>Declarative Rendering: Mit Vue.js können Entwickler deklarativ angeben, wie die Anwendung auf der Grundlage der zugrunde liegenden Daten rendert. Diese Herangehensweise verbessert die Lesbarkeit und Wartbarkeit des Codes, indem sie sich auf die Logik und das Verhalten der Anwendung konzentriert, anstatt auf die Implementierungsdetails.</li>



<li>Hervorragende Dokumentation und Community: Die offizielle Dokumentation von Vue.js ist umfassend und gut organisiert, was den Einstieg in das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> wesentlich erleichtert. Die Vue.js-Community ist aktiv und wächst stetig, was zu einer Vielzahl von Ressourcen, Plugins und Erweiterungen führt, die Entwicklern zur Verfügung stehen.</li>
</ul>



<h3 class="wp-block-heading">Warum Vue.js für Webentwickler von Vorteil ist</h3>



<ul class="wp-block-list">
<li>Einfache Einarbeitung: Im Vergleich zu anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> wie <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular</a> oder <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, ist die Lernkurve relativ flach. Dies ermöglicht neuen Entwicklern einen schnellen Einstieg, während erfahrene Entwickler leicht von anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> umsteigen können.</li>



<li>Flexibilität und Skalierbarkeit: Aufgrund der modularen Architektur und progressiven Anpassung eignet sich Vue.js sowohl für kleine als auch für große Projekte. Entwickler können es sowohl für einfache Widgets als auch für komplexe Anwendungen verwenden. Man kann es problemlos in bestehende Projekte integrieren oder als Grundlage für neue Projekte verwenden.</li>



<li>Verbesserte Produktivität: Durch die Verwendung von Single-File-Komponenten und reaktiven Datenbindungen ermöglicht Vue.js Entwicklern, schneller und effizienter zu arbeiten. Weniger Zeit wird für die Aktualisierung des UI-Codes und die Synchronisierung von Daten aufgewendet, was zu einer höheren Produktivität führt.</li>



<li>Vast Ecosystem: Das Vue.js-Ökosystem umfasst eine breite Palette von Tools, Bibliotheken und Erweiterungen, die die Entwicklung von Anwendungen beschleunigen und vereinfachen. Beispiele hierfür sind das Vue CLI (Command Line Interface), Vuex für State Management und das Vue Router-Modul für die Navigation.</li>



<li>Aktive Entwicklung und Wartung: Die Weiterentwicklung und Wartung erfolgt stetig. Folglich kann man immer mit zeitgemäßen neuen Funktionen und Verbesserungen rechnen. Dies stellt sicher, dass das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> auf dem neuesten Stand der Webentwicklungstechniken bleibt und gleichzeitig sicher und stabil ist.</li>
</ul>



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



<p>Vue.js hat sich als vielseitiges und leistungsstarkes <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> etabliert, das Entwicklern ermöglicht, auf einfache Weise schnelle und skalierbare Webanwendungen zu erstellen. Mit seinen progressiven Anpassungsmöglichkeiten, reaktiven Datenbindungen und einem wachsenden Ökosystem ist es ein ausgezeichnetes Werkzeug für Webentwickler, unabhängig von ihrem Erfahrungsstand. Die einfache Einarbeitung und Flexibilität von Vue.js machen es zu einer attraktiven Wahl für Entwickler, die nach einer modernen Lösung für die Webentwicklung suchen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1743</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>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>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>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><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><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><strong>NUnit</strong>: NUnit ist ein Testframework für .NET-Anwendungen, das Test-Harnisch-Funktionen wie Testausführung, Testdatenverwaltung und Berichterstattung bietet.</p>



<p><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><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>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>Clean Code &#8211; Elegante Lösungen für effiziente und wartungsfreundliche Software</title>
		<link>https://ceosbay.com/2023/04/11/erklaerung-clean-code/</link>
					<comments>https://ceosbay.com/2023/04/11/erklaerung-clean-code/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 11 Apr 2023 19:53:02 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Architekt]]></category>
		<category><![CDATA[Bob]]></category>
		<category><![CDATA[Clean]]></category>
		<category><![CDATA[CleanCode]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Coder]]></category>
		<category><![CDATA[Continuous]]></category>
		<category><![CDATA[Craftmanship]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[Einfachheit]]></category>
		<category><![CDATA[Erleichterung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Fehlerhandhabung]]></category>
		<category><![CDATA[Kommentar]]></category>
		<category><![CDATA[Kommentare]]></category>
		<category><![CDATA[Komplex]]></category>
		<category><![CDATA[Komplexität]]></category>
		<category><![CDATA[Leichter]]></category>
		<category><![CDATA[Lesbarkeit]]></category>
		<category><![CDATA[Modularität]]></category>
		<category><![CDATA[Praxis]]></category>
		<category><![CDATA[Prinzipien]]></category>
		<category><![CDATA[Probleme]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Responsibility]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[SRP]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Team Work]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Verständnis]]></category>
		<category><![CDATA[Wiederverwendbarkeit]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Zeitdruck]]></category>
		<category><![CDATA[Zusammenarbeit]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1398</guid>

					<description><![CDATA[<p>In der Welt der Softwareentwicklung hat sich der Begriff &#8222;Clean Code&#8220; zu einem wichtigen Leitprinzip entwickelt. Die Idee, dass sauberer, gut strukturierter und leicht verständlicher Code zu besseren und wartungsfreundlicheren Softwareprodukten führt, ist mittlerweile weit &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/11/erklaerung-clean-code/">Clean Code &#8211; Elegante Lösungen für effiziente und wartungsfreundliche Software</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der Softwareentwicklung hat sich der Begriff &#8222;Clean Code&#8220; zu einem wichtigen Leitprinzip entwickelt. Die Idee, dass sauberer, gut strukturierter und leicht verständlicher Code zu besseren und wartungsfreundlicheren Softwareprodukten führt, ist mittlerweile weit verbreitet. Heute geht es um das Konzept von Clean Code, warum es wichtig ist und wie man es in der Praxis umsetzen kann.</p>



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



<p>Clean Code bezieht sich auf den Ansatz, Code so zu schreiben, dass er leicht verständlich, wartbar und erweiterbar ist. Das Konzept wurde von Robert C. Martin, auch bekannt als &#8222;Uncle Bob&#8220;, in seinem Buch &#8222;Clean Code: A Handbook of Agile Software Craftsmanship&#8220; populär gemacht. Im Kern geht es darum, Softwareentwicklung als Handwerk zu betrachten und stets auf hohe Qualität und Präzision in der Codegestaltung zu achten.</p>



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



<p>Sauberer Code bietet verschiedene Vorteile, sowohl für den Entwickler selbst, für das gesamte Team und meiner Meinung nach auch für die ganze Welt.</p>



<ul class="wp-block-list">
<li>Verständlichkeit: Clean Code ist einfacher zu lesen und zu verstehen. Das hilft Entwicklern, sich schneller mit dem Code vertraut zu machen und Fehler oder Verbesserungsmöglichkeiten schneller zu erkennen.</li>



<li>Wartbarkeit: Sauberer Code ist leichter zu warten, da er klar strukturiert und weniger anfällig für Fehler oder unerwartete Probleme ist.</li>



<li>Effizienz: Da Clean Code einfacher zu verstehen ist, kann das Team schneller arbeiten und die Produktivität steigt.</li>



<li>Zusammenarbeit: Ein sauberer Code erleichtert die Zusammenarbeit im Team, da jeder den Code anderer Entwickler leichter lesen und verstehen kann.</li>
</ul>



<h3 class="wp-block-heading">Prinzipien von Clean Code</h3>



<p>Es gibt viele Prinzipien und Praktiken, die beim Schreiben von sauberem Code helfen können. Einige der wichtigsten sind:</p>



<ul class="wp-block-list">
<li>Lesbarkeit: Der Code sollte leicht lesbar und verständlich sein. Das bedeutet, dass man Variablen, Funktionen und Klassen sinnvoll benamt und ihre Funktion leicht erkennbar ist. Kommentare setzt man sparsam ein, um den Code nicht zu überfrachten.</li>
</ul>



<ul class="wp-block-list">
<li>Einfachheit: Man hält den Code so einfach wie möglich, ohne unnötige Komplexität oder Verwirrung. Das bedeutet, dass man sich auf das Wesentliche konzentrieren und abstrakte Konzepte wie Design Patterns oder Funktionen nur verwendet, wenn sie tatsächlich nützlich sind.</li>
</ul>



<ul class="wp-block-list">
<li>Modularität: Man teilt den Code in kleine unabhängige Module auf, die jeweils eine bestimmte Funktion erfüllen. Dadurch wird der Code leichter zu verstehen und zu warten.</li>
</ul>



<ul class="wp-block-list">
<li>Wiederverwendbarkeit: Man schreibt den Code so, dass die Wiederverwendbarkeit gewährleistet ist. Dies bedeutet, dass Funktionen oder Klassen, die eine bestimmte Aufgabe erfüllen, generisch genug sind, um in verschiedenen Situationen Verwendung zu finden.</li>
</ul>



<h3 class="wp-block-heading">Clean Code in der Praxis</h3>



<p>Hier sind einige konkrete Schritte, die man beim Schreiben von Clean Code in der Praxis beachten sollte:</p>



<ul class="wp-block-list">
<li>Variablen-, Funktions- und Klassennamen: Man wählt sinnvolle, beschreibende Namen, die klar machen, was eine Variable, Funktion oder Klasse macht. Die Vermeidung von Abkürzungen oder unverständliche Namen ist eines der obersten Gebote.</li>
</ul>



<ul class="wp-block-list">
<li>Single Responsibility Principle (SRP): Jede Funktion oder Klasse sollte nur eine einzige Verantwortung haben. Dies bedeutet, dass sie nur einen Aspekt des Problems lösen sollte, um den Code einfacher und leichter zu warten.</li>
</ul>



<ul class="wp-block-list">
<li>Funktionen und Methoden: Man hält Funktionen und Methoden kurz und konzentrieren sich darauf, dass sie eine einzige Aufgabe erfüllen. Eine Funktion oder Methode sollte in der Regel nicht länger als 20 Zeilen sein, um ihre Verständlichkeit zu gewährleisten.</li>
</ul>



<ul class="wp-block-list">
<li>KISS (Keep It Simple, Stupid) Prinzip: Man versucht, den Code so einfach wie möglich zu halten und unnötige Komplexität zu vermeiden. Wenn es eine einfachere Lösung gibt, zieht man diese der komplexeren vor.</li>
</ul>



<ul class="wp-block-list">
<li>Don&#8217;t Repeat Yourself (DRY) Prinzip: Man vermeidet doppelten Code, indem man wiederverwendbare Funktionen oder Klassen erstellt. Das verringert die Wahrscheinlichkeit von Fehlern und macht den Code leichter zu warten.</li>
</ul>



<ul class="wp-block-list">
<li>Code-Kommentare: Man sollte Kommentare dazu verwenden, den Zweck und die Funktionsweise von Code-Teilen zu erläutern, die nicht sofort offensichtlich sind. Man sollte jedoch nicht zu viele Kommentare schreiben, da dies den Code unübersichtlich machen kann.</li>
</ul>



<ul class="wp-block-list">
<li>Fehlerbehandlung: Die Implementierung einer angemessenen Fehlerbehandlung sollte unabdingbar sein, um unerwartete Probleme zu erkennen und angemessen darauf zu reagieren. Die Verwendung von Exceptions und try-catch-Blöcken, kann eine gute Lösung darstellen, um Fehler abzufangen und entsprechend darauf zu reagieren.</li>
</ul>



<ul class="wp-block-list">
<li>Testgetriebene Entwicklung (<a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a>): Man schreibt zuerst Tests, bevor man den eigentlichen Code entwickelt. Auf diese Weise kann man sicherstellen, dass die Implementierung den gewünschten Anforderungen entspricht und weniger fehleranfällig ist. Siehe hierzu meinen <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Beitrag über Test Driven Development</a>.</li>
</ul>



<ul class="wp-block-list">
<li>Kontinuierliche Integration (CI) und Continuous Deployment (CD): Man verwendet CI/CD-Tools, um den Code regelmäßig zu testen und automatisch zu deployen. Dies stellt sicher, dass der Code immer auf dem neuesten Stand ist und das man potenzielle Probleme schnell erkennen kann.</li>
</ul>



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



<p>Im Grunde genommen ist dies für mich eine relativ neue Angelegenheit, da ich in der Vergangenheit schon recht of den Code einfach reingehackt habe, da ich mich unter Zeitdruck gefühlt habe. Ich ertappe mich hin und wieder immer noch dabei und dies sehr oft, wie ich auf alte Gewohnheiten und Muster zurückgreife. Doch dies sollte sich hoffentlich in den nächsten Monaten und Jahren auf ein Minimum reduzieren lassen. Ich bin davon überzeugt, dass Clean Code ein wesentlicher Bestandteil einer erfolgreichen Softwareentwicklung ist. Indem man sich auf Lesbarkeit, Einfachheit, Modularität und Wiederverwendbarkeit konzentriert, kann man den eigenen Code nicht nur leichter verstehen, sondern auch schneller und effizienter arbeiten. Durch die Anwendung der oben genannten Prinzipien und Praktiken kann man den Code verbessern und letztendlich zu erfolgreichen, wartungsfreundlichen Softwareprodukten beitragen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/11/erklaerung-clean-code/">Clean Code &#8211; Elegante Lösungen für effiziente und wartungsfreundliche Software</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/11/erklaerung-clean-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1398</post-id>	</item>
		<item>
		<title>MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/</link>
					<comments>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 27 Mar 2023 17:01:36 +0000</pubDate>
				<category><![CDATA[Agile]]></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[Bean]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codes]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Funktionalität]]></category>
		<category><![CDATA[Gradle]]></category>
		<category><![CDATA[Head]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Integrieren]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Kompilieren]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Mappings]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Minimal]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Seite]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Typ]]></category>
		<category><![CDATA[Types]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1241</guid>

					<description><![CDATA[<p>MapStruct ist ein Java-basiertes Open Source Framework zur automatischen Generierung von Mappings zwischen Java-Objekten (Bean-Types). Es ist eine Alternative zu anderen Mapping-Frameworks wie Dozer, ModelMapper und Orika. Das Ziel von MapStruct ist es, die Entwicklung &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/27/erklaerung-mapstruct/">MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>MapStruct ist ein <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-basiertes Open Source <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zur automatischen Generierung von Mappings zwischen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Objekten (Bean-Types). Es ist eine Alternative zu anderen Mapping-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie Dozer, ModelMapper und Orika. Das Ziel von MapStruct ist es, die Entwicklung von Mapping-Code zu vereinfachen und zu beschleunigen und dabei typsichere und fehlerfreie Mappings zu generieren.</p>



<p>MapStruct nutzt dabei die Annotationen, die auf den <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Objekten angebracht sind, um automatisch Mapping-Code (Bean-Mappings) zu generieren. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> generiert dabei standardmäßig Mappings zwischen Objekten mit gleichem Namen und Typ, es können aber auch eigene Mappings definiert werden. Dabei können auch komplexere Mappings erstellt werden, beispielsweise wenn Attribute in den Quell- und Zielobjekten unterschiedliche Namen haben oder wenn sie unterschiedliche Typen haben.</p>



<p>MapStruct ist sehr einfach zu verwenden und erfordert nur eine minimale Konfiguration. Es integriert sich nahtlos in das Build-System, da es als Annotation Processor fungiert und beim Kompilieren des Codes aufgerufen wird. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> ist relativ schnell und hat einen geringen Overhead, da es keine Laufzeit-Abhängigkeiten hat.</p>



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



<ul class="wp-block-list">
<li>Schnelle Ausführung durch Verwendung einfacher Methodenaufrufe anstelle von Reflexion (Bedeutet: Ein Programm kennt seine eigene Struktur und kann diese modifizieren)</li>



<li>Kompilierzeit-Typensicherheit. Nur Objekte und Attribute, die einander zugeordnet sind – Es findet keine versehentliche Zuordnung einer Auftragsentität zu einem Kunden-DTO statt.</li>



<li>In sich geschlossener Code &#8211; keine Laufzeit-Abhängigkeiten</li>



<li>Eindeutige Fehlerberichte zur Erstellungszeit, wenn:&nbsp;<ul><li>Mappings unvollständig sind (Wenn nicht alle Zieleigenschaften gemappt sind)</li></ul>
<ul class="wp-block-list">
<li>Mappings fehlerhaft sind (Wenn es keine geeignete Mapping-Methode oder Typkonvertierung findet)</li>
</ul>
</li>



<li>Leicht zu debuggender Mapping-Code (Oder manuell editierbar, z. B. im Falle eines Fehlers im Generator)</li>
</ul>



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



<p>Zusammenfassend ist MapStruct ein leistungsfähiges und einfach zu bedienendes <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" rel="nofollow">Framework</a>, das die Entwicklung von Mapping-Code vereinfacht und beschleunigt. Vor allem, weil das Übertragen von Daten zwischen Objektmodellen meist eine wiederkehrende Aufgabe bei der Anwendungsentwicklung ist. Es ist eine gute Wahl, wenn man schnell und effizient Mapping-Funktionalitäten in Anwendungen integrieren möchte. Man kann es in Befehlszeilen-Builds (<a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>, Gradle usw.) als auch in der bevorzugten IDE wie z.B. <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> oder <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> verwenden.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/27/erklaerung-mapstruct/">MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1241</post-id>	</item>
		<item>
		<title>Spring Boot &#8211; Schnell und einfach Webanwendungen erstellen</title>
		<link>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/</link>
					<comments>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 22 Mar 2023 17:12:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Big-Data]]></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[Abhängigkeiten]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Boot]]></category>
		<category><![CDATA[Container]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Dependencies]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frei]]></category>
		<category><![CDATA[Freie]]></category>
		<category><![CDATA[Injection]]></category>
		<category><![CDATA[Injizieren]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Lesitung]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Modular]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Optionated]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Webanwendungen]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1057</guid>

					<description><![CDATA[<p>Java Spring Framework ist ein beliebtes Open-Source&#8211;Framework zur Erstellung eigenständiger, produktionsreifer Anwendungen, die auf der Java Virtual Machine (JVM) laufen. Spring Boot ist ein Tool, dass die Entwicklung von Webanwendungen und Microservices mit Spring Framework &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/22/erklaerung-spring-boot/">Spring Boot &#8211; Schnell und einfach Webanwendungen erstellen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> ist ein beliebtes <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zur Erstellung eigenständiger, produktionsreifer Anwendungen, die auf der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Virtual Machine (JVM) laufen. Spring Boot ist ein Tool, dass die Entwicklung von Webanwendungen und Microservices mit Spring Framework durch drei Kernfunktionen beschleunigt und einfacher macht.</p>



<ol class="wp-block-list" type="1">
<li>Autokonfiguration</li>



<li>Ein Opinionated-Konfigurationsansatz</li>



<li>Die Fähigkeit, eigenständige Anwendungen zu erstellen</li>
</ol>



<p>Das Zusammenspiel dieser Funktionen ermöglicht die Installation einer Spring basierten Anwendung mit minimalem Konfigurations- bzw. Einrichtungsaufwand, worauf ich nachfolgend näher eingehe. Mit einem breiten Spektrum an Funktionalitäten ist es eine ganzheitliche Lösung, wobei die Entkopplung der Applikationskomponenten im Vordergrund steht.</p>



<h3 class="wp-block-heading">Was ist das Spring Framework und was stellt Spring Boot damit an?</h3>



<p>Ein Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> bietet eine Abhängigkeitsinjektionsfunktion, mit der Objekte ihre eigenen Abhängigkeiten definieren können.Der Spring-Container injiziert diese nachfolgend. So kann man als Entwickler modulare Anwendungen erstellen, die aus losen verbundenen Komponenten bestehen. Diese eignen sich ideal für Microservices und verteilte Netzanwendungen.</p>



<p>Das Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> bietet auch die integrierte Unterstützung für typische Aufgaben, die eine Anwendung ausführen muss. Beispiele hierfür sind Datenbindung, Typumsetzung, Prüfung und Bewertung, Ausnahmebehandlung, Ressourcen- und Ereignismanagement und vielem mehr. Darüber hinaus lässt es sich mit verschiedenen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> EE-Technologien wie RMI (Remote Method Invocation), AMQP (Advanced Message Queuing Protocol), <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Web Services und anderen integrieren. Alles in allem liefert das Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Entwicklern alle Tools und Funktionen, die man benötigt, um lose verbundene, plattformunabhängige <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> EE-Anwendungen zu erstellen, die man in den verschiedensten Umgebungen ausführen kann. So leistungsfähig und umfassend das Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> auch ist, so viel Zeit und Know-How erfordert es, Spring-Anwendungen sauber zu konfigurieren, einzurichten und bereitzustellen. Spring Boot verringert diesen Aufwand mit den bereits zu Beginn erwähnten drei wichtigen Funktionen.</p>



<h3 class="wp-block-heading">Autokonfiguration in Spring Boot</h3>



<p>Unter der Autokonfiguration verstehen man die Initialisierung von Anwendungen mit voreingestellten Abhängigkeiten ohne den manuellen Eingriff eines Entwicklers. Da <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> Spring Boot über integrierte Autokonfigurationsfunktionen verfügt, konfiguriert es sowohl das zugrunde liegende Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> als auch die Pakete von Drittanbietern automatisch auf der Grundlage der eigenen individuellen Einstellungen. Dies trägt auch zur grundlegenden Fehlervermeidung bei. Auch wenn man die Standardeinstellungen nach Abschluss der Initialisierung überschreiben kann, ermöglicht die Autokonfigurationsfunktion von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Spring Boot einen schnellen Start bei der Entwicklung von Spring-basierten Anwendungen. Dies reduziert die Möglichkeit menschlicher Fehler.</p>



<h3 class="wp-block-heading">Opinionated-Konfigurationsansatz</h3>



<p>Der Optionated-Ansatz bei Spring Boot findet Anwendung beim Hinzufügen und bei der Konfiguration von Steuer-Abhängigkeiten, basierend auf den Projektanforderungen. Spring Boot wählt nach eigenem Ermessen die passenden Pakete zur Installation aus und setzt auch die Standardwerte, ohne dass ein nachträgliches manuelles Eingreifen erforderlich ist.</p>



<p>Man kann die Anforderungen des jeweiligen Projekts während des Initialisierungsprozesses definieren. Dabei wählt man zwischen mehreren Starter-Abhängigkeiten (den Spring Starters) die typische Anwendungsfälle abdecken. Man startet den Spring Boot Initializr (Das ist kein Rechtschreibfehler 😉 ), indem man ein einfaches Webformular ausfüllt. Alles erst einmal ohne zu programmieren und ohne Code.</p>



<p>Mit der Starter-Abhängigkeit „Spring Web&#8220; kann man beispielsweise Spring-basierte Webanwendungen mit minimaler Konfiguration erstellen, indem man im Projekt alle erforderlichen Abhängigkeiten – wie den Apache Tomcat Webserver – hinzufügt. „Spring Security&#8220; ist eine weitere vielfach eingesetzte Starter-Abhängigkeit, die automatisch Authentifizierungs- und Zugriffskontrollfunktionen zur Verfügung stelllt. Spring Boot enthält von Haus aus über 50 Spring-Starter, und viele weitere Starter von Drittanbietern sind ebenfalls verfügbar.</p>



<h3 class="wp-block-heading">Eigenständige Anwendungen</h3>



<p>Spring Boot hilft Entwicklern, Anwendungen zu erstellen, die einfach funktionieren. Insbesondere kann man damit eigenständige Anwendungen erstellen, die ohne einen externen Webserver auskommen, indem man einen Webserver wie Tomcat oder Netty während des Initialisierungsprozesses in der eigenen Anwendung einbettet. So kann man die Anwendung auf jeder Plattform starten, indem man einfach auf den Befehl „Ausführen&#8220; klickt. Man kann aber auch auf diese Funktion verzichten, indem man dies in der Konfiguration deaktiviert.</p>



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



<p>In der Praxis ist die Verwendung von Spring Boot durchaus zu empfehlen. Außer man hat vor, eine sehr spezielle Konfiguration zu implementieren. Man kann weiterhin das vielfach eingesetzte Annotationssystem von Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> verwenden, mit dem man auf einfache Weise zusätzliche Abhängigkeiten (deren Abdeckung nicht von Spring Starters gewährleistet ist) in die Anwendung implementieren kann. Auch hat man weiterhin Zugriff auf alle Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>-Funktionen, einschließlich der einfachen Ereignisverarbeitung, Prüfung und Bewertung, Datenbindung, Typumsetzung und der integrierten Sicherheits- und Testfunktionen. Kurz zusammengefasst &#8211; Wenn die Abdeckung des Projektumfangs lediglich ein Spring Starter gewährleistet, kann Spring Boot die Entwicklung signifikant rationalisieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/22/erklaerung-spring-boot/">Spring Boot &#8211; Schnell und einfach Webanwendungen erstellen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1057</post-id>	</item>
		<item>
		<title>Eclipse &#8211; Die flexible Entwicklungsumgebung</title>
		<link>https://ceosbay.com/2023/03/19/erklaerung-eclipse/</link>
					<comments>https://ceosbay.com/2023/03/19/erklaerung-eclipse/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 19 Mar 2023 20:47:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[CDT]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[DPP]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Erweiterungen]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[GEF]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JFace]]></category>
		<category><![CDATA[Jupiter]]></category>
		<category><![CDATA[Jupyter]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Kern]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Mylyn]]></category>
		<category><![CDATA[oasp4j]]></category>
		<category><![CDATA[Oomph]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Perspektiven]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[PP]]></category>
		<category><![CDATA[Programmiersprache]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Rich]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Saros]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Sichten]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Speicher]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Werkzeug]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Yatta]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1190</guid>

					<description><![CDATA[<p>Eclipse „Sonnenfinsternis“, ist ein Open Source Programm zur Entwicklung von Software verschiedener Art. Ihren Ursprung hat Eclipse als integrierte Entwicklungsumgebung (IDE) für die Programmiersprache Java. Mittlerweile nutzt man es aufgrund der Erweiterbarkeit auch für viele &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/">Eclipse &#8211; Die flexible Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Eclipse „Sonnenfinsternis“, ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Programm zur Entwicklung von Software verschiedener Art. Ihren Ursprung hat Eclipse als integrierte Entwicklungsumgebung (IDE) für die Programmiersprache <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>. Mittlerweile nutzt man es aufgrund der Erweiterbarkeit auch für viele andere Entwicklungsaufgaben. Für Eclipse gibt es eine Vielzahl sowohl quelloffener als auch kommerzieller Erweiterungen. Es selbst basiert auf <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>. Ab Version 3.0 auf dem OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Equinox. Die OSGi Alliance (früher Open Services Gateway initiative) spezifizierte eine hardwareunabhängige dynamische Softwareplattform, die es erleichtert, Anwendungen und ihre Dienste per Komponentenmodell („Bundle“/„Service“) zu modularisieren und zu verwalten („Service Registry“). Die OSGi-Plattform setzt eine <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Virtual Machine (JVM) voraus und bietet darauf aufbauend das OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>. Während Equinox (Tag-und-Nacht-Gleiche) ein von der Eclipse Foundation entwickeltes <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-basiertes <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> ist, dass die OSGi-Kernspezifikation implementiert und das Gerüst der integrierten Entwicklungsumgebung Eclipse bildet.</p>



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



<p>Eclipse ist im Grunde genommen der Nachfolger von IBM Visual Age for <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> 4.0. Der Quellcode dafür wurde im Jahr 2001 von IBM freigegeben. Im Jahr 2004 beschloss das von IBM geführte Eclipse-Konsortium die Ausgründung der rechtlich eigenständigen Eclipse Foundation, die seitdem für die Entwicklung von Eclipse verantwortlich ist. Es unterstützt die <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Version 5 ab Version 3.1 und <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> 6 ab Version 3.2. Ab dem Jahr 2006 wurden die Veröffentlichungstermine neuer Versionen der wichtigsten Eclipse-Komponenten harmonisiert, um Versionskonflikte zu vermeiden und Eclipse-Anwendern die Nutzung zu erleichtern. Man hat den Veröffentlichungszyklus ab der Version 2018-09 auf Quartalsaktualisierungen verkürzt, da ab <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> 9 nicht mehr alle 3 Jahre, sondern alle 6 Monate eine neue <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Version erscheint. Es folgt nun einem Rolling Release Modell.</p>



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



<p>(„rollen“ und „veröffentlichen“. Sinngemäß handelt es sich dabei um die kontinuierliche Aktualisierung der Software und ist ein Begriff aus der Softwareentwicklung. Bei einem Betriebssystem, dass das Rolling-Release-Prinzip anwendet, gibt es keine Betriebssystem-Versionen, bei denen bei einem Versions-Upgrade eine große Menge an Software auf einmal aktualisiert wird. Die einzelnen Software-Pakete werden vielmehr immerfort aktualisiert. Dies schließt sogenannte Releases, also Veröffentlichungen des Betriebssystems, aber nicht aus. Im Gegensatz zu einem Betriebssystem ohne Rolling Releases sind die Veröffentlichungen jedoch keine Versionen, sondern sogenannte Snapshots. Dies bedeutet, eine Kopie aller im Moment im Repository liegenden Software-Versionen. Diese Snapshots dienen meistens auch als Installations-Medien.</p>



<p>Die Projektnamen waren bisher nach den Jupitermonden (Callisto, Europa und Ganymede), den Raumsonden Galileo und Helios, die Version 3.7 nach der für Eclipse typischen Farbe Indigo benannt. Die Anfangsbuchstaben der Projektnamen werden ab Version 3.5 in alphabetischer Reihenfolge vergeben. Die Version 3.8 erschien gleichzeitig mit der Version 4.2. Um mit dem schnelleren Release-Zyklus von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> mitzuhalten, hat man 2018 von einem jährlichen Release auf vier Releases pro Jahr umgestellt. Damit hat man auch das Namensschema der Release-Versionen auf „{Jahreszahl}-{Monat}“ vereinfacht, also beispielsweise „2018-09“. Die einzelnen Versionen werden jeweils als Grundversion oder als Zusammenstellung aus verschiedenen Programmpaketen veröffentlicht. Einzelne Programmpakete kann man jedoch auch später noch nachinstallieren. Die Benutzeroberfläche von Eclipse ist standardmäßig englischsprachig. Es gibt jedoch zu jeder Version Babel-Language-Packs, die man sich in den entsprechenden Sprachen als Plugin installieren kann.</p>



<p>Darauf gehe ich so explizit ein, da ich mich in den letzten Tagen mit Kollegen über Eclipse ausgetauscht und in einem Quellcode verweise auf „Jupiter“ entdeckt habe. In der jüngsten Vergangenheit habe ich mich mit <a href="https://ceosbay.com/2022/12/30/erklaerung-projekt-jupyter/" target="_blank" rel="noreferrer noopener">Jupyter</a> beschäftigt. Daher auch hier ein Verweis auf den Beitrag damit es zu keiner Verwechslung der Themen kommt. Beides von Grund auf verschiedene Themen bzw. Dinge 😉</p>



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



<p>Bis einschließlich zur Version 2.1 ist Eclipse als erweiterbare IDE konzipiert gewesen. Ab Version 3.0 ist es selbst nur der Kern, der die einzelnen Plug-ins lädt, die dann die eigentliche Funktionalität zur Verfügung stellt. Diese Funktionalität basiert, wie bereits erwähnt, auf Equinox. Sowohl Eclipse als auch die Plugins sind vollständig in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> implementiert. Zur Erstellung der GUI (grafischen Benutzeroberfläche) wurde SWT verwendet. Zur Darstellung der GUI-Komponenten basiert SWT ähnlich wie AWT auf den nativen GUI-Komponenten des jeweiligen Betriebssystems. Eclipse steht für 14 verschiedene Systeme und Architekturen zur Verfügung und gilt somit als plattformunabhängig. Die Plugins lassen sich direkt von einem Update-Server, über den „Market Place“, oder durch Entpacken einer Installationsdatei installieren.</p>



<p>Das frei verfügbare Eclipse SDK umfasst die Eclipse-Plattform, Werkzeuge zur <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Entwicklung (<a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Development Tools, JDT) und die Umgebung zur Entwicklung von Eclipse-Plugins (Plugin Development Environment, PDE).</p>



<h3 class="wp-block-heading">Rich Client Platform</h3>



<p>Eclipse bietet eine Rich Client Platform, welche es Anwendungsentwicklern ermöglicht, basierend auf dem Eclipse-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>, von der Eclipse-IDE unabhängige Anwendungen zu schreiben. Die folgenden Komponenten (Plugins) werden typischerweise mindestens für eine Eclipse-Rich-Client-Platform-Anwendung verwendet:</p>



<ul class="wp-block-list">
<li>Eclipse Core Platform – steuert den Lebenszyklus einer Eclipse-Anwendung</li>



<li>Eclipse Platform UI – stellt die Workbench mit den Konzepten Sichten, Editoren, Perspektiven, Menüs und Toolbars zur Verfügung</li>



<li>Standard Widget Toolkit (SWT)</li>



<li>JFace</li>
</ul>



<p>Weitere Eclipse-Komponenten, wie das Hilfesystem oder das automatische Aktualisierungssystem, kann man ebenfalls einsetzen. In der Regel nutzt man das Eclipse-OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Equinox zum Kombinieren (bundling) der Komponenten.</p>



<h3 class="wp-block-heading">Das UI (User Interface)</h3>



<p>Eclipse ist in Komponenten (parts) gegliedert, die in Sichten (views) und Editoren (editors) gegliedert sind. Wobei die Unterscheidung in view und editor sich an der Nutzung orientiert und nicht technischer Natur ist. Diese Fenster kann man durch Drag and Drop beliebig anordnen oder minimieren.</p>



<p><strong>Sichten</strong></p>



<p>Mit Hilfe der views kann man Daten direkt bearbeitet und darunterliegende Datenstrukturen verändern.</p>



<p>Beispiele für views sind die auch aus den meisten anderen Editoren bekannte Navigator-View, die im Projektverzeichnis enthaltene Dokumente anzeigt, der Klassenexplorer, der baumartig strukturiert Symbole für die Klassen, Funktionen, Variablen und Importe eines geöffneten Quelltextes anzeigt oder das Suchfenster, dass die Ergebnisse einer Suche auflisten kann.</p>



<p><strong>Editoren</strong></p>



<p>Editoren sind Komponenten, die nur das jeweils geöffnete Datenelement bearbeiten und in denen der Nutzer explizit speichern muss, um Daten zu verändern. Beispiele sind Fenster, die meist den Quelltext mit Syntaxhervorhebung anzeigen, wobei es für viele Programmiersprachen einen eigenen Editor gibt. Beispielsweise für <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>, C, PHP, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>, aber auch einen einfachen Texteditor. Genauso gibt es auch visuelle Editoren (beispielsweise UML-Editoren, GUI-Builder) oder solche, die Baumstrukturen anzeigen (etwa der <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Editor). Editoren nehmen normalerweise den meisten Raum des Programmfensters in Anspruch. Mehrere geöffnete Quelltexte kann man als Reiter öffnen, die man dann über Tabs am oberen Rand in den Vordergrund bringen kann. Außerdem kann man Tabs fixieren, damit man beispielsweise den zugehörigen Quelltext nicht versehentlich schließt. Auch kann man die Editoren weitestgehend frei per Drag and Drop anordnen. Davon abgesehen ist es möglich, eine Datei in mehreren Editoren gleichzeitig zu öffnen.</p>



<p><strong>Perspektiven</strong></p>



<p>Perspektiven sind vollständige Anordnungen von parts. Ein editor bleibt beim Perspektivwechsel erhalten. Perspektiven sind weitestgehend frei konfigurierbar und man kann benutzerdefinierte Konstellationen speichern sowie laden. Meistens stellen Plugins, die man nachinstalliert, vorkonfigurierte Perspektiven zur Verfügung, diese passt man dann meisten den eigenen Wünschen und Vorlieben an.</p>



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



<p>Es gibt zahlreiche Erweiterungen für Eclipse. Teils proprietär, teils frei verwendbar bzw. <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a>. Primär verwendet man es als <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> IDE. Dabei kommen vor allem die in den <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Development Tools zusammengefassten Plugins zum Einsatz. Es existieren aber etliche Plugins für andere Sprachen, die ich bereits unter Editoren erwähnt habe. Hinzu kommt noch die Entwicklung von OSGi-Bundles. Dazu zählt vor allem das CDT-Projekt, welches C und C++ unterstützt und unter Anderem die GNU Compiler Collection sowie die LLVM (-Clang und -GCC) abdeckt. Darüber hinaus gibt es auch Plugins für Perl, PHP, ColdFusion, <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a>, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, C#, Fortran, Ada2005, Scala usw. Diese kann man über ein Menü in Eclipse einbinden. Neben Plugins für konkrete Programmiersprachen gibt es auch solche, die allgemeine Entwicklungsprozesse unterstützen, wie beispielsweise Mylyn für „aufgabenorientierte Entwicklung“ oder Saros für Verteilte Paarprogrammierung auch Distributed Pair Programming, DPP oder Pair Programming, PP genannt. Oft sind diese Ergänzungen – anders als das Kernprogramm – ausschließlich in der englischen Sprache erhältlich.</p>



<p>Neben den <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Development Tools gibt es viele weitere Projekte, die man ebenfalls auf der Eclipse-Website koordiniert. Ein solches Projekt ist das Eclipse Tools Project, dass verschiedene Hilfsmittel entwickelt, die Entwickler erweitern können. Weitere Projekte sind das Eclipse Modeling <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (EMF), das Graphical Editing <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (GEF) und die eingestellte Eclipse Riena Platform (Riena). Mit EMF lässt sich ein Datenmodell erstellen, das zum Beispiel auf UML basieren kann. GEF ist ein Projekt, dass es Entwicklern erlaubt, mit Hilfe eines existierenden Datenmodells schnell einen grafischen Editor zu erstellen. Riena unterstützt Entwickler bei der Ausstattung einer Anwendung mit einem benutzerfreundlichen Interaktionskonzept und ansprechenden Oberflächenelementen.</p>



<p>Basierend auf diesen Erweiterungen und dem modularen Aufbau von Eclipse selbst, lassen sich für Projekte spezifische Eclipse-Bundles erstellen. Diese enthalten alle für ein bestimmtes Projekt notwendigen Teile und Erweiterungen von Eclipse, ohne mit unnötigen Teilen Hauptspeicher und Rechenleistung zu verbrauchen.</p>



<p>Inzwischen gibt es auch <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a>-Erweiterungen, die eine automatisierte Bereitstellung und Konfiguration erheblich erleichtern. Dazu zählen oasp4j-ide, Oomph und Yatta Profiles, von denen ich einige in zukünftigen Beiträgen thematisiere.</p>



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



<p>Durch den quelloffenen Ansatz und der kostenfreien Nutzungsmöglichkeit ist Eclipse neben <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> eines der beliebteren IDEs. Man kann durch Plugins und Erweiterungen viele Programmiersprachen bedienen. Der Programmkern von Eclipse stellt in dem Zusammenhang die einzige versionsübergreifende Konstante dar. Jede Aktualisierung führt Neuerungen in den Kern ein und die integrierten Plugins bzw. Erweiterungen erfordern dadurch meist eine Anpassung an die neue Version.</p>



<p>Die grafische Oberfläche von Eclipse ist auf eine effiziente Arbeitsweise ausgerichtet. Der konzeptionelle Aufbau durch Views, Editoren und Perspektiven sorgt für eine anpassbare Optik und eine bequeme Arbeitsweise mit und in der IDE. Man kann sowohl die Funktionalitäten als auch die GUI von Eclipse durch die manuelle oder automatische Installation von Plugins bzw. Erweiterungen anpassen. Entsprechende Möglichkeiten finden sich in dem standardmäßig integrierten Market Place von Eclipse.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/">Eclipse &#8211; Die flexible Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/19/erklaerung-eclipse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1190</post-id>	</item>
		<item>
		<title>Cucumber &#8211; Das kollaborative Tool für Behavior Driven Development</title>
		<link>https://ceosbay.com/2023/03/11/erklaerung-cucumber/</link>
					<comments>https://ceosbay.com/2023/03/11/erklaerung-cucumber/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 11 Mar 2023 20:08:00 +0000</pubDate>
				<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Behavior]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Driven]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Gherkin]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Verhaltensgetrieben]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[Werkzeug]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1117</guid>

					<description><![CDATA[<p>Cucumber ist ein Open Source (BDD-Framework) Behavior-Driven-Development-Werkzeug bzw. Framework (Siehe &#8222;Verhaltensgetriebene Softwareentwicklung&#8220; – Thematisiere ich definitiv und explizit in einem zukünftigen Beitrag) zur textuellen Spezifikation von Anforderungen an Software und zum automatisierten Testing bzw. mit &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/11/erklaerung-cucumber/">Cucumber &#8211; Das kollaborative Tool für Behavior Driven Development</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Cucumber ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> (BDD-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>) Behavior-Driven-Development-Werkzeug bzw. <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (Siehe &#8222;Verhaltensgetriebene Softwareentwicklung&#8220; – Thematisiere ich definitiv und explizit in einem zukünftigen Beitrag) zur textuellen Spezifikation von Anforderungen an Software und zum automatisierten Testing bzw. mit dem sich (unter anderem) sehr gut lesbare, gut zu wartbare und elegante Akzeptanz-Tests für Web-Anwendungen schreiben lassen.</p>



<p>Cucumber wurde ursprünglich in der Programmiersprache <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a> für Ruby-Anwendungen geschrieben. In der Zwischenzeit unterstützt es aber auch andere Programmiersprachen wie Java und alle anderen auf der Java <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/" target="_blank" rel="noreferrer noopener">Virtual Machine</a> gängigen Programmiersprachen sowie C++ und <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>. Darüber hinaus gibt es Projekte, die Cucumber noch für weitere Programmiersprachen zur Verfügung stellen und sich als Teil der Cucumber-Familie sehen. Darunter beispielsweise SpecFlow, eine Implementierung für C#.</p>



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



<p>Wie auch bei den meisten anderen BDD-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> werden in Cucumber Funktionalitäten mittels der Beschreibungssprache „Gherkin“ beschrieben. Gherkin verwendet natürliche Schriftsprache als Grundlage. Lediglich bestimmte Schlüsselwörter werden besonders behandelt.</p>



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



<p>Gherkin ist die Sprache, die Cucumber verwendet, um Testfälle zu definieren. Sie ist so konzipiert, dass sie sich nicht-technisch und für den Menschen lesbar gestaltet. Es beschreibt Anwendungsfälle in Bezug auf ein Softwaresystem. Der Zweck hinter der Gherkin-Syntax ist die Förderung verhaltensorientierter Entwicklungspraktiken in einem Entwicklungsteam, einschließlich Geschäftsanalysten und Managern. Sie zielt darauf ab, bereits in den ersten Phasen der Anforderungsdefinition durch die Geschäftsleitung und in anderen Phasen des Entwicklungslebenszyklus einer Anwendung feste, eindeutige Anforderungen durchzusetzen.</p>



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



<p>Die Syntax ist ähnlich wie bei <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a> zeilenorientiert aufgebaut. Die Struktur einer Datei wird durch Leerzeichen und andere Steuerzeichen definiert. # wird als Zeilen bzw. Kommentarzeichen verwendet und kann an jeder beliebigen Stelle in einer Datei stehen. Anweisungen sind jede nicht leere und nicht kommentierte Zeile. Sie bestehen aus einem konkreten Gherkin-Schlüsselwort, gefolgt von einer Zeichenkette.</p>



<p>Alle Gherkin-Dateien haben die Dateierweiterung .feature. Sie enthalten eine einzelne Feature-Definition für das zu testende System und sind ein ausführbares Testskript.</p>



<p>Neben der Bereitstellung eines Skripts für automatisierte Tests ist die Syntax von Gherkin so konzipiert, dass sie eine einfache Dokumentation des zu testenden Codes ermöglicht. Gherkin unterstützt derzeit Schlüsselwörter in Dutzenden von Sprachen.</p>



<h3 class="wp-block-heading">Schlüsselwörter der Gherkin Sprache</h3>



<ul class="wp-block-list">
<li>Feature: Name bzw. die Bezeichnung des Features</li>



<li>Rule: Regeln des Features</li>



<li>Example oder Scenario: Die Bezeichnung des Szenarios (Beispielsweise &#8222;Die erfolgreiche Anmeldung mit gültigen Anmeldeinformationen.&#8220;)</li>



<li>Given, When, Then, And, But für die steps (oder *)- Vorbedingungen (Gegeben sei), die Aktion, die ausgeführt wird bzw. die Erweiterung durch andere Schlüsselwörter um die Aktion die ausgeführt wird zu ergänzen bzw. zu erweitern. (Der User gibt beispielsweise seine Zugangsdaten, Username and Password ein), gefolgt von der erwarteten Reaktion des Systems (Beispielsweise die Nachricht, bei einem erfolgreichen Login.)</li>



<li>Background &#8211; Ein Background ermöglicht es einem, den nachfolgenden Scenarios einen gewissen Kontext hinzuzufügen. Es kann einen oder mehrere Vorgegebene Schritte enthalten, die vor jedem Scenario aber nach jedem Before hook ausgeführt werden.</li>



<li>Scenario Outline oder Scenario Template &#8211; Damit lässt sich dasselbe Szenario mehrmals mit unterschiedlichen Wertekombinationen ausführen.</li>



<li>Examples oder Scenarios &#8211; Eine Scenario Outline muss einen oder mehrere Abschnitte mit Examples bzw. Scenarios enthalten. Sie dienen als Steps bzw. Interpretationsvorlage, die nie direkt ausgeführt werden. Stattdessen wird die Szenariogliederung einmal für jede Zeile mit den darunter liegenden Abschnitten von Examples ausgeführt.</li>
</ul>



<h3 class="wp-block-heading">Gherkin in deutscher Sprache</h3>



<p>Um eine Funktionalität auf Deutsch zu schreiben, muss am Beginn des Features # language: de angegeben werden. Damit sind u.A. folgende deutsche Schlüsselwörter verfügbar:</p>



<ul class="wp-block-list">
<li>Funktionalität</li>



<li>Grundlage</li>



<li>Szenario</li>



<li>Szenariogrundriss</li>



<li>Beispiele</li>



<li>Angenommen</li>



<li>Gegeben sei</li>



<li>Wenn</li>



<li>Dann</li>



<li>Und und Aber, sowie *</li>
</ul>



<h3 class="wp-block-heading">Die Command line (CL)</h3>



<p>Cucumber verfügt über eine integrierte Kommandozeilenschnittstelle, die eine umfassende Liste von Anweisungen enthält. Wie die meisten Kommandozeilen-Tools bietet Cucumber die Option &#8211;help an, die eine Zusammenfassung der Befehle liefert, die diese Command Line akzeptiert.</p>



<pre class="wp-block-code"><code>$ cucumber --help
        -r, --require LIBRARY|DIR        Require files before executing the features.
        --i18n LANG                      List keywords for in a particular language.
                                         Run with "--i18n help" to see all languages.
        -f, --format FORMAT              How to format features (Default: pretty).
        -o, --out &#91;FILE|DIR]             Write output to a file/directory instead of
        ...</code></pre>



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



<p>Gherkin ist nicht nur zum Schreiben von automatisierten Tests geeignet. Man kann Gherkin grundsätzlich auch dazu verwenden, um strukturierte Tests zu erstellen, die man später als Projektdokumentation verwendet kann. Erst die Eigenschaft, strukturiert zu sein, gibt uns die Möglichkeit zu automatisieren.</p>



<p>Sowohl die Sprache Gherkin wie auch das Tool Cucumber, bieten weitaus mehr Funktionalitäten, die ich hier nicht thematisiert habe. Zumal ich auch recht frisch in dieses Thema eingestiegen bin. So ist beispielsweise ein Datengetriebenes Szenario mithilfe von Tabellen möglich. Fernab können verschiedene Schritte, die im Prinzip das Gleiche tun, über Platzhalter definiert werden.</p>



<p>Um solche und weitere Vorteile zu nutzen, ist neben Cucumber oder anderen Testtools vor allem Disziplin beim Verfassen der Dokumentation bzw. der Gherkin Dokumente gefragt. Gleichzeitig müssen die formulierten Schritte präzise genug sein, um die gewünschten Verhaltensweisen ausreichend genau zu beschreiben. Ansonsten zerfällt die Abstraktion und Gherkin Dokumente werden lediglich zu etwas besser lesbaren Testskripten statt dem Ansatz des BDD zu folgen.</p>



<p>Cucumber lässt sich auch mit IntelliJ nutzen. Aber darüber gibt es dann in naher Zukunft einen weiteren Beitrag.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/11/erklaerung-cucumber/">Cucumber &#8211; Das kollaborative Tool für Behavior Driven Development</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/11/erklaerung-cucumber/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1117</post-id>	</item>
		<item>
		<title>Jest &#8211; Test-Framework für Testautomatisierung</title>
		<link>https://ceosbay.com/2023/03/07/erklaerung-jest/</link>
					<comments>https://ceosbay.com/2023/03/07/erklaerung-jest/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 07 Mar 2023 20:03:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></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[Website]]></category>
		<category><![CDATA[Ausführung]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Christoph]]></category>
		<category><![CDATA[Codeabdeckung]]></category>
		<category><![CDATA[Codes]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jest]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[Nakazawa]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Snapshot]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Stub]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1075</guid>

					<description><![CDATA[<p>Jest ist ein Open Source JavaScript-Testframework, dass speziell für die Verwendung mit React, Vue.js, Angular und anderen modernen JavaScript&#8211;Frameworks und -Bibliotheken entwickelt wurde. Das Framework hat Facebook, um genau zu sein, Christoph Nakazawa entworfen und &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/07/erklaerung-jest/">Jest &#8211; Test-Framework für Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Jest ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Testframework, dass speziell für die Verwendung mit <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, Vue.js, <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/" target="_blank" rel="noreferrer noopener">Angular</a> und anderen modernen <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> und -Bibliotheken entwickelt wurde. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> hat Facebook, um genau zu sein, Christoph Nakazawa entworfen und entwickelt. Wobei man bei der Entwicklung den Schwerpunkt auf die Einfachheit und die Unterstützung von großen Webanwendungen gesetzt hat. Heute nutzen es viele Entwickler sowie Unternehmen weltweit.</p>



<p>Es bietet eine Reihe von Funktionen und Tools, die es Entwicklern erleichtert, effektive und zuverlässige Tests für ihre <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen zu schreiben. Zu den Funktionen von Jest gehören unter anderem:</p>



<p><strong>Automatisierte Testausführung:</strong></p>



<p>Jest führt Tests automatisch aus, wenn es Codeänderungen erkennt. Dies beschleunigt den Entwicklungsprozess und sorgt dafür, dass man häufiger bzw. effektiver Tests ausführen kann. Dies steigert am Ende des Tages die Qualität der Anwendungen grundsätzlich.</p>



<p><strong>Snapshot-Tests:</strong></p>



<p>Mit Jest können Entwickler Snapshot-Tests durchführen. Dadurch stellt man sicher, dass das Rendering der Komponenten oder Funktionen konsistent stattfindet. Dies kann auch dabei helfen, visuelle Fehler in der Benutzeroberfläche zu identifizieren und zu beheben.</p>



<p><strong>Mocking:</strong></p>



<p>Jest erleichtert das Erstellen von Mocks und Stubs für Abhängigkeiten, die man in den zu entwickelnden Anwendungen verwendet. Dies kann Entwicklern dabei helfen, ihre Tests zu isolieren und sicherzustellen, dass die Ausführung unabhängig voneinander stattfindet.</p>



<p><strong>Codeabdeckung:</strong></p>



<p>Jest bietet eine integrierte Codeabdeckungsfunktion. Dies ermöglicht den Entwicklern die Überprüfung, wie viel des Codes während der Testausführung abgedeckt ist. Dies kann helfen, Lücken in der Testabdeckung zu identifizieren und die Qualität der Anwendung insgesamt zu verbessern.</p>



<p><strong>Parallele Testausführung:</strong></p>



<p>Jest kann Tests parallel ausführen, was die Testdauer verkürzt, und die Gesamtgeschwindigkeit des Entwicklungsprozesses erhöht.</p>



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



<p>Insgesamt ist Jest ein leistungsstarkes Testframework für <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen, dass eine breite Palette von Funktionen bietet, um Entwicklern dabei zu helfen, effektive und zuverlässige Tests für ihre Anwendungen zu schreiben. Es ist eine wichtige Technologie für die Entwicklung moderner <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen und viele Entwickler sowie Unternehmen weltweit nutzen es.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/07/erklaerung-jest/">Jest &#8211; Test-Framework für Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/07/erklaerung-jest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1075</post-id>	</item>
		<item>
		<title>Proof Of Work (PoW) &#8211; Der Algorithmus für eine sichere und vertrauenswürdige Blockchain</title>
		<link>https://ceosbay.com/2022/12/12/erklaerung-proof-of-work-pow/</link>
					<comments>https://ceosbay.com/2022/12/12/erklaerung-proof-of-work-pow/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 12 Dec 2022 22:58:00 +0000</pubDate>
				<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[Blockchain Games]]></category>
		<category><![CDATA[Dezentralisierung]]></category>
		<category><![CDATA[Finanzen]]></category>
		<category><![CDATA[Krypto]]></category>
		<category><![CDATA[NFT]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Algorithmus]]></category>
		<category><![CDATA[Bitcoin]]></category>
		<category><![CDATA[Block]]></category>
		<category><![CDATA[BTC]]></category>
		<category><![CDATA[Chain]]></category>
		<category><![CDATA[Doge]]></category>
		<category><![CDATA[Dogecoin]]></category>
		<category><![CDATA[ETH]]></category>
		<category><![CDATA[Ether]]></category>
		<category><![CDATA[Ethereum]]></category>
		<category><![CDATA[Finanz]]></category>
		<category><![CDATA[Knoten]]></category>
		<category><![CDATA[Konsens]]></category>
		<category><![CDATA[Konsensalgorithmus]]></category>
		<category><![CDATA[Litecoin]]></category>
		<category><![CDATA[of]]></category>
		<category><![CDATA[Proof]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=950</guid>

					<description><![CDATA[<p>Proof of Work (PoW) ist ein Konsens-Mechanismus der Blockchain. Für den effektiven Ansatz des dezentralisierten Austausches, ist ein solcher Mechanismus unabdingbar. Änderungen auf der Blockchain müssen für ein zuverlässiges System durch einen Konsensmechanismus bestätigt werden. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/12/erklaerung-proof-of-work-pow/">Proof Of Work (PoW) &#8211; Der Algorithmus für eine sichere und vertrauenswürdige Blockchain</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Proof of Work (PoW) ist ein Konsens-Mechanismus der <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a>.</p>



<p>Für den effektiven Ansatz des dezentralisierten Austausches, ist ein solcher Mechanismus unabdingbar. Änderungen auf der <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a> müssen für ein zuverlässiges System durch einen Konsensmechanismus bestätigt werden. Der Proof of Work stellt in der Regel die Lösung einer mäßig schweren Aufgabe durch den Nutzer oder dessen Computer dar. Das Ergebnis kann vom Diensterbringer ohne großen Aufwand nachgeprüft werden.</p>



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



<p>Um es zu verstehen, kann es Sinn machen, die Grundlagen der Distributed Ledger Technologie anzusehen. Man kann die <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a> als eine Art Verzeichnis betrachten, dass mit Transaktionen und Blöcken gefüllt ist. Die Speicherung erfolgt aufeinander aufbauend über ein verteiltes Netzwerk. Zur Speicherung ist ein Freigabeprotokoll erforderlich, dass die dezentralisierte Übermittlung von Daten zwischen den Netzwerkteilnehmern ermöglicht.</p>



<p>Durch die dezentralisierte Speicherung der Daten ist sichergestellt, dass die Manipulation extrem minimiert wird. Ich möchte hier bewusst mit absoluten Aussagen sparsam umgehen. Mit dem Aufkommen der Quantentechnolgie, wird sich dahingehend durchaus etwas machen lassen, glaube ich. Dennoch ist stand heute eine Überprüfung durch die Teilnehmer im Netzwerk nicht erforderlich.</p>



<p>Durch die gemeinsame Nutzung der Daten von unabhängigen Netzwerk-Teilnehmern, auch Nodes bzw. Knoten genannt, durch die <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a>, verfügt jeder Teilnahme eine exakte Kopie der gesamten Daten, der <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a>. Folglich müsste für einen erfolgreichen Angriff bzw. eine Manipulation der Daten, die Mehrheit aller Netzwerkteilnehmer zeitgleich einer Änderung zustimmen. Bei diesem Konsensmechanismus spricht man vom Proof of Work.</p>



<h3 class="wp-block-heading">Funktionsweise des Proof of Work</h3>



<p>Im Grunde genommen gilt es rechenintensive mathematische Aufgaben zu lösen, um einer <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a> neue Blöcke bzw. Datensätze hinzuzufügen. Bei diesem Vorgang spricht man vom Mining.</p>



<p>Jede erfolgreiche Lösung eines vorgegebenen mathematischen Problems, durch ein Trial And Error Verfahren, führt zu der Generierung eines neuen Blocks in der <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a>. Um genau zu sein der erste Schüler… Ich meinte natürlich Netzwerkteilnehmer, der eine Lösung findet, kann auf die Hausaufgabe verzichten… Und auch hier meinte ich eher, dass dieser die Lösung im Netzwerk teilen kann. Grüße Doc Bock – Ist ein bisschen was anderes als Nullstellen berechnen. Macht auch etwas mehr Spaß, vorausgesetzt der Gegenwert passt 😀</p>



<p>Alle anderen Teilnehmer bauen dann auf dem neu generierten Datenblock auf. Hinzu kommt, dass je mehr Rechenarbeit eine Node aufwendet, die Wahrscheinlichkeit, für die Generierung neuer Blöcke erhöht wird.</p>



<p>Die Nutzung und Bereitstellung von Proof of Work ist rechenintensiv. Und komplexe Rechenoperationen durch Computer benötigen enorm viele Ressourcen. Vor allem, weil die Berechnungen mit jeder Erstellung eines neuen Blocks komplizierter werden und folglich auch länger dauern.</p>



<h3 class="wp-block-heading">Bekannte Proof of Work Lösungen</h3>



<p>Zu den bekanntesten PoW Lösungen zählen der Bitcoin (BTC), Litecoin (LTC) und Dogecoin (DOGE)</p>



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



<p>PoW hat sich als Konsens Algorithmus bewährt. Die Wahrscheinlichkeit für die Manipulation der <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a> ist äußerst gering. So, zumindest der Status Quo. Der große Nachteil ist der enorme Energiebedarf, der erforderlich ist, um die komplexen Berechnungen zu lösen. Dies ist vor allem in der heutigen Zeit der Energiekriese ein großes Manko, was zu einer relativ schlechten Reputation dieses Konsensalgorithmus führt. Dies ist unter anderem ein Grund dafür, warum <a href="https://ceosbay.com/2022/11/02/erklaerung-kryptowaehrung-ethereum-ether/">Ethereum</a> bzw. ETH / Ether nicht mehr unter PoW verweilt und auch viele andere <a href="https://ceosbay.com/2022/11/01/erklaerung-crypto-bzw-kryptowaehrung/">Kryptowährungen</a> auf <a href="https://ceosbay.com/2022/12/12/erklaerung-proof-of-stake-pos/">Proof of Stake</a> geswitched sind. Die Vor- und Nachteile zu diesem Konsensalgorithmus findet ihr, wie bereits angesprochen, in dem Beitrag, der genau diesem Thema gewidmet ist.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/12/erklaerung-proof-of-work-pow/">Proof Of Work (PoW) &#8211; Der Algorithmus für eine sichere und vertrauenswürdige Blockchain</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/12/erklaerung-proof-of-work-pow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">950</post-id>	</item>
	</channel>
</rss>
