Dozent gesucht für Auftrag - Programmierung - Sichere Softwareentwicklung

Wir suchen Dozenten für diesen und andere Aufträge. Für Auftrag bewerben.

Thema:
1. Programmierung - Sichere Softwareentwicklung

Auftrag Info:
Kurs für Azubis zu Fachinformatiker.in in Köln oder online pandemiebedingt

Thematischer Schwerpunkt der AE 1-Schulung ist die „Softwareentwicklung im Kleinen“. Dazu
gehören Basistechniken der objektorientierten Softwareentwicklung wie einfache Prinzipien in
Modellierung, Design, Programmierung und Test. Die Programmierung erfolgt in Java mit einer
einfachen Entwicklungsumgebung. Der Schwerpunkt liegt auf der Client-Programmierung in einer
einfachen „klassischen“ Client-Server-Architektur (ohne Web, ohne Datenbank). In dieser
Architektur wird auch die Projektaufgabe (ggf. ein didaktisches Projekt) realisiert.
Parallel zu den inhaltlichen Themen geht es um ein grundlegendes Verständnis des Entwicklungsund
Projektprozesses unter Nutzung einiger weniger grundlegender Prinzipien (z.B. geringe
Kopplung von Software“modulen“, Testbarkeit etc.). Insbesondere spielt das Testen als integrierter
Bestandteil des Programmierens eine wichtige Rolle. Dabei entwickeln die Auszubildenden ein
grundlegendes Verständnis von professioneller Arbeitshaltung und nutzen einen elementaren Satz
einfacher und wirkungsvoller Werkzeuge. Komplexere Werkzeuge werden auf ihre wesentlichen
Grundideen zurückgeführt und im Projekt angewendet. Damit werden die Auszubildenden in die
Lage versetzt, sich wesentlich komplexere Werkzeuge selbst zu erschließen (Beispiel: Source
Code Verwaltung mit cvs).
Zur Entwicklung einer professionellen Arbeitstechnik gehört auch, den „Computer“ als
Automatisierungswerkzeug zu verstehen und wiederkehrende Prozesse möglichst weitgehend zu
automatisieren. Hierfür reichen oft schon so einfache Mittel, wie z.B. „Batch-Dateien“, aus.
Im Sinne einer „inkrementellen und iterativen“ Entwicklung erfahren die Auszubildenden,
insbesondere durch Realisierung ihrer Projektaufgabe, dass große funktionierende Systeme immer
aus kleinen funktionierenden (und getesteten) Systemen entstehen.
Die Projektplanung, -organisation und –durchführung erfolgt in diesem Schulungsprojekt
(zumindest am Anfang) unter starker Anleitung durch die/den Dozierenden. Die Auszubildenden
arbeiten kontinuierlich daran, ihr Vorgehen sowie ihre Ergebnisse zu reflektieren und beides zu
verbessern.
Im Projektverlauf spielt Teamarbeit mit gemeinsamem Arbeiten und Lernen eine wichtige Rolle. Die
Auszubildenden lernen, auf ihr Kommunikationsverhalten gegenüber Dritten zu achten und ihre
Ergebnisse für andere Menschen verständlich zu kommunizieren. Dies betrifft insbesondere auch
die Dokumentation von Vorgehen und Ergebnissen im Projekt.
1.2 Inhalte
Die aufgeführten Inhalte sollen bei der Durchführung des Projektes integriert vermittelt und in
kleineren und einer größeren Projektaufgabe praktisch angewendet werden!
1. Projektmanagement
 Projektorganisation
 Rollen und Aufgaben im Projekt
 Projektphasen
 Meilensteinkonzept
 Projektdokumentation
 Projektplanung
 Ganttchart
 Netzplan
2. Vorgehensmodell für die
Softwareentwicklung
 Wasserfallmodell
 V-Modell
 agile Entwicklungsmethoden und –prozesse
(z.B. Kanban, Scrum)
 Prototyping
 Evolutionäre Entwicklung
3. Grundkonzepte der objektorientierten
Softwareentwicklung
 Objektorientierter Entwicklungsprozess
 Anforderungsanalyse
 OOA
 OOD
 OOP
 Wartung
 Inkrementelles/iteratives Vorgehen
 Grundlagen UML
 Use Cases
 Klassendiagramme
 Sequenzdiagramme
 Grundlagen Objektorientierte
