Software - Implementierung: Ihr Wunsch, meine Aufgabe!
Sie möchten gern:
- Änderungen an bestehenden Programmen?
- neue Software programmiert haben?
- die Performance von Programmen erhöhen?
- Informationen, welche Angaben zur Implementierung erforderlich sind?
(siehe u.a. nachfolgende Übersicht)
Ich biete Ihnen:
- praxiserprobte Kenntnisse zu vielen Programmiersprachen und Tools(siehe bitte: Profil, Website, Optimierung)
- die Erstellung strukturierter und nachvollziehbarer Software
- performante Software
- Kenntnisse aus der PC- und Großrechnerwelt
Informationen aus dem Pflichtenheft zum ausgewählten Abschnitt:
Daten
- Aufbewahrungsorte (zentr. Server, Host, Archiv, Feuerfestes Archiv, Tresor)
- Aufbewahrungsmedien (HDD, DVD, Bänder, Microfiches, nicht wiederbeschreibbare Datenträger)
- Aufbewahrungsfristen (gesetzl., organisatorische, Revisionsbelange)
- Berücksichtigung der Internationalisierung (z.B. Buchstabe "e" oder "e`" im Namen sowie DBCS (double-Byte Character-Set) für fernöstliche Sprachen
- Betriebssystem-Abhängigkeiten (Datums-Formate, Umgebungs-Variablen, Zugangs-Daten)
- Datei-Blocklänge, -Versionierung
- Daten-Haltung (in sequentiellen Dateien, Datenbanken)
- Datei-Namen incl. variabler Namensteile, unterschiedl. Namensstrukturen für Input-/ Output-Dateien
- Daten-Architektur (Stammdaten, hierarchische Anordnung, Schlüsselwerte)
- Daten-Darstellung (Listen-Form, scrollbares Fenster, Pivot-Tabelle)
- Daten-Empfangsquittung für den Daten-Anlieferer
- Datenfeld-Trenner (CSV-Dateien, ...)
- Daten-Bereitstellung (automatisierte Aktualisierung von Bezugsgrößen - Finanzwerte, Einkaufspreise)
- Daten-Gruppierung (Stammdaten, Bewegungsdaten)
- Daten-Gültigkeits-Zeitraum (keine alten Prozessdaten verarbeiten, wenn aktuellere vorhanden sind)
- Daten-Klassen (Pflichtdaten, optionale Daten)
- Daten-Konvertierung (unterschiedl. Zeichensätze und Datenstrukturen (PL/1, Cobol)
- Datenmenge je Satzart und Anzahl optionaler Satzarten
- Daten- (Datenbank-) Normalisierung (eine Information möglichst nur einmal speichern - Vermeidung von Inkonsistenzen und Verringerung des Pflegeaufwands)
- Datensatz-Länge (fest, variabel)
- Daten-Schlüssel pro Satzart
- Daten-Schlüssel-Verzeichnis
- Datensperren (keine alten Daten in Buchhaltung verarbeiten, Daten nicht doppelt verarbeiten)
- Datenstrukturen (Tabellen, Tablespaces, Filler für Erweiterungen)
- Datentypen (feste, variable)
- Daten-Verschlüsselung
- Daten-Volumen (pro Zeiteinheit, pro Datei, pro Verarbeitungsfall)
- Default-Werte (Erkennung bei Inputdaten, Definition bei Outputdaten)
- doppelte Daten (Kriterien für das Auffinden)
- durchschnittliche Datenmenge (Abschätzung der Verarbeitungsdauer)
- eindeutige Eingabeformate festlegen (deutsche Umlaute, Sonderzeichen, Wildcards)
- Satzende-Kennzeichen
- Initialisierung bei Erst-Anlieferung von Daten (Zeitpunkt, Default-Startwerte für lfd. Nummern)
- Kennzeichnung des Anlieferer-Systems (ID im Anfangssatz)
- Kennzeichnung des erwarteten Eingabeformats (Hinweistext neben dem Eingabefeld)
- Klassifizierung (priorisierte Verarbeitung von Daten)
- Komprimierungs- / De-Komprimierungs-Verfahren
- Komprimierungs- / De-Komprimierungs-Zeitpunkt (nach/vor der Übertragung)
- Kriterien für Löschung Alt-Daten
- Migrations-Vorschriften für Daten
- optionale Daten (Pflicht-/Wahl-Eingabefelder)
- parallele Datensatz-Bearbeitung durch mehrere Benutzer sperren (Cursor-Stability, repeatable Read)
- Performance-Belange (Datumsformate ohne Punkte speichern)
- Plausi-Prüfungen (Input-/Output-Daten, Schlüsselwerte)
- Programmiersprachen-Auswahl (spezialisierte Unterstützung von Datenstrukturen)
- Prüfsummen für Daten (CRC-, MD5-Prüfsumme)
- Satzanzahl-Protokollierung
- Satzarten (Anfangs- und Schluss-Satz, Mandantensatz, …)
- Daten-Schnittstellen-Vereinbarungen (fachl./technisch)
- Selektion-Kriterien (pro Datei, Mandant, Berechnungsfall)
- Sicherung der Eingangsdaten (mit Datumsqualifier, Versions-Nr.)
- Trigger-Daten (Start der Verarbeitung beim Auftreten markanter Daten)
- Testdaten-Generierung (per Programm, manuell)
- Testdaten-Bereitstellung (anonymisierte Produktionsdaten)
- Testfälle (umfassend bzw. per Schwerpunkt)
- Übertragungsverfahren (gesichert, ungesichert, protokolliert)
- Versionierung der Datenstrukturen
- Wieder-Aufsetzpunkt nach Abbrüchen incl. Löschung evtl. bereits erstellter Datei-Sicherungen
- Zeichensatz (ASCII, EBCDIC, …)
- Zeitpunkt und Häufigkeit der (ersten) Daten-Anlieferung
Berechnungen
- Berechtigungen zum Lesen/ Schreiben von Daten (je Benutzer, Uhrzeit-abhängig)
- Gültigkeitsbereiche (untere/ obere Grenzen als Konstanten definieren)
- Modularisierung (Übersichtlichkeit, Wiederverwendbarkeit)
- Rechenvorschrift (fachl./ gesetzl. Vorgaben)
- Plausi-Prüfungen (Input- und Output-Daten)
- Testfall-Vorgaben
- in Prozessumgebungen Definition von max. Ausführungszeiten für die Durchführung von Berechnungen
- Fehler- und Hinweistexte (für Datenbereichs-Überschreitungen, Daten-Inkonsistenzen)
- Werte-Bereiche (durchgehende Berechnung in einem Bereich, z.B. Gramm, Euro, TEuro)
- Vorgaben, wann Default-Werte verwendet werden sollen
- gesetzl. Vorgaben prüfen
- Ergebnis-Rundungen definieren
- statistische Auswertungen zum Erkennen von Daten-Trends, Daten-Ausreißern, Zeiträumen, regionalen Besonderheiten
- max. zulässige obere / untere Abweichungen definieren
- Verwendung passender Datentypen (wg. Performance und Rechengenauigkeit)
- Rechengenauigkeit (so genau wie möglich, aber nur so genau wie erforderlich - Performance)
- Ermittlung von Durchläufen je Berechnungsvorschrift (welches Modul kostet am meisten Zeit - muss die beste Performance haben)
- Verwendung aktueller/gesetzl. Bezugsgrößen (Umrechnungskurse, Steuersätze)
- Verwendung von Kalender-Modulen zur einheitl. Vorgehen, automat. Berücksichtigung regionaler Besonderheiten)
- Verwendung konsistenter Daten (Cursor-Stability, Datensatz-Sperren)
- Verwendung von Programm-Generatoren
- wiederholte Berechnung von Grenzwerten in Schleifen vermeiden (for i = anz/2 +1 to y ==>besser grenze = anz/2+1; for grenze to y)
- Verwendung zentraler Berechnungsmodule (vermeidet Mehrfach-Entwicklung)
- Rechenungenauigkeiten durch wechselnde Rechengenauigkeiten (in Teilschritten) vermeiden
Abhängigkeiten
- Prototyping-Modell (nur zur Abstimmung noch vorhandener Unklarheiten, wird danach gelöscht)
- Aufsetzpunkt (nach Programm-Wiederanläufen)
- Indizie (welche Schlüsselfelder)
- Job-Reihenfolge (fachl./zeitl. Erfordernisse)
- Rücksetzen (beim automat. Erkennen von Fehlern, Dead-Locks)
- Start-Zeitpunkt (fester/variabler Zeitpunkt, spätester Zeitpunkt)
- Wiederanlauf (welche Folgesysteme sind davon betroffen - Kettenreaktion)
- Wiederholbarkeit (bei erneuter Datenanlieferung am gleichen Tag)
- Zustandsdiagramm (Abhängigkeit von Verarbeitungszuständen)
- Lösch-Vorschriften (hierarchisches Löschen - Delete Constraints)
- Tablespace, Tabellen, Indizie (Einfluss auf Performance, Speicherbedarfe, Erweiterbarkeit)
- Unterprogramme (Modularisierung, Wiederverwendung, zentrale Pflege/Aktualisierung)
- Programm-ID's
- Timestamps (Bearbeitungsfolge in Reihenfolge des Daten-Eingangs)
- Löschung Alt-Daten (automatisiert, manuell)
- Aufbewahrungsfristen für Daten (Revisions-Sicherheit, gesetzl. Vorgaben)
- Zeit-Synchronisation zwischen Systemen
- Dateinamen (Input, Output - Erkennung der Erstellungs-Reihenfolge)
- Daten-Anlieferung oder -Abholung?
- Verhalten bei fehlenden Input-Daten
- Wiederholbarkeit des Programmlaufs
- erneute Datenanlieferung möglich (überhaupt möglich?, Zeitpunkt)
- mehrfacher Programmstart am Kal.Tag möglich?
- regionale Abhängigkeiten (Steuer, Zinsformeln, Feiertage)
- Zugangsberechtigung zu Daten je nach Mitarbeiter-Funktion (getrennt nach Online-/Batch-Betrieb)
- automatische Generierung von DUMMY-Outputdaten zu einem spätesten Zeitpunkt, um den Fortgang der Prozesskette zu ermöglichen
- parallele Programm-Ausführung (bessere Reaktionszeiten)
- automatisierte Benachrichtigung beim Ausbleiben von Ereignissen
- Datei-Abhängigkeiten (Gewährleistung einer lückenlosen Reihenfolge)
- fortlaufende Nummerierung der Bearbeitungsabläufe (Buchungs-, Rechnungs-Nr.)
- Funktionsdiagramm (Sperren von Buttons je nach Bearbeitungsstand)
- Gewährleistung der Datenkonsistenz (Herstellung der Ursprungsdaten bei einem Abbruch, Rollback, Transaktionsorientierte Verarbeitung)
- Default-Werte und Konstanten nur an einer Stelle definieren (bessere Wartbarkeit)
- Auflösung von Dead-Locks definieren (Datenbanken)
- Festlegung eines Zeitraums für manuelle Eingaben (Buchungsbeginn 8 Uhr, Buchungsende 17:30Uhr)
Design
- Buttons definieren (Beschriftung, Farbe für aktiv/nicht-aktiv-Status, Rahmen-Typ/-Breite)
- Farben (harmonische Auswahl, Kennzeichnung von Informationen, Ausnahmewerten)
- Rahmen-Farbe, Breite, -Art (erhaben, vertieft, durchgezogen, gestrichelt ...)
- Prototyping (Rapid-Prototyping)
- Farb-Kontrast (bessere Lesbarkeit)
- Corporate Design (Anordnung von Firmen-Logos, Hintergrundgestaltung)
- Schriftgrößen durch Benutzer änderbar gestalten
- Rechtschreibprüfung (automatisiert, manuell, Vier-Augen-Prinzip)
- Schriftart (serif, sans-serif, Lesbarkeit bei unterschiedl. Bildschirm-Auflösungen, Verfügbarkeit auf unterschiedl. Systemen)
- Bildschirm-Auflösung (möglichst keine Programmerstellung für eine einzige Auflösung)
- Fenster-Größe (feste Vorgabe für Info-Fenster, variable Größe für Daten-Darstellungen)
- Fenster-Scrolling
- Menüleisten (ein-/ausblendbar, Anordnung Menüpunkte, Definition Short-Key-Tasten, andockbar)
- Buttons + Eingabefenster in Bearbeitungsreihenfolge anordnen
- Legende zu Kurzbezeichnern (auf Listen)
- Experten- / Anfängermodus für Programme
- Kontext-Hilfe für Felder
- Kennzeichnung von Pflichtfeldern
- Link-Kennzeichnung (bereits besucht, Hover-Effekt)
- Kennzeichnung des aktuellen Eingabefeldes (Hintergrundfarbe, Rahmen, Schriftgröße)
- Kennzeichnung des ausgewählten Menüpunktes
- Gestaltung einer Online-Funktionsübersicht
- Verknüpfung zu Tel./ eMail-Verzeichnissen
- Kennzeichnung des Verarbeitungsfortschritts (Laufbalken, Prozentangabe, voraussichtliche Dauer)
- Markierung bereits abgearbeiteter / besuchter Punkte
- farbliche Markierung unplausibler Eingaben
- farbliche Markierung von Eingaben, die vom Standard abweichen, Prüfung der Maske für e-Mail-Adressen
- Unterstützung der Eingabe durch Trennfelder (statt "37ie54" -->37 ie 54") zur besseren Lesbarkeit
- Suche-Funktionen für Daten, für Verarbeitungsfunktionen
- Sprache einstellbar
- farbliche Unterscheidung von Fehlern, Hinweisen, Informationen
- Ein- u. Ausblendung von Feldern, Menüpunkten je nach Bearbeitungsfortschritt bzw. Daten-Abhängigkeit
- Anzeige der relevanten Daten, nicht aller möglichen Daten
- Verwendung von Options-Auswahlfeldern zur Vermeidung von Tippfehlern und nicht zulässigen Daten-Typen, -Bereichen
- zentrale Speicherung und Änderungsmöglichkeit für Konstanten und Stammwerte
- Aufmerksamkeitsbereiche bei Bildschirmgestaltungen berücksichtigen
Output
- Änderungsnachweis (Kennzeichnung mit Timestamp, Mitarbeiter-Namen)
- Filler in Datenstrukturen für Erweiterungen
- Programme ohne GoTo's (geordneter und nachvollziehbarer Programmablauf)
- sichere Programmierung (Set schalter statt MOVE x to schalter)
- sprechende Bezeichner
- max. mögl. Datenbreite berücksichtigt?
- Kommentare in Software-Modulen
- Löschung von Test-Modulen
- Löschung nicht verwendeter Variablen
- Optimierung (von Modulen, parallele Job-Abarbeitung, Aufgaben-Priorisierung)
- Berücksichtigung unterschiedlicher Bildschirmgrößen
- Versions-Kennzeichnung der Software (Marker im Programm)
- Wartbarkeit (Halstead-Metriken)
- Wieder-Verwendbarkeit von Modulen gewährleistet
- Backup (vollständig, inkrementell)
- Betriebshandbücher
- Hinterlegung von personellen Zuständigkeiten / Erreichbarkeiten
- Datensicherung (Vorgehensweise und Zeitpunkte zur Erstellung)
- Dokumentation von Fehler-/Hinweistexten
- Dokumentation Vorgehensweise Störungsfälle
- Installations-Beschreibung, -Hinweise
- Migrations-Beschreibungen, -Software
- Performance-Erwartungen für ein geschätztes Input-Volumen
- Software-Versionierung
- Test-Dokumentation (detaillierte erwartete Ergebnisse, Testfall-Dokumentation)
- Versionierung der Daten
- Qualitätsstandards (Einhaltung)
- Return-Codes (Auflistung, Beschreibung, Vorgehensweisen)
- Dokumentation in Druckform
- einheitliche Listengestaltung
- Statistik-Zähler
- Tippfehler-Prüfung (Listen-Texte, Fehler- u- Hinweistexte)
- Protokollierung der Verarbeitung gewünscht (Mitarbeiter-Kennzeichen, Uhrzeit)
- automatisierte Rückantworten zur Quittierung von Datenanlieferungen (Quittierungs-Datei, e-Mails)
- Verwendung von Qualitäts-Sicherungs-Tools (Einhaltung Programmierstandards, W3C)
- keine Compiler-Warnings (weisen häufig auf Unverträglichkeiten hin, die technisch zulässig sind, aber zu CPU-Mehraufwand führen)
- Quittierung von Eingaben/ Ausgaben ("Dateneingabe vollständig", "Daten wurden weitergeleitet")
- Standard-Textvorgaben
- zu quittierende Meldungen zu Vermeidung automatisierter Datenweiterleitungen
- Ausgabe von Größen-Einheiten (einheitlich), internat. Unterschiede
- Anzeige des aktuellen/ des vorherigen Bearbeitungsdatums
- Kennzeichnung schon bearbeiteter Datensätze
- automat. Generierung von Marker-Daten, wenn z.B. zu einem Datum keine regulären Daten vorhanden sind
- grafische Daten-Aufbereitungen (Diagramme statt Listen - bessere Übersicht)
- Unterscheidung der Fehlermeldungen, Informationen am Fehler-Code (1xx = Info, 9xx = Abbruch)
- Verständlichkeit / Detailliertheit der Meldungen ("Es ist ein Fehler aufgetreten", "im Modul xy bei Kunde ab Datum yx ungültig")
- selektierte Anzeige von Daten
- kumulierte Anzeige von Daten
- Belegung von Funktionstasten für den Aufruf von Verarbeitungsfunktionen
- Änderungssperren kenntlich machen (keine rückwirkende Datenänderung)
Vorgehensmodell
- V-Modell: Jede Stufe der Implementierung ist detailliert beschrieben und entspricht einer Testphase.
Die in allen Projekten angewendeten Vorgehensbausteine (V-Modell-Kern) sind:- PM: Projektmanagement
- QS: Qualitätssicherung
- KM: Konfigurationsmanagement
- PA: Problem- und Änderungsmanagement
- Spiral-Modell: Prozess der Software-Implementierung wird mehrfach (iterativ) durchlaufen, dabei erfolgt jeweils eine Verfeinerung der Softwarekomponenten.
- Wasserfall-Modell: Prozess der Software-Implementierung wird einmal durchlaufen.
Aufwandschätzung
- Ermittlung der Inhalte, die im Leistungsumfang genau gefordert sind, und derjenigen Inhalte, die zwar sinnvoll, nützlich oder auch nahe liegend sind, aber nicht gefordert werden (und somit nicht implementiert werden).
- Geschätzter Personalaufwand
- LOC - Größenordnung (lines of code)
- Berücksichtigung von Erschwernissen und Restriktionen (zeitliche Zugangs-Vorgaben des Unternehmens, Rücksichtnahme auf bestehende Software-Systeme)
- aktuelle fachliche Vorgaben
- neue Betriebssystem-Parameter
- neue gesetzliche Vorgaben
- Erkenntnisse aus Prototyping-Modell
- Anpassungen wg. erkannter Performance-Engpässe
- Anpassungen wg. neuer Daten-Konstellationen
- Anpassungen wg. neuer zeitlicher Abhängigkeiten
Software
- "fehlerfrei"
- gut wartbar
- modular
- zeitgemäß
Dokumentation
- verfügbar
- vollständig
- aktuell + übersichtlich
- anschaulich
Installation
- gut beschrieben
- nachvollziehbar
- wiederholbar
Performance
- erwartungsgemäß
- nachvollziehbar
- parametrisierbar