Projektbegründung
Projektplanung
logischer Aufbau der zeitlichen Projektplanung
sinnvolles Verhältnis von Entwurf zu Implementierung
Dokumentation in Zeitplanung?
Implementierung
kursive Punkte sind optional bzw. nur bei Bedarf zu erstellen
die Reihenfolge der Punkte ist nicht fix, es können auch mehrere Punkte zusammengefasst werden
eine "sehr gute" Dokumentation…
erfüllt alle unten angegebenen Punkte perfekt
geht aber auch noch darüber hinaus, enthält also ein besonders umfangreiches Projekt mit viel Eigenleistung und außergewöhnlichem Inhalt
ist fehlerfrei hinsichtlich Rechtschreibung/Grammatik/Layout/Verzeichnissen/Verweisen/Literaturangaben etc.
Beispiele für Projektdokumentationen
Bewertungsbögen zur Dokumentation
Formblatt der entsprechenden IHK
Deckblatt mit Informationen zum Projekt
Titel des Projekts
Name, Kontaktdaten, Geburtsdatum, Ausbildungsberuf des Auszubildenden
Name, Kontaktdaten des Ausbildungsbetriebs
Verzeichnisse (Inhalt, Abbildungen, Tabellen, Abkürzungen, Quellen (!), Anhang, Listings)
Einleitung
Projektumfeld: Ausbildungsbetrieb, Auftraggeber/Kunde etc.
Projektziel: Was soll erreicht werden? Worum geht es eigentlich?
Projektbegründung: Warum ist das Projekt sinnvoll? Was ist die Motivation hinter dem Projekt?
Projektschnittstellen: Mit welchen anderen Systemen interagiert die Anwendung? Wer sind die Benutzer der Anwendung?
Projektabgrenzung: Was ist explizit nicht Teil des Projekts (insb. bei Teilprojekten)
Projektplanung
Projektphasen mit detaillierter Zeitplanung: Beschreibung/Begründung des gewählten Vorgehensmodells
Ressourcenplanung: Was wird an Ressourcen benötigt (z.B. Hardware, IDE, Betriebssystem)? Gibt es Einschränkungen?
Kostenplanung/-kalkulation: Was kostet das Projekt? Mögliche Kosten: Entwicklung, Einführung/Schulung, Wartung
Make-or-buy-Entscheidung
Amortisationsrechnung: Ab wann rentiert sich das Projekt? Mögliche Einsparungen: Lizenzen, Arbeitszeitersparnis, Usability, Korrektheit. Break-Even-Punkt grafisch verdeutlichen (Graphen mit Schnittpunkten)
nicht-monetärer Nutzen/Nutzwertanalyse: z.B. Vorher-/Nachher-Vergleich anhand eines Wirtschaftlichkeitskoeffizienten
Pflichtenheft erstellen
Beschreibung des Programms, Ziel der Entwicklung
Funktionen des Programms: Muss/Soll/Wunsch, Benutzerrollen
Umgebung: Zielplattform (Programmiersprache, DB, Client, Server, Software, Hardware), Benutzer/Zielgruppen
Datenstruktur: z.B. ERM, Tabellenmodell, textuelle Beschreibung der Entitäten/Attribute
Programmlogik: z.B. Flusspläne, UML-Diagramme
Benutzeroberfläche: Gestaltung, Menüführung
Qualitätsmerkmale: z.B. Anforderungen hinsichtlich Performance, Usability, Effizienz etc. (
ISO 9126)
Tests: Testszenarien, Benutzer-/Entwicklertests
Projektdurchführung: Was wurde genau während des Projekts durch den Auszubildenden gemacht? Wie ist er vorgegangen? Hat er z.B. bestimmte Vorgehensmodelle verwendet?
Ist-Analyse: Wie ist die bisherige Situation (z.B. bestehende Programme, Wünsche der Mitarbeiter)? Was gilt es zu erstellen/verbessern? Ggfs. Erstellen eines Lastenhefts.
Design/Entwurf
Funktionen des Programms: z.B. mit Use-Case-/Aktivitätsdiagramm, EPK
Datenbank (ERM, Tabellenmodell) bzw. wenn keine DB verwendet Darstellung der eingesetzten Datenstrukturen (z.B.
XML, CSV o.ä.)
Geschäftslogik: z.B. Komponenten-/Klassen-/Sequenz-/Datenflussdiagramm, Architekturplanung, EPK
Benutzerschnittstelle: z.B.
GUI, Webinterface, Entwurf/Gestaltung der Oberflächen/Masken, Corporate Identity, Einbindung in andere Anwendungen
Implementierung/Realisierung: z.B. DB anlegen, Programmierung (interessante Funktionen, Quelltextbeispiele), Screenshots der Oberfläche
Test/Qualitätssicherung: z.B. Test-Reports, Unit-Tests, Code-Reviews
Dokumentation: Projektdokumentation, Entwickler- (z.B. JavaDoc) und Benutzerdokumentation ("Handbuch")
Einführung: z.B. Installation, Benutzerschulung
Retrospektive: Wie ist das Projekt rückblickend zu bewerten?
Begründung von Änderungen zum Projektantrag
Soll-/Ist-Vergleich: Wurde das Ziel erreicht? Wurden die Kosten/Zeiten eingehalten?
Ausblick: Erweiterungsmöglichkeiten, Anschlussprojekte, Akzeptanz der Benutzer
Fazit
Erklärung des Auszubildenden
Anhänge
Lasten-/Pflichtenheft
Datenbankentwurf
UML-Diagramme, EPKs, Flusspläne, PAPs
Entwürfe/Screenshots der Oberflächen
Dokumentation (Entwickler/Benutzer)
Glossar
Quelltexte
Die folgenden Kriterien sind meine persönliche Auswahl. Lediglich die Oberpunkte sind eine Vorgabe der IHK.
Formale und sprachliche Gestaltung (15%)
Wurde der mögliche Umfang für den Inhalt (15 Seiten) eingehalten und ausgeschöpft?
Sind die Seitenzahlen/Kopf-/Fußzeilen sinnvoll formatiert (z.B. Seitenzahlen für Verzeichnisse römisch groß, für Inhalt arabisch, für Anhang römisch klein)?
Sind qualitative Quellenangaben vorhanden?
Sind wenige Rechtschreib-/Grammatik-/Zeichensetzungsfehler vorhanden?
Ist der Text im Blocksatz gesetzt und füllt alle Seiten aus (keine größeren Freiräume im Text, z.B. freie halbe Seiten unter einer Abbildung)?
Sind alle wichtigen inhaltlichen Elemente vorhanden (Einleitung, Fazit usw.)?
Haben alle Anhänge/Abbildungen/Tabellen/Quellenangabe einen entsprechenden Verweis/Erläuterung im Text? Sind alle Elemente, auf die verwiesen wird, tatsächlich vorhanden?
Beschreibung des Auftrags - Verständlichkeit, Nachvollziehbarkeit, Kundenbezug (20%)
Ist das Projektziel klar und deutlich erkennbar?
Wurden die Schnittstellen des Programms erläutert (Benutzer, andere Systeme)?
Wurde eine detaillierte Projektplanung für die 70h und die verwendeten Ressourcen durchgeführt?
Wurde eine Ist-/Schwachstellenanalyse durchgeführt?
Wurden die Anforderungen an die Software methodisch aufgenommen? Ist ein Fachkonzept/Lastenheft vorhanden und methodisch aufgebaut? Gibt es Use-Cases?
Wurde eine Wirtschaftlichkeitsanalyse mit Amortisationsrechnung durchgeführt? Ist die Kalkulation fachlich korrekt (Inhalte, Berechnung)?
Wurde der nicht-monetäre Nutzen mit einer Nutzwertanalyse verdeutlicht?
Konkretisierung des Auftrags - Technische und kaufmännische Nachvollziehbarkeit (50%)
Wurden die Anforderungen an die Software methodisch spezifiziert/verfeinert? Ist ein Fein-/Sollkonzept/Pflichtenheft vorhanden und methodisch aufgebaut? Gibt es Aktivitätsdiagramme?
Ist ein methodisches Vorgehen erkennbar? Welcher Entwicklungsprozess wurde eingesetzt?
Wurden komplexe Arbeitsabläufe mit sinnvollen Methoden erläutert (z.B. Flusspläne, EPKs, Aktivitätsdiagramm)?
Wurden alle getroffenen Entscheidungen sinnvoll begründet?
Ist die Auswahl der Programmiersprache/Datenbank plausibel dargelegt?
Wurden alle eingesetzten Ressourcen beschrieben?
Wurde die detaillierte Projektplanung auf ihre Einhaltung hin untersucht und wurden Abweichungen plausibel begründet (Retrospektive)?
Wurde eine Datenbank erstellt? Ist sie sinnvoll dokumentiert (ERM)? Ist sie normalisiert?
Wurde die Architektur der Software begründet und sinnvoll dokumentiert? Wurde ein Komponenten-/Klassendiagramm erstellt?
Wurde die Implementierung interessanter Funktionen näher erläutert?
Wie und wann wurde getestet? Wurden Tests automatisiert? Wie wurden die Testfälle ausgewählt? Wurden die Tests und die Ergebnisse dokumentiert?
Wurde das Produkt abgenommen? Von wem? Welche Kriterien waren dabei entscheidend?
War das Projekt ein Erfolg? Warum (nicht)? Gibt es mögliche Erweiterungen (Ausblick)?
Angemessene Betriebs- und Kundendokumentation (15%)
Wurde eine Benutzerdokumentation erstellt?
Wurde eine
API-/Entwicklerdokumentation erstellt? Wie?
Gibt es sinnvolle/interessante kommentierte Auszüge aus dem Quelltext?
Sind Screenshots der fertigen Anwendung vorhanden und erläutert?
-
Kopf-/Fußzeile mit Datum, Titel etc.
ständig sichtbares Inhaltsverzeichnis (als "Fortschrittsbalken")
Stichpunkte als Bullet Points auf den Folien
nicht zuviel Text
da die Präsentation recht kurz ist, sollte man sich auf das Wesentliche/Interessante des Projekts konzentrieren
Folien sollten der Corporate Identity des Ausbildungsbetriebs folgen
alle verwendeten Grafiken/Inhalte müssen deutlich erkennbar/lesbar sein
sehr interessant ist das fertige Produkt (Live-Demo, Screencast)
Titelfolie mit Projektbezeichnung, Daten des Auszubildenden und des Ausbildungsbetriebs
Inhaltsverzeichnis/Agenda
kurze Beschreibung der Ausgangssituation (Ausbildungsbetrieb, Problemstellung, Ist-Analyse)
Projektziel (Soll-Konzept, Qualitätskriterien)
Projektbegründung: Wirtschaftlichkeitsbetrachtung (Amortisationsrechnung, auch grafisch), Nutzwertanalyse
Überblick über die Anwendung (Architektur, Einbindung in andere Systeme)
Implementierung (z.B. ERM, UML, Quelltexte, Screenshots)
Grafiken zur Erklärung bestimmter Sachverhalte
aufgetretene Probleme und Lösungen dafür → Lessons Learned
Fazit, Ausblick
Schlussfolie
Datenbanken
Warum Normalisierung? → 3 Normalformen, Redundanz, Anomalien, Schlüssel erläutern
Konzept der Transaktionen erläutern
Was ist OO? Was sind die Vorteile? → Datenkapselung, Polymorphie, Vererbung erklären
Kalkulation
Wie setzt sich normalerweise (!) ein Stundensatz zusammen? → Lohn, Nebenkosten, Gemeinkosten, Gewinn (!)
Amortisationsrechnung erläutern
Vorgehen bei der Nutzwertanalyse erläutern (ggfs. an Tafel entwickeln)
Qualitätskriterien für Software erläutern (
ISO 9126)
Datenschutz von Datensicherheit abgrenzen, 8 Gebote des Datenschutzes nach BDSG
Webentwicklung
Funktionsweise/Vor-/Nachteile von
AJAX erläutern
MVC erläutern
am Besten bereitet man sich mit alten Prüfungen vor, um ein "Gefühl" für die Fragen zu bekommen
grundsätzlich können die Inhalte der Ausbildungsrahmenpläne (vgl.
Blog) drankommen
Die folgende Liste ist nicht vollständig und dient nur einer ersten Übersicht. Sie wurde auf Basis von alten Prüfungen, Lehrbüchern und Stoffsammlungen aus dem Internet zusammengestellt.
Quellen
Cloud Computing (Auswirkungen auf Softwareentwicklung, Hardware, Geschäftsmodelle)
Funktionale Programmierung
REST
Green IT
Virtualisierung
Web 2.0
Mobile Applikation
USB 3.0
Windows 7
3D-/HD-TV, HDMI, BlueRay
Vorteile eines betrieblichen Vorschlagwesens
Beispiele zur Optimierung der Arbeitsabläufe
Methoden zur Mitarbeitermotivation
Standortfaktoren bewerten
Marktformen bestimmen
Angebotskalkulation
(Arbeits-)Verträge
Lohnabrechnung
Gesellschaftsformen
Aufbau- und Ablauforganisation
Umweltschutz
Workflow
Zentralisierung/Dezentralisierung
Unfallverhütung
Vorgaben bzgl. Arbeitsplatzergonomie kennen
ergonomische Anforderungen an Bildschirme, Drucker, Stühle, Tische
Warum reicht die Einhaltung der Ergonomie nicht aus, um körperliche Beschwerden auszuschließen? Was kann man zusätzlich tun?
Nutzen ergonomischer Arbeitsplätze für das Unternehmen
Vor-/Nachteile von Absatzwegen, Distributionspolitik
Fachbegriffe kennen
Marktvolumen, Absatz, Marktanalyse etc.
B2B, B2C, B2G
Umfrage, Beobachtung, Experiment, Testmarkt, Marktprognose, Panelerhebung
Marktdurchdringung, Marktentwicklung, Markterschließung, Produktinnovation, Produktentwicklung, Diversifikation
Optimierung des Kundenservice
mögliche Quellen zur Marktforschung
Ziele von Werbung
Phasen des Produktlebenszyklus
Beispiele für niedrigen/hohen Markteinstiegspreis nennen
Outsourcing (organisatorisch) vs. Offshoring (geografisch)
Datenschutz vs. Datensicherheit
Urheberrecht
Open Source
Unfreier Versand
Fernabsatzverträge
Nachbesserung und Nachlieferung
Gewährleistung vs. Garantie
Mutterschutz, JAschG
Betriebsrat
Kündigungsfristen
unterschiedliche Architekturen (Client/Server, Dateibasiert)
unterschiedliche Ansätze (relational, Netzwerk, hierarchisch, objektorientiert)
Eigenschaften von relationalen Datenbanken
ORM
Begriffe kennen und erläutern
-
CRUD (Create, Read, Update, Delete)
verschiedene Joins (INNER, OUTER LEFT/RIGHT)
Arbeitschritte beim DB-Design
ACID-Prinzipien für Transaktionen kennen und erläutern (atomicity, consistency, isolation, durability)
Normalformen erläutern ("the key, the whole key, and nothing but the key")
Modellierung von Beziehungen (1:1, 1:n, m:n)
mögliche Aufgaben
Prozessor/CPU, Kühlung
von-Neumann-Architektur
ALU
RAM-Arten und Unterschiede
Eigenschaften/Unterscheidung/Vor-/Nachteile SAN und NAS
Unterschied Stack/Heap
sATA, AGP, PCI, ISA, IDE,
SCSI, SAS, USB,
RAID, TFT, TCO, CRT, USV
-
Bluetooth, Firewire, USB
WLAN
Hotspot, Ad-Hoc, Repeater
Sicherheit (WPA, WEP, MAC-Kontrolle)
BIOS, CMOS, Ablauf eines Systemstarts, Sinn von BIOS-Updates
IDE: Master/Slave, Jumper
Firmware, Flash-Speicher
Arten von Druckern und Scannern
Thin Clients/Fat Clients
Bezugsquellen für Hardwarelieferanten
Virtuelle Maschinen
mögliche Aufgaben
passende Komponenten für einen (Datenbank-/File-)Server oder Workstation (z.B. CAD, Office) auswählen
PCs für bestimmte Anforderungen aus Komponenten zusammenstellen
Vorteile von Internetseiten als Werbemittel
grundlegende Kenntnisse von
HTML,
CSS,
PHP
ergonomische Gestaltung von Websites
-
Mindestinhalte des Impressums
virtuelle Hosts erläutern
Möglichkeiten zur Unterscheidung von Websites auf einem Host: IP, Hostname, Port
Funktion von .htaccess erläutern
dynamische Websites (
CGI,
ASP, JSP)
Web 2.0
Ermittlung von Umsatz/Provision/Deckungsbeitrag/Kosten/Gewinn
Zahlungsverzug
Rechtsgrundlage/Definition für Zahlungsverzug
Möglichkeiten zum Umgang mit Liquiditätsengpässen
Gemeinkosten auf Kostenstellen verteilen
Kosten für eine Produkteinführung berechnen
Break-Even-Point ermitteln
Gewinn ermitteln
Vor-/Nachteile Kauf/Leasing/Miete
Umrechnungen in Zahlensystemen (Dual, Dezimal, Oktal, Hexadezimal)
Profit-Center-Organisation
Handelskalkulation
Datenraten von verschiedenen Laufwerken (Festplatte, CD, DVD)
Audiobearbeitung
Bildbearbeitung
Zeichensätze kennen und Unterschiede aufzeigen
ASCII kennen und erklären
Kryptographie
PKI, BSI
Kompression
-
mögliche Aufgaben
Methoden zur Namensauflösung erklären (
DNS, hosts)
DNS,
DHCP, WINS, ARP, Subnetting, Topologien
Ablauf beim
DHCP-Lease (Discover → Offer → Request → Acknowledge)
ping (ICMP)
MAC vs. IP
IPv4, IPv6, A/B/C-Klassennetze
Protokolle mit Port-Nummern (
HTTP, HTTPS,
FTP,
SMTP,
POP3,
IMAP,
DNS, SMB, Telnet,
SSH)
Routing
Firewall
Proxy-Server (Squid)
Sicherheitsmaßnahmen
Struktur eines Class-C-Netzes erläutern
Funktionsweise und Vorteile von VPN beschreiben
ISDN, ADSL, SDSL, UMTS
FDDI (Lichtwelle)/Ethernet beschreiben
Netzwerkhardware (Hub, Bridge, Switch, Router) mit Zuordnung zu
ISO-Schichten
Serverarten nennen (z.B. Print-/Fileserver)
Clustering, Load Balancing
RDP/ICA unterscheiden
ISO/OSI-Modell (7 Schichten) im Vergleich zum TCP/IP-Modell (4 Schichten)
Backup
Medien nennen und erläutern
inkrementell/differentiell/voll
Generationenprinzip, Großvater/Vater/Sohn
hot/cold
Wie erkennt die Software, welche Daten zu sichern sind?
schützenswerte Daten
mögliche Gründe für Datenverluste auf Servern erläutern und Gegenmaßnahmen vorschlagen
Folgen von Datenverlust, Auswirkungen von Datenverlusten für das Unternehmen erläutern
Maßnahmen der Mitarbeiter zur Vermeidung von Datenverlusten erläutern
-
primäre/sekundäre/tertiäre Verkabelung
CSMA/CD, Token
VLAN
-
Authentifizierung vs. Autorisierung
mögliche Aufgaben
Dauer einer Datensicherung berechnen
Netzwerk konzipieren (Router, Firewall, Clients)
Definition Projekt
übliche Projektphasen (Idee, Zieldefinition, Auftrag, Planung, Durchführung, Kontrolle etc.)
Aufgaben/Inhalte/Verbindlichkeit von Lasten-/Pflichtenheften und Angeboten
Aufgaben des Projektleiters
Netzplan, Gantt-Diagramm, PSP (Projektstrukturplan) erstellen
Prozessdiagramme/EPKs erstellen/korrigieren/optimieren
Ablauf eines üblichen Geschäftsprozesses (von Kundenanfrage bis Zahlungseingang) kennen
Symbole des Petri-Netzes erläutern
Arten von Software unterscheiden (Individual-/Branchensoftware)
Unterschied prozedurale/objektorientierte Entwicklung/Modellierung
Prinzipien der OOP
Begriffe der OOP erläutern: Attribut, Nachricht/Methodenaufruf, Persistenz, Schnittstelle/
API/Interface, Polymorphie, Vererbung
Bestandteile von Klassen
Unterschied Klasse/Objekt
Unterschied Klasse/Interface
Erklärung Klassenbibliothek
Klassenbeziehungen: Assoziation, Aggregation, Komposition
Software-Architektur
Bottom-Up- und Top-Down-Verfahren bei der Modellierung erläutern
Funktion/Vorteile der Modularisierung von Programmen
wichtige UML-Diagramme (UseCase-, Klassen-, Sequenz-, Aktivitätsdiagramm, Zustandsautomaten) kennen und Einsatzgebiete erläutern
Design Patterns kennen/erklären
Singleton, Observer, Factory, Adapter, MVC, Iterator, Strategy, Decorator, Template Method, Registry
Methoden zur Dokumentation
Eigenschaften eines Versionsverwaltungssystems beschreiben
SVN,
CVS, TFS mit Source Safe, Git
Entwicklungsprozesse
mögliche Aufgaben
gegebene Klassen in ein Klassendiagramm eintragen (inkl. Beziehungstypen und Kardinalitäten)
Klassendiagramm vervollständigen
Use-Case-Diagramm erstellen
Programmierparadigmen (OO, strukturiert, prozedural, funktional, deklarative etc.)
Unterschied Interpreter/Compiler
3GL/4GL
die gängigen Programmiersprachen kennen (
PHP,
Perl, Java, C, C++, C#, JavaScript, Delphi, Visual Basic,
VBA, Ruby, Python, Cobol, F#, Lisp, Prolog, Assembler)
Rekursion
Unterschied syntaktische/semantische Fehler
Benutzereingaben sinnvoll validieren
Vorteile generischer Container (Templates in C++) gegenüber Arrays
Unterschied statische/nicht-statische Methoden
Kontrollstrukturen
allgemeine Programmstrukturen identifizieren/erläutern (Schleifen etc.)
grundlegende Kontrollstrukturen in allen Diagrammformen (PAP (Programmablaufplan), Nassi-Schneiderman/Struktogramm) darstellen können
Merkmale/Unterschiede von Kontrollstrukturen (Schleifen, Fallunterscheidungen)
Zustandsübergänge eines Zustandsautomaten abbilden
Datenstrukturen
Algorithmen als PAP/Struktogramm/Pseudocode darstellen
Reguläre Ausdrücke zur Textanalyse erstellen
mögliche Aufgaben
Definition Software-Qualität?
Software-Qualitätsmerkmale nach DIN/
ISO nennen und erläutern
Methoden für Software-Tests
Bottom-Up und Top-Down
statisches/dynamisches Testen
Abnahme-, Last-, Funktions-, Regressionstest
Black-/Whiteboxtest, Anweisungsüberdeckung/Zweigüberdeckung
Komponenten-, Integrations-, Systemtest
Maßnahmen zur Qualitätssicherung (Audits, Reviews, Testmethoden)