M306 – IT Kleinprojekt abwickeln | Zusammenfassung
HERMES-gibb· gibb Berufsfachschule Bern· Letzte Aktualisierung: März 2025
HERMES-gibb Projektphasen
Kriterium Initialisierung Konzept Realisierung Einführung
Ziel Machbarkeit prüfen, Projektauftrag erstellen Lösungskonzept und Projektplan erarbeiten Lösung entwickeln und testen Lösung in Betrieb nehmen, Projekt abschliessen
Ergebnis (Dok.) Projektauftrag, Grobplanung Pflichtenheft, Konzeptdokument, Projektplan Lauffähiges System, Testprotokoll Abschlussbericht, Übergabedokument
Aufgaben Auftrag klären, IST/SOLL analysieren, Ziele setzen, Stakeholder identifizieren Anforderungen erheben, Lösungsvarianten bewerten, Risiken analysieren, Planung detaillieren Entwicklung, Unit- / System- / Abnahmetests, Dokumentation, Zwischenpräsentationen Schulung, Deployment, Abnahme durch Auftraggeber, Lessons Learned
Fokus Was? Warum? Wie? Mit wem? Bis wann? Entwickeln & Prüfen Übergeben & Abschliessen
SMART-Ziele
S
Spezifisch — klare, eindeutige Formulierung (Was genau soll erreicht werden?)
M
Messbar — Erfolg ist überprüfbar (Wie wird der Erfolg gemessen?)
A
Attraktiv / Akzeptiert — motivierend und relevant für alle Beteiligten
R
Realistisch — mit vorhandenen Ressourcen und Kenntnissen erreichbar
T
Terminiert — konkretes Datum oder Zeitraum angegeben (Bis wann?)
Beispiel: «Das System verarbeitet bis 30.06.2025 mind. 500 Anfragen/Min. mit <200 ms Antwortzeit.»
Risikoanalyse
R = E × A
E
Eintrittswahrscheinlichkeit (1 = gering, 2 = mittel, 3 = hoch)
A
Auswirkung / Schadensausmass (1 = gering, 2 = mittel, 3 = hoch)
R
Risikozahl (1–9) → Einstufung in Risikolandschaft
ZoneRisikozahlMassnahme
Grün1–2Akzeptieren / beobachten
Gelb3–4Vermindern / übertragen
Rot6–9Vermeiden / sofort handeln
Massnahmentypen: Vermeiden · Vermindern · Übertragen (z.B. Versicherung) · Akzeptieren
Projektstrukturplan (PSP)
  • Hierarchische Zerlegung des Projekts in Teilprojekte und Arbeitspakete
  • Zeigt WAS getan wird — nicht wie oder wann (kein Terminplan)
  • Jedes Arbeitspaket: Bezeichnung, Verantwortlicher, geschätzter Aufwand
  • Basis für Terminplanung, Ressourcenzuteilung und Kostenschätzung
  • Empfohlene Gliederungstiefe: 2–3 Ebenen (Projekt → Teilprojekt → Arbeitspaket)
PSP ≠ Terminplan. Er strukturiert die Aufgaben, gibt aber kein «Wann» an.
Situationsanalyse
IST-Zustand
Aktuelle Situation, vorhandene Probleme und Schwachstellen, Ursachenanalyse
SOLL-Zustand
Gewünschter Endzustand nach dem Projekt, konkrete Ziele (→ SMART)
Rahmenbedingungen
Zeit, Budget, Ressourcen, gesetzliche, technische oder organisatorische Vorgaben
Abgrenzung
Was ist explizit nicht Teil des Projekts (Scope-Ausschlüsse)
Stakeholder-Analyse
  • Wer ist direkt oder indirekt von der Lösung betroffen?
  • Wer hat Entscheidungskompetenz oder Einfluss auf das Projekt?
  • Welche Erwartungen, Interessen und Bedenken bestehen?
  • Gibt es Widerstände — und wie werden diese adressiert?
  • Kommunikationsplan: Wer erhält welche Info, wann und in welcher Form?
Auftraggeber Endbenutzer IT-Abteilung Geschäftsleitung Lieferanten Behörden
Klassisch vs. Agil – Vergleich
Kriterium HERMES (klassisch / phasenorientiert) Scrum (agil / iterativ)
PlanungVollständig vorab (Phasenpläne, Meilensteine)Iterativ, Sprint-weise (2–4 Wochen)
AnforderungenZu Beginn vollständig definiert (Pflichtenheft)Flexibel, Product Backlog wird laufend angepasst
ÄnderungenFormal via Änderungsmanagement, aufwändigErwünscht und eingeplant, nach jedem Sprint möglich
DokumentationUmfangreich und vorgeschriebenMinimal, pragmatisch («Working software over documentation»)
TeamgrösseVariabel, klare Rollen (Projektleiter, Team, Auftraggeber)Klein: 5–9 Personen (Product Owner, Scrum Master, Dev Team)
LieferungVollständiges Produkt am ProjektendePotenziell lieferbares Inkrement nach jedem Sprint
Geeignet fürKlare, stabile Anforderungen (z.B. Infrastruktur, Behörden)Unklare / veränderliche Anforderungen (z.B. Software-Produkte)
M300 – Lernziele LB2 | Themen und Kompetenzen
Docker
  • Docker auf Ubuntu VM aufsetzen und nutzen
  • Platz auf externer Festplatte für Docker nutzbar machen
  • Applikationen mit docker-compose.yml deployen
  • docker-compose.yml nach Vorgaben anpassen
