<?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>Architektur Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/architektur/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/architektur/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 07:01:59 +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>Architektur Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/architektur/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>VGG &#8211; Meilenstein in der Entwicklung der Künstlichen Intelligenz</title>
		<link>https://ceosbay.com/2025/01/30/vgg-meilenstein-in-der-entwicklung-der-kuenstlichen-intelligenz/</link>
					<comments>https://ceosbay.com/2025/01/30/vgg-meilenstein-in-der-entwicklung-der-kuenstlichen-intelligenz/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 30 Jan 2025 18:40:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[KI-Modelle]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[Maschinelles Lernen]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Spieleentwicklung]]></category>
		<category><![CDATA[Testautomatisierung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Bildklassifikation]]></category>
		<category><![CDATA[CNN]]></category>
		<category><![CDATA[Computer Vision]]></category>
		<category><![CDATA[Convolutional Neural Network]]></category>
		<category><![CDATA[Deep Learning]]></category>
		<category><![CDATA[DenseNet]]></category>
		<category><![CDATA[Faltungskerne]]></category>
		<category><![CDATA[Feature Maps]]></category>
		<category><![CDATA[ImageNet]]></category>
		<category><![CDATA[Max-Pooling]]></category>
		<category><![CDATA[neuronale Netze]]></category>
		<category><![CDATA[ResNet]]></category>
		<category><![CDATA[Softmax]]></category>
		<category><![CDATA[Transfer Learning]]></category>
		<category><![CDATA[überwachtes Lernen]]></category>
		<category><![CDATA[VGG]]></category>
		<category><![CDATA[Visual Geometry Group]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=3332</guid>

					<description><![CDATA[<p>Die Welt der künstlichen Intelligenz (KI) ist voller Meilensteine, die die Entwicklung dieser faszinierenden Technologie vorangetrieben haben. Einer dieser Meilensteine ist das VGG-Netzwerk, eine wegweisende Architektur (Siehe auch meinen Beitrag über &#8222;Domain Driven Design (DDD) &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/01/30/vgg-meilenstein-in-der-entwicklung-der-kuenstlichen-intelligenz/">VGG &#8211; Meilenstein in der Entwicklung der Künstlichen Intelligenz</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die Welt der <a href="https://ceosbay.com/2023/04/02/erklaerung-kuenstliche-intelligenz/">künstlichen Intelligenz (KI)</a> ist voller Meilensteine, die die Entwicklung dieser faszinierenden Technologie vorangetrieben haben. Einer dieser Meilensteine ist das VGG-Netzwerk, eine wegweisende Architektur (Siehe auch meinen Beitrag über &#8222;<a href="https://ceosbay.com/2023/08/03/domain-driven-design-ddd-die-kunst-der-softwarearchitektur/">Domain Driven Design (DDD) – Die Kunst der Softwarearchitektur</a>&#8222;) im Bereich der Convolutional Neural Networks (CNNs). Doch was macht es so besonders und warum spielt es eine zentrale Rolle in der Geschichte der <a href="https://ceosbay.com/2023/04/02/erklaerung-kuenstliche-intelligenz/">KI</a>? Dieser Blog-Beitrag gibt einen Überblick und seine Bedeutung.</p>



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



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



<p>Die Visual Geometry Group der <a href="https://www.ox.ac.uk/">Universität Oxford</a> entwickelte das VGG-Netzwerk, ein tiefes Convolutional Neural Network, dass 2014 von K. Simonyan und A. Zisserman in ihrer Arbeit &#8222;Very Deep Convolutional Networks for Large-Scale Image Recognition&#8220; vorgestellt wurde. Die Architektur wurde speziell für die Herausforderung der Bildklassifikation entworfen und erzielte beeindruckende Ergebnisse im ImageNet-Wettbewerb, einem der renommiertesten Tests für Bildverarbeitungssysteme. Siehe auch meinen Beitrag &#8222;<a href="https://ceosbay.com/2025/01/11/ueberwachtes-lernen-bei-kuenstlicher-intelligenz/">Überwachtes Lernen bei Künstlicher Intelligenz</a>&#8222;.</p>



<p>Die Struktur basiert auf der Verwendung kleiner 3&#215;3-Faltungskerne. Diese Kerne kombinieren sich in mehreren aufeinanderfolgenden Schichten, um tiefe Netzwerke zu bilden. Das reduziert die Komplexität, während eine hohe Modellkapazität gewahrt bleibt.</p>



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



<p>Die Architektur gibt es in verschiedenen Varianten, die sich durch die Anzahl der Schichten unterscheiden, wie VGG-11, -16 und -19. Die Zahl hinter dem Namen entspricht den gewichtstragenden Schichten. VGG-16, beispielsweise, verfügt über 16 gewichtstragende Schichten, die sich aus Convolutional- und Fully-Connected-Layern zusammensetzen.</p>



<p>Einige Schüsselpunkte der Architektur:</p>



<ol class="wp-block-list">
<li><strong>Tiefere Netzwerke</strong>: Im Vergleich zu früheren Modellen wie AlexNet repräsentiert VGG durch seine tiefere Struktur Bildmerkmale genauer.</li>



<li><strong>Kleine Faltungskerne</strong>: Mit 3&#215;3-Faltungskernen erfasst es Details effektiv und erreicht eine feine Granularität.</li>



<li><strong>Max-Pooling-Schichten</strong>: Diese Schichten reduzieren die Dimensionen der Merkmalskarten und sorgen für Translation Invariance.</li>
</ol>



<p>Die symmetrische und elegante Modellarchitektur macht es zu einer beliebten Wahl für Forschung und Lehre.</p>



<h3 class="wp-block-heading">Warum ist VGG so bedeutsam?</h3>



<p>Es beeinflusste die Entwicklung der KI auf vielfältige Weise:</p>



<ol class="wp-block-list">
<li><strong>Benchmark-Leistung</strong>: Beim ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 2014 erzielte es bahnbrechende Ergebnisse hinsichtlich der Genauigkeit und belegte den zweiten Platz in der Bildklassifikation.</li>



<li><strong>Einfluss auf moderne Architekturen</strong>: Spätere CNN-Modelle wie ResNet und DenseNet bauten auf Konzepten auf, die VGG eingeführt hatte. Insbesondere die Verwendung kleiner Faltungskerne wurde zum Standard.</li>



<li><strong>Vielfältige Anwendungen</strong>: Es findet nicht nur in der Bildklassifikation Anwendung, sondern auch in Bereichen wie Objektsegmentierung, Transfer Learning und medizinischer Bildverarbeitung.</li>
</ol>



<h3 class="wp-block-heading">Herausforderungen und Grenzen</h3>



<p>Obwohl es viele Stärken besitzt, gibt es auch Schwächen:</p>



<ul class="wp-block-list">
<li><strong>Rechenintensiv</strong>: Die Tiefe und die hohe Anzahl der Parameter machen VGG rechen- und speicherintensiv.</li>



<li><strong>Overfitting</strong>: Ohne geeignete Regularisierung neigt es bei kleineren Datensätzen zu <a href="https://ceosbay.com/2025/01/18/ueberanpassung-overfitting-der-ki-wenn-modelle-zu-viel-lernen/">Overfitting</a>.</li>



<li><strong>Effizienz</strong>: Neuere Architekturen wie ResNet arbeiten effizienter und benötigen weniger Rechenressourcen, wodurch VGG im Vergleich veraltet erscheint.</li>
</ul>



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



<p>Moderne Architekturen werden zwar häufiger verwendet, doch bleibt VGG ein bedeutender Meilenstein in der Geschichte der <a href="https://ceosbay.com/2023/04/02/erklaerung-kuenstliche-intelligenz/">KI</a>. Es ebnete den Weg für tiefere und leistungsfähigere Netzwerke und bildet nach wie vor eine Grundlage für das Verständnis von Convolutional Neural Networks. Forschende und Praktiker profitieren von diesem wichtigen Schritt in der Evolution der <a href="https://ceosbay.com/2023/04/02/erklaerung-kuenstliche-intelligenz/">KI</a>.</p>



<p>Die Einfachheit und Effizienz von VGG inspirierte viele der heutigen Fortschritte und erinnert daran, dass Durchbrüche in der <a href="https://ceosbay.com/2023/04/02/erklaerung-kuenstliche-intelligenz/">KI</a> oft das Ergebnis klarer und durchdachter Innovationen sind.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/01/30/vgg-meilenstein-in-der-entwicklung-der-kuenstlichen-intelligenz/">VGG &#8211; Meilenstein in der Entwicklung der Künstlichen Intelligenz</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/01/30/vgg-meilenstein-in-der-entwicklung-der-kuenstlichen-intelligenz/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3332</post-id>	</item>
		<item>
		<title>CPU &#8211; Geschichte, Aufbau und Optimierung</title>
		<link>https://ceosbay.com/2023/09/24/cpu-geschichte-aufbau-und-optimierungcpu/</link>
					<comments>https://ceosbay.com/2023/09/24/cpu-geschichte-aufbau-und-optimierungcpu/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 24 Sep 2023 18:11:00 +0000</pubDate>
				<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[ALU]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Computerherz]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[Datenverarbeitung]]></category>
		<category><![CDATA[Einbau]]></category>
		<category><![CDATA[Energieverbrauch]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[Firmware-Updates]]></category>
		<category><![CDATA[Geschichte]]></category>
		<category><![CDATA[Geschwindigkeit]]></category>
		<category><![CDATA[Gigahertz]]></category>
		<category><![CDATA[integrierte Schaltungen]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Kerne]]></category>
		<category><![CDATA[Kühlung]]></category>
		<category><![CDATA[Leistung]]></category>
		<category><![CDATA[Luftkühlung]]></category>
		<category><![CDATA[Luftkühlungssysteme]]></category>
		<category><![CDATA[Mainboard]]></category>
		<category><![CDATA[Maschinencode]]></category>
		<category><![CDATA[Mehrkern-Technologie]]></category>
		<category><![CDATA[Mikroprozessor]]></category>
		<category><![CDATA[mobile Geräte]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Revolution]]></category>
		<category><![CDATA[Risiken]]></category>
		<category><![CDATA[Software-Updates]]></category>
		<category><![CDATA[stromsparend]]></category>
		<category><![CDATA[Takt]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Technologiewelt]]></category>
		<category><![CDATA[Transistor]]></category>
		<category><![CDATA[Überhitzung]]></category>
		<category><![CDATA[Übertakten]]></category>
		<category><![CDATA[Vakuumröhren]]></category>
		<category><![CDATA[Wasserkühlung]]></category>
		<category><![CDATA[Wasserkühlungssysteme]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2492</guid>

					<description><![CDATA[<p>Die zentrale Verarbeitungseinheit, bekannt als CPU (Central Processing Unit), stellt das Herzstück eines jeden Computers dar. Ohne sie gäbe es keine Datenverarbeitung, keine Berechnungen und letztlich keine funktionierenden Computer. Heute widme ich mich dieser Errungenschaft, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/24/cpu-geschichte-aufbau-und-optimierungcpu/">CPU &#8211; Geschichte, Aufbau und Optimierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die zentrale Verarbeitungseinheit, bekannt als CPU (Central Processing Unit), stellt das Herzstück eines jeden Computers dar. Ohne sie gäbe es keine Datenverarbeitung, keine Berechnungen und letztlich keine funktionierenden Computer. Heute widme ich mich dieser Errungenschaft, der wir so ziemlich alles verdanken, was in Relation zur Computer-Technologie steht.</p>



<h3 class="wp-block-heading">Die Entstehung der CPU</h3>



<p>Die Geschichte beginnt in den 1960er Jahren. Integrierte Schaltungen ersetzten immer mehr die älteren Vakuumröhren und Transistoren, die man früher für Rechenoperationen genutzt hat. 1971 präsentierte Intel dann den 4004, den ersten kommerziell erhältlichen Mikroprozessor. Mit der Vorstellung dieses bahnbrechenden Produkts begann eine Ära, die die Computertechnologie für immer verändern sollte.</p>



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



<p>Eine CPU besteht aus Millionen von Transistoren, die elektrische Signale verarbeiten. Dies ermöglicht ihr, Anweisungen auszuführen, die in Form von Maschinencode vorliegen. Das Kernstück bildet der ALU (Arithmetic Logic Unit), der für arithmetische und logische Operationen verantwortlich ist. Moderne CPUs verfügen zudem über mehrere Kerne, die es ihnen ermöglichen, mehrere Aufgaben gleichzeitig zu bewältigen.</p>



<h3 class="wp-block-heading">Die richtige Auswahl und der korrekte Einbau</h3>



<p>Bei der Auswahl einer CPU spielen viele Faktoren eine Rolle:</p>



<ol class="wp-block-list">
<li><strong>Geschwindigkeit und Performance:</strong> Der Takt, oft in Gigahertz (GHz) angegeben, zeigt an, wie viele Operationen sie pro Sekunde ausführen kann.</li>



<li><strong>Kerne:</strong> Mehrere Kerne bedeuten, dass sie mehrere Aufgaben gleichzeitig bearbeiten kann.</li>



<li><strong>Energieverbrauch:</strong> Für mobile Geräte sind stromsparende CPUs besonders wichtig.</li>
</ol>



<p>Wenn die passende CPU ausgewählt ist, geht es um den Einbau. Dabei sollte man vorsichtig vorgehen, um Beschädigungen zu vermeiden. Nach dem Einsetzen auf das Mainboard kommt etwas Wärmeleitpaste auf die CPU und im Anschluss befestigt man dann den Kühlkörper darauf, um eine Überhitzung zu verhindern.</p>



<h3 class="wp-block-heading">Optimierung und Hinweise</h3>



<ol class="wp-block-list">
<li><strong>Kühlung:</strong> Für eine optimale Leistung ist es wichtig, die CPU gut zu kühlen. Hier eignen sich sowohl Luft- als auch Wasserkühlungssysteme. Es gibt auch andere kreative Ansätze, wie den Rechner in ein Ölbad zu setzen, doch derartige Praktiken thematisiere ich hier nicht 🙂</li>



<li><strong>Updates:</strong> Software- und Firmware-Updates können die Performance verbessern. Daher sollte man regelmäßig nach Updates suchen.</li>



<li><strong>Übertakten:</strong> Erfahrene Nutzer können versuchen, ihre CPU zu übertakten, um mehr Leistung herauszuholen. Dies birgt jedoch Risiken und sollte mit Vorsicht durchgeführt werden.</li>
</ol>



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



<p>Die CPU bildet das Herz eines jeden Computers. Ihre Entwicklung hat die Technologiewelt revolutioniert und ermöglicht heute eine Vielzahl von Anwendungen. Bei der Auswahl und dem Einbau sollte man sorgfältig vorgehen und stets auf eine optimale Kühlung achten, um das Beste aus dieser wunderbaren Technologie herauszuholen. An dieser Stelle möchte ich auch gerne auf den Beitrag über die GPU hinweisen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/24/cpu-geschichte-aufbau-und-optimierungcpu/">CPU &#8211; Geschichte, Aufbau und Optimierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/09/24/cpu-geschichte-aufbau-und-optimierungcpu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2492</post-id>	</item>
		<item>
		<title>Softwarearchitektur &#8211; Entstehung, Bedeutung und Best Practices</title>
		<link>https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/</link>
					<comments>https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 02 Aug 2023 19:26:38 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Künstliche Intelligenz]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></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[Akzeptanz]]></category>
		<category><![CDATA[Akzeptanzkriterien]]></category>
		<category><![CDATA[Anforderung]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Bedeutung]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Doku]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Entstehung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Funktional]]></category>
		<category><![CDATA[Geschäft]]></category>
		<category><![CDATA[Gestaltung]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[Kompetenz]]></category>
		<category><![CDATA[Kompetenzen]]></category>
		<category><![CDATA[Komplex]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[Sicher]]></category>
		<category><![CDATA[Soft]]></category>
		<category><![CDATA[Softwarearchitektur]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[Systeme]]></category>
		<category><![CDATA[Umsetzung]]></category>
		<category><![CDATA[Ware]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2085</guid>

					<description><![CDATA[<p>Softwarearchitektur ist eine entscheidende Komponente des Software-Entwicklungslebenszyklus. Sie liefert einen strukturierten Plan, der die systemischen Anforderungen definiert und die Systemkomponenten hervorhebt, welche für die Implementierung und Wartung einer Software entscheidend sind. In diesem Blog-Beitrag versuche &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/">Softwarearchitektur &#8211; Entstehung, Bedeutung und Best Practices</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Softwarearchitektur ist eine entscheidende Komponente des Software-Entwicklungslebenszyklus. Sie liefert einen strukturierten Plan, der die systemischen Anforderungen definiert und die Systemkomponenten hervorhebt, welche für die Implementierung und Wartung einer Software entscheidend sind. In diesem Blog-Beitrag versuche ich, einen Einblick in die Entstehung der Softwarearchitektur, ihre Bedeutung und ihre Best Practices zu geben.</p>



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



<p>Obwohl das Konzept der Softwarearchitektur so alt ist wie die Softwareentwicklung selbst, gewann der Begriff &#8222;Softwarearchitektur&#8220; erst in den späten 1980er Jahren an Bedeutung. Der Credit für die Etablierung dieses Konzepts geht an Computerwissenschaftler wie David Parnas, Mary Shaw und Fred Brooks, die erkannten, dass eine strukturierte Herangehensweise an die Softwareentwicklung notwendig ist, um komplexe Systeme zu verwalten.</p>



<p>Die Forscher bemerkten, dass die steigende Komplexität von Softwareprojekten eine genaue Planung und Organisation erfordert. Damit begann das Zeitalter der Softwarearchitektur, in dem die Gestaltung eines Systems genauso wichtig wurde wie die Implementierung des Codes selbst.</p>



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



<p>Softwarearchitektur bezeichnet die Struktur eines Softwaresystems, das seine Elemente, die Eigenschaften dieser Elemente und die Beziehungen zwischen ihnen umfasst. Sie bietet einen Plan, der die Arbeitsweise des Systems und die Kommunikation zwischen seinen verschiedenen Teilen definiert. Die Softwarearchitektur legt auch die Regeln und Vorgaben für die Softwareentwicklung und -wartung fest, um sicherzustellen, dass das Endprodukt den Anforderungen entspricht.</p>



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



<p>Die Implementierung folgt einer systematischen Methode. Sie beginnt mit der Anforderungsanalyse, in der die funktionalen und nicht-funktionalen Anforderungen des Systems definiert werden. Anschließend wird das Systemdesign erstellt, das die Hauptkomponenten des Systems und ihre Interaktionen definiert. Dieses Design dient als Blaupause für die Entwicklungs- und Wartungsphase.</p>



<p>Es ist wichtig zu beachten, dass die Architektur flexibel genug sein muss, um Änderungen zu ermöglichen, da die Anforderungen oft variieren können. Daher sind iterative Entwicklungsansätze wie Agile (Siehe <a href="https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/">Agile Manifest</a>) und (<a href="https://ceosbay.com/2023/03/02/erklaerung-devops/">DevOps)</a> oft geeignet für die Implementierung der Softwarearchitektur.</p>



<h2 class="wp-block-heading"><strong>Wichtige Punkte bei der Umsetzung der Softwarearchitektur</strong></h2>



<p>Die Umsetzung der Softwarearchitektur erfordert sowohl technische als auch organisatorische Kompetenzen. Hier sind einige Punkte, die zu berücksichtigen sind:</p>



<ul class="wp-block-list">
<li><strong>Verständnis der Geschäftsziele:</strong> Die Architektur sollte auf den Geschäftszielen und Anforderungen basieren und nicht nur auf technologischen Überlegungen.</li>



<li><strong>Verwendung von Design Patterns:</strong> Design Patterns sind bewährte Lösungen für gemeinsame Designprobleme. Ihre Verwendung kann die Entwicklungszeit verkürzen und die Qualität des Endprodukts verbessern.</li>



<li><strong>Dokumentation:</strong> Eine gut dokumentierte Architektur erleichtert die Kommunikation innerhalb des Entwicklungsteams und die Wartung des Systems. Auch fällt es den Entwicklern durch eine gute Dokumentation leichter, sich in den verschiedenen Komponenten zurechtzufinden.</li>



<li><strong>Berücksichtigung von Nicht-Funktionalen Anforderungen:</strong> Neben den funktionalen Anforderungen sind auch Nicht-Funktionale Anforderungen wie Sicherheit, Leistung und Skalierbarkeit entscheidend. (Siehe in diesem Zusammenhang auch &#8222;<a href="https://ceosbay.com/2023/07/23/nicht-funktionale-tests-in-der-softwareentwicklung-damit-es-funktioniert/">Nicht funktionale Tests</a>&#8222;)</li>
</ul>



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



<p>Die Softwarearchitektur spielt eine entscheidende Rolle in der Softwareentwicklung. Sie bietet einen strukturierten Ansatz, um komplexe Systeme zu verwalten und zu warten. Durch die Berücksichtigung der oben genannten Punkte können Entwickler eine effektive und effiziente Architektur erstellen, die den Anforderungen gerecht wird und die langfristige Wartung des Systems erleichtert.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/">Softwarearchitektur &#8211; Entstehung, Bedeutung und Best Practices</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/08/02/softwarearchitektur-entstehung-bedeutung-und-best-practices/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2085</post-id>	</item>
		<item>
		<title>HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/29/erklaerung-hateoas/</link>
					<comments>https://ceosbay.com/2023/03/29/erklaerung-hateoas/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 29 Mar 2023 20:49:20 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Hypertext]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[src]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1055</guid>

					<description><![CDATA[<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der REST-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>HATEOAS, kurz für &#8222;Hypertext As The Engine Of Application State&#8220;, ist ein Konzept der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Architektur, dass die Interaktion zwischen Client und Server durch die Verwendung von Hypertext steuert. Es ist ein Begriff, den Roy Fielding im Rahmen seiner Dissertation bzw. bei der Definition von <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a> eingeführt hat. Im Wesentlichen bedeutet dies, dass ein Client in der Lage ist, den Zustand der Anwendung zu verändern und den Server zu navigieren, indem er Hypertext-Links folgt, anstatt explizit URLs anzugeben.</p>



<p>Es beschreibt unter anderem eines der wichtigsten <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Eigenschaften. Da der Architekturstil eine universelle Schnittstelle bieten soll, fordert HATEOAS, dass der <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Client sich ausschließlich durch das Folgen von URIs (Uniform Resource Identifier) im Hypermedia-Format durch die Webanwendung bewegen kann. Wird dieses Prinzip umgesetzt, benötigt der Client abgesehen von einem grundsätzlichen Verständnis von Hypermedia. Keinerlei weitere Informationen, um mit der Anwendung bzw. dem Server zu kommunizieren.</p>



<p>Die Bereitstellung der einzelnen URIs erfolgt dabei beispielsweise in Form von href- und src-Attributen. Vorausgesetzt es handelt sich um <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Dokumente oder -Snippets. Auch durch <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a>&#8211; bzw. <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Attribute/-Elemente, die der jeweilige Client automatisch erkennt.</p>



<p>Durch die Umsetzung des HATEOAS-Prinzips lässt sich die Schnittstelle eines <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">REST</a>-Services jederzeit anpassen. Dies kann ein wichtiger Vorteil dieser Architektur gegenüber anderen Applikationsstrukturen sein. Vor allem im direkten Vergleich mit Anwendungen, die man auf Grundlage von SOAP (Simple Object Access Protocol) ausführt.</p>



<p>Das HATEOAS-Konzept ist wichtig, weil es die Flexibilität und Skalierbarkeit von RESTful APIs verbessert. Ohne HATEOAS müsste ein Client spezifische URLs und Endpunkte kennen, um eine Anwendung effektiv zu nutzen. Dies kann jedoch kritisch sein, da URLs sich in der Regel ändern können. Diese Tatsache kann jedoch eben auch zu Fehlern und fehlerhaften Anfragen führen.</p>



<p>Durch die Verwendung von Hypertext-Links wird ein Client in die Lage versetzt, den aktuellen Zustand der Anwendung zu verstehen und dynamisch zu navigieren. Wenn beispielsweise ein Client eine Anfrage an den Server sendet, um eine Liste von Benutzern abzurufen, könnte der Server eine Antwort zurückgeben, die Links zu den einzelnen Benutzerdetails enthält. Der Client kann dann den Link zu einem bestimmten Benutzer folgen, um weitere Informationen abzurufen.</p>



<p>Ein Beispiel ist eine Bestellungsverwaltung in einem Online-Shop. Wenn ein Kunde eine Bestellung aufgeben möchte, kann der Server eine Antwort zurückgeben. Die enthalten wiederum Links zu den verschiedenen Schritten des Bestellvorgangs. Um beispielsweise den Warenkorb anzuzeigen, die Versandadresse anzugeben, Zahlungsinformationen anzugeben, etc. Der Client kann dann den Link zum nächsten Schritt folgen, ohne spezifische URLs oder Endpunkte zu kennen.</p>



<p>HATEOAS ist jedoch nicht nur für die Navigation innerhalb einer Anwendung wichtig. Es ermöglicht auch eine einfache Integration mit anderen Anwendungen und Diensten. Wenn eine API beispielsweise HATEOAS-konform ist, kann man sie von anderen Anwendungen oder Diensten aus leichter nutzen, da sie den Zustand der Anwendung und die verfügbaren Aktionen verstehen können.</p>



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



<p>Insgesamt verbessert das HATEOAS-Konzept die Flexibilität und Skalierbarkeit von RESTful APIs, indem es Clients in die Lage versetzt, dynamisch zu navigieren und den aktuellen Zustand der Anwendung zu verstehen. Durch die Verwendung von Hypertext-Links werden Anwendungen leichter integrierbar und besser wartbar. Wenn man also eine RESTful API entwirft, sollte man in Betracht ziehen, HATEOAS zu verwenden, um die Nutzbarkeit und die Flexibilität der Anwendung zu optimieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/29/erklaerung-hateoas/">HATEOAS &#8211; Evolution von REST für selbsterklärende APIs und zukunftssichere Web-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/29/erklaerung-hateoas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1055</post-id>	</item>
		<item>
		<title>Unit Tests &#8211; Fundament für stabile und effiziente Software</title>
		<link>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/</link>
					<comments>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 26 Mar 2023 17:50:20 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Algorithmen]]></category>
		<category><![CDATA[Algorithmus]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Auto]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Baustein]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codebasis]]></category>
		<category><![CDATA[Contract]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Driven]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Jacoco]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kompilierung]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Komponententest]]></category>
		<category><![CDATA[Lauffähigkeit]]></category>
		<category><![CDATA[Modul]]></category>
		<category><![CDATA[Modultest]]></category>
		<category><![CDATA[Nachteil]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Produkt]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testarten]]></category>
		<category><![CDATA[Teststufe]]></category>
		<category><![CDATA[Unit]]></category>
		<category><![CDATA[Unittests]]></category>
		<category><![CDATA[Vertrag]]></category>
		<category><![CDATA[Vorteil]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[Weise]]></category>
		<category><![CDATA[Zehnerregel]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1246</guid>

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



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



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



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



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



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



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



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



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



<p>Zum Vergleich: Ein Gerät wird erst dann als Ganzes getestet, wenn die Funktionsfähigkeit seiner Einzelteile gesichert ist.</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p>Bei der Entwicklung von Modultests können Testfälle entstehen, die der Zielsetzung und dem Charakter von Modultests nicht oder nur zum Teil entsprechen. Wie bei der Programmierung existieren daher auch für die Entwicklung von Modultests Anti-Pattern, die man möglichst vermeiden sollte.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/26/erklaerung-unit-tests/">Unit Tests &#8211; Fundament für stabile und effiziente Software</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1246</post-id>	</item>
		<item>
		<title>Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</title>
		<link>https://ceosbay.com/2023/03/21/erklaerung-angular/</link>
					<comments>https://ceosbay.com/2023/03/21/erklaerung-angular/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 21 Mar 2023 18:57:09 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Databinding]]></category>
		<category><![CDATA[Dynamisch]]></category>
		<category><![CDATA[Eager]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[ES6]]></category>
		<category><![CDATA[First]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frequenz]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Komplexität]]></category>
		<category><![CDATA[Lade]]></category>
		<category><![CDATA[Ladetechnik]]></category>
		<category><![CDATA[Ladetechniken]]></category>
		<category><![CDATA[LTS]]></category>
		<category><![CDATA[Major]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[Preloading]]></category>
		<category><![CDATA[Releae]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[scopes]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Statisch]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1210</guid>

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<li>Asynchrone Kompilierung von Templates</li>