Programmierung
 Klassen
 Objekte
 Methoden und Attribute
 Kapselung, Schnittstelle und
Implementierung
 Nachrichten
 Vererbung und Polymorphismus
4. Anwendung der Konzepte zu OOP auf
Java
 Klasse, Methode, Objekt, Instanz
 Deklaration, Namenskonventionen
 einfache Datentypen, Arrays
 Kontrollstrukturen
 Vererbung
 Polymorphismus
 abstrakte Klassen, abstrakte Methoden
 Interfaces
 Delegation, Komposition
 ADT, Collections
 Stack, Hashtable, Queue
 Streams
 Elemente von graphischen Oberflächen
Anwendung der Entwicklungsumgebung von
Eclipse
 integriertes Testen (debugging)
5. Architektur und Software-Design “im
Kleinen“
 Klassen-Design
(insbes. Design der Schnittstelle)
 einfache Entwurfsmuster/Design Patterns
(z.B. Singleton, Abstrakte Fabrik, Wrapper,
Composite …)
 Design von Schnittstellen zu „externen“
Systemen
 Design von Benutzerschnittstelle
(sehr einfach)
 einfache Schichtenarchitektur mit Trennung
zwischen Benutzeroberfläche, Fachlicher
Verarbeitung und Datenhaltung
6. Datenbanken (optional)  grobe Einführung in ERM und SQL
(Vertiefung und Anwendung ist im AE2-
Projekt vorgesehen)
7. Strukturierte Entwicklungsmethoden  Lastenheft, Pflichtenheft
 User Stories (Scrum)
 Grundlagen der strukturierten
Programmierung
 Sequenz
 Bedingung
 Schleifen
 grafische Notation
 Gemeinsamkeiten und Unterschiede zur
objektorientierten Softwareentwicklung
herausarbeiten, z.B. an einer Sortieraufgabe,
die mit Bubblesort gelöst werden soll
8. Softwareentwicklung im Team  Funktionsweise und Prinzipien von
Werkzeugen zur Unterstützung des
gemeinsamen Entwicklungsprozesses
(z.B. Git, NANT, SVN Datenablage, ...)
 Entwicklung und Nutzung eigener einfacher
Werkzeuge (z. B. Batchskripte, …)
 Konventionen
 Dokumentation
(von Prozess und Ergebnissen)
 Qualitätssicherung
9. Projekt  Objektorientierte Anwendungsentwicklung
 Anforderungsanalyse
Modellierung
 Codierung
 Test
 Planung
 Dokumentation
 Präsentation
1.3 Nutzung von Werkzeugen/Tools
Die zu Grunde liegenden Inhalte und die didaktische Struktur der vorliegenden Schulung zeigen,
dass hier ein Grundverständnis für die in der Praxis und im BVA gelebten Softwareentwicklungsprozesse
erworben werden soll. Dabei ist die Erlernung der Programmiersprache JAVA ebenso Ziel
der Schulung.
In den letzten Jahren hat sich gezeigt, dass der Softwareerstellungsprozess durch vielfältige
Werkzeuge und Tools unterstützt wird. Deshalb wird es sich nicht vermeiden lassen, auch in dieser
Schulung schon bestimmte Werkzeuge und Tools zu nutzen. Dabei ist aber unbedingt zu beachten,
dass die Projektaufgabe nicht durch die Nutzung von Werkzeugen/Tools überfrachtet wird und die
eigentlichen Ziele der Schulung in den Hintergrund treten. Ein geplanter Einsatz von
Werkzeugen/Tools ist stets vor Schulungsbeginn mit dem BVA abzustimmen.
Für die Durchführung der Projektaufgabe sind die folgenden Werkzeuge/Tools in der aktuell im
BVA eingesetzten Version zu nutzen und die BVA internen Standards zu beachten, sofern diese
vorhanden sind:
Werkzeug/Tool Beispiele/Standards Bemerkungen
Programmiersprache JAVA
Programmierumgebung Eclipse
Versionsverwaltung Git; SVN
Buildsystem Maven
Neben den oben genannten grundsätzlich zu verwendenden Werkzeugen/Tools können weitere
eingesetzt werden, insofern diese zur Bewältigung der Projektaufgabe sinnvoll und notwendig sind.
Dabei sind ebenfalls die BVA Standards zu beachten.
Werkzeug/Tool Beispiele/Standards Bemerkungen
Paketverwaltungssystem
Dateimanager OpenSSH, Samba
Dokumentenmanagementsytem
Web-Content-Management-
System
Datenübertragung Rsync
Data Warehouse / Business
Intelligence
Clientseitige Dateikompression 7-Zip, TAR
ERP Systeme Mach M1 Anlagenbuchhaltung,
Erfassung der
Produktarbeitszeit
Framework Spring Boot
Template Engine Thymeleaf
Virtueller Arbeitsbereich BSCW, Sharepoint
Wiki Confluence, MediaWiki
Webserver Apache
Grobe Lernziele dieses Ausbildungsabschnitts
 Vermittlung und Vertiefung von „Kernqualifikationen“ des Ausbildungsrahmenplans im Bereich