BefehlBeschreibung
docker psLaufende Container anzeigen
docker ps -aAlle Container anzeigen (inkl. gestoppte)
docker imagesLokale Images anzeigen
docker pull <image>Image herunterladen
docker run -d -p 80:80 <image>Container starten (detached, Port mapping)
docker stop <name>Container stoppen
docker rm <name>Container löschen
docker logs <name>Container-Logs anzeigen
docker-compose up -dStack aus docker-compose.yml starten
docker-compose downStack stoppen und entfernen
docker volume lsVolumes anzeigen
docker-compose.yml Grundstruktur
version: '3'
services:
  servicename:
    image: imagename:tag
    ports:
      - "hostport:containerport"
    volumes:
      - /externer/pfad:/container/pfad
    restart: unless-stopped
Externe Festplatte für Docker nutzen
  • Mountpoint ermitteln: lsblk / df -h
  • Docker data-root in /etc/docker/daemon.json auf externen Pfad setzen:
  • { "data-root": "/mnt/externe-platte/docker" }
  • Docker neu starten: sudo systemctl restart docker
DNS (bind9)
  • DNS-Server installieren: apt install bind9 (direkt auf VM) oder als Docker-Container
  • Konfigurationsdateien: /etc/bind/named.conf.local, /etc/bind/named.conf.options
  • Forward-Zone: Hostname → IP-Adresse
  • Reverse-Zone: IP-Adresse → Hostname (PTR-Records)
RecordFunktionBeispiel
AHostname → IPv4server1 IN A 192.168.1.10
AAAAHostname → IPv6server1 IN AAAA ::1
PTRIP → Hostname (Reverse)10 IN PTR server1.domain.local.
CNAMEAlias → Hostnamewww IN CNAME server1
NSNameserver der Zone@ IN NS ns1.domain.local.
SOAStart of AuthorityPflichtfeld in jeder Zonendatei
MXMail-Server@ IN MX 10 mail.domain.local.
Zone testen
  • named-checkconf → Konfiguration auf Syntaxfehler prüfen
  • named-checkzone <zone> <datei> → Zonendatei prüfen
  • nslookup <hostname> <dns-server-ip> → Auflösung testen
  • dig @<dns-server-ip> <hostname> → Detaillierte Abfrage
  • dig -x <ip> @<dns-server-ip> → Reverse-Lookup testen
Web – Apache / nginx
  • Statische Inhalte unter /var/www/html/ ablegen
  • Webserver starten: sudo systemctl start apache2
  • Namebased Virtual Hosts: Mehrere Sites auf einer IP, unterschieden durch Host-Header
Virtual Host Konfiguration (Apache)
<VirtualHost *:80>
    ServerName site1.domain.local
    DocumentRoot /var/www/site1
    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
</VirtualHost>
  • Konfigurationsdatei unter /etc/apache2/sites-available/ ablegen
  • Aktivieren: sudo a2ensite <dateiname>
  • Neu laden: sudo systemctl reload apache2
  • Webinhalt auf ext. Festplatte: DocumentRoot auf Mountpoint setzen, Berechtigungen prüfen (chown www-data)
SSH-Tunnel
  • Zweck: Netzwerkverbindungen durch Firewalls tunneln
  • Voraussetzung: SSH-Zugang zu einem erreichbaren Zwischenhost
TypBefehlAnwendungsfall
Local Forwardingssh -L localport:ziel:zielport user@sshhostLokaler Port → entfernter Dienst
Remote Forwardingssh -R remoteport:localhost:localport user@sshhostEntfernter Port → lokaler Dienst
Dynamic (SOCKS)ssh -D localport user@sshhostSOCKS-Proxy für Browser
Beispiel Local Forwarding
ssh -L 8080:interner-server:80 user@jumphost
→ localhost:8080 im Browser erreicht
  interner-server:80 durch den Tunnel
Nützliche Flags
  • -N — Kein Remote-Command ausführen (nur Tunnel)
  • -f — SSH in den Hintergrund schicken
  • -L / -R / -D — Tunnel-Typ wählen
  • Vollbefehl: ssh -fN -L 8080:ziel:80 user@jumphost