<li>Einfacheres Routing</li>



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



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



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



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



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



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



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



<p><strong>Eager Loading (Eifriges Laden)</strong></p>



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



<p><strong>Lazy Loading (Langsames Laden)</strong></p>



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



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



<p><strong>Preloading (Vorladen)</strong></p>



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



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



<p>Der Home-Bereich wird erfolgreich geladen und unmittelbar danach wird der Dashboard-Bereich im Hintergrund geladen.</p>



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



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



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



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



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



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



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



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



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



<p>Generell ist es für Enterprise Projekte sicherlich eine gute Wahl. Dennoch sollte man andere <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a> und VueJS nicht außer Acht lassen, über die ich in den kommenden Tagen schreibe.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/21/erklaerung-angular/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1210</post-id>	</item>
		<item>
		<title>Autodesk 3ds Max &#8211; Kreativität entfesseln</title>
		<link>https://ceosbay.com/2023/02/21/autodesk-3ds-max-kreativitaet-entfesseln/</link>
					<comments>https://ceosbay.com/2023/02/21/autodesk-3ds-max-kreativitaet-entfesseln/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 21 Feb 2023 18:22:00 +0000</pubDate>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[3ds]]></category>
		<category><![CDATA[Animieren]]></category>
		<category><![CDATA[Anpassungsfähigkeit]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[CAD]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[Corona]]></category>
		<category><![CDATA[Effekte]]></category>
		<category><![CDATA[Engines]]></category>
		<category><![CDATA[EXR]]></category>
		<category><![CDATA[Film]]></category>
		<category><![CDATA[Foren]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[JPG]]></category>
		<category><![CDATA[Material]]></category>
		<category><![CDATA[Max]]></category>
		<category><![CDATA[Maxscript]]></category>
		<category><![CDATA[Maya]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Modellierung]]></category>
		<category><![CDATA[Modellierungsfunktionen]]></category>
		<category><![CDATA[NURBS]]></category>
		<category><![CDATA[Oberfläche]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[OctaneRender]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Organisch]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Programm]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[R3]]></category>
		<category><![CDATA[Rendering]]></category>
		<category><![CDATA[Ressourcen]]></category>
		<category><![CDATA[Revit]]></category>
		<category><![CDATA[Rigging]]></category>
		<category><![CDATA[Schlüsselrahmen]]></category>
		<category><![CDATA[Skelett]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Spiel]]></category>
		<category><![CDATA[Spiele]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[Substance]]></category>
		<category><![CDATA[Systeme]]></category>
		<category><![CDATA[Szenen]]></category>
		<category><![CDATA[Textur]]></category>
		<category><![CDATA[TIFF]]></category>
		<category><![CDATA[Toolkit]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Videospiele]]></category>
		<category><![CDATA[Visualisierung]]></category>
		<category><![CDATA[Visuals]]></category>
		<category><![CDATA[Visuell]]></category>
		<category><![CDATA[VRay]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1417</guid>

					<description><![CDATA[<p>3D Studio Max R2, später 3ds Max, war wohl das erste 3D Programm, mit dem ich in Bezug auf 3D, Ende der 90er Jahre, in Berührung kam und etwas damit anfangen konnte. Das erste 3D &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/21/autodesk-3ds-max-kreativitaet-entfesseln/">Autodesk 3ds Max &#8211; Kreativität entfesseln</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>3D Studio Max R2, später 3ds Max, war wohl das erste 3D Programm, mit dem ich in Bezug auf 3D, Ende der 90er Jahre, in Berührung kam und etwas damit anfangen konnte. Das erste 3D Modell, welches ich erstellt und animiert habe, war der Roboter aus Evolver. Allein das Intro des Films hat es mir damals angetan. Es war der Rechner von meinem Onkel, den ich als Kind bzw. fast schon Jugendlicher nach brauchbaren Spielen und Anwendungen durchforstet und unter den unzähligen Anwendungen darüber gestolpert bin.</p>



<p>Im dynamischen Bereich der 3D-Modellierung und Animation ist Autodesk 3ds Max ein unverzichtbares Werkzeug für Profis und Einsteiger gleichermaßen. Ob es um die Gestaltung beeindruckender Spielwelten, realistischer Film-Szenen oder detaillierter Architektur-Visualisierungen geht, 3ds Max bietet eine umfangreiche Palette an Funktionen, die den kreativen Prozess unterstützen. Besonders hat mir damals gefallen, dass ich mit Koordinaten Objekte platzieren und manipulieren konnte. Dies ermöglichte mir einen raschen Einstieg in völlig neue und digitale Welten. Die aus meinem Gedankengut. Doch heute geht es eher um Fakten. Daher…</p>



<h3 class="wp-block-heading">Umfangreiche Modellierungsfunktionen</h3>



<p>Autodesk 3ds Max ermöglicht es, eine breite Palette von 3D-Modellen und Strukturen zu erstellen. Die Software bietet zahlreiche Modellierungswerkzeuge, darunter Mesh-, Patch- und NURBS-Modellierung sowie Modifikatoren, um Formen und Texturen präzise zu manipulieren. Mit diesen vielfältigen Möglichkeiten können Designer und Künstler komplizierte Modelle mit hoher Präzision erstellen und ihre kreativen Visionen verwirklichen.</p>



<h3 class="wp-block-heading">Leistungsstarke Animationstools</h3>



<p>Die Animation ist eines der Hauptmerkmale von 3ds Max. Die Software ermöglicht es Benutzern, Charaktere und Objekte zu animieren, indem sie Schlüsselrahmen, Skelett- und Rigging-Systeme verwenden. Mit der integrierten CAT- (Character Animation Toolkit) und Biped-Animationssystemen lassen sich komplexe Animationen intuitiv erstellen und bearbeiten. Zusätzlich bietet 3ds Max Werkzeuge für Partikelanimation, Flüssigkeiten, Stoffe und Haare, um realistische Effekte zu erzielen und 3D-Szenen Leben einzuhauchen.</p>



<h3 class="wp-block-heading">Hochwertiges Rendering</h3>



<p>3ds Max bietet eine beeindruckende Auswahl an Rendering-Optionen, um Projekte in sehr guter Qualität zu präsentieren. Die Integration von Arnold, einem leistungsstarken und vielseitigen Renderer, ermöglicht es, realistische Licht- und Schattenwirkungen zu erzielen. Darüber hinaus kann man auch Drittanbieter Render-Engines wie V-Ray, Corona Renderer und OctaneRender nutzen, um die bestmöglichen Ergebnisse für Projekte zu erzielen.</p>



<h3 class="wp-block-heading">Umfangreiche Material- und Texturbibliotheken</h3>



<p>Dank der großen Material- und Texturbibliotheken von 3ds Max kann man realistische Oberflächen und Effekte erstellen. Mit dem Slate Material Editor benutzerdefinierte Materialien erstellen, indem man Texturen und Schattierungseffekte kombiniert. Außerdem unterstützt die Software gängige Dateiformate wie HDR, EXR und Substance, um volle Flexibilität bei der Gestaltung der Texturen zu bieten. Substance Designer und Painter sind übrigens ebenfalls grandiose Programme, die ich ebenfalls sehr gerne verwende. Von dem her, in der Zukunft, auch einen Beitrag wert.</p>



<h3 class="wp-block-heading">Erweiterbarkeit und Anpassungsfähigkeit von 3ds Max</h3>



<p>3ds Max ist ein äußerst anpassungsfähiges Programm, das über eine große Anzahl von Plugins und Skripts verfügt, um Workflows zu erstellen und zu optimieren. Die Unterstützung von Maxscript, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a> und <a href="https://ceosbay.com/2023/02/25/erklaerung-c/" target="_blank" rel="noreferrer noopener">C++</a> ermöglicht es, benutzerdefinierte Funktionen und Automatisierungen hinzuzufügen, um Projekte effizienter zu gestalten. Die Online-Community rund um 3ds Max ist sehr aktiv und bietet eine Vielzahl von Ressourcen, einschließlich Tutorials, Foren und Plugins, um das Programm an spezielle Anforderungen anzupassen.</p>



<h3 class="wp-block-heading">Nahtlose Integration von 3ds Max mit anderen Programmen</h3>



<p>Eine der Stärken von Autodesk 3ds Max ist seine nahtlose Integration in andere Anwendungen und Software-Ökosysteme. Die Software ermöglicht den Import und Export von Dateiformaten wie OBJ, FBX und Alembic, wodurch die Zusammenarbeit zwischen Designern, Künstlern und Entwicklern aus verschiedenen Bereichen sehr leicht zu bewerkstelligen ist. Darüber hinaus kann man es problemlos mit anderen Autodesk-Produkten wie <a href="https://ceosbay.com/2023/02/24/erklaerung-autodesk-maya/" target="_blank" rel="noreferrer noopener">Maya</a>, AutoCAD und Revit verbinden, um einen reibungslosen Workflow über verschiedene Projekte hinweg zu gewährleisten.</p>



<h3 class="wp-block-heading">Branchenweite Akzeptanz von 3ds Max</h3>



<p>Autodesk 3ds Max ist in einer Vielzahl von Branchen weit verbreitet und anerkannt, darunter Architektur, Film, Videospiele, Fernsehen und mehr. Dank der vielseitigen Funktionen und benutzerfreundlichen Oberfläche haben viele Branchenführer das Programm als Standardwerkzeug für die 3D-Modellierung und Animation gewählt. Als Ergebnis eröffnen sich mit der Beherrschung des Programms vielfältige berufliche Möglichkeiten in verschiedenen kreativen Bereichen und ich war in allen tätig, die ich soeben erwähnt habe 😀</p>



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



<p>Autodesk 3ds Max ist ein mächtiges und vielseitiges Programm, das sich ideal für 3D-Modellierung, Animation und Rendering eignet. Durch umfangreiche Funktionen, einer benutzerfreundlichen Oberfläche und branchenweite Akzeptanz ist es ein unverzichtbares Werkzeug für Künstler und Designer, die auf der Suche nach einem Programm sind, das ihre Kreativität fördert und unterstützt. Unabhängig vom Fachgebiet oder der persönlichen Erfahrungsstufe bietet 3ds Max die Möglichkeit, atemberaubende 3D-Visualisierungen und Animationen zu erstellen und bei der Verwirklichung kreativer Visionen zu helfen. Viele mögen behaupten, dass das Programm mit Altlasten zu kämpfen hat. Doch dies kann ich so nicht bestätigen. Ich arbeite nach wie vor in meiner Freizeit als auch im professionellen Umfeld sehr gerne damit, wenn es sich mal wieder anbietet. Ansonsten kommen natürlich auch <a href="https://ceosbay.com/2023/02/24/erklaerung-autodesk-maya/" target="_blank" rel="noreferrer noopener">Maya</a>, <a href="https://ceosbay.com/2023/02/20/blender-kreativitaet-in-3d-grenzenlos-und-kostenlos/" target="_blank" rel="noreferrer noopener">Blender</a>, sowie viele andere Anwendungen zum Einsatz. Je nachdem, was man benötigt.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/21/autodesk-3ds-max-kreativitaet-entfesseln/">Autodesk 3ds Max &#8211; Kreativität entfesseln</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/02/21/autodesk-3ds-max-kreativitaet-entfesseln/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1417</post-id>	</item>
		<item>
		<title>REST &#8211; Schönheit der einfachen Architektur</title>
		<link>https://ceosbay.com/2022/12/23/erklaerung-rest/</link>
					<comments>https://ceosbay.com/2022/12/23/erklaerung-rest/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 23 Dec 2022 19:00:00 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[7252]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Applikation]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[CoAP]]></category>
		<category><![CDATA[Demand]]></category>
		<category><![CDATA[Get]]></category>
		<category><![CDATA[HATEOAS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mkcol]]></category>
		<category><![CDATA[Move]]></category>
		<category><![CDATA[Parser]]></category>
		<category><![CDATA[Post]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[URI]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1033</guid>

					<description><![CDATA[<p>REST &#8211; Representational State Transfer ist ein Paradigma für die Softwarearchitektur von verteilten Systemen, insbesondere für Webservices. Es ist eine Abstraktion der Struktur und des Verhaltens des WWW (World Wide Web). REST hat das Ziel, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/">REST &#8211; Schönheit der einfachen Architektur</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>REST &#8211; Representational State Transfer ist ein Paradigma für die Softwarearchitektur von verteilten Systemen, insbesondere für Webservices. Es ist eine Abstraktion der Struktur und des Verhaltens des WWW (World Wide Web). REST hat das Ziel, einen Architekturstil zu schaffen, der den Anforderungen des modernen Web besser genügt. Dabei unterscheidet sich REST vor allem in der Forderung nach einer einheitlichen Schnittstelle von anderen Architekturstilen.</p>



<p>Der Zweck von REST liegt schwerpunktmäßig auf der Maschine-zu-Maschine-Kommunikation. REST stellt eine einfache Alternative zu ähnlichen Verfahren wie SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language) und dem verwandten Verfahren RPC (Remote Procedure Call) dar. Anders als bei vielen verwandten Architekturen kodiert REST keine Methodeninformation in den URI (Uniform Resource Identifier), da der URI Ort und Namen der Ressource angibt, nicht aber die Funktionalität, die der Web-Dienst zu der Ressource anbietet. Der Vorteil von REST liegt darin, dass im WWW bereits ein Großteil der für REST nötigen Infrastruktur (z. B. Web- und Application-Server, https-fähige Clients, HTML- und XML-Parser, Sicherheitsmechanismen) vorhanden ist und viele Web-Dienste per se REST-konform sind. Eine Ressource kann dabei über verschiedene Medientypen dargestellt werden, auch Repräsentation der Ressource genannt.</p>



<p>So ist ein Online-Dienst, der lediglich unveränderte Seiteninhalte nach dem Internetstandard https anbietet, bereits REST-konform. Dynamisch erzeugte Seiten folgen diesem Paradigma jedoch meistens nicht. So bieten beispielsweise Nachrichtenseiten sich ständig ändernde Informationen mit sowohl unterschiedlichem Format als auch Inhalt an, die nur schwer automatisch verarbeitet werden können. Bliebe das Format unverändert, so wäre eine essenzielle REST-Eigenschaft erfüllt. So ist eine Webseite, auf der ständig die aktuelle Uhrzeit in immer demselben Format abrufbar ist, REST-konform.</p>



<p>Die Bezeichnung „Representational State Transfer“ soll den Übergang vom aktuellen Zustand zum nächsten Zustand (State) einer Applikation verbildlichen. Dieser Zustandsübergang erfolgt durch den Transfer der Daten, die den nächsten Zustand repräsentieren.</p>



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



<p>Das REST-Paradigma entwickelte sich aus dem 1994 von Roy Fielding entworfenen https Object Model. Fielding entwickelte seine Idee von einem einheitlichen Konzept über die Jahre weiter, bis er 2000 den REST-Architekturstil im Rahmen seiner Dissertation (<a href="https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf" target="_blank" rel="noreferrer noopener">Hier der Link zu der Arbeit</a>) veröffentlichte. Das Programmierparadigma der „RESTful Application“ wurde allerdings häufig falsch umgesetzt und findet erst seit 2014 Anklang in der Welt des WWW. In seiner Arbeit geht Fielding dabei auf die verschiedenen Anforderungen ein, die für die Webarchitektur wichtig sind.</p>



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



<p>Der Architektur-Stil verweist auf sechs Eigenschaften, die ein Dienst haben muss. Dabei ist nicht festgelegt, wie man diese Prinzipien implementieren muss. Fielding beschreibt für jedes Architekturprinzip dessen Vor- und Nachteile. Dabei handelt es sich um Client-Server, Zustandslosigkeit, Caching, Einheitliche Schnittstellen, Mehrschichtige Systeme und optional Code on Demand, auf die ich nachfolgend eingehen werde.</p>



<ul class="wp-block-list">
<li>Client-Server (Es gilt generell die Anforderung, dass alle Eigenschaften der Client-Server-Architektur gelten. Der Server stellt dabei einen Dienst bereit, der bei Bedarf vom Client abgefragt wird. Der Hauptvorteil dieser Anforderung ist die einfache Skalierbarkeit der Server, da diese unabhängig vom Client agieren. Dies ermöglicht des Weiteren eine unterschiedlich schnelle Entwicklung der beiden Komponenten.)<br></li>



<li>Zustandslosigkeit (Jede REST-Nachricht enthält alle Informationen, die für den Server bzw. für den Client notwendig sind, um die Nachricht zu interpretieren. Weder der Server noch die Anwendung soll Zustandsinformationen zwischen zwei Nachrichten speichern. Man spricht daher von einem zustandslosen (englisch: stateless) Protokoll. Jede Anfrage eines Clients an den Server ist insofern in sich geschlossen, als dass sie sämtliche Informationen über den Anwendungszustand beinhaltet, die vom Server für die Verarbeitung der Anfrage benötigt. Zustandslosigkeit in der hier beschriebenen Form begünstigt die Skalierbarkeit eines Webservices. Beispielsweise können eingehende Anfragen im Zuge der Lastverteilung unkompliziert auf beliebige Maschinen verteilt werden, da jede Anfrage in sich geschlossen ist und Anwendungsinformationen somit ausschließlich auf der Seite des Clients vorgehalten werden. Aus diesem Grund ist auf der Seite des Servers keine Sitzungsverwaltung erforderlich. In der Praxis nutzen deswegen viele https-basierte Anwendungen Cookies und andere Techniken, um Zustandsinformationen auf der Client-Seite zu behalten. Weiterhin begünstigt wird die Ausfallsicherheit, weil die Zustandslosigkeit fordert, dass transaktionale Datenübertragung in einem einzigen Seitenaufruf erfolgt. Die Zustandslosigkeit bringt dabei aber den Nachteil mit, dass sich die Netzwerkperformance verschlechtert. Da bei jeder Abfrage alle Informationen zum Interpretieren mitgeschickt werden müssen, sind aufwendigere Abfragen nötig, als wenn sich der Server die Interaktionen merken würde.)<br></li>



<li>Caching (https-Caching soll genutzt werden, wobei aber gilt: Eine Anfrage, die nicht gestellt werden muss, ist die schnellste Anfrage. Fielding führt dabei den Nachteil auf, dass der Client auf veraltete Cache-Daten zurückgreifen könnte, statt die neue Ressource abzufragen. Wir kennen dies beispielsweise, wenn wir an einer Website unsere Änderungen vorgenommen haben aber die aktualisierten Informationen nach der Synchronisierung mit dem Server nicht richtig angezeigt werden bzw. lediglich die alten Informationen)<br></li>



<li>Einheitliche Schnittstelle (Dies ist das Hauptunterscheidungsmerkmal aller weiteren Architekturstile. Dabei besteht diese aus vier weiteren Eigenschaften.)</li>
</ul>



<ol class="wp-block-list" type="1">
<li>Die Adressierbarkeit von Ressourcen, bei der jede Information, die über einen URI kenntlich gemacht wird, als Ressource gekennzeichnet wird. Jeder REST-konforme Dienst eine eindeutige Adresse hat und dem Uniform Resource Locator (URL). Diese „Straße und Hausnummer im Netz“ standardisiert den Zugriffsweg zum Angebot eines Webservices für eine Vielzahl von Anwendungen (Clients). Eine konsistente Adressierbarkeit erleichtert es außerdem, einen Webservice als Teil eines Mashups weiterzuverwenden.<br></li>



<li>Repräsentationen zur Veränderung von Ressourcen, wodurch die unter einer Adresse zugänglichen Dienste unterschiedliche Darstellungsformen (Repräsentationen) haben können. Ein REST-konformer Server kann je nachdem, was die Anwendung anfordert, verschiedene Repräsentationen einer Ressource ausliefern, z. B. in verschiedenen Sprachen oder Formaten (HTML, JSON oder XML) oder auch die Beschreibung oder Dokumentation des Dienstes. Die Veränderung einer Ressource (also deren aktuellen Status) soll nur über eine Repräsentation erfolgen.<br></li>



<li>Selbstbeschreibende Nachrichten, REST-Nachrichten sollen selbstbeschreibend sein. Dazu zählt u. a. die Verwendung von Standardmethoden. Über diese Standardmethoden lassen sich Ressourcen manipulieren.<br></li>



<li>„Hypermedia as the Engine of Application State“ (HATEOAS)&nbsp;laut Fielding die wichtigste Eigenschaft</li>
</ol>



<p>Ziel ist die Einheitlichkeit der Schnittstelle und somit ihre einfache Nutzung.&nbsp;</p>



<ul class="wp-block-list">
<li>Mehrschichtige Systeme, bei dem die Systeme mehrschichtig aufgebaut sein sollen. Dadurch reicht es, dem Anwender lediglich eine Schnittstelle anzubieten. Dahinterliegende Ebenen können verborgen bleiben und somit die Architektur insgesamt vereinfachen. Vorteile dabei sind die bessere Skalierbarkeit der Server, sowie eine mögliche Abkapselung durch Firewalls. Durch Cache-Speicher an den Grenzen (z.B. vom Server zum Web) steigert man die Effizienz der Anfragen (Siehe Caching).<br></li>



<li>Code on Demand, wobei diese Forderung von Fielding optional ist. Unter Code on Demand versteht man die Übertragung an den Client Code erst im Bedarfsfall. Folglich zur lokalen Ausführung.&nbsp;Ein Beispiel hierfür wäre die Übertragung von JavaScript-Code bei einer HTML-Repräsentation.</li>
</ul>



<p>Folglich kommt für die Umsetzung des REST-Paradigmas ein zustandsloses Client-Server-Protokoll zum Einsatz. Als Anwendungsschicht-Protokolle werden hauptsächlich https und https eingesetzt. Dies liegt unter anderem daran, dass sich diese im WWW etabliert haben, über einen vergleichsweisen einfachen Aufbau verfügen und mit so gut wie jeder Firewall kompatibel sind. REST vereinheitlicht die Schnittstelle zwischen Systemen auf eine überschaubare und bezüglich des zu erwartenden Verhaltens standardisierte Menge von Aktionen. Welche Aktionen dies sind, ist in REST nicht festgelegt aber alle Aktionen sind allgemein definiert. In der Regel durch die verwendeten Protokolle der Anwendungsschicht.</p>



<p>Während REST als Abstraktion des WWW keine spezielle Implementierung und kein spezielles Protokoll fordert, ist doch zu beobachten, dass fast ausschließlich https zum Einsatz kommt. Dadurch werden auch die Menge der Aktionen festgelegt.</p>



<p>Wird über https zugegriffen, so gibt die verwendete https-Methode, darunter GET, POST, PUT und DELETE, an, welche Operation des Dienstes gewünscht ist. https schreibt vor, dass GET „safe“ (sicher) sein muss, was bedeutet, dass diese Methode nur Informationen beschafft und keine sonstigen Effekte verursacht. Die Methoden GET, HEAD, PUT und DELETE müssen laut https-Spezifikation idempotent (dasselbe) sein, was in diesem Zusammenhang bedeutet, dass das mehrfache Absenden der gleichen Anforderung sich nicht anders auswirkt als ein einzelner Aufruf. Abhängig von der Implementierung können noch weitere https-Befehle unterstützt werden. Dazu gehören COPY, MOVE, MKCOL, LOCK und UNLOCK des WebDAV-Protokolls, sowie LINK und UNLINK aus RFC 2068. Bei der Kommunikation über UDP kann zudem das CoAP aus RFC 7252 statt https eingesetzt werden, welches leicht abweichende Bedeutungen für GET, POST, PUT und DELETE besitzt.</p>



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



<p>Die meisten Unternehmen verwenden den REST-Architekturstil für die Entwicklung / Implementierung von Webdiensten, da es sich um eine einfache und benutzerfreundliche Oberfläche handelt, die weniger Schulung für die vorhandenen / neuen Mitglieder des Projekts erfordert. Unternehmen erwägen REST zusammen mit ihren vorhandenen Webdiensten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/">REST &#8211; Schönheit der einfachen Architektur</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/23/erklaerung-rest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1033</post-id>	</item>
		<item>
		<title>Frameworks &#8211; Effiziente Entwicklung und eine höhere Qualität durch Rahmenwerke</title>
		<link>https://ceosbay.com/2022/11/14/erklaerung-frameworks/</link>
					<comments>https://ceosbay.com/2022/11/14/erklaerung-frameworks/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 14 Nov 2022 10:31:37 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Baukasten]]></category>
		<category><![CDATA[Bausteine]]></category>
		<category><![CDATA[Bibliotheken]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content]]></category>
		<category><![CDATA[Coordination]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[Effizienz]]></category>
		<category><![CDATA[Entwickeln]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Herangehensweise]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Laufzeitumgebung]]></category>
		<category><![CDATA[Rahmenwerk]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=505</guid>

					<description><![CDATA[<p>Frameworks &#8211; Wie der Name schon sagt, handelt es sich dabei um Rahmenwerke oder ein Grundgerüst, die dem Programmierer die Bestimmung der&#160;grundlegenden&#160;Architektur der Software ermöglichen. Frameworks kommen in der Regel bei der objektorientierten Programmierung zum &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks &#8211; Effiziente Entwicklung und eine höhere Qualität durch Rahmenwerke</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Frameworks &#8211; Wie der Name schon sagt, handelt es sich dabei um Rahmenwerke oder ein Grundgerüst, die dem Programmierer die Bestimmung der&nbsp;grundlegenden&nbsp;Architektur der Software ermöglichen. Frameworks kommen in der Regel bei der objektorientierten Programmierung zum Einsatz. Sie umfassen eine Laufzeitumgebung, Bibliotheken und eine Reihe weiterer Komponenten, um die optimale Grundstruktur zur Verfügung zu stellen. Die Basisbausteine sind in konkrete und abstrakte Klassen unterteilt. Diese stehen einem Programmierer direkt zur Verfügung, was zu einer enormen Zeiteinsparung führt. Vor allem, da die Elemente nicht jedes Mal neu programmiert werden müssen.</p>



<h3 class="wp-block-heading">Ab wann werden Frameworks relevant?</h3>



<p>In der Regel definiert man als Programmierer oder als Team, zu Beginn eines Projekts, auf Basis der Anforderungen und der wirtschaftlichen Aspekte, die Herangehensweise. </p>



<p>Man hat immer die Auswahl, alles von Grund auf selber bzw. nativ zu programmieren, was zwar eine extrem individuelle Lösung darstellt und alles bis auf das kleinste Detail erstellt bzw. programmiert werden kann, ein CMS (Content Management System = Eine Software zur gemeinschaftlichen Erstellung, Bearbeitung, Organisation und Darstellung digitaler Inhalte zumeist zur Verwendung in Webseiten aber auch in anderen Medienformen) zu nutzen &#8211; Wobei ich Zweites in einem separaten Beitrag ausführlich thematisieren möchte (Übrigens basiert diese Webseite auch auf einem CMS. In diesem Fall handelt es sich um eine WordPress-Instanz). Und dann gibt es natürlich Frameworks. Wobei die Anforderungen an die Professionalität des Entwicklers bei dieser Herangehensweise relativ hoch angesiedelt sind. Allerdings muss man sagen, dass das hohe Maß an Flexibilität und die Verfügbarkeit ausgefeilter Struktur-Merkmale nicht unwesentlich sind.</p>



<h3 class="wp-block-heading">Welche Frameworks gibt es?</h3>



<p>Application Frameworks: Als Grundgerüst für die Programmierung von Anwendungen mit spezifischen Strukturen und Funktionen.</p>



<p>Web-Frameworks: Für die Entwicklung und Programmierung dynamischer Web-Sites und Web-Anwendungen.</p>



<p>Komponenten-Frameworks: Als Umgebungsrahmen für die Programmierung und Einbindung von Programm-Paketen.</p>



<p>Domain Frameworks: Als Rahmen für vordefinierte Problembereiche.</p>



<p>Coordination Frameworks: Zur Einrichtung von Geräte-Interaktionen bzw. für die Abfolge zu steuernder Einzelschritte.</p>



<p>Class Frameworks: Zur Zusammenfassung von „Klassen“ und „Methoden“, im Sinne einer optimalen Unterstützung des Programmierers bei der Implementierung seiner spezifischen Anwendungen.</p>



<p>Test Frameworks: Für das Testen von Programmen. Klassische Beispiele hierfür sind „<a href="https://www.selenium.dev" target="_blank" rel="noreferrer noopener">Selenium</a>“ für den Test von Webanwendungen und „JUnit“ für den Test von Modulen. <a href="https://ceosbay.com/2022/11/25/selenium/">Selenium</a> habe ich in diesem <a href="https://ceosbay.com/2022/11/25/selenium/">Beitrag</a> thematisiert.</p>



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



<p>Eines der Vorteile ist, wie bereits erwähnt, dass Wiederkehrende Aufgaben schneller abgewickelt werden können, da im Framework bereits eine Reihe an Elementen vorprogrammiert sind. Diese können beliebig oft verwendet werden.&nbsp;Darüberhinaus beinhalteten Frameworks Basis-Bausteine, die auf die Design-Struktur eines Programms Einfluss nehmen. Sie bieten sich in der Regel bei speziellen Anforderungen  und individuellen Lösungen an, so kann das vom Framework zur Verfügung gestellte Programmier-Gerüst eine gute Wahl darstellen. Nichtsdestotrotz sollte man meines Erachtens nach bei &#8222;kleineren&#8220; Projekten die Nutzung von Content Management Systemen in Erwägung ziehen. Schlussendlich, hängt die Wahl der jeweiligen Herangehensweise und die Effizienz, in der das Projekt realisiert wird, häufig von der Qualifikation und dem Skillset eines jeden Programmierers ab.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks &#8211; Effiziente Entwicklung und eine höhere Qualität durch Rahmenwerke</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/14/erklaerung-frameworks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">505</post-id>	</item>
	</channel>
</rss>