Anwendungsentwicklung
(auch als Vorbereitung auf die Zwischenprüfung)
 Verständnis und Anwendung von soliden Grundlagen, wichtigen Prinzipien und
Qualitätskriterien der Anwendungsentwicklung für die „Programmierung im Kleinen“ mit
Schwerpunkt auf objektorientierter Entwicklung in Java
(z.B. Bedeutung von Kohäsion, Kopplung etc.)
 einfache und allgemeingültige (Entwicklungs-)Werkzeuge wirkungsvoll einsetzen können
(z.B. Kommandozeile, Editor, Source-Code-Kontrolle etc.)
 Grundlagen zur Nutzung des Computers als Automatisierungswerkzeug schaffen
(z.B. Automatisierung wiederkehrender Aktivitäten über Batch-Dateien, Skripten o.ä.)
 methodische Herangehensweise an überschaubare Entwicklungsaufgaben unter Nutzung
geeigneter Modellierungstechniken lernen
(insbes. UML)
 Zusammenhänge unterschiedlicher Entwicklungsaktivitäten und –ergebnisse in einem
einfachen und vollständigen Softwareentwicklungsprozess als Ganzes erfahren
(iterativ, inkrementell, objektorientiert)
 Bedeutung und Durchführung von (einfachen) Testverfahren verstehen und anwenden
(Unit- und Systemtest eher technisch orientiert)
 Grundlagen für effektive Arbeitsorganisation im Team und als Einzelner lernen
(insbes. Entwicklung und Nutzung von kommunikativen Fähigkeiten)
 grundlegende Arbeitstechniken für Softwareentwicklung im Projekt und im Team erarbeiten
bzw. vertiefen
(z.B. Planung, Arbeitsteilung, Abstimmungsprozesse etc.)
 Einübung des Zyklus aus Planung, strukturiertem Vorgehen und Reflexion bei der Lösung von
komplexeren Aufgabenstellungen als Voraussetzung zur Entwicklung beruflicher Kompetenz.
Nutzung von Tagesplanung und –auswertung zum bewussten Erleben von Lern- und
Arbeitsfortschritt
 Problemlösungsfähigkeiten entwickeln
(Wie gehe ich an ein Problem heran? Was ist der betriebliche Zusammenhang dieses
Projekts? Welche Ziele und Anforderungen verfolge ich?)
 Bewusstsein für angemessene und zweckmäßige Dokumentation in einem Projekt schaffen
(insbesondere hinsichtlich Nachvollziehbarkeit, Projektverfolgung, Transparenz über eigene
Arbeit, Transparenz gegenüber anderen, die von meiner Arbeit betroffen sind)
 praktische Anwendung und Vertiefung der Grundlagen in einem konkreten (ggf. “didaktischen“)
Projekt
(Entwicklung einer „Verwaltungssoftware“ als Client-seitige Anwendung. Die Speicherung
erfolgt über das Filesystem.)
 Zusammenhang zwischen Anwendungsentwicklung und Systemintegration verstehen (als
Grundidee)
 Verstehen von englischen Dokumentationsunterlagen
 praktische Vertiefung der in den vorangegangenen Kurzschulungen vermittelten Inhalte
