Lernfeld 8 Flashcards
Vorteile und Nachteile von Agile Vorgehensmodelle
Vorteile: schnelle, flexible Projekte; besser den Bedürfnisse der Kunden entsprechen
Nachteile: zeitaufwendig für Meetings; wird sehr viel getestet, was zu höhe Kosten führen; Projektkosten sind schwer zu kalkulieren
Vorteile und Nachteile von Kanban Vorgehensmodelle
Vorteile
* Gibt schnell und zuverlässig eine Übersicht über den Projektfortschritt und akute Probleme
* Einzelne Arbeitsschritte werden schneller bearbeitet * Reduziert den Managementaufwand
* Lässt sich auch sehr gut außerhalb der Softwareentwicklung für andere Bereiche, wie Wartung oder Systemadministration einsetzen
* Kann sehr gut mit anderen Managementmethoden kombiniert werden
* Lässt sich sehr schnell und problemlos einführen
* Erhöht die Motivation der Mitarbeiter
Nachteile
* Softwareentwickler müssen über breite fachliche Fähigkeiten verfügen, für den Fall, dass ein Teammitglied ausfällt oder überlastet ist
* Zu lösendes Problem muss sich in einzelne voneinander abgrenzbare Einzelaufgaben einteilen lassen
* Gutes Zeitmanagement lässt sich schlechter realisieren als in anderen Vorgehensmodellen
* Für größere Projekt eher ungeeignet
Vor- und Nachteile von Extreme Programming
- Problemorientierte Entwicklung * Komplexe Softwareprojekte werden beherrschbar * Kürzere Entwicklungszeiten * Einsparung von Zeit und Kosten * Aktive Einbindung des Kunden * Relativ einfache Einzelschritte * Zeitnahe Integration von Kundenwünschen * Ermöglicht eine hohe Qualität der Software * Gewährleistet eine gute Wart- und Erweiterbarkeit der Software
- Für sehr kleine Softwareprojekte eher ungeeignet * Sehr hohe Anforderungen an die Fachlichkeit und die Qualität der Entwickler * Kunden haben meist nicht ausreichend Zeit, um sich in der geforderten Form einzubringen * Programmierer werden dazu verleitet, Aufgaben sehr schnell fertigzustellen, was teilweise in dem Auslassen des Testens endet * Kunden müssen Vertrauen in die Kompetenz und Kontinuität der Entwickler haben
Wann SOAP und wann REST angewendet werden sollte
SOAP-Webservices bieten integrierte Sicherheit und Transaktions-Compliance, was vielen Unternehmensanforderungen entspricht, sind aber aufwendiger zu erstellen. SOAP ist in den Augen vieler Entwickler komplex und schwer zu handhaben. REST-API sind ideal für moderne Anwendungen geeignet, z.B. IoT oder mobile Anwendungen. REST kann allein mit den vier HTTP- „Operationen“ GET, POST, PUT und DELETE fast alle Aufgaben ausführen und muss zum Bereitstellen der Antwort kein XML verwenden. Damit ist REST zukunftsorientierter und viele öffentliche Schnittstelle verfolgen diesen Ansatz. Da SOAP aber älter ist als REST, nutzen heutzutage noch viele Altsysteme SOAP.
Data Warehouse vs Data Lake
ein Data Warehouse (Datenlager) eine zentrale Datenbank ist, bei der Daten aus mehreren, Datenquellen zusammenführt werden. Diese werden dann so aufbereitet, verarbeitet und gespeichert, dass eine komfortable Datenanalyse erfolgen kann. Dazu werden diese i. d. R. in ein strukturiertes und striktes Datenmodell eingeordnet. Ein Data Warehouse ist besonders auf die Analyse großer Datenmengen optimiert.
Während in einem Data Warehouse überwiegend strukturierte Daten verarbeitet und ausgewertet werden, fallen im Big-Data- Umfeld eine Vielzahl an unstrukturierten Daten an.
Data Lake bietet eine hohe Speicherkapazität, um große Datenmengen zu speichern, ist sehr flexibel und kann Daten aus sehr vielfältigen Quellen verarbeiten und auswerten. Dafür wurden moderne und fortgeschrittene Analyseverfahren entwickelt.
Überladen von Methoden (objektorientierte Programmierung)
bedeutet, dass es mehrere Methoden mit demselben Methodennamen in einer Klasse geben darf. Die Methoden müssen aber trotzdem zu unterscheiden sein. Dies kann auf zwei Arten geschehen: 1. Der Datentyp mindestens eines Übergabeparameters ist anders als in den übrigen gleichnamigen Methoden. 2. Die Anzahl der Übergabeparameter ist unterschiedlich.
Überschreiben von Methoden (objektorientierte Programmierung)
Das Überschreiben von Methoden bedeutet, dass eine Methode einer Basisklasse in der abgeleiteten Klasse neu implementiert (überschrieben) wird.
Sechs Sicherheitsprinzip bei der Softwareentwicklung
Minimalprinzip: Die Benutzer der Software sollten nur die Berechtigungen bekommen, welche sie für die Erledigung ihrer Aufgaben wirklich benötigen
Separierung von Berechtigungen: Bestimmte Benutzer bekommen nur den Zugriff auf bestimmte Funktionen in der Software
Vollständige Zugriffsüberwachung: Jeder Zugriff auf die Software sollte überprüft werden, um unberechtigten Zugriff zu verhindern.
Mehrere Sicherheitsebenen : Hierbei wird die Software in mehrere Sicherheitsebenen aufgeteilt. Dadurch wird die Gefahr von Single Point of Failure (SPoF) hinsichtlich der Sicherheit verringert.
Sicherer Ausfall: Wenn eine Software ausfällt, sollte sie trotzdem einen sicheren Zustand in den Bereichen der Vertraulichkeit und Integrität aufweisen.
Benutzerfreundliche Sicherheit: Die Sicherheitsmechanismen sollten immer benutzerfreundlich gestaltet sein, um das Benutzererlebnis nicht zu beeinträchtigen. Im anderen Fall ist die Gefahr groß, dass die Benutzer die Sicherheitsmaßnahmen einfach deaktivieren
SQL-Injections
SQL-Injections entstehen, wenn Benutzereingaben zur Erstellung von SQL-Anweisungen ohne ausreichende Überprüfung verwendet werden. Durch Manipulation der Eingabesyntax führt ein Angreifer unerwünschte Befehle aus und erhält dadurch beispielsweise unbefugten Zugriff auf Daten.
Relationale Datenbank vs No-SQL Datenbank
Relational Datenbank:
Datentyp und -struktur sind festgelegt. Um neue Attribute hinzuzufügen, muss teilweise die gesamte Datenbank angepasst werden.
Vertikale Skalierung ; ein einzelner Server muss die Leistung des kompletten Datenbanksystems tragen
Bei SQL-Datenbanken werden alle ACID- Regeln wie Atomicity, Consistency, Isolation, Durability umgesetzt.
MySQL, PostgreSQL, Oracle, MS-SQL
No-SQL:
Flexibel ; strukturierte, semistrukturierte und unstrukturierte Daten können zusammen abgespeichert werden, eine vorherige Konvertierung ist nicht notwendig.
Horizontale Skalierung ; durch Hinzufügen von neuen Datenbankservern kann das Datenbanksystem fast beliebig skaliert werden.
Die ACID-Regeln werden meistens nicht unterstützt. Stattdessen wird das BASE- Modell verwendet
MongoDB, Apache HBase, Amazon D ynamoDB,
Vorteile und Nachteile von No-SQL Datenbank
hochleistungsfähigen, skalierbaren Datenmodellen, die große Datenmengen mit hoher Geschwindigkeit verarbeiten können. Dabei sind diese Datenmodelle sehr flexibel, und dank der Speicherung der Daten auf verteilten Hardware- Clustern sind diese Datenbanklösungen weniger anfällig für Störungen und deutlich preiswerter.
Da die NoSQL-Datenbanken anstatt dem ACID-Modell (Atomicity, Consistency, Isolation und Durability) dem BASE-Modell (Basic Availability, Soft State, Eventual Consistency) folgen, sind eine unmittelbare Konsistenz und Zuverlässigkeit der Daten nicht gegeben. Außerdem fehlen Mechanismen zur Überprüfung der Datenintegrität.
NoSQL-Datenbanken sind auf bestimmte Anwendungsgebiete spezialisiert. Hier funktionieren sie sehr gut. Für andere Anwendungsgebiete bieten sie allerdings eine schlechte Performance.
Nachteile einer zu starken Normalisierung
die Leistung (z.B. das Antwortverhalten) der Datenbank negativ beeinflussen
Aufgrund der vielen künstlichen Schlüssel und der erforderlichen zusätzlichen Verknüpfungen wird das System komplexer, was zu größerer Fehleranfälligkeit führen kann.
Zusätzliche Schlüssel erfordern zusätzlichen Speicherplatz, stellen also auch eine Art von Redundanz dar.
Inhalte, welche im Abnahmeprotokoll enthalten sein sollten
- Ort, Datum, Uhrzeit der Abnahme
- Teilnehmer und ihre Funktion im Projekt und bei der Prüfung
- Art der Prüfungen
- Ergebnisse der Prüfungen
- Nicht geprüfte Abnahmekriterien
- Beurteilung, ob der Vertrag erfüllt ist