(insbes. Moderation)
Die AE 1-Schulung wird nach dem ersten Praxiseinsatz durchgeführt. Die Gesamtdauer liegt in
einem Zeitraum zwischen sechs und sieben Wochen.
Die Schulung wird durch eine:n Dozierende angeleitet, die/der die inhaltlichen Grundlagen vermittelt
sowie deren praktische Anwendung begleitet. Im Verlauf der gesamten Schulung wird eine
umfangreichere Projektaufgabe bearbeitet. Diese ist ausreichend komplex, dass sie sinnvoll nur im
Team bearbeitet werden kann. Der zeitliche Umfang der Projektaufgabe liegt bislang bei ca. drei
Wochen.
Durch die Bearbeitung der Projektaufgabe wird der gesamte Softwareentwicklungsprozess
erfahrbar. Die/Der Dozierende spielt dabei die Rolle der Auftraggeberin/des Auftraggebers (bzw.
der späteren Anwender) und hat im Projekt ansonsten hauptsächlich beobachtende Funktion.
Idealerweise übernimmt ein:e BVA-Mitarbeitende:r die Rolle der/des
„Auftraggeberin/Auftraggebers“. Die Auszubildenden müssen sich die benötigten Informationen –
insbesondere fachliche Anforderungen - aktiv beschaffen. Die Auszubildenden gestalten den
Entwicklungsprozess weitgehend selbst. Die/Der Dozierende greift in den Prozess nur ein, wenn
absehbar ist, dass der eingeschlagene Weg mit hoher Wahrscheinlichkeit nicht zu sinnvollen
Projektergebnissen führt. Weiter gibt sie/er dann Hilfestellung, wenn sie/er darum gebeten wird,
und die benötigten Informationen auf einem anderen Weg nicht mit einem vertretbaren Aufwand zu
beschaffen sind.
Die Projektaufgabe kann auf unterschiedliche Arten technisch gelöst werden. Allerdings ist die im
Ausbildungsprojekt vermittelte Programmiersprache (Java) hier vorgegebene Rahmenbedingung.
Die Erarbeitung von weiteren Lösungsvorschlägen und deren Abstimmung mit dem/der
„Auftraggeber:in“ ist Bestandteil des Projekts.
Idealerweise wird eine kleine und überschaubare reale Projektaufgabe gestellt, die als
Softwareprototyp erstellt wird oder ggf. später in den Wirkbetrieb übernommen wird. Findet sich
keine geeignete Projektaufgabe, kann auf eine didaktische Projektaufgabe ausgewichen werden.
Aus didaktischen Gründen liegt der Schwerpunkt dieses Ausbildungsabschnitts auf dem
grundlegenden Verständnis und der praktischen Anwendung solider Prinzipien der
Softwareentwicklung und einem einfachen Entwicklungsprozess. Der Schwerpunkt liegt auf der
Client-Programmierung; die Datenhaltung auf einem Server wird unter Nutzung des Filesystems
realisiert (Datenbanknutzung im AE 2-Projekt).
Die Auszubildenden nutzen im Projekt vorwiegend einfache Entwicklungswerkzeuge (z.B. einen
einfachen Editor, Compiler etc.) für die objektorientierte Sprache Java. Eine komplexe
Entwicklungsumgebung ist nicht notwendig bzw. eher kontraproduktiv. Erst wenn die Grundlagen
der einfachen Werkzeuge verstanden worden sind, macht die Nutzung einer komplexeren
Entwicklungsumgebung Sinn. Ein sehr hoher Lerneffekt entsteht, wenn die Auszubildenden selbst
einfache und wirkungsvolle Werkzeuge erarbeiten, die im weiteren Projektverlauf eingesetzt
werden (z.B. Source-Code-Kontrolle).
Der Schwerpunkt des AE1-Projekts liegt im Verständnis und der praktischen Anwendung eines
objektorientierten Entwicklungsprozesses. An geeigneten Stellen des Projektes wird allerdings
knapp der Bezug zu wesentlichen Methoden und Techniken des „strukturierten“ Ansatzes
behandelt.

Seminarart: Ausbildungsbegleitende Hilfen (abH)


geplanter Zeitraum: vom 02.01.2023 bis 24.02.2023

Termindetails: 23 Schulungstage im o.g. Zeitraum mit Unterbrechungen für Projektarbeit

Honorar: 400,00-800,00 € pro Tag


Schulungsort
50735 Köln, Deutschland


Auftrag 103718 vom 21.06.2022.
  

Für andere Aufträge bewerben.
Konditionen für Dozenten.
Sie suchen Dozenten?