Masterthesis „Renewal TeamPortal“ Nummer: Titel: Klasse, Datum: Abstract: Schlüsselwörter: Erstellt durch: Betreuer: MT-11-02.14 Renewal Teamportal MT-11-02, 29.03.2012 Das TeamPortal ist der Einstiegspunkt für die 50 Intranet-Entwickler bei der Schweizerischen Post, um mehr als 380 Applikationen zu administrieren sowie deren Logs und DB-Jobs zu überwachen. Neu wird es die Entwicklungs-Prozesse vereinfachen und dem Management aussagekräftige Informationen anbieten. Visual Studio 2010 SP1, Windows Server 2008 R2, SQL Server 2008 R2, .NET Framework 4, ASP.NET 4, WCF, NHibernate, SQL Server Integration Services Die Schweizerische Post Services Informationstechnologie Business Solution IT133 Pascal Irminger Webergutstrasse 12 3030 Bern (Zollikofen) Die Schweizerische Post Services Informationstechnologie Business Solution IT132 Marcel Lehmann Webergutstrasse 12 3030 Bern (Zollikofen) Die Schweizerische Post Services Informationstechnologie Business Solution IT131 Axel Zenklusen Webergutstrasse 12 3030 Bern (Zollikofen) Tel: 079 712 67 91 Tel: 058 338 71 52 Tel: 058 338 75 57 Die Schweizerische Post Services Informationstechnologie Business Solution IT132 Stefan Haefeli Webergutstrasse 12 3030 Bern (Zollikofen) Tel: 058 338 04 33 Experte: Rolf Wenger Die Schweizerische Post Informationstechnologie Management Summary Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung AU Management Summary - Masterthesis "Renewal TeamPortal" Corp_PadMan PADMAN Irminger Pascal, IT133 28.03.2012 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 V01.00 28.03.2012 28.03.2012 Neues Dokument Freigabe Irminger Pascal, IT133 Irminger Pascal, IT133 Haefeli Stefan, IT132 Management Summary Das TeamPortal ist der Einstiegspunkt für die rund 50 Intranet-Entwickler bei der Schweizerischen Post, um mehr als 380 Applikationen zu administrieren sowie deren Logs und DB-Jobs zu überwachen. Neu wird es die Entwicklungs-Prozesse vereinfachen und dem Management aussagekräftige Informationen anbieten. PadMan – Post Application Development Manager PadMan ist eine neue zentrale Intranet-Applikation, welche die aktuellen Bedürfnisse der Entwickler abdeckt, um die heutigen Prozesse zu verbessern. Sie ermöglicht dem Benutzer, durch die Entwicklungsprozesse geführt zu werden und automatisiert bislang manuelle Tasks wie z.B. die Interaktion mit der Versionsverwaltung. Als neuer Dreh- und Angelpunkt für die .NET-Webapplikationen im Intranet der Schweizerischen Post versorgt PadMan diese mit den benötigten Daten wie z.B. Connection Strings, Sprach-Labels, etc. LogObi – Organized Bugs and Information Mit der neuen Intranet-Applikation LogObi werden die Applikations-Logs sämtlicher .NET-Webapplikationen aus dem Intranet der Schweizerischen Post visualisiert. Die Logfiles werden dabei von der Server-Farm eingesammelt und nach dem Import vorverarbeitet, so dass die Logs sogleich nach Benutzer-Wünschen vorgefiltert angezeigt werden können. Die Benutzer können zusätzlich Suchfilter definieren, wonach sie automatisch per E-Mail informiert werden wollen, sobald konfigurierbare Schwellwerte überschritten werden. JobMonitor JobMonitor ist eine neue Intranet-Applikation zur Visualisierung von SQL Server Jobs. Damit lässt sich exakt feststellen, welche Jobs erfolgreich und welche fehlerhaft ausgeführt wurden. Gegenüber dem Log File Viewer aus dem SQL Server Management Studio verbindet JobMonitor die SQL Server Agent Logs mit denjenigen aus den SSIS-Packages. Datenbank-Administratoren können fehlerhafte Job-Runs nach allfälliger Korrektur als erledigt markieren. Weiter können die verantwortlichen Personen im Fehlerfall automatisch per E-Mail informiert werden. AU_PADMAN_ManagementSummary_V01.00. docx © Die Schweizerische Post Ausgabedatum 28.03.2012 1/1 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Projektplan Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung PP Projektplan Corp_PadMan PADMAN Irminger Pascal, IT133 28.03.2012 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 X01.01 X01.02 X01.03 V01.03 24.10.2011 21.11.2011 19.12.2011 28.03.2012 28.03.2012 Neues Dokument Definition Meilensteine Aktualisierung gemäss Projektstand Finalisierung Freigabe Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Haefeli Stefan, IT132 PP_PADMAN_Projektplan_V01.03.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 1/7 Projektname Dokumenttitel Artifaktname Corp_PadMan Projektplan Projektplan Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 3 1.1 Zweck ........................................................................................................................................................ 3 1.2 Beschreibung ............................................................................................................................................. 3 1.3 Tailoring ..................................................................................................................................................... 3 1.4 Definitionen, Akronyme und Abkürzungen ................................................................................................ 3 1.5 Referenzen ................................................................................................................................................ 3 2 Projektorganisation ....................................................................................................................................... 4 2.1 Aufbauorganisation ................................................................................................................................... 4 2.2 Aufgaben und Verantwortlichkeiten .......................................................................................................... 4 2.3 Schnittstellen ............................................................................................................................................. 4 3 Projektablauf ................................................................................................................................................ 5 3.1 Ergebnisstrukturplan .................................................................................................................................. 5 3.2 Arbeitsstrukturplan .................................................................................................................................... 5 4 Aufwands- und Terminplan ........................................................................................................................... 6 4.1 Grobplan ................................................................................................................................................... 6 4.1.1 Aufwände (Soll und Ist) für SE-/QS-/RM-/KM-/PM-Aktivitäten.................................................................. 6 4.1.2 Termine (Ziel- und Ist-Termine) für SE-/QS-/RM-/KM-/PM-Aktivitäten ....................................................... 6 4.1.3 Meilensteinplan ...................................................................................................................................... 6 4.1.4 Zu- und Ausliefertermine ........................................................................................................................ 6 4.2 Feinplan ..................................................................................................................................................... 6 5 Einsatzmittelplan .......................................................................................................................................... 7 5.1 Personal ..................................................................................................................................................... 7 5.2 Sachmittel.................................................................................................................................................. 7 PP_PADMAN_Projektplan_V01.03.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 2/7 Projektname Dokumenttitel Artifaktname 1 Corp_PadMan Projektplan Projektplan Informationstechnologie Allgemeines 1.1 Zweck Der Projektplan enthält die Planung und Organisation des gesamten Projekts und ergänzt das Projekthandbuch als Handlungsgrundlage. Der Projektplan wird fortlaufend nachgeführt und verfeinert. 1.2 Beschreibung Der Projektplan definiert nach der Initialisierung des Projekts die Grobplanung für das gesamte Projekt. Am Ende jeder Phase wird die Planung für die nächste Phase überprüft und verfeinert sowie die Grobplanung für das ganze Projekt überprüft. Folgendes Beispiel verdeutlicht dieses Prinzip: Nach der Phase «Initialisierung» enthält der Projektplan die verfeinerte Planung der Phase «Voranalyse», nach Phasenabschluss die verfeinerte Planung der Phase «Konzept» und die überarbeitete Grobplanung des gesamten Projekts. 1.3 Tailoring Der Projektplan darf nie weggelassen werden. Bei kleinen Projekten kann der Projektplan erst nach dem Projektauftrag erstellt werden, wenn die für den Projektauftrag notwendigen Regelungen im Projekthandbuch festgelegt sind. 1.4 Definitionen, Akronyme und Abkürzungen Wort Definition Beta BFH JIRA Software Version: Beta Berner Fachhochschule Webbasierte Anwendung zur Fehlerverwaltung, Problembehandlung und operativem Projektmanagement Projekt «Post Application Development Manager» Post Wide Web – Intranet der Schweizerischen Post Software Version: Release Candidate PadMan PWW RC 1.5 Referenzen Nr. Titel [01] [02] Projektplan-Excel-Dokument: PP_PADMAN_Projektplan.xlsx JIRA: https://jira.pnet.ch/browse/PADMAN PP_PADMAN_Projektplan_V01.03.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 3/7 Projektname Dokumenttitel Artifaktname 2 Corp_PadMan Projektplan Projektplan Informationstechnologie Projektorganisation Nachfolgende Abbildung stellt das Projektorganigramm dar. Die jeweiligen Rollen beschreiben den jeweiligen Verantwortungsbereich. Je Aufgabengebiet – insbesondere in der Entwicklung – werden die Rollen von mehreren Projektmitarbeitenden wahrgenommen. Die im Organigramm angegebene Person ist die jeweils Verantwortliche. Pascal Irminger Projektleiter Stefan Haefeli Betreuer Masterthesis Marcel Lehmann Code & Architekt Axel Zenklusen Daten & Auswertungen Abbildung 1: Projektorganisation. 2.1 Aufbauorganisation Projektorganisation (Projekt-) Auftraggeber Projektteam Qualitätssicherung Risikomanagement Konfigurationsmanagement Name Haefeli Stefan Zenklusen Axel Lehmann Marcel Irminger Pascal Haefeli Stefan Irminger Pascal Irminger Pascal Zenklusen Axel Lehmann Marcel Funktion / Dienststelle IT132 IT131 IT132 IT133 IT132 IT133 IT133 IT131 IT132 Betreuer Masterthesis Experte Masterthesis Haefeli Stefan Wenger Rolf IT132 BFH Projektausschuss Legende: AG PL QV RV KV Rolle AG PL AG PL QV RV KV = Auftraggeber = Projektleiter = Qualitätsverantwortlicher = Risikoverantwortlicher = Konfigurationsverantwortlicher 2.2 Aufgaben und Verantwortlichkeiten Siehe Kapitel 0. 2.3 Schnittstellen Zumal es sich beim Projekt PadMan um die Masterthesis der drei Entwickler – Pascal Irminger, Marcel Lehmann und Axel Zenklusen – handelt, stellt die entsprechende Berner Fachhochschule (BFH) einen Experten. PP_PADMAN_Projektplan_V01.03.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 4/7 Projektname Dokumenttitel Artifaktname 3 3.1 Corp_PadMan Projektplan Projektplan Informationstechnologie Projektablauf Ergebnisstrukturplan Corp_PadMan Projektdokumentation Systementwicklung BFH Upload Abstract Projektmanagement Projektantrag IT Post Ausgangslage Poster Situationsanalyse Projektantrag BFH Projektplan Anforderungen Projektstatusberichte Checkliste Corp_PadMan Systemanforderungen Corp_PadMan Checkliste Corp_LogObi Systemanforderungen Corp_LogObi Checkliste Corp_JobMonitor Systemanforderungen Corp_JobMonitor Qualitätssicherung Migrationsdesign (inkl. Tests) System / Prototyping Systemdesign Corp_PadMan Systemdesign Corp_LogObi Risikomanagement Systemdesign Corp_JobMonitor Risikokatalog Abbildung 2: Ergebnisstrukturplan. 3.2 Arbeitsstrukturplan Für den Arbeitsstrukturplan siehe JIRA ([02]). PP_PADMAN_Projektplan_V01.03.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 5/7 Projektname Dokumenttitel Artifaktname 4 Corp_PadMan Projektplan Projektplan Informationstechnologie Aufwands- und Terminplan 4.1 Grobplan Beim Projekt Corp_PadMan handelt es sich um die Masterthesis von Pascal Irminger, Marcel Lehmann und Axel Zenklusen. Diese Masterthesis dauert vom 24.10.2011 bis 29.03.2012. 4.1.1 Aufwände (Soll und Ist) für SE-/QS-/RM-/KM-/PM-Aktivitäten Die Aufwände werden während dem Projekt laufend geschätzt und verfolgt. Für weitere Details siehe JIRA ([02]). 4.1.2 Termine (Ziel- und Ist-Termine) für SE-/QS-/RM-/KM-/PM-Aktivitäten Das Projekt wird in diverse Sprints à zwei Wochen aufgeteilt. Phase Initialisierung Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6 Sprint 7 Termin 30.10.2011 13.11.2011 27.11.2011 11.12.2011 25.12.2011 08.01.2012 22.01.2012 05.02.2012 Sprint 8 19.02.2012 Sprint 9 04.03.2012 Sprint 10 18.03.2012 Bemerkung Corp_LogObi, Version 1.0 beta Corp_PadMan, Version 1.0 beta Corp_PadMan, Version 1.0 RC Corp_LogObi, Version 1.0 RC Corp_JobMonitor, Version 1.0 beta Corp_PadMan, Version 1.0 Final Corp_LogObi, Version 1.0 Final Corp_JobMonitor, Version 1.0 Final Migration 4.1.3 Meilensteinplan Unten stehende Tabelle zeigt die Meilensteine im Projekt PadMan. Meilensteine, welche eine Interaktion mit der Berner Fachhochschule BFH haben, erhalten die Markierung [BFH] vorangestellt. [BFH] [BFH] [BFH] [BFH] [BFH] Meilenstein Eingabe Abstract Upload Projektantrag Implementation abgeschlossen Eingabe Präsentationsbedürfnisse Migration vorbereitet (Testläufe) Abgabe Dokumentation/Anhänge Upload Poster Termin 28.11.2011 28.11.2011 19.02.2012 02.03.2012 11.03.2012 29.03.2012 29.03.2012 KW KW 48 / 2011 KW 48 / 2011 KW 07 / 2012 KW 09 / 2012 KW 10 / 2012 KW 12 / 2012 KW 12 / 2012 4.1.4 Zu- und Ausliefertermine Unten stehende Tabelle hält Termine gesondert fest, welche auch projektexterne Stellen betreffen wie Bereitstellen von Ergebnissen, usw. [BFH] [BFH] [BFH] [BFH] [BFH] Meilenstein Eingabe Abstract Upload Projektantrag Eingabe Präsentationsbedürfnisse Abgabe Dokumentation/Anhänge Upload Poster Termin 28.11.2011 28.11.2011 02.03.2012 29.03.2012 29.03.2012 KW KW 48 / 2011 KW 48 / 2011 KW 09 / 2012 KW 12 / 2012 KW 12 / 2012 Verantwortlich Pascal Irminger Pascal Irminger Pascal Irminger Pascal Irminger Pascal Irminger Wo? Diplomportal Diplomportal Diplomportal Diplomportal Diplomportal 4.2 Feinplan Für den Feinplan siehe JIRA ([02]). PP_PADMAN_Projektplan_V01.03.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 6/7 Projektname Dokumenttitel Artifaktname 5 Corp_PadMan Projektplan Projektplan Informationstechnologie Einsatzmittelplan 5.1 Personal Die Arbeiten werden unter den drei Entwicklern gemäss deren Rollen im Organigramm aufgeteilt. Die Personen sind in den Rollen jeweils verantwortlich und können das Projektteam jeweils in die Arbeiten mit einbeziehen. Die Aufwände werden möglichst gleichmässig auf die drei Entwickler aufgeteilt. Die zur Verfügung stehende Zeit ergibt sich aus den Restguthaben den Ausbildungsverträgen AZE (Arbeitszeiterleichterung) zuzüglich einmalig je Entwickler 100 Stunden auf die Intranet-Wartungskostenstelle sowie der Freizeit der Entwickler (Ferienguthaben, Überzeit, etc.). Die Buchungen auf die IntranetWartungskostenstelle dürfen in Absprache mit der Leitung IT13 erst ab Januar 2012 erfolgen. 5.2 Sachmittel Es werden keinerlei besondere Sachmittel benötigt. PP_PADMAN_Projektplan_V01.03.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 7/7 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Risikokatalog Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung RK Risikokatalog Corp_PadMan PADMAN Irminger Pascal, IT133 28.03.2012 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 X01.01 X01.02 X01.03 X01.04 X01.05 X01.06 V01.06 21.11.2011 19.12.2011 09.01.2012 30.01.2012 16.02.2012 05.03.2012 28.03.2012 28.03.2012 Neues Dokument Aktualisierung Risikokatalog Aktualisierung Risikokatalog Aktualisierung Risikokatalog Aktualisierung Risikokatalog Aktualisierung Risikokatalog Abschluss Risikokatalog Freigabe Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Haefeli Stefan, IT132 RK_PADMAN_Risikokatalog_V01.06.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 1/6 Projektname Dokumenttitel Artifaktname Corp_PadMan Risikokatalog Risikokatalog Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 3 1.1 Zweck ........................................................................................................................................................ 3 1.2 Beschreibung ............................................................................................................................................. 3 1.3 Tailoring ..................................................................................................................................................... 3 1.4 Definitionen, Akronyme und Abkürzungen ................................................................................................ 3 1.5 Referenzen ................................................................................................................................................ 3 2 Risiken .......................................................................................................................................................... 4 3 Massnahmen ................................................................................................................................................ 5 3.1 Eingeleitete Massnahmen .......................................................................................................................... 5 3.2 Nicht eingeleitete Massnahmen ................................................................................................................. 6 RK_PADMAN_Risikokatalog_V01.06.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 2/6 Projektname Dokumenttitel Artifaktname 1 Corp_PadMan Risikokatalog Risikokatalog Informationstechnologie Allgemeines 1.1 Zweck Der Risikokatalog enthält die Auflistung aller Risiken mit deren Bewertung und aller Massnahmen mit deren Auswirkungen. 1.2 Beschreibung Die Risiken und Massnahmen werden gesammelt und im Risikokatalog aufgelistet und erklärt. Die Risiken werden bewertet. Dabei kommen entsprechende Hilfsmittel, Messinstrumente und -kriterien (aus dem RM-Plan) zum Einsatz. Die Auswirkungen der Massnahmen erfolgt indirekt mittels erneuter Risikobeurteilung oder mittels Feedbacks der Betroffenen zu den eingeleiteten Massnahmen. Der Risikokatalog ist ein dynamisches Dokument und wird dementsprechend oft in Form einer Tabelle erstellt. Die Archivierung der älteren Versionen, bzw. Ergebnisse muss sichergestellt sein. 1.3 Tailoring Der Risikokatalog kann in kleinen Projekten weggelassen werden, falls die Überwachung und Auflistung der Risiken und Massnahmen im RM-Bericht erfolgt. 1.4 Definitionen, Akronyme und Abkürzungen Wort Definition PWW Post Wide Web – Intranet der Schweizerischen Post 1.5 Referenzen Nr. Titel [01] [02] [03] Checkliste PWW Projekt für Corp_PadMan: CH_PADMAN_ChecklistPWWProjekt.xlsx Checkliste PWW Projekt für Corp_LogObi: CH_LOGOBI_ChecklistPWWProjekt.xlsx Checkliste PWW Projekt für Corp_JobMonitor: CH_JOBMON_ChecklistPWWProjekt.xlsx RK_PADMAN_Risikokatalog_V01.06.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 3/6 Projektname Dokumenttitel Artifaktname Corp_PadMan Risikokatalog Risikokatalog Informationstechnologie 2 Risiken ID Risiko R01 Akzeptanz der Projektdurchführung bei der Leitung Stabilität des Systems (Fehleranfälligkeit, Performance, etc.) Zeit – Die Terminsetzung ist von Beginn an sehr sportlich. R04 Ressourcenausfall (Person) R05 Vollständiges Ersetzen und Abschalten der bestehenden Applikationsverwaltung nicht möglich. Bestehende Intranet-Applikationen funktionieren mit neuer Umgebung nicht mehr und müssen bis zur Einführung aufgrund Inkompatibilität publiziert werden. Neue Konzepte der Applikationsverwaltung werden von den Benutzern nicht verstanden. Ungenügende Software-Qualität: die neuen Applikationen sind nicht einsatzfähig oder werden nicht akzeptiert. R02 R03 R06 R07 R08 Legende: Kleines Risiko RK_PADMAN_Risikokatalog_V01.06.docx Status Vorbeugende Massnahmen R01M01 Verantwortlich Termin Irminger Pascal 24.10.2011 R02M01 Irminger Pascal 28.03.2012 R03M01, R03M02, R03M03, R03M04 R04M01, R04M02, R04M03, R04M04 R05M01, R05M02 Irminger Pascal 28.03.2012 Irminger Pascal 28.03.2012 Irminger Pascal 28.03.2012 R06M01, R06M02 Irminger Pascal 28.03.2012 R07M01 Irminger Pascal 28.03.2012 R08M01, R08M02, R08M03 Irminger Pascal 28.03.2012 Mittleres Risiko © Die Schweizerische Post Ausgabedatum 28.03.2012 Grosses Risiko 4/6 Projektname Dokumenttitel Artifaktname 3 3.1 ID Corp_PadMan Risikokatalog Risikokatalog Informationstechnologie Massnahmen Eingeleitete Massnahmen Massnahmenbeschreibung R01M01 R02M01 Die Leitung wird so früh wie möglich ins Boot geholt und darf laufend mitentscheiden. Anwenden von Unit-Tests, etc. R03M01 Rollende Taskplanung (iterativ) und -kontrolle durchführen. R03M02 Umzusetzende Tasks definieren und priorisieren. R03M03 PadMan-Features streichen: Component löschen R03M04 LogObi-Features streichen: Applikation je LogEvent ansehen Auswertungen ansehen Reserven einplanen R04M01 R04M02 Reserven prüfen und gegebenenfalls nutzen R04M03 Stellvertretung Projektleiter definieren. R04M04 Rigoroses Changemanagement. RK_PADMAN_Risikokatalog_V01.06.docx Soll-Auswirkung Datum der Umsetzung Ist-Auswirkung Akzeptanz steigern. 24.10.2011 Projekt wird akzeptiert und unterstützt. Funktionalität sicherstellen, Refactoring-Qualität erhöhen. Endtermin kann eingehalten werden. laufend Vorgehen hat sich als gut erwiesen. 28.03.2012 laufend 28.03.2012 Es wird klar, welche Features wegfallen würden, so dass der Endtermin eingehalten werden kann. Endtermin kann eingehalten werden 05.12.2011 Ressourcenengpässe wurden frühzeitig erkannt und Nice-to-haveAnforderungen konnten gestrichen werden. Am KernteamMeeting wurden die neuen Features diskutiert und priorisiert. 19.02.2012 Endtermin kann eingehalten werden 19.02.2012 Projektumfang wurde gekürzt. Endtermin wieder realistisch. Projektumfang wurde gekürzt. Endtermin wieder realistisch. Puffer haben für Unvorhergesehenes. Puffer für Unvorhergesehenes einsetzen, ohne die Anforderungen kürzen zu müssen. Projekt kann bei Ausfall Projektleiter am Laufen gehalten werden. Feature Requests, welche von aussen hinzukommen, sollen auf nach dem Projekt verschoben werden. 21.11.2011 Puffer haben für Unvorhergesehenes. Puffer aufgebraucht. Weiterer ungeplanter Ausfall resultiert in Kürzung der Anforderungen. Projekt kann bei Ausfall Projektleiter am Laufen gehalten werden. Vorgehen hat sich als gut erwiesen. 21.11.2011 19.02.2012 laufend 21.12.2012 laufend © Die Schweizerische Post Ausgabedatum 28.03.2012 Beurteilung der IstAuswirkung 24.10.2011 05.12.2011 19.02.2012 24.01.2012 21.12.2012 28.03.2012 5/6 Projektname Dokumenttitel Artifaktname Corp_PadMan Risikokatalog Risikokatalog Informationstechnologie ID Massnahmenbeschreibung Soll-Auswirkung Datum der Umsetzung Ist-Auswirkung R05M01 Frühzeitige Analyse der Ist-Situation und sämtlicher Schnittstellen. Migrationsqualität maximal. laufend R05M02 Vorzeitige vorübergehende Umschaltungen vor eigentlicher Migration einplanen, durchführen und analysieren. Migrationsqualität erhöhen. 08.03.2012 15.03.2012 R06M01 Design wird insofern erarbeitet, dass die Publikation keine IntranetApplikation betrifft. Losgelöste produktive Tests vor der Inbetriebsetzung. Vereinfachung der Migration. laufend Vorgehen hat sich als gut erwiesen. Missachtete Schnittstellen wurden während den Testmigrationen entdeckt und konnten behoben werden. Vorgehen hat sich als gut erwiesen. Missachtete Schnittstellen wurden während den Testmigrationen entdeckt und konnten behoben werden. Vorgehen hat sich als gut erwiesen. Produktive Lauffähigkeit vor Inbetriebsetzung sichergestellt. 08.03.2011 R07M01 Planung eines KernteamMeetings pro Sprint. laufend R08M01 Planung von: Unit-Tests DB-Review Core-Review CI/CD-Tests Usability-Check Tests und Reviews tracken. Nutzen der Benutzer im Fokus haben. Akzeptanz der Anwendung erhöhen. Prozesse sind eingehalten. Software kann störungsfrei eingeführt werden. Software kann störungsfrei eingeführt werden. laufend Abhängigkeiten sind bekannt. 05.12.2011 R06M02 R08M02 R08M03 Organisation von Kernteam-Meetings, um Abhängigkeiten frühzeitig zu erkennen. 09.12.2011 Beurteilung der IstAuswirkung 28.03.2012 28.03.2012 28.03.2012 Vorgehen hat sich als gut erwiesen. Missachtete Schnittstellen wurden während den Testmigrationen entdeckt und konnten behoben werden. Ideen und Prozesse werden kritisch hinterfragt. Anforderungen werden priorisiert. Prozesse sind eingehalten. Software kann störungsfrei eingeführt werden. 28.03.2012 Reviews sind – wenn auch etwas spät – alle erledigt. Am KernteamMeeting wurden Abhängigkeiten besprochen. 28.03.2012 05.03.2012 09.12.2011 05.12.2011 3.2 Nicht eingeleitete Massnahmen Keine. RK_PADMAN_Risikokatalog_V01.06.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 6/6 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Situationsanalyse Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung SI Situationsanalyse Corp_PadMan Corp_PadMan PADMAN Irminger Pascal, IT133 29.03.2012 Zenklusen Axel, IT131 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 24.10.2011 Neues Dokument X01.01 21.11.2011 X01.02 V01.02 22.11.2011 05.12.2011 Haefeli Stefan, IT132 X02.00 28.03.2012 Analyse Usability-Fragebogen hinzugefügt Ergänzung Job-Journal, Jobübersicht Freigabe aufgrund KernteamMeeting Schlussanalyse hinzugefügt Zenklusen Axel, IT131 Lehmann Marcel, IT132 Irminger Pascal, IT133 Irminger Pascal, IT133 V02.00 29.03.2012 Freigabe Lehmann Marcel, IT132 Irminger Pascal, IT133 Haefeli Stefan, IT132 SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 1/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 3 1.1 Zweck ........................................................................................................................................................ 3 1.2 Beschreibung ............................................................................................................................................. 3 1.3 Definitionen, Akronyme und Abkürzungen ................................................................................................ 3 1.4 Referenzen ................................................................................................................................................ 3 2 Beschreibung des Ist-Systems ........................................................................................................................ 3 2.1 Übersicht ................................................................................................................................................... 3 2.1.1 Teamportal ............................................................................................................................................. 3 2.1.2 LogEventViewer ...................................................................................................................................... 3 2.1.3 Job-Journal / Jobübersicht ....................................................................................................................... 3 2.2 Funktionen ................................................................................................................................................ 4 2.2.1 Applikationsverwaltung .......................................................................................................................... 4 2.2.2 Jobübersicht ........................................................................................................................................... 4 2.2.3 Auswertung USP ..................................................................................................................................... 4 2.2.4 Relink ..................................................................................................................................................... 4 2.2.5 Brokenlinks ............................................................................................................................................. 4 2.2.6 Shortcuts ................................................................................................................................................ 5 2.2.7 LogEventViewer ...................................................................................................................................... 5 2.2.8 Job-Journal ............................................................................................................................................. 5 2.3 Datenfelder................................................................................................................................................ 6 2.3.1 Applikationsverwaltung .......................................................................................................................... 6 2.3.2 LogEventViewer ...................................................................................................................................... 7 2.4 Abhängigkeiten (Fremdzugriff) .................................................................................................................. 7 2.4.1 Teamportal ............................................................................................................................................. 7 2.4.2 LogEventViewer ...................................................................................................................................... 9 2.4.3 Job-Journal (SysLog) / Jobübersicht ......................................................................................................... 9 3 Usability Fragebogen .................................................................................................................................. 10 3.1 Auswertung ............................................................................................................................................. 12 3.2 Analyse .................................................................................................................................................... 14 4 Schwachstellenanalyse ................................................................................................................................ 14 4.1 Teamportal............................................................................................................................................... 14 4.2 LogEventViewer ....................................................................................................................................... 15 4.3 Job-Journal / Jobübersicht ........................................................................................................................ 15 5 Sicherheit.................................................................................................................................................... 15 5.1 Teamportal............................................................................................................................................... 15 5.2 LogEventViewer ....................................................................................................................................... 15 5.3 Job-Journal / Jobübersicht ........................................................................................................................ 15 6 Zukünftige Entwicklung .............................................................................................................................. 15 6.1 Teamportal............................................................................................................................................... 15 6.2 LogEventViewer ....................................................................................................................................... 16 6.3 Job-Journal / Jobübersicht ........................................................................................................................ 16 7 Schlussanalyse ............................................................................................................................................ 16 7.1 Auswertung ............................................................................................................................................. 16 7.2 Analyse und Fazit ..................................................................................................................................... 18 SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 2/18 Projektname Dokumenttitel Artifaktname 1 Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie Allgemeines 1.1 Zweck Die Situationsanalyse beschreibt und analysiert die gegenwärtige Situation und die zukünftigen Entwicklungen im Untersuchungsbereich des Systems. 1.2 Beschreibung Die Situationsanalyse bildet zusammen mit den Systemzielen die fachliche Basis für die Definition der vom zukünftigen System zu erfüllenden Systemanforderungen. 1.3 Definitionen, Akronyme und Abkürzungen Wort Definition HTTP PWW SSIS SQL Hypertext Transfer Protocol – Protokoll zur Übertragung von Daten über ein Netzwerk Post Wide Web – Intranet der Schweizerischen Post SQL Server Integration Services Structured Query Language 1.4 Referenzen Keine. 2 Beschreibung des Ist-Systems 2.1 Übersicht 2.1.1 Teamportal Das Teamportal wird für die Unterstützung der Entwicklung von Applikationen verwendet. Dabei werden Daten für den Betrieb einer Applikation verwaltet sowie auch Portfolio-Angaben (Hermes etc.) erfasst. Zusätzlich werden auch Personen mit ihrer Rolle zu einer Applikation angegeben. Für den Betrieb einer Applikation ist die Erfassung des ConnectionStrings für den Datenbankzugriff essentiell. Zu diesen Hauptfunktionen wurde das Teamportal für das Verwalten des Intranets PWW erweitert. Es ist möglich, eine Serveranfrage sowohl von fehlenden Dateien als auch von existierenden Seiten umzuleiten (Shortcuts http://pww.post.ch/wcm => http://pww.post.ch/appl/corp/wcm). Auch kann ein Reporting über die HTTPAntwort 404 erstellt werden. 2.1.2 LogEventViewer Der LogEventViewer holt die Logs aus der Applikation Teamportal und zeigt diese dem Entwickler an. Die Logs werden von der Library ins Teamportal geschrieben. 2.1.3 Job-Journal / Jobübersicht Das Job-Journal ist eine weitere bestehende Intranet-Applikation. Es dient als Hilfsmittel zur Überwachung der SSIS-Jobs, resp. deren Steps (ein Job kann mehrere Steps haben), und zeigt deren Logs an. Es bezieht die LogDaten direkt aus der Datenbank, in welche der SSIS hinein loggt. Weiter werden auf den Datenbank-Servern regelmässig Traces aufgezeichnet. Das bestehende Job-Journal bietet eine Webpage, welche diejenigen SQL-Queries mit mehr als 10‘000 Logical Reads anzeigt (konfigurierbar). Eine weitere Webpage zeigt Indexes, welche der Datenbank-Server zu den bereits bestehenden Indexes dazu empfehlen würde. Diese Informationen werden direkt aus Systemtabellen des SQL Servers bezogen. Die Jobübersicht ist eine weitere Software-Komponente, worin die Jobs überwacht werden können. Die Jobübersicht ist direkt in das bestehende Teamportal integriert. Es erhält periodisch Informationen aus der Systemdatenbank msdb des SQL Server Agent, welche verschiedene Daten sämtlicher Jobs, wie z.B. Job-Schedules und Job-Runs beinhaltet. Den einzelnen Jobs können hier Bemerkungen hinzugefügt werden. Beispielsweise wird zu einem Job die Information hinterlegt, wie schwerwiegend ein Error-Run ist, damit der entsprechende Datenbankadministrator weiss, ob der Job im Fehlerfall manuell angestossen werden soll. SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 3/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse 2.2 Funktionen 2.2.1 Applikationsverwaltung Nr. Kontext 1 Applikationen-Übersicht 2 Applikation-Übersicht 3 4 5 6 7 Kategorie Personen Hermes Light Portfolio Dokumente 2.2.2 Jobübersicht Nr. Kontext 1 Übersicht 2.2.3 Auswertung USP Nr. Kontext 1 Übersicht 2.2.4 Relink Nr. Kontext 1 Übersicht 2.2.5 Brokenlinks Nr. Kontext 1 Übersicht SI_PADMAN_Situationsanalyse_V02.00.docx Informationstechnologie SubNr. 1 2 3 4 5 6 7 1 2 1 1 1 1 1 2 Funktion Applikation erstellen Applikation anzeigen Applikation suchen Applikation im SendTo hinzufügen Applikation kopieren Applikation filtern Applikation löschen Applikationsdaten CRUD ConnectionString CRUD Kategorien (read, update) Personen und ihre Rollen CRUD Hermes-Volltext (read, update) Portfolio-Volltext (read, update) Links zu Dokumente CRUD Weitere Angaben zu (Abhängigkeiten, Pendenzen, Problembehandlung, Schnittstellen, Überwachung und Wiederkehrende Aufgaben) CRUD SubNr. 1 2 3 4 5 6 Funktion Jobs anzeigen Jobs filtern Job Datensatz löschen Job „obsolete“ setzen Job-Runs als „erledigt“ markieren Log von Job-Runs anzeigen SubNr. 1 2 Funktion Anzeigen Auswertung starten SubNr. 1 2 3 4 5 6 Funktion Anzeigen Filtern Löschen Bearbeiten Kopieren Erstellen SubNr. 1 2 3 4 5 Funktion Anzeigen Filtern Löschen Mail an Entwickler senden Umgebung wechseln (Production, Integration, Development) © Die Schweizerische Post Ausgabedatum 29.03.2012 4/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse 2.2.6 Shortcuts Nr. Kontext 1 Übersicht 2.2.7 LogEventViewer Nr. Kontext 1 Filter nach 2 Übersicht 2.2.8 Job-Journal Nr. Kontext 1 Filter nach 2 Übersicht SI_PADMAN_Situationsanalyse_V02.00.docx Informationstechnologie SubNr. 1 2 3 4 Funktion Anzeigen Löschen Bearbeiten Testen SubNr. 1 2 3 4 5 6 7 8 9 10 11 1 Funktion Applikations-ID Meine Applikationen Meine Applikationen inkl. Stellvertretung Level (Fatal, Error, Warnung, Info) Datum Benutzer Maschine Platform (Intranet, Extranet etc) Environment (Dev, Int, Prod) Pfad Schlüsselwort Löschen SubNr. 1 2 3 1 2 Funktion Job-Name AID (Application-ID) Job-Type (DTS/VBS, SSIS) Details zu Job-Steps anzeigen Job-Stets als „erledigt“ markieren © Die Schweizerische Post Ausgabedatum 29.03.2012 5/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie 2.3 Datenfelder 2.3.1 Applikationsverwaltung Im untenstehenden Bild sind die wichtigsten Tabellen zur Verwaltung der Applikationen dargestellt. tabApplicationInfo (dbo) tabApplication (dbo) lngIID strAID strAID strDescriptionD intType strDescriptionF strHeader strDescriptionI memDesc strDescriptionE dtmUpdate strUser lngNoteTypeID tabMatrixApplCategory (dbo) lngMACID strAID lngCategoryID dtmUpdate strUser lngStateID strConnUserID strConnUserDBName tabCategory (dbo) strConnUserPassword lngCategoryID strConnUserOptions strDescD intTimeOut strDescF strConnAdminID strDescI strConnAdminDBName intType strDescE strConnAdminPassword strBookmark bitActive strDBServer strHeaderD dtmUpdate strVersion strHeaderF strUser dtmDate strHeaderI strContactPerson strHeaderE memOrder tabApplicationInfoTypes (dbo) memDescription memCost tabSensibility (dbo) memQuantum lngSensibilityID memFeature strBookmark dtmStartDate strSensibilityD dtmEndDate strSensibilityF dtmOfferDate strSensibilityI curOfferAmount strSensibilityE intWorkingDays bitActive strUrlUser strUrlAdmin strDirectory tabMatrixAccount (dbo) lngMatrixAccountID strAID strUser strNTAccount strSID lngAccountTypeID bitActive dtmUpdate strUserUpdate strComment bitDefault memComment curRunningCosts bitAspNet tabConnectionString (dbo) lngCSID strAID strKey strUserID strDBName strPassword strOptions intTimeOut strSqlServer dtmInsert strInsertUser dtmUpdate strUpdateUser memAspNetFunctiona... bitExtranet memExtranetFunction... memSubstituteInfo lngSensibilityID bitDebug bitSearch bitOutOfOrder dtmUpdate strUser strEntwickler strStellvertreter tabApplicationState (dbo) lngStateID strBookmark strDescD strDescF strDescI strDescE bitShowWeak _orgID strBezD strBezF strBezI dtmDatum strWeiterePersonen strKontakt memPortfolio SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 6/18 Projektname Dokumenttitel Artifaktname 2.3.2 Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie LogEventViewer Applikations-ID Beschreibung Entwickler Stellvertreter Kontakt Maschine Environment Platform Benutzer Pfad App-Properties (immer Leerstring) Message Exception Zeit [ms] RecordNbr Prozess-ID Thread-ID Browser Level 2.4 Abhängigkeiten (Fremdzugriff) 2.4.1 Teamportal Die Datenbank des Teamportals wird von einigen Anwendungen benutzt. Corp_Access Zugriffsberechtigungsverwaltung für unsere Applikationen. Zugriff scheint noch ohne Views zu sein. Corp_Alarming Alarmierung bei speziellen Ereignissen/Gegebenheiten (applikationsspezifisch). Zugriff über Views. CREATE VIEW dbo.qryMandantView AS SELECT DISTINCT dbo.tabMandant.bitUsePikettPlan ,dbo.tabMandant.bitLogging ,dbo.tabMandant.bitWarnLongDuration ,dbo.tabMandant.dtmInsert ,dbo.tabMandant.strInsertUser ,dbo.tabMandant.dtmUpdate ,dbo.tabMandant.strUpdateUser ,dbo.tabMandant.strApplID ,va.strDescriptionD ,va.strDescriptionF ,va.strDescriptionI ,va.strDescriptionE ,va.strDevCalc AS strEntwickler ,va.strDepCalc AS strStellvertreter ,va.lngStateID FROM Corp_TeamPortal.dbo.qryViewApplication AS va RIGHT OUTER JOIN dbo.tabMandant ON va.strAID = dbo.tabMandant.strApplID SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 7/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie CREATE VIEW dbo.qryUserApplication AS SELECT ap.strAID ,ap.strNTAccount ,ap.bitActive ,ap.bitDefault ,e.strEmail ,e.strPhone ,e.strMobilePrivate ,dbo.tabAlarmGroup.bitSMSToDeveloper ,dbo.tabAlarmGroup.bitEmailToDeveloper ,dbo.tabAlarmGroup.bitEmailToStv ,dbo.tabAlarmGroup.bitSMSToStv ,dbo.tabAlarmGroup.lngAlarmGroupID ,CASE lngAccountTypeID WHEN 1 THEN 'DEV' ELSE CASE lngAccountTypeID WHEN 2 THEN 'DEP' ELSE 'unknown' END END AS strAccountType FROM Corp_TeamPortal.dbo.tabMatrixAccount AS ap LEFT OUTER JOIN Corp_MetaData.dbo.qryOrgEmployee AS e ON e.strUserID = ap.strNTAccount RIGHT OUTER JOIN dbo.tabAlarmGroup ON ap.strAID = dbo.tabAlarmGroup.strApplID WHERE ap.bitActive = 1 AND ap.lngAccountTypeID IN (1, 2) CREATE VIEW dbo.qryMandantSettings AS SELECT DISTINCT dbo.tabAlarmGroup.lngAlarmGroupID ,dbo.tabAlarmGroup.strName ,dbo.tabAlarmGroup.strApplID AS strGroupOwnerApplId ,dbo.tabAlarm.strApplID AS strGroupUserApplId ,dbo.tabAlarmGroup.dtmInsert ,dbo.tabAlarmGroup.strInsertUser ,dbo.tabAlarmGroup.dtmUpdate ,dbo.tabAlarmGroup.strUpdateUser ,dbo.tabAlarmGroup.bitSMSToDeveloper ,dbo.tabAlarmGroup.bitEmailToDeveloper ,dbo.tabAlarmGroup.bitEmailToStv ,dbo.tabAlarmGroup.bitEmailToPwwAdmin ,dbo.tabAlarmGroup.strDefaultEmailReceiver ,dbo.tabAlarmGroup.strDefaultSMSReceiver ,dbo.tabAlarmGroup.bitSMSToStv ,dbo.tabAlarmGroup.bitGlobalAlarmGroup ,Corp_TeamPortal.dbo.qryViewApplication.strDevCalc AS strDevelopers ,Corp_TeamPortal.dbo.qryViewApplication.strDepCalc AS strDeppen FROM Corp_TeamPortal.dbo.qryViewApplication RIGHT OUTER JOIN dbo.tabAlarmGroup ON Corp_TeamPortal.dbo.qryViewApplication.strAID = dbo.tabAlarmGroup.strApplID LEFT OUTER JOIN dbo.tabAlarm ON dbo.tabAlarmGroup.lngAlarmGroupID = dbo.tabAlarm.lngAlarmGroupID SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 8/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie Corp_IISStatisticTool Anzeige was auf unseren Datenbankservern so läuft. Zugriff unklar. In Abklärung bei Heuberger Cedric. Corp_Impressum Anzeige des Impressums in den Anwendungen. Zugriff scheint noch ohne Views zu sein. Entwickler Heuberger Cedric ist schon vorinformiert. Corp_KDPService Kundendaten Post. Zugriff unklar. Robert Marti weiss mehr. Corp_LogEventViewer Log Anzeige (wird abgelöst durch Corp_LogObi). Corp_Marge Mandantenfähige Auftragsgenerierung. SELECT strAID AS lngID ,strDescriptiond + ' ('+ strAid + ')' AS strBez ,ROW_NUMBER() over (order by strDescriptionD) as RowNumber FROM Corp_Teamportal.dbo.qryApplData WITH (NOLOCK) WHERE strState = 'Appl' ORDER BY 3 Corp_SendTo06 Deployment-Werkzeug. 2.4.2 LogEventViewer Es bestehen keine Abhängigkeiten. 2.4.3 Job-Journal (SysLog) / Jobübersicht Es bestehen keine Abhängigkeiten. SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 9/18 Projektname Dokumenttitel Artifaktname 3 Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie Usability Fragebogen Für das bestehende Teamportal wurde ein Usability Fragebogen bei ausgewählten Personen der Abteilung IT13 verteilt. Diese Umfrage besteht aus folgenden Fragen: ID Fragestellung 1 Insgesamt bin ich mit der Applikationsverwaltung zufrieden. 2 Das Layout der Seiten ist übersichtlich. 3 Die Schrift ist immer gut lesbar. 4 Es ist zu jeder Zeit klar ersichtlich, welche Funktionen mir zur Verfügung stehen. 5 Es ist jederzeit klar ersichtlich, für welche Umgebung (Dev/Int/Prod) ich Daten sehe bzw. bearbeite. 6 Die Applikation kann ich leicht bedienen. 7 Die Bedienung der Applikation ist intuitiv. 8 Ich komme mit wenigen Klicks an die gewünschten Informationen. 9 Die Seiten werden schnell geladen. 10 Die Applikation unterstützt mich. 11 Die Informationen sind für mich verständlich und logisch. 12 Verstehe ich etwas nicht, so erhalte ich von der Applikation eine Hilfestellung. 13 Ich finde meine Applikationen leicht. 14 Die Suchfunktion hilft mir eine Applikation zu finden. 15 Der Aufbau ist für mich logisch (Startseite). 16 Die angezeigten Informationen sind für mich nutzlos (Startseite). SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 Trifft zu Trifft eher zu Trifft eher nicht zu Trifft nicht zu ++ + - -- 10/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie Die folgenden Aussagen betreffen deine Aufgabe bzw. Funktion. ID Fragestellung Trifft zu Trifft eher zu Trifft eher nicht zu Trifft nicht zu ++ + - -- 17 Die Applikation unterstützt mich. 18 Ich erhalte genug Informationen. 19 Ich komme mit wenigen Klicks zu meinen Informationen. 20 Informationen sind an einem Ort vorhanden. 21 Die Suche bietet mir genug Funktionen, um an meine Informationen zu gelangen. 22 Bitte beschreibe deine Ziele in Stichworten, welche Du mit der Applikation erreichen willst. (z.B. Um den Verantwortlichen zu wissen oder für die Stellvertreter-Infos). ID 23 Fragestellung Wie häufig verwendest Du die Applikation (1 = nie / 6 = täglich). ID 24 Fragestellung In welcher Rolle bzw. Aufgabe benutzt Du die Applikation am häufigsten? (Mehrfachauswahl möglich). 25 Falls Dir eine wichtige Funktion fehlt, trage dies bitte in folgendes Feld. SI_PADMAN_Situationsanalyse_V02.00.docx Entwickler 1 2 Support © Die Schweizerische Post Ausgabedatum 29.03.2012 3 4 Wartung 5 6 Manager 11/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie 26 Falls Du einen Kommentar (besonders gut/besonders schlecht) oder Verbesserungsvorschläge hast, trage dies bitte in folgendes Feld ein. 27 Falls Du eine Anregung beliebiger Form zu dieser Umfrage hast, trage dies bitte in folgendes Feld ein. 3.1 Auswertung Beim Mittelwert wurde der tiefste Wert sowie der höchste Wert entfernt. Textantworten wurden 1:1 übernommen und Rechtschreibfehler nicht korrigiert. ID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Fragestellung Insgesamt bin ich mit der Applikationsverwaltung zufrieden. Das Layout der Seiten ist übersichtlich. Die Schrift ist immer gut lesbar. Es ist zu jeder Zeit klar ersichtlich, welche Funktionen mir zur Verfügung stehen. Es ist jederzeit klar ersichtlich für welche Umgebung (Dev/Int/Prod) ich Daten sehe bzw. bearbeite. Die Applikation kann ich leicht bedienen. Die Bedienung der Applikation ist intuitiv. Ich komme mit wenigen Klicks an die gewünschten Informationen. Die Seiten werden schnell geladen. Die Applikation unterstützt mich. Die Informationen sind für mich verständlich und logisch. Verstehe ich etwas nicht, so erhalte ich von der Applikation eine Hilfestellung. Ich finde meine Applikationen leicht. Die Suchfunktion hilft mir eine Applikation zu finden. Der Aufbau ist für mich logisch (Startseite). Die angezeigten Informationen sind für mich nutzlos (Startseite). Die Applikation unterstützt mich. Ich erhalte genug Informationen. SI_PADMAN_Situationsanalyse_V02.00.docx Mittelwert 3.6 Minimalwert 0 Maximalwert 6 3.2 5.2 2.8 2 4 2 6 6 4 4.8 2 6 3.6 3.2 3.2 2 2 0 6 4 6 4 3.2 4 2 2 2 6 6 6 0.4 0 2 4.8 5.6 4 2 6 6 4 1.6 2 0 6 4 4 3.2 2 2 6 6 © Die Schweizerische Post Ausgabedatum 29.03.2012 12/18 Projektname Dokumenttitel Artifaktname ID 19 20 21 23 Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie Fragestellung Ich komme mit wenigen Klicks zu meinen Informationen. Informationen sind an einem Ort vorhanden. Die Suche bietet mir genug Funktionen um an meine Informationen zu gelangen. Wie häufig verwendest Du die Applikation (1 = nie / 6 = täglich). Mittelwert 4 Minimalwert 2 Maximalwert 6 3.2 3.6 2 2 4 6 4.8 3 6 ID 24 Fragestellung In welcher Rolle bzw. Aufgabe benutzt Du die Applikation am häufigsten? (Mehrfachauswahl möglich). Entwickler 85% Support 14% Wartung 28% Manager 14% ID 22 Fragestellung Bitte beschreibe deine Ziele in Stichworten, welche Du mit der Applikation erreichen willst. (z.B. Um den Verantwortlichen zu wissen oder für die Stellvertreter-Infos). Als Stellvertreter möchte ich dort - Informationen zu Spezialitäten der Applikation finden - Informationen zu Schnittstellen finden - Kontaktangaben (Kunde/Majoruser) finden Für meine eigenen Applikationen möchte ich - Kontaktangaben (Kunde/Majoruser) finden - Möglichst einfach meine Applikationen pflegen - Sqlinstanz sehen - Pfad auf die Applikation -Verantwortlicher/Stellvertreter einer Applikation ermitteln. -Die wichtigsten Informationen zur Applikation Konzept, ERM, anderen Projektspezifischen Dokumente, u.s.w. schnell und einfach zugänglich machem -Stellvertreter-Infos -Verwalten von Applikationseigenschaften(Name, DB, etc.) - Was für Komponenten gibt es? - Dokumente? - Release? - Personen? - Jobs, Schnittstellen? - Applikationen finden - Fehler einer Applikation anschauen. - Welche Applikationen setzten welche Technologien ein ( zur Suche von Beispielcode) - Statis der Applikationen anschauen - Personalisierte Startseite (welche Applikationen mit welchen Informationen will ich sehen) - Mehr Hilfe - Projektdekblatt sollte in der Applikationen geführt werden. - Prozesse sollten besser in der Applikationen abgebildet und unterstützt werden. z.B. Die Applikationen sollte Reminder zu den verschiednen Reviews verschicken ( in einem bestimmten Intervall) - Grössere Applikationen haben mehrere Releases, diese sollt besser getrennt sein. z.B. Jeder Release hat seinen eigenen Dokumente wie Offerte, Spezifikation - Suche nach Verantwortlichen und Kontaktpersonen - Lesen von Infos für den Stv. - Nachschlagen auf welcher DB eine Applikation ist - Error-Log und Job-Kontrolle SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 13/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie ID Fragestellung 25 Falls Dir eine wichtige Funktion fehlt, trage dies bitte in folgendes Feld. Diverse einfache Management-Reportings, Indikator, wie aktuell die Einträge sind Die Auswertungen (USP) sind gut. Es wäre aber gut wenn man bei einzelnen Prozeduren noch mehr Filter setzen könnte. Erweiterte Suche z.B. nach Entwickler oder nach Appl für PF - parktisch wäre auch wenn es schlaue Schnittstellen ev. Widgets zu den Applikationen ErrorLog, Deployment, Wiki, Translation, Access etc. gibt. - ReleaseVerwaltung - Todo-Liste - ausgebaute API für andere Applikationen Suche sollte optimiert werden. Es sollte die Möglichkeit geben gewisse Begriffe zu einer Applikation als Suchbegriffe hinzuzufügen, damit das Suchresultat besser ist. -Suche über Einträge in alle Applikationen sollte möglich sein => z.B. welche Applikationen sind auf dem SQL-Server 2 ID 26 Fragestellung Falls Du einen Kommentar (besonders gut/besonders schlecht) oder Verbesserungsvorschläge hast, trage dies bitte in folgendes Feld ein. Suche ist heute nicht schlecht, Tab's haben sich auch bewährt Hilfe unzureichend Die Seite ViewApplication.aspx (Icon links) ist aus meiner Sicht unbrauchbar. --> Zuviele Infos, zuwenig strukturiert. Die Icons sind für mich nicht sprechend, diese könnten besser gewählt werden. Weiter finde ich, dass das Tab mit dem vielen Hacken automatisch ausgefüllt werden sollt, oder zumindes zum Teil. Lib kann anhand der DLL erkannt, welche im Projekt eingebunden werden usw. Bei den Kategorien verliert man mittlerweile ein wenig den Überblick. Es sind so viele neu dazu gekommen. Eine optische Unterteilung in verschiedene Hauptthemen könnte hier helfen. - Info für den Stv sollten strukturierter erfasst werden können. - Erfasste Links und Doku übersichtlicher darstellen. - Vorgabe was bei den Bemerkungen erfasst werden muss (z.B. Infos die die Leitung braucht) - klarere Strukturierung und Auflistung aller möglichen "Tools" (Sendto, Translation, Relinks, Jobs, Alarming....) die es im Zusammenhang mit einer Applikation überhaupt gibt. - Auf einen Blick sollte erkannt werden, was zu einer Applikation alles gehört. (von News, über Jobs, Schnittstellen....) ID 27 Fragestellung Falls Du eine Anregung beliebiger Form zu dieser Umfrage hast, trage dies bitte in folgendes Feld ein. Freie "Tags" wären cool, nach welchen man sortieren/finden könnte 3.2 Analyse Die Rollenverteilung entspricht in etwa der Verteilung innerhalb der Abteilung IT13. Bei der Rolle Manager ist klar ersichtlich, dass diese Rolle in der aktuellen Applikation sehr wenig berücksichtigt wird. Für die Entwickler sind die Informationen meist genügend. Handlungsbedarf ist hier bei der Usability angebracht. Auch gibt es heute wenig bis keine Hilfestellung zu den einzelnen Funktionen bzw. Informationen. Für den Grossteil der Suchanfragen genügt die bestehende Suche, es wäre aber wünschenswert, wenn hier die Suche erweitert wird. 4 Schwachstellenanalyse 4.1 Teamportal Die Applikation ist nun seit über 10 Jahren im Einsatz. In diesen Jahren wurden Anforderungen mit dem Ziel möglichst schnell und kostengünstig implementiert. Ein Beispiel zeigt hier die Verwaltung der ConnectionStrings im User-Interface wie auch in der Datenbankstruktur. Der Haupt-ConnectionString ist weiterhin in der Tabelle tabApplication und wird im User-Interface weiterhin so dargestellt. Die neuen ConnectionStrings, welche SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 14/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie anhand eines Keys unterschieden werden, durften in eine neue Tabelle und werden im User-Interface tabellarisch dem Benutzer angezeigt. Ein grosser Schwachpunkt der aktuellen Lösung ist die nicht vorhanden Historisierung. Die Applikation Teamportal hat eine extrem hohe Wichtigkeit für den Betrieb der Applikationen im PWWUmfeld. Anhand den fortwährenden Anpassungen hat die Applikation einen Stand erreicht, dass niemand eine neue Version publizieren will und falls es doch unumgänglich ist, ist dies mit enormem Zeitaufwand verbunden. 4.2 LogEventViewer Wichtige Fehler können in der Anzeige schnell untergehen. Es ist nicht möglich die Fehler zu Gruppieren und so kann ein wichtiger Fehler bei hoher Fehleranzahl untergehen. Auch werden die Fehler beim Entstehen direkt in die Datenbank von Teamportal geschrieben. Falls nun eine Abfrage mit vielen Daten im LogEventViewer erstellt wird, so kann dies eine produktive Applikation in die Knie zwingen. Entstehen plötzlich Fehler welche nicht regelmässig auftreten, so muss unter Umständen der Entwickler von den Benutzern der Applikation darüber informiert werden. 4.3 Job-Journal / Jobübersicht Zumindest die Applikation Job-Journal ist schon einige Jahre alt, die Jobübersicht wurde dann später einmal dazu implementiert. Die beiden Applikationen helfen dabei, die Jobs zu überwachen, sie arbeiten allerdings nicht mit derselben Terminologie: die eine Applikation betrachtet die Jobs als Ganzes, die andere geht eine Detailstufe tiefer und betrachtet die einzelnen Job-Steps. 5 Sicherheit 5.1 Teamportal Im Verlauf der Betriebszeit sowie auch Entwicklungszeit wurde die Sicherheit nicht berücksichtigt. So werden Account-Informationen sowohl ungeschützt in der Datenbank gespeichert als auch ungeschützt übermittelt und angezeigt. Eine Rechteverwaltung der einzelnen Applikationen wurde ebenfalls nicht implementiert. Alle können alles ändern. 5.2 LogEventViewer Hier bestehen zur Zeit keine Sicherheitsbedürfnisse, welche mit der aktuellen Lösung nicht abgedeckt wurden. 5.3 Job-Journal / Jobübersicht Hier bestehen zur Zeit keine Sicherheitsbedürfnisse, welche mit der aktuellen Lösung nicht abgedeckt wurden. 6 Zukünftige Entwicklung 6.1 Teamportal Als die Applikation entwickelt wurde, hatten sehr viele Applikationen ein Budget um 10‘000 CHF. In der heutigen Situation sind die Budgets im Bereich von mehreren 10‘000 CHF bis zu mehreren 100‘000 CHF. Dadurch sind die Bedürfnisse gestiegen und die Komplexität der Applikationen hat stark zu genommen. Auch werden die Applikation untereinander immer mehr vernetzt, was zu Abhängigkeiten zwischen den Applikationen führte. Diese Abhängigkeiten sollen in der Neu-Entwicklung besser dargestellt werden. Auch soll das Management mehr Werkzeuge für das Administrieren aller Projekte in der Abteilung IT13 erhalten. Den Entwicklern sollen der Projektstart vereinfacht werden. So soll ihnen das Aufsetzen eines Projektes (VS Solution) als auch das konfigurieren des Konfigurationsmangement abgenommen werden. Damit mit der Neu-Entwicklung die aktuellen Schwachstellen vermieden werden können, soll die neue Applikation einfacher erweiterbar sein. Applikationen werden immer komplexer und dies muss abgebildet werden können. Somit ist das Planen der Releases und das zusammenfassen von fragmentierten Applikationen ein essenzieller Teil der Neuentwicklung. Es soll auch mehrt Wert darauf gelegt werden, dass die Abläufe der Entwickler einfacher werden. Hierfür ist das automatische weitergeben der Subversion-Berechtigungen und das Ablösen des Projektdeckblattes angedacht. Falls man das Teamportal nicht von Grund auf neu entwickelt, werden so lange weitere „Flicke“ programmiert, bis das Teamportal vollends nicht mehr wartbar ist. Falls dieser Moment erreicht wird, ist es klar, dass der Aufwand einer Neuimplementierung viel teurer wäre als dies jetzt der Fall ist. SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 15/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie 6.2 LogEventViewer Zur Zeit hat der Entwickler für die Fehler eine Holschuld. Die neue Applikation soll es dem Entwickler ermöglichen, von bestimmte Ereignisse an Logs informiert zu werden. Vom Entwickler definierte Filtern sollen abgespeichert werden. Auch sollen globale Filter, welche für alle Applikationen zur Verfügung stehen, erstellt werden können und so eine Wiederverwendbarkeit der Filter erreicht werden. Auch soll anhand eines Filters die Fehler gruppiert werden können und so dem Entwickler eine bessere Übersicht von seinen Fehlern zu gewährleisten. 6.3 Job-Journal / Jobübersicht Ziel ist es, eine neue Applikation zu erstellen, welche das Gute beider bestehender Applikationen verbindet und auch die Datenquellen miteinander kombiniert. Derzeit prüft ein Datenbankadministrator manuell, welche Jobs fehlgeschlagen sind und beurteilt zumeist selbständig, wie kritisch dies ist. Die neue Applikation soll bei Bedarf ein aktives Alarming betreiben und die entsprechenden Entwickler informieren. 7 Schlussanalyse Am Ende des Projektes wurde der gleiche Fragebogen nochmals an die Teilnehmer gesendet. Dieses Mal wurde jedoch die neue Applikation Corp_PadMan, welche das Teamportal ablöst, untersucht. 7.1 Auswertung Beim Mittelwert wurde der tiefste Wert sowie der höchste Wert entfernt. Textantworten wurden 1:1 übernommen und Rechtschreibfehler nicht korrigiert. ID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Fragestellung Insgesamt bin ich mit der Applikationsverwaltung zufrieden. Das Layout der Seiten ist übersichtlich. Die Schrift ist immer gut lesbar. Es ist zu jeder Zeit klar ersichtlich, welche Funktionen mir zur Verfügung stehen. Es ist jederzeit klar ersichtlich für welche Umgebung (Dev/Int/Prod) ich Daten sehe bzw. bearbeite. Die Applikation kann ich leicht bedienen. Die Bedienung der Applikation ist intuitiv. Ich komme mit wenigen Klicks an die gewünschten Informationen. Die Seiten werden schnell geladen. Die Applikation unterstützt mich. Die Informationen sind für mich verständlich und logisch. Verstehe ich etwas nicht, so erhalte ich von der Applikation eine Hilfestellung. Ich finde meine Applikationen leicht. Die Suchfunktion hilft mir eine Applikation zu finden. Der Aufbau ist für mich logisch (Startseite). Die angezeigten Informationen sind für mich nutzlos (Startseite). Die Applikation unterstützt mich. Ich erhalte genug Informationen. Ich komme mit wenigen Klicks zu meinen Informationen. Informationen sind an einem Ort vorhanden. Die Suche bietet mir genug Funktionen um an meine Informationen zu gelangen. SI_PADMAN_Situationsanalyse_V02.00.docx Mittelwert 6 Minimalwert 2 Maximalwert 6 6 5.3 4.7 6 4 2 6 6 6 4 2 6 4.6 5.3 6 4 4 4 6 6 6 4.7 6 6 2 4 6 6 6 6 2.7 2 4 6 4.7 4 2 6 6 5.3 1 2 1 6 1 6 5.3 5.3 4 4 4 6 6 6 6 5.3 4 2 6 6 © Die Schweizerische Post Ausgabedatum 29.03.2012 16/18 Projektname Dokumenttitel Artifaktname ID 23 Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie Fragestellung Wie häufig verwendest Du die Applikation (1 = nie / 6 = täglich). Mittelwert 5.7 Minimalwert 5 Maximalwert 6 ID 24 Fragestellung In welcher Rolle bzw. Aufgabe benutzt Du die Applikation am häufigsten? (Mehrfachauswahl möglich). Entwickler 75% Support 40% Wartung 0% Manager 20% ID Fragestellung 25 Falls Dir eine wichtige Funktion fehlt, trage dies bitte in folgendes Feld. Suche nicht nur über ApplID, sondern auch über den Namen/Titel. Die Argumente der letzten Suche sollten beim erneuten öffnen der Seite wieder geladen werden. DB-Reads und fehlende Indexe - Die Suche sollte nicht sofort ausgeführt werden => unnötige Abfragen mich interessiert nur meine DB's - Einschränkung nach meinen Applikationen / Stv. sollte ermöglicht werden - Wenn DB-Server gewählt wurde Dropdown der Datenbanken automatisch einschränken. - Werte im Dropdown Datenbanken alphabetisch sortieren Overview: - mir fehlt eine Zusammenfassung (Druckansicht) für eine Applikation. -Tab HermesLight => Info für den STV. Wenn dort sehr viel steht ist das nicht schnell und einfach lesbar => Lupe-Funktion wo mir der ganze Text dargestellt würde, wäre praktisch Reportings (z.B. Bei welcher Applikation ist kein Stv vorhanden) Alle Infos zusätzlich auf einer Seite (ausdruckbar) als Übersicht...? ID 26 Fragestellung Falls Du einen Kommentar (besonders gut/besonders schlecht) oder Verbesserungsvorschläge hast, trage dies bitte in folgendes Feld ein. Sehr gut finde ich die automatische Berechtigung im Subversion! Bei den DB-Reads wäre eine Hilfestellung praktisch. Was bedeuten diese Zahlen, wann muss gehandelt werden => Infos müssten von Aldo kommen Kennzeichenung welche Umgebung bearbeitet wird => grösster Kübel. Ich hätte die Umgebung als Test gerne noch ausgeschrieben gehabt => oder wenigstens noch ein Tooltip Modern, Tabs sind logisch, Extra-Tab erweiterungstechnisch clever Habe die Frage "Wenn ich etwas nicht verstehe, hilft mir das Programm" tief bewertet, da keine "DirektHilfe" vorhanden ist. Ist aber nicht schlecht, weil die Funktionalitäten uns bekannt sein sollten :-) Stellvertreter-Infos sind nicht so gut lesbar -> man muss zuviel scrollen bei grösseren Texten. Jeder Entwickler müsste vermutlich die Schriftgrösse seiner Beiträge anpassen (= verkleinern) :-) ID 27 Fragestellung Falls Du eine Anregung beliebiger Form zu dieser Umfrage hast, trage dies bitte in folgendes Feld ein. Projektdeckblatt-Funktion weiter ausbauen SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 17/18 Projektname Dokumenttitel Artifaktname Corp_PadMan Situationsanalyse Corp_PadMan Situationsanalyse Informationstechnologie 7.2 Analyse und Fazit Bei der ersten Umfrage über das existierende System Teamportal wurden über die Zahlenwerte ein Durchschnitt von 3.76 von 6.00 möglichen Punkten erreicht. Mit der Neuentwicklung konnte ein Wert von 5.30 von 6.00 möglichen Punkten erreicht werden. Im Gesamten konnte für die Befragten mit der Neuentwicklung eine deutliche Verbesserung erreicht werden. Für den nächsten Release sollte vor allem die Hilfestellung für den Benutzer verbessert werden. In der textuellen Auswertungen wurden die Ziele aus der ersten Umfrage nicht aufgeführt. Es sind jedoch weitere Wünsche für den nächsten Release aufgekommen, welche in der Auswertung aufgelistet sind. SI_PADMAN_Situationsanalyse_V02.00.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 18/18 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Systemanforderungen Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung SY Systemanforderungen Corp_PadMan Corp_PadMan PADMAN Irminger Pascal, IT133 29.03.2012 Lehmann Marcel, IT132 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 21.11.2011 Neues Dokument X01.01 14.12.2011 X01.02 16.01.2012 Korrekturen Review mit Experte. Use Cases überarbeitet sowie erweitert. Überarbeitungen X01.03 28.03.2012 Finalisierung V01.03 29.03.2012 Freigabe Lehmann Marcel, IT132 Lehmann Marcel, IT132 Lehmann Marcel, IT132 Lehmann Marcel, IT132 Irminger Pascal, IT133 Haefeli Stefan, IT132 SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 1/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 4 1.1 Zweck ........................................................................................................................................................ 4 1.2 Beschreibung ............................................................................................................................................. 4 1.3 Tailoring ..................................................................................................................................................... 4 1.4 Definitionen, Akronyme und Abkürzungen ................................................................................................ 4 1.5 Referenzen ................................................................................................................................................ 4 2 Allgemeine Beschreibung .............................................................................................................................. 5 2.1 Ausgangslage ............................................................................................................................................ 5 2.2 Produktperspektive .................................................................................................................................... 5 3 Allgemeine Anforderungen ........................................................................................................................... 6 3.1 Personas .................................................................................................................................................... 6 3.2 Domainmodell ........................................................................................................................................... 7 3.2.1 Strukturdiagramm .................................................................................................................................. 7 3.2.2 Konzeptbeschreibung ............................................................................................................................. 7 3.3 Systemgrenzen .......................................................................................................................................... 7 3.4 Use Cases .................................................................................................................................................. 8 3.4.1 P_UC_10: Neue Applikation erfassen ...................................................................................................... 9 3.4.2 P_UC_20: Neue Solution erfassen ......................................................................................................... 10 3.4.3 P_UC_40: Account mit Funktion hinzufügen ........................................................................................ 11 3.4.4 P_UC_50: Komponente hinzufügen ...................................................................................................... 12 3.4.5 P_UC_60: Komponete zwischen Umgebung abgleichen ....................................................................... 13 3.4.6 P_UC_70: SQL Connection erfassen ...................................................................................................... 14 3.4.7 P_UC_80: SQL Connection bearbeiten .................................................................................................. 15 3.4.8 P_UC_90: SQL Connection löschen ....................................................................................................... 16 3.4.9 P_UC_100: Datenbank-Script generieren .............................................................................................. 17 3.4.10 P_UC_110: Umgebung der Anwendungseinstellungen wechseln ......................................................... 18 3.4.11 P_UC_140: Status der Komponente setzen ........................................................................................... 19 3.4.12 P_UC_150: Komponenten suchen ........................................................................................................ 20 3.4.13 P_UC_180: DB-Stammdaten exportieren .............................................................................................. 21 3.4.14 P_UC_190: DB-Schema exportieren ...................................................................................................... 22 3.4.15 P_UC_200: Projektdeckblatt erfassen .................................................................................................... 23 3.4.16 P_UC_210: Projektdeckblatt bearbeiten ................................................................................................ 24 3.4.17 P_UC_220: Projektdeckblatt löschen ..................................................................................................... 25 3.4.18 P_UC_230: Projektdeckblatt Prozess-Schritt planen ............................................................................... 26 3.4.19 P_UC_240: Projektdeckblatt Prozess-Schritt signieren ........................................................................... 27 3.4.20 P_UC_250: SVN Pfad definieren............................................................................................................ 28 3.4.21 P_UC_260: SVN Repository erstellen ..................................................................................................... 29 3.4.22 P_UC_270: SVN-Berechtigung setzen ................................................................................................... 30 3.4.23 P_UC_280: Personen verwalten (CRUD) ................................................................................................ 31 3.5 Nicht-funktionale Anforderungen ............................................................................................................ 32 3.5.1 Technische Anforderung ....................................................................................................................... 32 3.5.2 Ergonomische Anforderung .................................................................................................................. 32 3.5.3 Verfügbarkeit ........................................................................................................................................ 32 3.5.4 Benutzerfreundlichkeit .......................................................................................................................... 32 3.5.5 Datenverlust ......................................................................................................................................... 32 3.5.6 Auftreten von Fehlfunktionen ............................................................................................................... 32 3.5.7 Erweiterbarkeit ..................................................................................................................................... 32 3.5.8 Sicherheit ............................................................................................................................................. 32 3.5.8.1 Authentifizierung ............................................................................................................................... 32 3.5.8.2 Kommunikation ................................................................................................................................. 32 3.5.8.3 SQL-Injektion ..................................................................................................................................... 32 3.5.8.4 X-Side Scripting ................................................................................................................................. 33 3.5.8.5 Scripts................................................................................................................................................ 33 4 Anforderungen an die Entwicklungs- und Wartungsumgebung .................................................................. 33 5 Anforderungen an die externen Schnittstellen ............................................................................................ 33 SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 2/33 Projektname Dokumenttitel Artifaktname 6 7 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie Detailanforderungen ................................................................................................................................... 33 Sicherheitsanforderungen ........................................................................................................................... 33 SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 3/33 Projektname Dokumenttitel Artifaktname 1 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie Allgemeines 1.1 Zweck Die Systemanforderungen beschreiben und strukturieren die Anforderungen an das zukünftige System. Sie werden vom Auftraggeber und Auftragnehmer beidseitig als Grundlage für die Realisierung und Abnahme des zukünftigen Systems akzeptiert. 1.2 Beschreibung Die Systemanforderungen beziehen sich je nach Phase auf die Ebene System, Subsystem oder Konfigurationseinheit (KE). Eine verfeinerte Gliederung muss vom entsprechenden Vorgehensmodell hinzugefügt werden. Die Darstellung der Systemanforderungen kann sowohl in strukturiertem Text als auch in Form von Modellen erfolgen. 1.3 Tailoring Die Systemanforderungen können auch in mehreren eigenständigen Dokumenten vorliegen, zum Beispiel pro Subsystem oder Konfigurationseinheit. 1.4 Definitionen, Akronyme und Abkürzungen Wort Definition Corp_TeamPortal Intranet-Webapplikation. Stellt innerhalb von IT13 eine zentrale Stelle für das Entwickeln von Intranet-Applikationen dar. Es stellt Konfigurationen wie zum Beispiel Datenbankzugriff, beteiligte Personen, Publikation etc. für unsere Intranet-Umgebung zur Verfügung. Datenbank Das Hypertext Transfer Protocol ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten aus dem Internet/Intranet in einen Webbrowser zu laden. Das HyperText Transfer Protocol Secure ist die sichere Variante von HTTP. Syntaktisch ist HTTPS identisch mit dem Schema für HTTP, die zusätzliche Verschlüsselung der Daten geschieht mittels SSL/TLS. Internet Information Services. Webserver-Komponente in Microsoft Windows. Über IIS können ASP- oder .NET-Applikationen (ASP.NET) ausgeführt werden .NET-Entwicklungsabteilung von IT Post Informationstechnologie Post Skriptsprache, die hauptsächlich für das DOM-Scripting in Web-Browsern eingesetzt wird. .NET-Entwicklungsabteilung von IT Post Das Lightweight Directory Access Protocol (LDAP) erlaubt die Abfrage und die Modifikation von Informationen eines Verzeichnisdienstes über ein IP-Netzwerk. Für .NET portiertes O/R-Mapping Framework (Hibernate). Technik der Softwareentwicklung, mit der ein in einer objektorientierten Programmiersprache geschriebenes Anwendungsprogramm seine Objekte in einer relationalen Datenbank ablegen kann. Post Wide Web. Das Intranet der Schweizerischen Post. Structured Query Language Auch Microsoft SQL Server. SQL Server Produkt von Microsoft. Derzeit in den Versionen SQL Server 2005 und SQL Server 2008 R2 bei der Schweizerischen Post im Einsatz. Use Case Cross-Site-Scripting (XSS) bezeichnet das Ausnutzen einer Sicherheitslücke in Webanwendungen, indem Informationen aus einem Kontext, in dem sie nicht vertrauenswürdig sind, in einen anderen Kontext eingefügt werden, in dem sie als vertrauenswürdig eingestuft werden. Aus diesem vertrauenswürdigen Kontext kann dann ein Angriff gestartet werden. zum Beispiel DB HTTP HTTPS IIS IT13 IT Post Javascript IT13 LDAP NHibernate O/R-Mapping PWW SQL SQL Server UC X-Site-Scripting z.B. 1.5 Referenzen Keine. SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 4/33 Projektname Dokumenttitel Artifaktname 2 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie Allgemeine Beschreibung 2.1 Ausgangslage Die Applikation Teamportal stellt für IT13 eine zentrale Stelle für das Entwickeln von Intranet-Applikationen dar. Es stellt ein kleines Projektmanagement sowie Konfigurationen wie zum Beispiel Datenbankzugriff, Publikation etc. für unsere Intranet-Umgebung zur Verfügung. Zusätzlich zu diesem Teamportal gibt es weitere bestenende Applikationen (Errors, Sendto, Job-Journal), welche für die tägliche Entwicklung hilfreich bzw. notwendig sind. 2.2 Produktperspektive Es soll eine neue zentrale Intranet-Applikation entstehen, welche die aktuellen Bedürfnisse der Entwickler abdeckt, um die Schwachstellen der Prozesse, wie sie heute umgesetzt werden, zu beheben. PadMan soll konkret den folgenden Bedürfnissen gerecht werden: PadMan als Managementinstrument (für Team-, Abteilungs-, Projektleitung) PadMan als Wartungsinstrument PadMan als Entwicklungsinstrument PadMan als Prozessinstrument PadMan als Releaseinstrument Die Applikation soll beispielsweise die Initialisierungsphase der Entwicklung vereinfachen und den Verwaltungsaufwand während der Implementierung und darüber hinaus verringern. Dabei soll zu Beginn der Applikations-Entwicklung die Programmierumgebung inkl. Code-Projekten sowie das Versions-Management eingerichtet werden. Das neue Teamportal soll aufgetretene Fehlerlogs in produktiven Applikationen nicht mehr länger nur anzeigen können (Pull), sondern aktiv die verantwortlichen Entwickler darüber informieren (Push). Durch ein geeignetes Regelwerk sollen die Entwickler in der Lage sein, die Benachrichtigungen, welche sie erhalten, zu steuern und gegebenenfalls einzuschränken. SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 5/33 Projektname Dokumenttitel Artifaktname 3 3.1 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie Allgemeine Anforderungen Personas Peter Ledermann (44): Hat gute Computerkenntnisse und arbeitet häufig mit Office (Word, Excel) sowie mit SAP. Er arbeitet als Manager und muss so die Kosten der Applikationen sowie deren Offerten überwachen. Er ist verantwortliche für die Ressourcenplanung der Entwickler und versucht so mit den Kunden eine Terminplanung der Anwendungen zu definieren. Falls die Kosten einer Anwendungsentwicklung den Betrag der Offerte überschreiten, versucht er, mögliche Lösungen mit dem Kunde zu finden. Bei Kundenanfragen für eine neue Anwendung bzw. neue Funktionen zu einer bestehenden Applikation konsolidiert er die bereits vorhanden Implementierungen und zeigt dem Kunde mögliche Lösungen wie zum Beispiel mandantenfähige Applikationen. Manuel Imhof (28): Hat fortgeschrittene Computerkenntnisse und arbeitet als SoftwareEntwickler im Webumfeld. Er nutzt das Internet als Informations- und Unterhaltungsinstrument. Als Entwickler einer Anwendung ist er meistens zugleich Projektleiter. Für das Verwalten von Anwendungen für Support sowie Wartung ist er selber verantwortlich. Für das Entwickeln einer Anwendung verwendet er Visual Studio und er verwaltet seinen Source Code mit Subversion. Als Unterstützung zur Entwicklung der Anwendung steht ihm eine Library, welche speziell für diese Abteilung entwickelt wurde, zur Verfügung. Häufig entwickelt er Anwendungen im Kostenbereich 10‘000 bis 100‘000 Franken. Bei diesen Anwendungen ist er für alle notwendigen Schritte von Offerte bis zur Publikation der Anwendung selber verantwortlich. Er übernimmt auch die Schnittstelle zum Kunde. Bei grösseren Anwendung arbeitet er in einem Team von Entwickler und ihm werden diverse Rollen übergeben. Es kann aber auch sein, dass er die Funktion Projektleiter übernimmt, jedoch keinen einzigen Code entwickeln wird. Sabrina Schmid (32): Hat gute Computerkenntnisse und das Arbeiten mit Webapplikationen fällt ihr leicht. Als 2nd-Level-Supporterin nutzt sie das Telefon und EMail sehr häufig. Sie ist die Schnittstelle zwischen den Entwicklern und den Benutzern. Kann der 1st-Level-Support eine Anfrage nicht beantworten, so wird diese Anfrage an Sabrina weitergeleitet. Falls sie die Anfrage nicht selber beantworten kann, informiert sie den Verantwortlichen der Anwendung, zu welcher die Anfrage gerichtet ist. Die Kommunikation zum Benutzer übernimmt sie weiterhin. Der Verantwortliche wird ihr die Antwort entweder mündlich oder schriftlich geben. Das Verwalten sowie Überwachen der Anfragen und deren Bearbeitungszeit übernimmt ebenfalls Sabrina. Für diese Aufgabe stehen ihr verschiedene Stellvertreter sowie Mitarbeiter zur Verfügung, so dass während den Büroarbeitszeiten die Anfragen so schnell wie möglich beantwortet werden können. SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 6/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.2 Domainmodell 3.2.1 Strukturdiagramm Component -Id : string Abbildung 1: Domainmodell Corp_PadMan. 3.2.2 Konzeptbeschreibung Component Beschreibung Stellt eine Komponente wie Applikation dar Attribute Beziehung 3.3 Systemgrenzen PadMan Via PostLib PWW GUI Arbeitsstation LogObi JobMonitor Abbildung 2: Systemgrenzen von Corp_PadMan. SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 7/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4 Use Cases In der untenstehenden Tabelle 1 werden alle Use Cases mit deren Gewichtung dargestellt. Die Gewichtung wird zwischen 1 und 5 definiert. Dabei gilt ein Wert von 5 zwingend zu implementieren und einen Wert von 1 als „nice to have“. Umso höher der Wert Kritisch ist, je mehr Unklarheiten bzw. Wissen fehlt für die benötigte Funktion. Name Neue Applikation erfassen Neue Solution erfassen Neues Projekt erfassen (Wizard) Account mit Funktion hinzufügen Komponente hinzufügen Komponente zwischen Umgebung abgleichen SQL Connection erfassen SQL Connection bearbeiten SQL Connection löschen Datenbank-Script generieren Umgebung der Anwendungseinstellungen wechseln Komponente löschen Applikation ausser Betrieb nehmen Status der Komponente setzen Komponenten suchen SVN-Repository anlegen SVN-Berechtigung setzen DB-Stammdaten exportieren DB-Schema exportieren Projektdeckblatt erfassen Projektdeckblatt bearbeiten Projektdeckblatt löschen Projektdeckblatt Prozess-Schritt planen Projektdeckblatt Prozess-Schritt signieren SVN Pfad definieren SVN Repository erstellen SVN-Berechtigung setzen Personen verwalten (CRUD) Bezeichnung P_UC_10 P_UC_20 P_UC_30 P_UC_40 P_UC_50 P_UC_60 P_UC_70 P_UC_80 P_UC_90 P_UC_100 P_UC_110 P_UC_120 P_UC_130 P_UC_140 P_UC_150 P_UC_160 P_UC_170 P_UC_180 P_UC_190 P_UC_200 P_UC_210 P_UC_220 P_UC_230 P_UC_240 P_UC_250 P_UC_260 P_UC_270 P_UC_280 Gewicht 5 3 1 5 3 5 5 5 5 3 5 1 1 4 5 4 4 1 1 3 2 2 2 3 4 3 3 5 Kritisch 1 1 3 1 1 2 1 1 1 1 1 1 3 1 1 2 4 4 4 2 2 2 1 2 1 2 3 1 Gestrichen x x x Tabelle 1: Use Case Übersicht von Corp_PadMan. SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 8/33 Projektname Dokumenttitel Artifaktname 3.4.1 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_10: Neue Applikation erfassen Bezeichnung P_UC_10 Name Neue Applikation erfassen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter Interessen Entwickler benötigt für sein Projekt eine neue Applikation. Vorbedingung Nachbedingung Neue Applikation wurde gespeichert. Verantwortlicher für die Applikation wurde bestimmt. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will eine neue Applikation erstellen. 2. Benutzer gibt Applikation -ID und Verantwortlicher ein. 3. Benutzer teilt dem System mit, dass er nun die Anwendung anlegen will. Erweiterung Spezialanforderung Auftrittshäufigkeit 4. System speichert die neue Applikation. 2a. Entwickler gibt optionale Angaben ein. 4a. Ungültige Applikations-ID 1. System signalisiert den Fehler und speichert nichts. 2. Entwickler ändert die Applikations-ID. wenig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 9/33 Projektname Dokumenttitel Artifaktname 3.4.2 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_20: Neue Solution erfassen Bezeichnung P_UC_20 Name Neue Solution erfassen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter Interessen Entwickler benötigt für sein Projekt eine neue Solution. Vorbedingung Nachbedingung Neue Applikation wurde gespeichert. Verantwortlicher für die Applikation wurde bestimmt. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will eine neue Solution erstellen. 2. Benutzer gibt Solution-ID und Verantwortlicher ein. 3. Benutzer teilt dem System mit, dass er nun die Solution anlegen will. Erweiterung Spezialanforderung Auftrittshäufigkeit 4. System speichert die neue Solution. 2a. Entwickler gibt optionale Angaben ein. 4a. Ungültige Solution-ID 1. System signalisiert den Fehler und speichert nichts. 2. Entwickler ändert die Applikations-ID. wenig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 10/33 Projektname Dokumenttitel Artifaktname 3.4.3 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_40: Account mit Funktion hinzufügen Bezeichnung P_UC_40 Name Account mit Funktion hinzufügen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter Interessen Verwalten welche Accounts mit dieser Component in Verbindung sind und welche Funktionen diese übernehmen. Vorbedingung Komponente ist ausgewählt Nachbedingung Neuer Account wurde hinzugefügt Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will einen neuen Account mit einer Funktion hinzufügen. 2. Benutzer gibt Account ein. 3. Benutzer wählt aus einer bestehenden Auswahl eine Funktion aus. 4. Benutzer teilt dem System mit, dass er die Änderung übernehmen will. Erweiterung Spezialanforderung Auftrittshäufigkeit 5. System speichert die Änderung. 3a. Benutzer gibt an, ob der Account die Hauptrolle für diese Funktion übernimmt. 3b. Benutzer gibt an, ob die Funktion des Accounts aktiv ist. 3c. Benutzer gibt einen Kommentar ein. 4a. Ungültiger Account 1. System signalisiert den Fehler und speichert nichts. 2. Entwickler ändert den Account. wenig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 11/33 Projektname Dokumenttitel Artifaktname 3.4.4 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_50: Komponente hinzufügen Bezeichnung P_UC_50 Name Komponente hinzufügen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter Interessen Struktur eines Projektes in Components abbilden. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer sucht Basis-Component 2. System zeigt gefunden Component an. 3. Benutzer wählt Component aus. 4. Benutzer teilt dem System mit, dass er eine Sub-Component hinzufügen will. 5. System zeigt dem Benutzer die möglichen Component an 6. Benutzer wählt die Component aus und teilt dem System mit, dass er die Änderung übernehmen will. Erweiterung Spezialanforderung Auftrittshäufigkeit 7. System speichert die Änderung. 3a. Component existiert noch nicht 3. Benutzer startet Neue Component erfassen wenig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 12/33 Projektname Dokumenttitel Artifaktname 3.4.5 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_60: Komponete zwischen Umgebung abgleichen Bezeichnung P_UC_60 Name Komponente zwischen Umgebung abgleichen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter Interessen Einstellungen einer Komponente in eine andere Umgebung übernehmen Vorbedingung Nachbedingung Die Komponenten in beider Umgebung haben die gleichen Einstellungen. Falls ein Abbruch stattgefunden hat, so haben beide Komponenten wieder die Einstellungen vor der Durchführung des Use Cases. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer sucht Komponente 2. System zeigt gefundene Komponenten an. 3. Benutzer wählt Komponente aus. 4. Benutzer teilt dem System mit, zwischen welchen Umgebungen er einen Abgleich durchführen will. 5. System zeigt dem User die einzelnen Werte an, welche zwischen den Komponenten abgeglichen wird. 6. Benutzer wählt die Werte aus, welche er abgeglichen haben möchte und startet den Abgleich. 7. System führt den Abgleich aus. Erweiterung Spezialanforderung Auftrittshäufigkeit wenig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 13/33 Projektname Dokumenttitel Artifaktname 3.4.6 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_70: SQL Connection erfassen Bezeichnung P_UC_70 Name SQL Connection erfassen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Der Benutzer benötigt für eine Komponente Zugriff auf eine Datenbank (DBConnection Connection-String). Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer sucht Komponente. 2. System zeigt gefundene Komponenten an. 3. Benutzer wählt Komponente aus. 4. Benutzer wählt Datenbank 5. Benutzer erfasst Usernamen. 6. Benutzer erfasst Passwort. 7. Benutzer erfasst Timeout. 8. Benutzer erfasst Optionen. 9. Benutzer erfasst Connection-ID. 10. Benutzer wählt Umgebung 11. Benutzer bestätigt die Eingaben. 12. System speichert die Daten. Erweiterung Spezialanforderung Auftrittshäufigkeit 6a. Benutzer lässt ein Passwort generieren. mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 14/33 Projektname Dokumenttitel Artifaktname 3.4.7 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_80: SQL Connection bearbeiten Bezeichnung P_UC_80 Name SQL Connection bearbeiten Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Der Benutzer möchte eine bestehende SQL Connection bearbeiten Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer sucht Komponente 2. System zeigt gefundene Komponenten an. 3. Benutzer wählt Komponente aus. 4. Benutzer wählt die zu bearbeitende SQL Connection aus. 5. Benutzer ändert die Daten. Erweiterung Spezialanforderung Auftrittshäufigkeit 6. System speichert die Daten. 5a. Die Umgebung kann nicht geändert werden. wenig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 15/33 Projektname Dokumenttitel Artifaktname 3.4.8 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_90: SQL Connection löschen Bezeichnung P_UC_90 Name SQL Connection löschen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Der Benutzer möchte eine bestehende SQL Connection löschen Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer sucht Komponente 2. System zeigt gefundene Komponenten an. 3. Benutzer wählt Komponente aus. 4. Benutzer teilt dem System mit, welche SQL Connection gelöscht werden soll. 5. System löscht die SQL Connection. Erweiterung Spezialanforderung Auftrittshäufigkeit wenig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 16/33 Projektname Dokumenttitel Artifaktname 3.4.9 Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie P_UC_100: Datenbank-Script generieren Bezeichnung P_UC_100 Name Datenbank-Script generieren Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Für die Applikation benötigt der Entwickler eine Datenbank. Da er keine Berechtigung für das Erstellen einer neuen Datenbank hat, muss er das Script an den DBA senden. Vorbedingung Benutzer hat Komponente ausgewählt und SQL Connection(s) sind erfasst. Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer teilt dem System mit, dass er für eine erfasste SQL Connection das Script für das Erstellen der Datenbank generieren will. 2. System generiert das Script und übergibt dieses dem Standardmailprogramm des Benutzers. Erweiterung Spezialanforderung Auftrittshäufigkeit mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 17/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.10 P_UC_110: Umgebung der Anwendungseinstellungen wechseln Bezeichnung P_UC_110 Name Umgebung der Anwendungseinstellungen wechseln Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte Daten für eine Umgebung anpassen Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer teilt dem System mit, dass er die Umgebung wechseln will. 2. System wechselt die Umgebung und zeigt die Daten für diese Umgebung an Erweiterung Spezialanforderung Auftrittshäufigkeit mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 18/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.11 P_UC_140: Status der Komponente setzen Bezeichnung P_UC_140 Name Status der Komponente setzen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte den Status einer Komponente ändern Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt einen Status aus einer Liste aus. 2. Benutzer teilt dem System mit, dass er die Änderung speichern möchte. 3. System ändert den Status der Komponente. Erweiterung Spezialanforderung Auftrittshäufigkeit mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 19/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.12 P_UC_150: Komponenten suchen Bezeichnung P_UC_150 Name Komponenten suchen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer sucht eine Komponente Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt Suchkriterien aus und startet die Suche 2. System zeigt die gefundenen Komponenten an. Erweiterung Spezialanforderung Auftrittshäufigkeit 1a. Komponentennamen (ApplID) 1b. Er als Entwickler 1c. Er als Stellvertreter 1d. Eine andere Person als Entwickler 1e. Eine andere Person als Stellvertreter 1f. Status einer Komponente mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 20/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.13 P_UC_180: DB-Stammdaten exportieren Bezeichnung P_UC_180 Name DB-Stammdaten exportieren Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte Stammdaten aus einer Datenbank als SQL-Insert-Statements z.b in die Source-Verwaltung für einen Release aufnehmen. Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt die SQL-Connection aus. 2. Benutzer gibt die Tabellen mit den Stammdaten an. 3. Benutzer startet das Exportieren. Erweiterung Spezialanforderung Auftrittshäufigkeit 4. System generiert die SQLStatements und stellt einen Download zur Verfügung. 4a. Benutzer hat keine Tabellen ausgewählt. 1. System führt das Exportieren nicht aus. mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 21/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.14 P_UC_190: DB-Schema exportieren Bezeichnung P_UC_190 Name DB-Schema exportieren Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte das Schema einer Datenbank als SQL-Create-Statements z.B. in die Source-Verwaltung für einen Release aufnehmen. Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt die SQL-Connection aus. 2. Benutzer gibt die Tabellen an. 3. Benutzer startet das Exportieren. Erweiterung Spezialanforderung Auftrittshäufigkeit 4. System generiert die SQLStatements und stellt einen Download zur Verfügung. 4a. Benutzer hat keine Tabellen ausgewählt. 1. System führt das Exportieren für alle Tabellen aus (Ausgeschlossen sind Systemtabellen). mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 22/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.15 P_UC_200: Projektdeckblatt erfassen Bezeichnung P_UC_200 Name Projektdeckblatt erfassen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte für einen Release ein Projektdeckblatt erfassen. Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer gibt ein Startdatum sowie Enddatum ein. 2. Benutzer fügt die notwendigen Prozess-Schritte hinzu. 3. Benutzer teilt dem System mit, dass er das Projektdeckblatt speichern möchte. 4. System erstellt neues Projektdeckblatt. Erweiterung Spezialanforderung Auftrittshäufigkeit mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 23/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.16 P_UC_210: Projektdeckblatt bearbeiten Bezeichnung P_UC_210 Name Projektdeckblatt bearbeiten Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte ein bestehendes Projektdeckblatt bearbeiten. Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt Projektdeckblatt aus. 2. Benutzer ändert die Daten. 3. Benutzer teilt dem System mit, dass er die Änderung speichern will. Erweiterung Spezialanforderung Auftrittshäufigkeit 4. System übernimmt die Änderung. 2a. Benutzer ändert Startdatum 2b. Benutzer ändert Enddatum 2c. Benutzer fügt die neue Prozess-Schritte hinzu 2d Benutzer entfertn Prozess-Schritte. mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 24/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.17 P_UC_220: Projektdeckblatt löschen Bezeichnung P_UC_220 Name Projektdeckblatt löschen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte ein bestehendes Projektdeckblatt löschen Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt Projektdeckblatt aus. 2. Benutzer teilt dem System mit, dass er das Projektdeckblatt löschen möchte. 3. System löscht das Projektdeckblatt.. Erweiterung Spezialanforderung Auftrittshäufigkeit mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 25/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.18 P_UC_230: Projektdeckblatt Prozess-Schritt planen Bezeichnung P_UC_230 Name Projektdeckblatt Prozess-Schritt planen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte einen Prozess-Schritt planen. Vorbedingung Benutzer hat Komponente sowie Projektdeckblatt ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer gibt ein Enddatum für einen Prozess-Schritt ein. 2. Benutzer teilt dem System mit, dass er die Änderung speichern will. 3. System speichert das Datum. Erweiterung Spezialanforderung Auftrittshäufigkeit mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 26/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.19 P_UC_240: Projektdeckblatt Prozess-Schritt signieren Bezeichnung P_UC_240 Name Projektdeckblatt Prozess-Schritt signieren Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Interessen Benutzer möchte einen Prozess-Schritt signieren. Vorbedingung Benutzer hat Komponente sowie Projektdeckblatt ausgewählt Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer teilt dem System mit, welchen Prozess-Schritt er signieren möchte. 2. System überprüft ob der Benutzer den Prozess-Schritt signieren darf. 3. Benutzer führt das Signieren aus. 4. System speichert das Signieren. Erweiterung Spezialanforderung Auftrittshäufigkeit 2a. Benutzer hat keine Berechtigung 1. Der UseCase wird abgebrochen. mittel SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 27/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.20 P_UC_250: SVN Pfad definieren Bezeichnung P_UC_250 Name SVN Pfad definieren Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager SVN-Administrator Interessen Definieren des SVN-Pfad für eine Komponente. Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung SVN-Pfad ist in PadMan konfiguriert. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer setzt den SVN Repository Pfad. 2. Benutzer teilt dem System mit, dass er die Änderung speichern möchte. 3. System speichert die Änderungen und stellt dem Benutzer weitere Funktion für SVN zur Verfügung. Erweiterung Spezialanforderung Auftrittshäufigkeit selten SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 28/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.21 P_UC_260: SVN Repository erstellen Bezeichnung P_UC_270 Name SVN Repository erstellen Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager SVN-Administrator Interessen Erstellen der Projekt-Unterverzeichnisse im Subversion-Repository. Vorbedingung Benutzer hat Komponente ausgewählt und SVN Pfad ist vorhanden Nachbedingung Das Subversion-Verzeichnisse existieren. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer teilt dem System mit, dass er das SVN-Repository erstellen möchte. 2. System erstellt aufgrund des definierten SVN-Pfades ein Hauptverzeichnis im Subversion Repository. 3. System erstellt gemäss den Richtlinien die Unterverzeichnisse trunk, tags, branches. Erweiterung Spezialanforderung Auftrittshäufigkeit selten SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 29/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.22 P_UC_270: SVN-Berechtigung setzen Bezeichnung P_UC_270 Name SVN-Berechtigung setzen Scope PadMan Level Systemabsicht Primärer Aktor System Stakeholder Entwickler Manager Interessen Die SVN-Berechtigungen werden entsprechend den Angaben im Feld SVN-Pfad und der verantwortlichen Personen gesetzt. Vorbedingung SVN-Pfad- und/oder Personen-Mutation hat stattgefunden. Nachbedingung Die verantwortlichen Personen sind auf den entsprechenden SVN-Verzeichnissen berechtigt. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. System startet das Setzen der SVNBerechtigung. 2. System selektiert zu den Komponenten die definierten SVNPfade. 3. System selektiert zu den Komponenten die verantwortlichen Personen (Entwickler, Stellvertreter). 4. System verbindet die selektierten Daten und wandelt diese in ein SVNauthz-File-konformes Format um. 5. System speichert die Daten im authzFile auf dem Subversion Server. Erweiterung Spezialanforderung Auftrittshäufigkeit häufig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 30/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.4.23 P_UC_280: Personen verwalten (CRUD) Bezeichnung P_UC_280 Name Personen verwalten (CRUD) Scope PadMan Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Interessen Der Entwickler will die verantwortlichen Personen einer Komponente verwalten. Vorbedingung Benutzer hat Komponente ausgewählt Nachbedingung Personen sind verwaltet. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt „Editieren“ der entsprechenden Komponente. 2. System öffnet die Editieransicht der Komponente. Mit dabei ist eine Übersicht aller verantwortlichen Personen für diese Komponente. 3. Benutzer wählt „Person hinzufügen“. 4. System zeigt eine Eingabemöglichkeit zum Erfassen einer Person an. 5. Benutzer definiert User-ID, Funktion, HasLead, Aktiv und Kommentar. Erweiterung Spezialanforderung Auftrittshäufigkeit 6. System speichert die Eingaben in der Datenbank. 3a. Benutzer wählt in der Liste „Person editieren“. 3b. Benutzer wählt in der Liste „Person löschen“. 4a. Editieren: Dito 4. 4b. Löschen: System löscht die Person für die entsprechende Komponente. Ende Use-Case. häufig SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 31/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.5 Nicht-funktionale Anforderungen 3.5.1 Technische Anforderung Das System muss mit asp.net in der Sprache C# entwickelt werden und in einem .NET 4.0 Pool auf einem Windows Server 2008 laufen. Die Anwendung muss mit einem O/R-Mapper implementiert werden und mindestens mit der Datenbank SQL Server 2008 arbeiten können. 3.5.2 Ergonomische Anforderung Die Applikation unterstützt die Lokalisierung, es wird jedoch nur eine deutsche Benutzerführung zur Verfügung gestellt. 3.5.3 Verfügbarkeit Die Applikation ist während den allgemeinen Bürozeiten (Mo-Fr 07:00 – 19:00) verfügbar. Bei einem Incident, welcher von der Applikation ausgeht und das PWW betrifft, ist eine max. Behebungszeit von 4 Stunden notwendig. Ist jedoch der Betrieb von PWW nicht beeinflusst, wird die nach best effort den Incident bearbeitet. Keine Angaben können bei Incidents, welche in der Umgebung der Applikation und nicht vom Projekt PadMan beeinflusst werden kann, gemacht. 3.5.4 Benutzerfreundlichkeit Obwohl die Benutzer der Software über gute bis sehr gute Computerkenntnisse verfügen werden, legen wir viel Wert auf ein intuitives und übersichtliches Design. Um dies zu erreichen, werden wir uns auf eine einheitliche Benutzerführung festlegen, wodurch es den Benutzern des System in wenigen Schritten möglich ist, eine Aufgabe erfolgreich zu lösen. Das System wird über eine grafische Benutzeroberfläche mit übersichtlicher Menüführung1 verfügen, die mindestens im Internet Explorer 9 dargestellt wird. Andere Browser werden, sofern diese den Standard implementieren, soweit wie möglich unterstützt. 3.5.5 Datenverlust Wenn während der Eingabe von Daten eine Fehlfunktion auftritt, gehen nur die noch nicht in die Datenbank übertragenen Daten verloren. Dabei wird es sich lediglich um gerade eingegebene Daten handeln. Der Verlust von Daten in der Datenbank wird durch ein Backup, welches in unserer Umgebung bereits im Einsatz ist, verhindert. 3.5.6 Auftreten von Fehlfunktionen Sollte tatsächlich eine Fehlfunktion auftreten, so soll dem Benutzer dies mitgeteilt werden. Es soll jedoch nie eine Fehlerseite des Webservers angezeigt werden. 3.5.7 Erweiterbarkeit Es soll möglich sein, während des Betriebes die Applikation mit neuen Funktionen zu erweitern, so dass der Betrieb der Applikation nicht gestört wird. Der Kern der Applikation soll dabei nicht neu publiziert werden müssen. Beim Entfernen oder Ersetzen bzw. Erweitern von bestehenden Funktionen muss die Applikation neugestartet werden. 3.5.8 Sicherheit 3.5.8.1 Authentifizierung Die Authentifizierung wird durch die vorhandenen Mittel der Post (LDAP und Windows-Authentifizierung von IIS) abgedeckt. Diese wird sowohl für Benutzer als auch für Fremdsysteme, welche über eine Schnittstelle zugreifen, erforderlich sein. 3.5.8.2 Kommunikation In der Anwendung werden dem Benutzer Anmeldeinformationen zu Fremdsystemen angezeigt. Aus diesem Grund wird die Anwendung nur über HTTPS erreichbar sein. Die Schnittstelle für Fremdsysteme werden sowohl über HTTP als auch HTTPS verfügbar sein. Es werden jedoch nie über diese Schnittstellen Anmeldeinformationen zur Verfügung gestellt. 3.5.8.3 SQL-Injektion SQL-Injektion wird durch den Einsatz des O/R-Mappers NHibernate verhindert. 1 Die Übersichtlichkeit wird von ausgewählten Benutzern beurteilt. SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 32/33 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemanforderungen Corp_PadMan Systemanforderungen Informationstechnologie 3.5.8.4 X-Side Scripting Durch das Entfernen von HTML-Tags bei Eingabemöglichkeiten von Benutzern wie auch Fremdsystemen wird das X-Side Scripting unterbunden. 3.5.8.5 Scripts Scripts wie Javascript werden durch die Post-Library abgedeckt. 4 Anforderungen an die Entwicklungs- und Wartungsumgebung Keine weiter führenden Angaben. 5 Anforderungen an die externen Schnittstellen Keine weiter führenden Angaben. 6 Detailanforderungen Keine weiter führenden Angaben. 7 Sicherheitsanforderungen Keine weiter führenden Angaben. SY_PADMAN_Systemanforderung_V01.03.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 33/33 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Systemdesign Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung SD Systemdesign Corp_PadMan Corp_PadMan PADMAN Irminger Pascal, IT133 29.03.2012 Lehmann Marcel, IT132; Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 X01.01 16.12.2011 19.12.2011 Neues Dokument Stand 2. Review Meeting X01.02 X01.03 30.12.2011 05.03.2012 Überarbeitungen Überarbeitungen X01.04 V01.04 28.03.2012 29.03.2012 Finalisierung Freigabe Irminger Pascal, IT133 Lehmann Marcel, IT132 Irminger Pascal, IT133 Lehmann Marcel, IT132 Irminger Pascal, IT133 Irminger Pascal, IT133 Haefeli Stefan, IT132 SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 1/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 3 1.1 Zweck ........................................................................................................................................................ 3 1.2 Beschreibung ............................................................................................................................................. 3 1.3 Tailoring ..................................................................................................................................................... 3 1.4 Definitionen, Akronyme und Abkürzungen ................................................................................................ 3 1.5 Referenzen ................................................................................................................................................ 3 2 Lösungsvorschläge für die Struktur des Systemdesigns .................................................................................. 3 2.1 Modularisierung ........................................................................................................................................ 3 3 Struktur des Systemdesigns........................................................................................................................... 4 3.1 Komponenten............................................................................................................................................ 4 3.1.1 Datenbankmodell ................................................................................................................................... 4 3.2 Modul-Architektur ..................................................................................................................................... 5 3.2.1 Module suchen ....................................................................................................................................... 5 3.2.2 Module im Betrieb .................................................................................................................................. 5 3.2.3 IRunnableModule ................................................................................................................................... 6 3.2.4 IJobModule ............................................................................................................................................. 6 3.2.5 IWebMethodModule .............................................................................................................................. 6 3.2.6 IFilterModule .......................................................................................................................................... 6 3.3 Integration in die Serverumgebung ............................................................................................................ 7 3.4 Generische Datenspeicherung (Value) ........................................................................................................ 8 3.4.1 Datenbankmodell ................................................................................................................................... 8 4 Module ....................................................................................................................................................... 10 4.1 BasicModule ............................................................................................................................................ 10 4.1.1 CreateComponentModule .................................................................................................................... 10 4.1.2 DocumentViewModule ......................................................................................................................... 10 4.1.3 HermesLightModule ............................................................................................................................. 11 4.1.4 OverviewModule .................................................................................................................................. 12 4.1.5 PathModule .......................................................................................................................................... 12 4.1.5.1 Schnittstellen ..................................................................................................................................... 12 4.1.6 PersonViewModule ............................................................................................................................... 13 4.1.7 PersonManagerModule......................................................................................................................... 15 4.1.8 PortfolioModule .................................................................................................................................... 16 4.1.9 ReleaseInfoModule ............................................................................................................................... 16 4.2 DatabaseModule ..................................................................................................................................... 17 4.2.1 DatabaseCreationScriptModule ............................................................................................................ 17 4.2.2 PasswordGeneratorModule ................................................................................................................... 17 4.2.3 SqlConnectionViewModule .................................................................................................................. 17 4.3 ProjectWizard .......................................................................................................................................... 18 4.3.1 ProjectFrontPageModule ....................................................................................................................... 18 4.4 SubversionModule ................................................................................................................................... 20 4.4.1 RepositoryModule................................................................................................................................. 20 4.4.2 CreateRepoFolderModule ..................................................................................................................... 21 4.4.3 PeopleAuthenticationModule ............................................................................................................... 21 5 Schnittstellen .............................................................................................................................................. 21 5.1 ComponentService .................................................................................................................................. 21 5.2 SendToService .......................................................................................................................................... 21 5.3 Informationen zu fehlenden Indexes erhalten .......................................................................................... 22 5.4 Informationen zu Reads-Statistiken erhalten ............................................................................................ 23 6 Beschreibung der Elemente ......................................................................................................................... 24 7 Anforderungszuordnung ............................................................................................................................ 24 8 Sicherheit.................................................................................................................................................... 24 SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 2/24 Projektname Dokumenttitel Artifaktname 1 Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Allgemeines 1.1 Zweck Das Systemdesign ist eine Verfeinerung der Systemarchitektur und beschreibt die detaillierten Spezifikationen als Vorgabe für die Erstellung des Systems. 1.2 Beschreibung Eine verfeinerte Gliederung muss vom entsprechenden Vorgehensmodell hinzugefügt werden. Die Darstellung des Systemdesigns kann sowohl in strukturiertem Text als auch in Form von Modellen (z.B. Datenfluss-, Zustandübergangsmodelle, usw.) erfolgen. Das Systemdesign ist ein abschliessender Entwurf des technischen und organisatorischen Systems bis auf Stufe «Element». 1.3 Tailoring Das Systemdesign kann auch in mehreren eigenständigen Dokumenten vorliegen, zum Beispiel pro Systemelement (entspricht der kleinsten Systemzerlegungsstufe). 1.4 Definitionen, Akronyme und Abkürzungen Wort Definition DAO NHibernate Data Access Object Für .NET portiertes O/R-Mapping Framework (Hibernate). 1.5 Referenzen Nr. Titel [01] Migrationsdesign MD_PADMAN_Migrationsdesign_V01.01.docx 2 Lösungsvorschläge für die Struktur des Systemdesigns 2.1 Modularisierung Damit das Publizieren einzelner Teilbereiche der Applikation vereinfacht werden kann, wird eine ModulArchitektur gewählt. Mit einer Modul-Architektur soll es möglich sein, einzelne Funktionen anpassen zu können, ohne den Kern oder andere Module verändern zu müssen. Dadurch soll das Publizieren neuer Funktionen oder Anpassungen bestehender Funktionen vereinfacht werden. Die Module sollen in separaten Assemblies implementiert werden. Bei einer Publikation einer neuen Assembly soll die Applikation das neue Modul laden und ausführen. Um dieses Ziel zu erreichen, wollten wir diese Module als Plugin in eine zusätzliche AppDomain laden. Dadurch könnten wir auch Module im Betrieb entfernen bzw. ohne abschalten des Applikations-Pools eine neue Version des Moduls publizieren. Für dieses Ziel haben wir drei Lösungswege untersucht und mussten leider feststellen, dass im Umfeld mit Web Forms in ASP.NET dieses Ziel so nicht erreicht werden kann. Bei allen drei Varianten sind wir an den Controls von ASP.NET gescheitert. Damit diese über eine AppDomain gesendet werden können, müssen diese serialisierbar sein. Die WebControls aus dem .NET Framework sind dies von Hause aus nicht. Eine eigene Serialisierungsfunktion für diese WebControls zu implementieren, ist ebenfalls mit grossen Schwierigkeiten verbunden. Grösste Hürde waren die internen Properties wie Controls etc. Um die Serialisierungsfunktion trotzdem zur Verfügung zu stellen, wären Hacks per Reflection notwendig gewesen. Eine andere Möglichkeit wäre, für die Controls eine Adapterklasse zu implementieren, welche dann vom Kern in ein gültiges Control umgewandelt wird. Diese Adapter wären nur implementiert worden, um neue Plugins ohne Neustart des Application-Pools publizieren zu können. Dies steht in keinem Verhältnis und deswegen haben wir uns für eine Lösung ohne AppDomain entschieden. Der DataAccessLayer wird mit NHibernate und der PostLibrary bereitgestellt. Dadurch müssen DAO-Klassen von Entity ableiten. Um die Architektur-Vorgaben der Post zu erfüllen, entschieden wir uns, die Schnittstelle zwischen den Modulen und dem Kern mit Interfaces anstatt mit abstrakten Basisklassen zu gestalten, auf Kosten der einfacheren Erweiterbarkeit. Uns war es wichtig, die Architektur-Vorgaben der Post zu erreichen. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 3/24 Projektname Dokumenttitel Artifaktname 3 Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Struktur des Systemdesigns 3.1 Komponenten In der ersten Version werden zwei verschiedene Komponententypen unterstützt. Dies sind Solution und Application. Eine Solution fasst mehrere Applications zusammen. Diese Typen wurden als eigene Klassen realisiert, damit für diese spezifische Aktionen ausgeführt werden können. Diese Aktionen werden jedoch in der ersten Version noch nicht implementiert, so dass dieses Design zukunftsorientiert ist und momentan einen Overhead zur Folge hat. Da jedoch bereits Aktionen in Planung sind und im aktuellen Release keinen Platz hatten, wurde dieser Overhead in Kauf genommen. Die Verknüpfungen zwischen den Komponenten werden als Graph dargestellt, das bedeutet, eine Komponente kann mehrer Elternkomponenten haben. Hat eine Applikation App1 eine Verbindung zu anderen Applikationen, so wird diese Verbindung als UseVerbindung interpretiert. Das bedeutet, die Applikation App1 die anderen verwendet. Ein Beispiel wäre hier einen Webservice-Aufruf. Hat eine Solution Verbindungen zu anderen Applikationen, so wird diese als Has-Verbindung interpretiert. Eine Solution kann mit einer Solution aus dem Visual Studio verglichen werden. Ein Beispiel wäre hier, ein Projekt stellt eine Web-Applikation und eine WPL-Applikation zur Verfügung. Abbildung 1: Design Komponente 3.1.1 Datenbankmodell Damit nicht für je die Tabellen tabApplication und tabSolution eine eigene Verbindungstabelle erstellt werden muss, wurde die Verbindungstabelle auf Stufe tabComponent realisiert. tabStatus PK tabComponentRef tabComponent StatusId KeyName LocaleNameId InsertDate InsertUser UpdateDate UpdateUser PK ComponentId FK1 StatusId InsertDate InsertUser UpdateDate UpdateUser tabApplication PK,FK1 ApplicationId PK,FK1 PK,FK2 ComponentId ChildComponentId tabSolution PK,FK1 SolutionId Abbildung 2: Datenbankteilmodell für Komponenten SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 4/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 3.2 Modul-Architektur 3.2.1 Module suchen Die Module werden mit der Klasse ModuleScanner gesucht. Dabei wird nur das Unterverzeichnis Modules überprüft. Gefundene Module werden anschliessend in der Datenbank gespeichert, damit nicht bei jedem Request das Suchen der Module ausgeführt werden muss. Die neu gefundenen Module werden jedoch nicht direkt aktiviert, dies müssen durch den Benutzer bzw. Administrator manuell aktiviert werden. Der ModuleScanner wird in einer temporären AppDomain instanziiert, damit wir nicht benötigte Assemblies, welche keine Module enthalten, wieder entladen können. Abbildung 3: Module suchen. 3.2.2 Module im Betrieb Module werden im ModuleManager verwaltet. Dieser Manager ist für das Laden, Instanziieren sowie für die Kommunikation zwischen den Modulen und den ModuleContainern verantwortlich. Ein ModuleContainer kann Module aufnehmen und diese darstellen. Häufig wird dies eine Page sein, welche das Interface IModuleContainer implementieren muss. Für die Kommunikation werden Nachrichten über den ModuleManager gesendet. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 5/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Abbildung 4: Modul. Die Klasse Module, welche von Entity erbt, agiert als DAO-Klasse. Die Implementierungen der Module können von der abstrakten Klasse Module ableiten oder müssen zumindest das Interface IModule implementieren. Der Name sowie die Beschreibung der Module werden als Attribute auf der Module-Klasse definiert. Nachfolgend werden die zusätzlichen Interfaces für die Module beschrieben 3.2.3 IRunnableModule Stellt ein Modul Funktionen für andere Module zur Verfügung, so kann dieses das Interface IRunnableModule implementieren. Dieses Interface stellt zwei Methoden Run mit unterschiedlichen Parametern zur Verfügung. Die erste erwartet nur Argumente und stellt die default-Run-Methode dar. Stellt ein Modul nur eine Funktion zur Verfügung, so wird diese Methode verwendet. Möchte ein Modul mehrere Funktionen zur Verfügung stellen, so kommt die überladene Methode Run mit den Parametern Key und Argumente ins Spiel. Der Key stellt dabei das Schlüsselwort für die anzuwendende Funktion dar. 3.2.4 IJobModule Möchte ein Module durch den täglichen UrlStarter (DB-Job, welcher eine URL aufruft) aufgerufen werden, so implementiert es dieses Interface. Die Methode Run wird dann von PadMan aufgerufen. 3.2.5 IWebMethodModule Benötigt ein Modul eine WebMethod, so muss dieses das Interface IWebMethodModule implementieren. Dies wird zum Beispiel beim ObjectChooser benötigt. 3.2.6 IFilterModule Möchte ein Modul – zum Beispiel für die Übersichtseite – Filter zur Verfügung stellen, so muss es dieses Interface implementieren. Zusätzlich muss es sich jedoch beim Modul, welches die Übersicht darstellt, registrieren. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 6/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Abbildung 5: Laden der Module. Beim Laden der Module wird zusätzlich überprüft, ob in dem Verzeichnis ein module.config vorhanden ist. Wird ein module.config gefunden, so wird dies in den ConfigManager hinzugefügt. Dadurch kann das Modul durch den ConfigManager von PadMan auf das module.config zugreifen. Diese Überprüfung sowie Aktion ist im Sequenzdiagramm nicht ersichtlich. 3.3 Integration in die Serverumgebung Die Webapplikation Corp_PadMan wird auf der PWW-Serverfarm zu liegen kommen. Die Webapplikation ist jeweils auf den Master-Server zu publizieren, die Replikation in die Serverfarm geht automatisch vonstatten. Weitere Details sind im Dokument Migration zu finden. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 7/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 3.4 Generische Datenspeicherung (Value) Um die Erweiterbarkeit von PadMan zu erreichen, müssen auch die Values generisch aufgebaut werden. Um die Benutzung der generischen Values zu vereinfachen, können komplexere Values durch Erweiterungen der Klasse ValueDetail abgedeckt werden. Values können auch in Listen aufgeführt werden, so können zum Beispiel zu einer Komponente mehrere ConnectionStrings erfasst werden. Hierfür wurde eine ValueList mit mehreren Values realisiert. Für eine Komponente können die Werte in einer Umgebung (Environment) unterschiedlich sein. Wurde für einen Wert jedoch keine Umgebung definiert, so ist dieser Wert in allen Umgebung gültig. Da es für einen Wert eine Liste von Werten geben kann, werden ValueDetails in der Klasse Value gekapselt. Als Beispiel seien hier die ConnectionStrings erwähnt. Für eine Component können mehrere ConnectionStrings definiert werden. Hier wurde das Composite-Pattern angewendet. Abbildung 6: Klassenübersicht Values. 3.4.1 Datenbankmodell Damit Abfragen trotz der komplexen Hierarchie performant ausgeführt werden können, wurde eine redundante Verbindung zwischen ValueDetail und Component hinzugefügt. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 8/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie tabComponent tabKey PK PK tabValue KeyId PK ValueId Name Label ReadOnly InsertDate InsertUser UpdateDate UpdateUser FK1 FK2 KeyId ComponentId InsertDate InsertUser UpdateDate UpdateUser tabValueListValue PK,FK1 StatusId InsertDate InsertUser UpdateDate UpdateUser tabValueList ValueListId PK,FK1 ComponentId tabSimpleValue ValueListId PK,FK1 SimpleValueId tabCinnectionStringValueDetail PK ConnectionStringValueDetailId FK1 Key Server DatabaseName UserId Password TimeOut Options InsertDate InsertUser UpdateDate UpdateUser tabValueDetail PK ValueDetailId FK2 EnvironmentId SimpleValueId ComponentId tabTaskValueDetail PK TaskValueDetailId FK1 Name Must ApproverUserId DueDate SignerUserId Signature InsertDate InsertUser UpdateDate UpdateUser ValueDetailId tabPersonValueDetail PK PersonValueDetailId FK1 UserId AccountTypeId Comment HasLead IsActive InsertDate InsertUser UpdateDate UpdateUser ValueDetailId Abbildung 7: Datenbankmodell Values. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 9/24 Projektname Dokumenttitel Artifaktname 4 Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Module Ein Modul wird jeweils durch eine Klasse repräsentiert. Ein Modul kann jedoch weitere Klasse definieren und verwenden. Damit die Übersicht in den Modulen gewährleistet ist und die Module somit auch besser wartbar sind, sind sie in verschiedenen Visual Studio Projekte strukturiert. In den nachfolgenden Kapitel werden die Modulen pro Visual Studio Projekt beschrieben. 4.1 BasicModule In diesem Projekt sind Module vorhanden, welche die Grundfunktionalitäten der Applikation abdecken. 4.1.1 CreateComponentModule Stellt die Funktion neue Komponenten erstellen zur Verfügung. Die Funktion wird im UserInterface durch einen Dialog dargestellt. Für das Auswählen von Personen benötigt dieses Modul eine Web-Methode, welche auf der Page vorhanden sein muss. Abbildung 8: Mockup Dialog „Komponente erstellen“. 4.1.2 DocumentViewModule Mit diesem Modul können Dateien zu einer Komponente bzw. Applikation hochgeladen werden. Zudem ist es auch möglich, weitere Links zu erfassen. Speziell sei hier erwähnt, dass das Dokument erst beim Zugriff aus der Datenbank geladen wird. Auch wird durch die Post-Library das Dokument auf der Harddisk des Webservers zwischengespeichert. Abbildung 9: Mockup "Dokumente verwalten". Abbildung 10: Mockup Dialog „Dokument editieren“. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 10/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Abbildung 11: Klassenübersicht DocumentViewModule. 4.1.3 HermesLightModule Dieses Modul deckt die Funktion aus Teamportal ab. Abbildung 12: Mockup "HERMES Light Angaben". SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 11/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 4.1.4 OverviewModule Durch dieses Modul erhält der Benutzer eine Übersicht über alle existierenden Komponenten, welche in einem GridView dargestellt werden. Zudem ist es möglich, die darzustellenden Komponenten zu filtern. Module welche das Interface IFilterModule implementieren, können die Filterfunktionen erweitern. Die Filter der Module werden im OverviewModule zusammengeführt und anschliessend an das GridView angebunden. 4.1.5 PathModule Mit diesem Module können Pfade zu einer Komponente erfasst werden. Benutzer, Admin sowie Extranet URL sind Pfade zu der Applikation. Zudem verwendet die aktuelle Sendto-Applikation den Pfad Extranet zur Überprüfung ob die Applikation auch ins Extranet publiziert werden muss. Da die Sendto-Applikation nicht Teil des Projektes ist, wurde dieses Verhalten übernommen. Abbildung 13: Mockup "Pfadangaben". 4.1.5.1 Schnittstellen Wird die Run-Methode ohne Key aufgerufen, so wird GetUserUrl ausgeführt. GetUserUrl Beschreibung Parameter Holt die UserUrl zu einer Komponente Objekt Komponente GetExtranetUrl Beschreibung Holt die ExtranetUrl zu einer Komponente Parameter Objekt Komponente SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 12/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 4.1.6 PersonViewModule In dieser Darstellung werden alle Personen (Accounts) angezeigt, welche mit dieser Komponente in Verbindung sind. Da der Zugriff auf bestimmte Personen auch in anderen Modulen stattfindet, wurde ein weiteres Modul PersonManager für den Zugriff definiert. Dieses Modul stellt keine Benutzerschnittstelle zur Verfügung. Für die einfachere Verwendung des PersonManagers, wurde ein zusätzliches Interface IPersonManagerModule in den Core aufgenommen. Abbildung 14: Mockup Personen verwalten. Abbildung 15: Mockup Dialog "Person editieren". SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 13/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Abbildung 16: Klassenübersicht PersonViewModule. Im nachfolgenden Bild ist die Datenbank-Abbildung der Personen dargestellt. Alle Personen werden in der ValueList „people“ aufgeführt. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 14/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie ValueList „people“ SimpleValue SimpleValue SimpleValue SimpleValue PersonValueDetail Pascal Irminger „PRJMGR“ ... PersonValueDetail Pascal Irminger „DEV“ ... PersonValueDetail Marcel Lehmann „DEV“ ... PersonValueDetail Axel Zenklusen „DEP“ … Abbildung 17: Value Struktur People. 4.1.7 PersonManagerModule Damit das Modul PersonViewModule nicht mit Schnittstellen überlagert wird, wurde ein separates Modul mit Schnittstellen implementiert. Das PersonManagerModule stellt keine Controls für das UserInterface zur Verfügung. Damit die Verwendung der Schnittstellen für die Module vereinfacht wird, wurde ein zusätzliches Interface für diese Klasse definiert. Abbildung 18: Klassenübersicht PersonManagerModule. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 15/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 4.1.8 PortfolioModule Dieses Modul übernimmt die Funktionalität Portfolio aus dem Teamportal. Da während des Projektes durch das Management von IT13 eine Änderung angekündigt wurde, wurde die Funktionalität eins zu eins übernommen. Abbildung 19: Mockup "Portfolio Angaben". 4.1.9 ReleaseInfoModule Durch dieses Modul lässt sich Informationen zu der aktuellen Version der Komponente erfassen. Diese Informationen verwendet die Post-Library für die About-Seite in der Applikation. Abbildung 20: Mockup "Release Informationen". SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 16/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 4.2 DatabaseModule In diesem Projekt werden Module zusammengefasst, welche Funktionalitäten zur Datenbank zur Verfügung stellen. 4.2.1 DatabaseCreationScriptModule Dieses Modul fügt sich in die SqlConnectionViewModule ein. Durch dieses Modul kann anhand einer Datenbank-Connection das Script für die Erstellung der Datenbank generiert werden. Für den Benutzer wird eine Mail-Nachricht geöffnet, welche als Inhalt das Script und als Empfänger den Datenbank-Administrator hat. Das Script sowie der Empfänger können in der Modul-Administrationsseite verändert werden. 4.2.2 PasswordGeneratorModule Dieses Modul stellt kein UserInterface zur Verfügung. Es implementiert das IRunnable-Interface welches beim Aufruf ein generiertes Passwort zur Verfügung stellt. Das Modul SqlConnectionViewModul verwendet dieses Modul. 4.2.3 SqlConnectionViewModule Das SqlConnectionViewModule zeigt alle erfassten Connections zu einer Komponente an. Zudem ist es möglich mit diesem Modul, weitere Connections zu erfassen. Da das Passwort in der Datenbank verschlüsselt abgelegt wird und bei einem Zugriff einen Log-Eintrag erstellt wird, wird bei der Anzeige das Passwort erst nach einer Benutzeraktion dargestellt. Abbildung 21: Klassenübersicht SqlConnectionViewModule. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 17/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 4.3 ProjectWizard In diesem Projekt wird das Projektdeckblatt implementiert. 4.3.1 ProjectFrontPageModule Diese Klasse ist für die Darstellung des Projektdeckblattes verantwortlich. Es übernimmt das Erstellen, Verwalten sowie Löschen von Projektdeckblätter. Pro Projektdeckblatt ist es möglich, die notwendigen Tasks zu definieren. Anschliessend können Termin gesetzt werden, bis wann ein Task abgeschlossen sein muss. Wurde ein Task in ein Projektdeckblatt (nachfolgend Tasksheet genannt) aufgenommen, so muss dieser schlussendlich von einer Person signiert werden. Wurde in der Konfiguration für einen Task der Personenkreis für das Signieren eingeschränkt, so steht diese Funktion in der Benutzeroberfläche nur für diesen Personenkreis zur Verfügung. In der Konfiguration eines Tasks kann ebenfalls eine Erinnerungsfunktion definiert werden. Diese wird durch den UrlStarter ModuleJob.aspx angestossen. Ein Tasksheet hat ein Start sowie Enddatum, einen Namen. Zusätzlich kann ein Tasksheet 0 bis Anzahl vorhanden Tasks haben. In der untenstehenden Abbildung ist die Struktur eines Tasksheets in der Datenbank dargestellt. Für den Tasksheet „Release 1“ wurden in diesem Beispiel nur einen Task definiert. ValueList „taskSheets“ ValueList „taskSheet“ SimpleValue „taskSheetName“ StringValueDetail Release 1 SimpleValue „taskSheetStart“ StringValueDetail 05.12.2011 SimpleValue „taskSheetEnd“ StringValueDetail 06.05.2012 SimpleValue „taskSheetTask“ TaskValueDetail DB-Review 09.12.2011 Aldo Bittel Abbildung 22: Value Struktur TaskSheets. Zur einfacheren Anwendung in der Benutzeransicht, wurde die Abbildung mit der Klasse TaskSheet abstrahiert. Zusätzlich wurden Konverter definiert, welche zwischen der Datenbank-Objekte und der TaskSheet-Klasse den Inhalt umwandeln. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 18/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Abbildung 23: Klassenübersicht TaskSheets. Jeder Task hat einen eindeutigen Name und wird anhand diesem identifiziert und mit einer TaskDefinition verbunden. Eine TaskDefinition wird im web.config definiert. Ein Auszug einer TaskDefinition im web.config ist in der untenstehenden Abbildung ersichtlich. Der Task DB-Review wird dabei von der Klasse DbReviewTask abstrahiert. Diesen Task dürfen nur bittela und gerberhe signieren. Zusätzlich wurde ein Erinnerungsmail definiert, welches nach 30 Tag ab Start des TaskSheet ein Mail versendet. Die Empfänger sind dabei die Personen, welche bei der betroffenen Komponente als Entwickler definiert wurden. Ein Kopie des Mails wird bittela erhalten. Der Inhalt der Mail wird durch subject und text definiert. Die Texte können Parameter erhalten, welche zusätzlich in der Liste parameters aufgeführt werden müssen. Hier in diesem Beispiel wird die aktuelle ID der Komponente in den Inhalt einfliessen. Die Konfiguration wird durch den Konfigurations-Manager von PadMan eingelesen und als Rückgabe erhält man eine Liste von ITaskDefinition. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 19/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Abbildung 24: Klassenübersicht Message. 4.4 SubversionModule 4.4.1 RepositoryModule Stellt das UserInterface für das Erfassen eines SVN-Pfades zur Verfügung. Zusätzlich zur Texteingabe kann mit dem Repository Browser der Pfad selektiert werden. Abbildung 25: Mockup „Repository Browser“. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 20/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie 4.4.2 CreateRepoFolderModule Mit diesem Modul kann der SVN-Pfad im Subversion erstellt werden. Zudem werden die Ordner trunk und branches hinzugefügt. Der Ordner tags wird zur Zeit ausgeschlossen, da das Pre-Commit-Hook dies zur Zeit nicht zulässt. Das Modul stellt keine Controls zur Verfügung. 4.4.3 PeopleAuthenticationModule Mit diesem Modul lassen sich die Berechtigung zu einem Repository setzten. Beim Aufruf der Run-Methode werden für alle Applikationen die Berechitgung aktualisiert. Das Modul stellt keine Controls zur Verfügung. 5 Schnittstellen 5.1 ComponentService PadMan stellt mit dem ComponentService Schnittstellen zur Verfügung, um die vorhandenen Komponenten mit deren Personen zu laden. Als Parameter können die gewünschten Personengruppen angegeben werden. Die Schnittstelle gibt als Resultat ein Objekt vom Typ ComponentServiceResult zurück. Diese enthält alle Komponente sowie deren Beziehungen. Da die Komponenten als Graph und nicht als Baum aufgebaut sind, werden die Beziehungen separat aufgeführt. Ansonsten hätte die Serialisierung mit zirkulären Beziehungen ihre Schwierigkeiten. Abbildung 26: Klassenübersicht Service-Objekte für ComponentService. 5.2 SendToService Für das Publizieren der Applikationen existiert die Applikation SendTo. Diese Applikationen ist Teil der Arbeit und existierte bereits. In dieser Applikation kann der Entwickler eine Applikation auswählen, welche er publizieren möchte. Bisher holte die Applikation die Daten direkt aus der Datenbank Corp_Teamportal. Mit PadMan wurde für die Applikation SendTo ein Service implementiert. Dieser Service benötigt alle Applikationen bei welchen der Benutzer Entwickler oder Stellvertreter ist. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 21/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Abbildung 27: Klassenübersicht Service-Objekte für SendToService. 5.3 Informationen zu fehlenden Indexes erhalten Um an Informationen zu allen potentiell fehlenden Indexes in bestehenden Datenbanken zu gelangen, ist der Aufwand schon grösser. Hier kommen sämtliche Applikations-Datenbanken in Frage. Die unten stehende Tabelle zeigt die Instanzen der PWW Datenbank Server. Entwicklung (DEV) serverdbdev01 serverdbdev02 serverdbdev03 serverdbdev04 Integration (INT) serverdbint01 serverdbint02 serverdbint03 serverdbint04 Produktion (PROD) serverdbprod01 serverdbprod02 serverdbprod03 serverdbprod04 Tabelle 1: SQL Server Instanzen im PWW-Umfeld (anonymisiert). Hinzu kommen die Instanzen der MAP Datenbank Server. Entwicklung (DEV) serverdbdev Integration (INT) serverdbint Produktion (PROD) serverdbmobile1 serverdbmobile2 serverdbprod1 serverdbprod2 Tabelle 2: SQL Server Instanzen im MAP-Umfeld (anonymisiert). Nachfolgendes SQL-Query selektiert in der bestehenden Intranet-Applikation Corp_SysLog mit Hilfe von Systemtabellen die möglicherweise fehlenden Indexes auf der entsprechenden Datenbank Server Instanz. Wie bereits in [01] erwähnt, nimmt Corp_SysLog die Datenselektion lediglich auf der eigenen Datenbank Server Instanz vor. SELECT CAST(migs.user_seeks * migs.avg_total_user_cost * (migs.avg_user_impact * 0.01) AS int) AS index_advantage ,migs.user_seeks ,migs.avg_user_impact ,mid.inequality_columns ,mid.included_columns ,mid.statement ,mid.equality_columns FROM sys.dm_db_missing_index_group_stats migs WITH (NOLOCK) INNER JOIN sys.dm_db_missing_index_groups mig WITH (NOLOCK) ON migs.group_handle = mig.index_group_handle INNER JOIN sys.dm_db_missing_index_details mid WITH (NOLOCK) ON mig.index_handle = mid.index_handle ORDER BY index_advantage DESC Listing 1: Abfrage, um Informationen zu fehlenden Indexes zu erhalten. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 22/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie Als Beispielresultat sei hier die aktuelle Server-Antwort von serverdbprod01 dargestellt: index_ advantage user_ seeks inequality_ columns included_columns statement equality_columns 2282433 avg_ user_ impact 65.75 124789 NULL [Corp_TeamWorkPlace] .[dbo].[tabWidgetInstance] [lngWidgetZoneID] 27260 129386 83.86 NULL [Corp_Wiki] .[dbo].[tabWikipage] [lngWikiID] 23377 2190 27.56 NULL [Corp_SysLog] .[dbo].[sysssislog] [event] 12972 60 53.1 NULL 1095 27.51 NULL [Corp_DSP] .[dbo].[tabHistory] [Corp_SysLog] .[dbo].[sysssislog] [strActivityID] 11667 7752 382 17.75 [lngBcTypeID] [Corp_DSP].[dbo].[tabBC] [bitConfidential], [bitDeleted] 6875 529 93.72 NULL [lngWidgetInstanceID], [lngWidgetID], [intPosY], [strUser], [bitDeleted], [lngWidgetInstanceDefaultID], [bitLocked], [dtmUpdate], [strUpdateUserID] [lngWikiPageID], [lngTextID], [strPageTitle], [lngPageRestictionsLevel], [lngCounter], [bitIsRedirect], [dtmTouched], [dtmRedered], [txtRenderedText], [bitDiscussion], [lngCorrespondingWikipageID] [id], [sourceid], [executionid] [lngBCID], [dtmUpdate] [sourceid], [executionid], [endtime] [lngBCID], [strBC], [dtmEnd] [lngBCID] [Corp_DSP].[dbo].[tabBC] 6706 19984 97.8 NULL NULL 6104 1722 91.85 [strEmail] 5625 1058 76.6 [strProcessID] [strLastname], [strLastnameAlias], [strFirstname], [strFirstnameAlias], [strFullname], [strFullnameAlias], [strOeShort], [strEmployeeNumber], [strUserID] [lngBCID] [Corp_Blog] .[dbo].[tabBeitrag] [Corp_MetaData] .[dbo].[tabOrgEmployee] [strProcessID], [bitDeleted] [strAutor] [Corp_DSP].[dbo].[tabBC] [event] NULL [bitDeleted] Tabelle 3: Beispielresultat der Index-Abfrage. 5.4 Informationen zu Reads-Statistiken erhalten Bei den Reads-Statistiken verhält es sich ganz ähnlich wie bei den Index-Informationen. Auch die ReadsStatistiken müssen von allen Applikations-Datenbanken mit einbezogen werden, um ein möglichst grosses Bild mit allen Plattformen erhalten zu können. SELECT database_id ,tst1.TraceID ,name ,tst1.StartTime ,tst1.CPU ,tst1.Reads AS maxReads ,tst1.TextData ,tst1.LoginName SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 23/24 Projektname Dokumenttitel Artifaktname Corp_PadMan Systemdesign Corp_PadMan Systemdesign Informationstechnologie FROM Corp_SysLog.dbo.tabSysTrace AS tst1 INNER JOIN ( SELECT MAX(tst1.TraceID) AS TraceID FROM Corp_SysLog.dbo.tabSysTrace AS tst1 INNER JOIN sys.databases ON tst1.DatabaseID = sys.databases.database_id WHERE tst1.Reads > 50 AND LoginName LIKE 'IUSR_%' GROUP BY sys.databases.database_id ) AS tst2 ON tst2.TraceID = tst1.TraceID INNER JOIN sys.databases ON tst1.DatabaseID = database_id ORDER BY maxReads DESC Listing 2: Abfrage, um Informationen zu Reads-Statistiken zu erhalten. 6 Beschreibung der Elemente Keine weiter führenden Angaben. 7 Anforderungszuordnung Keine weiter führenden Angaben. 8 Sicherheit Keine weiter führenden Angaben. SD_PADMAN_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 29.03.2012 24/24 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Systemanforderungen Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung SY Systemanforderungen Corp_LogObi Corp_LogObi LOGOBI Irminger Pascal, IT133 28.03.2012 Zenklusen Axel, IT131 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.01 21.11.2011 Neues Dokument X01.02 05.03.2012 Erweiterungen und Anpassungen X01.03 26.03.2012 Korrekturen X01.04 V01.04 28.03.2012 28.03.2012 Finalisierung Freigabe Zenklusen Axel, IT131 Zenklusen Axel, IT131 Zenklusen Axel, IT131 Irminger Pascal, IT133 Irminger Pascal, IT133 Haefeli Stefan, IT132 SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 1/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 3 1.1 Zweck ........................................................................................................................................................ 3 1.2 Beschreibung ............................................................................................................................................. 3 1.3 Tailoring ..................................................................................................................................................... 3 1.4 Definitionen, Akronyme and Abkürzungen ................................................................................................ 3 1.5 Referenzen ................................................................................................................................................ 3 2 Allgemeine Beschreibung .............................................................................................................................. 4 2.1 Ausgangslage ............................................................................................................................................ 4 2.2 Produktperspektive .................................................................................................................................... 4 3 Allgemeine Anforderungen ........................................................................................................................... 5 3.1 Personas .................................................................................................................................................... 5 3.2 Domainmodell ........................................................................................................................................... 6 3.2.1 Strukturdiagramm .................................................................................................................................. 6 3.2.2 Konzeptbeschreibung ............................................................................................................................. 6 3.3 Use Cases .................................................................................................................................................. 6 3.3.1 L_UC_10: LogEvents importieren ............................................................................................................ 7 3.3.2 L_UC_20: LogEvents anzeigen ................................................................................................................ 8 3.3.3 L_UC_30: LogEvent Details anzeigen ...................................................................................................... 9 3.3.4 L_UC_40: LogEvent löschen .................................................................................................................. 10 3.3.5 L_UC_50: LogEvent Status ändern ........................................................................................................ 11 3.3.6 L_UC_60: Library Fehler markieren ....................................................................................................... 12 3.3.7 L_UC_70: Filter verwalten (CRUD) ......................................................................................................... 13 3.3.8 L_UC_80: Filter anwenden .................................................................................................................... 14 3.3.9 L_UC_90: LogEvents gruppieren ........................................................................................................... 15 3.3.10 L_UC_100: Überwachung definieren (CRUD) ........................................................................................ 16 3.3.11 L_UC_110: User informieren / alarmieren ............................................................................................. 17 3.3.12 L_UC_120: Applikationen je LogEvent ansehen .................................................................................... 18 3.3.13 L_UC_130: Auswertungen ansehen ...................................................................................................... 19 3.3.14 L_UC_140: LogEvents säubern (Clean) .................................................................................................. 20 3.4 Nicht-funktionale Anforderungen ............................................................................................................ 21 3.4.1 Technische Anforderung ....................................................................................................................... 21 3.4.2 Ergonomische Anforderung .................................................................................................................. 21 3.4.3 Verfügbarkeit ........................................................................................................................................ 21 3.4.4 Benutzerfreundlichkeit .......................................................................................................................... 21 3.4.5 Datenverlust ......................................................................................................................................... 21 3.4.6 Auftreten von Fehlfunktionen ............................................................................................................... 21 3.4.7 Sicherheit ............................................................................................................................................. 21 3.4.7.1 Authentifizierung ............................................................................................................................... 21 3.4.7.2 SQL-Injektion ..................................................................................................................................... 21 3.4.7.3 X-Site Scripting .................................................................................................................................. 21 3.4.7.4 Scripts................................................................................................................................................ 21 4 Anforderungen an die Entwicklungs- und Wartungsumgebung .................................................................. 22 5 Anforderungen an die externen Schnittstellen ............................................................................................ 22 6 Detailanforderungen ................................................................................................................................... 22 7 Sicherheitsanforderungen ........................................................................................................................... 22 SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 2/22 Projektname Dokumenttitel Artifaktname 1 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie Allgemeines 1.1 Zweck Die Systemanforderungen beschreiben und strukturieren die Anforderungen an das zukünftige System. Sie werden vom Auftraggeber und Auftragnehmer beidseitig als Grundlage für die Realisierung und Abnahme des zukünftigen Systems akzeptiert. 1.2 Beschreibung Die Systemanforderungen beziehen sich je nach Phase auf die Ebene System, Subsystem oder Konfigurationseinheit (KE). Eine verfeinerte Gliederung muss vom entsprechenden Vorgehensmodell hinzugefügt werden. Die Darstellung der Systemanforderungen kann sowohl in strukturiertem Text als auch in Form von Modellen erfolgen. 1.3 Tailoring Die Systemanforderungen können auch in mehreren eigenständigen Dokumenten vorliegen, zum Beispiel pro Subsystem oder Konfigurationseinheit. 1.4 Definitionen, Akronyme and Abkürzungen Wort Definition DBA HTTP Datenbank-Administrator Das Hypertext Transfer Protocol ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten aus dem Internet/Intranet in einen Webbrowser zu laden. Das HyperText Transfer Protocol Secure ist die sichere Variante von HTTP. Syntaktisch ist HTTPS identisch mit dem Schema für HTTP, die zusätzliche Verschlüsselung der Daten geschieht mittels SSL/TLS. Internet Information Services. Webserver-Komponente in Microsoft Windows. Über IIS können ASP- oder .NET-Applikationen (ASP.NET) ausgeführt werden .NET-Entwicklungsabteilung von IT Post Informationstechnologie Post Skriptsprache, die hauptsächlich für das DOM-Scripting in Web-Browsern eingesetzt wird. Das Lightweight Directory Access Protocol (LDAP) erlaubt die Abfrage und die Modifikation von Informationen eines Verzeichnisdienstes über ein IP-Netzwerk. Für .NET portiertes O/R-Mapping Framework (Hibernate). Technik der Softwareentwicklung, mit der ein in einer objektorientierten Programmiersprache geschriebenes Anwendungsprogramm seine Objekte in einer relationalen Datenbank ablegen kann. Post Wide Web. Das Intranet der Schweizerischen Post. Structured Query Language Auch Microsoft SQL Server. SQL Server Produkt von Microsoft. Derzeit in den Versionen SQL Server 2005 und SQL Server 2008 R2 bei der Schweizerischen Post im Einsatz. Secure Sockets Layer, Transport Layer Security Cross-Site-Scripting (XSS) bezeichnet das Ausnutzen einer Sicherheitslücke in Webanwendungen, indem Informationen aus einem Kontext, in dem sie nicht vertrauenswürdig sind, in einen anderen Kontext eingefügt werden, in dem sie als vertrauenswürdig eingestuft werden. Aus diesem vertrauenswürdigen Kontext kann dann ein Angriff gestartet werden. HTTPS IIS IT13 IT Post Javascript LDAP NHibernate O/R-Mapping PWW SQL SQL Server SSL/TLS X-Site-Scripting 1.5 Referenzen Nr. Titel [01] Systemanforderungen Corp_PadMan SY_PADMAN_Systemanforderung_V01.03.docx SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 3/22 Projektname Dokumenttitel Artifaktname 2 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie Allgemeine Beschreibung 2.1 Ausgangslage Die Applikation LogEventViewer ist eine der meistbenutzen Applikationen von IT13. Hier werden die Logs gesammelt und für die Entwickler zugänglich gemacht. Es kann also für jede Applikation überprüft werden, wie stabil diese läuft. 2.2 Produktperspektive Mit PadMan wird eine neue zentrale Applikation entstehen, die das Verwalten und Entwickeln von Applikationen unterstützten soll. Dabei wird den Entwicklern auch ein neues Log/Error Tool „LogObi“ zur Verfügung gestellt. Im Laufe der Zeit, haben sich immer mehr Anforderungen an das Logging ergeben, die nun mit LogObi abgedeckt werden sollen. Hierbei ist auch eine Neuausrichtung in Planung. Bis heute gab es einfach einen LogViewer, in dem die Entwickler ihre Errors und Warnings verfolgen konnten. Das Ziel ist es nun, dieses System in Benutzerfreundlichkeit und Effizienz zu verbessern. Die Bedürfnisse die LogObi abdecken soll sind: LogObi als Entwicklungsinstrument LogObi als Analyseinstrument LogObi als aktives Alarming Das neue Logging-Tool soll aufgetretene Fehlerlogs in produktiven Applikationen nicht mehr länger nur anzeigen können (Pull), sondern aktiv die verantwortlichen Entwickler darüber informieren (Push). Durch ein geeignetes Regelwerk sollen die Entwickler in der Lage sein, die Benachrichtigungen, welche sie erhalten, zu steuern und gegebenenfalls einzuschränken. SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 4/22 Projektname Dokumenttitel Artifaktname 3 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie Allgemeine Anforderungen 3.1 Personas Hier seien noch einmal die drei Personas aus [01] erwähnt: Peter Ledermann (44), Manuel Imhof (28) und Sabrina Schmid (32). Peter Ledermann (44): Hat gute Computerkenntnisse und arbeitet häufig mit Office (Word, Excel) sowie mit SAP. Er arbeitet als Manager und muss so die Kosten der Applikationen sowie deren Offerten überwachen. Er ist verantwortliche für die Ressourcenplanung der Entwickler und versucht so mit den Kunden eine Terminplanung der Anwendungen zu definieren. Falls die Kosten einer Anwendungsentwicklung den Betrag der Offerte überschreiten, versucht er, mögliche Lösungen mit dem Kunde zu finden. Bei Kundenanfragen für eine neue Anwendung bzw. neue Funktionen zu einer bestehenden Applikation konsolidiert er die bereits vorhanden Implementierungen und zeigt dem Kunde mögliche Lösungen wie zum Beispiel mandantenfähige Applikationen. Manuel Imhof (28): Hat forgeschrittene Computerkenntnisse und arbeitet als SoftwareEntwickler im Webumfeld. Er nutzt das Internet als Informations- und Unterhaltungsinstrument. Als Entwickler einer Anwendung ist er meistens zugleich Projektleiter. Für das Verwalten von Anwendungen für Support sowie Wartung ist er selber verantwortlich. Für das Entwickeln einer Anwendung verwendet er Visual Studio und er verwaltet seinen Source Code mit Subversion. Als Unterstützung zur Entwicklung der Anwendung steht ihm eine Library, welche speziell für diese Abteilung entwickelt wurde, zur Verfügung. Häufig entwickelt er Anwendungen im Kostenbereich 10‘000 bis 100‘000 Franken. Bei diesen Anwendungen ist er für alle notwendigen Schritte von Offerte bis zur Publikation der Anwendung selber verantwortlich. Er übernimmt auch die Schnittstelle zum Kunde. Bei grösseren Anwendung arbeitet er in einem Team von Entwickler und ihm werden diverse Rollen übergeben. Es kann aber auch sein, dass er die Funktion Projektleiter übernimmt, jedoch keinen Code entwickeln wird. Sabrina Schmid (32): Hat gute Computerkenntnisse und das Arbeiten mit Webapplikationen fällt ihr leicht. Als 2nd-Level-Supporterin nutzt sie das Telefon und EMail sehr häufig. Sie ist die Schnittstelle zwischen den Entwicklern und den Benutzern. Kann der 1st-Level-Support eine Anfrage nicht beantworten, so wird diese Anfrage an Sabrina weitergeleitet. Falls sie die Anfrage nicht selber beantworten kann, informiert sie den Verantwortlichen der Anwendung, zu welcher die Anfrage gerichtet ist. Die Kommunikation zum Benutzer übernimmt sie weiterhin. Der Verantwortliche wird ihr die Antwort entweder mündlich oder schriftlich geben. Das Verwalten sowie Überwachen der Anfragen und deren Bearbeitungszeit übernimmt ebenfalls Sabrina. Für diese Aufgabe stehen ihr verschiedene Stellvertreter sowie Mitarbeiter zur Verfügung, so dass während den Büroarbeitszeiten die Anfragen so schnell wie möglich beantwortet werden können. SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 5/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie 3.2 Domainmodell 3.2.1 Strukturdiagramm Abbildung 1: Domainmodell Corp_LogObi. 3.2.2 Konzeptbeschreibung LogEvent Beschreibung Enthält den eigentlichen Logeintrag Attribute Beziehung Es können verschiedene Filter auf eine beliebige Anzahl LogEvents passen Filter Beschreibung Attribute Beziehung Enthält den Filter mit den passenden Kriterien Es können verschiedene Filter auf eine beliebige Anzahl LogEvents passen 3.3 Use Cases In der untenstehenden Tabelle werden alle Use Cases mit deren Gewichtung dargestellt. Die Gewichtung wird zwischen 1 und 10 definiert. Dabei gilt ein Wert von 10 zwingend zu implementieren und einen Wert von 1 als „nice to have“. Umso höher der Wert Kritisch ist, je mehr Unklarheiten bzw. Wissen fehlt für die benötigte Funktion. Name LogEvents importieren LogEvents anzeigen LogEvent Details anzeigen LogEvent löschen LogEvent Status ändern Library Fehler markieren Filter verwalten (CRUD) Filter anwenden LogEvents gruppieren Überwachung definieren (CRUD) User informieren / alarmieren Applikationen je LogEvent ansehen Auswertungen ansehen LogEvents säubern (Clean) SY_LOGOBI_Systemanforderung_V01.04.docx Bezeichnung L_UC_10 L_UC_20 L_UC_30 L_UC_40 L_UC_50 L_UC_60 L_UC_70 L_UC_80 L_UC_90 L_UC_100 L_UC_110 L_UC_120 L_UC_130 L_UC_140 © Die Schweizerische Post Ausgabedatum 28.03.2012 Gewicht 10 10 10 8 5 5 5 5 2 4 4 1 1 5 Kritisch 4 1 1 1 2 1 2 3 3 1 1 3 1 1 6/22 Projektname Dokumenttitel Artifaktname 3.3.1 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_10: LogEvents importieren Bezeichnung L_UC_10 Name LogEvents importieren Scope LogObi Level SystemAktion Primärer Aktor System Stakeholder Entwickler Interessen Entwickler will aktuelle LogEvents sehen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Aktor löst Event für Import aus 2. System importiert die Daten und stösst Verarbeitung an 3. Stored Procedure verarbeitet die importierten Logs und reichert diese an. Erweiterung Spezialanforderung Auftrittshäufigkeit häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 7/22 Projektname Dokumenttitel Artifaktname 3.3.2 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_20: LogEvents anzeigen Bezeichnung L_UC_20 Name LogEvents anzeigen Scope LogObi Level SystemAktion Primärer Aktor System Stakeholder Entwickler Interessen Entwickler will aktuelle LogEvents sehen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer startet die Anwendung 2. System zeigt die auf den Benutzer passenden LogEvents an. Erweiterung Spezialanforderung Auftrittshäufigkeit häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 8/22 Projektname Dokumenttitel Artifaktname 3.3.3 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_30: LogEvent Details anzeigen Bezeichnung L_UC_30 Name LogEvent Details anzeigen Scope LogObi Level SystemAktion Primärer Aktor System Stakeholder Entwickler Interessen Entwickler will die Details des aktuellen LogEvents sehen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt auf einem Logevent Details an 2. Erweiterung Spezialanforderung Auftrittshäufigkeit System zeigt dem Benutzer alle Details dieses LogEvents häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 9/22 Projektname Dokumenttitel Artifaktname 3.3.4 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_40: LogEvent löschen Bezeichnung L_UC_40 Name LogEvent löschen Scope LogObi Level Benutzeraktion Primärer Aktor Entwickler Stakeholder Interessen Entwickler will den LogEvent aus der Ansicht entfernen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Entwickler löscht einen LogEvent 2. Es wird die Liste der verbleibenden LogEvents angezeigt. Erweiterung Spezialanforderung Auftrittshäufigkeit Dieser Use Case soll auch auf alle LogEvents auf einem Filter anwendbar sein. häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 10/22 Projektname Dokumenttitel Artifaktname 3.3.5 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_50: LogEvent Status ändern Bezeichnung L_UC_50 Name LogEvent Status ändern Scope LogObi Level Benutzeraktion Primärer Aktor Entwickler Stakeholder Interessen Entwickler will anderen Entwicklern zeigen, dass er einen LogEvent bearbeitet oder gelöst hat. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Entwickler wählt den passenden LogEvent aus. 2. System zeigt ihm die verfügbaren Status an. 3. Benutzer wählt den passenden Status und speichert ihn. 4. Event wird mit dem gewählten Status gespeichert. Erweiterung Spezialanforderung Auftrittshäufigkeit Dieser Use Case soll auch auf alle LogEvents auf einem Filter anwendbar sein. häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 11/22 Projektname Dokumenttitel Artifaktname 3.3.6 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_60: Library Fehler markieren Bezeichnung L_UC_60 Name Library Fehler markieren Scope LogObi Level Benutzeraktion Primärer Aktor Entwickler Stakeholder Interessen Entwickler will den LogEvent als Library verursacht kennzeichnen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Entwickler markiert einen Event der Liste als Library verursacht. 2. System führt den Fehler unter der Library-Fehlern. Erweiterung Spezialanforderung Auftrittshäufigkeit Dieser Use Case soll auch auf alle LogEvents auf einem Filter anwendbar sein. häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 12/22 Projektname Dokumenttitel Artifaktname 3.3.7 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_70: Filter verwalten (CRUD) Bezeichnung L_UC_70 Name Filter verwalten (CRUD) Scope LogObi Level SystemAktion Primärer Aktor System Stakeholder Entwickler Interessen Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt einen Filter den er bearbeiten will. 2. System zeigt passenden Filter an 3. Benutzer bearbeitet den Filter 4. Benutzer teilt dem System mit, dass er die Änderungen übernehmen will 5. System Speichert die Änderungen Erweiterung Spezialanforderung Auftrittshäufigkeit häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 13/22 Projektname Dokumenttitel Artifaktname 3.3.8 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_80: Filter anwenden Bezeichnung L_UC_80 Name Filter anwenden Scope LogObi Level Benutzeraktion Primärer Aktor Entwickler Stakeholder Interessen Entwickler will die angezeigten LogEvents einschränken. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will einen Filter definieren. 2. Benutzer erstellt Filter. 3. Filter wird in der Filerliste und im Dropdown anzezeigt. Erweiterung 2a. Basisfilter benutzen. 1. Benutzer gibt Filterdaten ein. 1a. Benutzer gibt einen Text ein der auf allen Feldern gesucht wird. 1b. Benutzer schränkt von Datum / Zeit ein. 1c. Benutzer schränkt bis Datum / Zeit ein. 1d. Benutzer schränkt Komponente ein. 1e. Benutzer schränkt User ein. 1f. Benutzer schränkt Machine ein. 1g. Benutzer schränkt Environment ein. 1h. Benutzer schränkt Plattform ein. 1i. Benutzer schränkt Path ein. 1j. Benutzer schränkt Level ein. 2b. Erweiterter Filter benutzen. 1. Benutzer gibt Filterstring ein. Spezialanforderung Auftrittshäufigkeit häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 14/22 Projektname Dokumenttitel Artifaktname 3.3.9 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie L_UC_90: LogEvents gruppieren Bezeichnung L_UC_90 Name LogEvents gruppieren Scope LogObi Level Benutzeraktion Primärer Aktor Entwickler Stakeholder Interessen Entwickler will einen definierten Filter zusammengefasst anzeigen lassen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Entwickler will seine Ansicht der LogEvents durch Gruppieren vereinfachen. 2. Entwickler wählt „Gruppe erstellen“. 3. System zeigt die vorhandenen Filter an. 4. Benutzer wählt einen oder mehrere Filter für die Gruppe aus. 4. Erweiterung Spezialanforderung Auftrittshäufigkeit System zeigt nun die Gruppe der Events an. 4a. Passender Filter existiert noch nicht. 1. Benutzer startet Filter definieren. wenig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 15/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie 3.3.10 L_UC_100: Überwachung definieren (CRUD) Bezeichnung L_UC_100 Name Überwachung definieren (CRUD) Scope LogObi Level SystemAktion Primärer Aktor System Stakeholder Entwickler Interessen Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten 1. Systemverantwortlichkeit Benutzer wählt Überwachen 2. System zeigt eingerichtete Überwachungen benutzerbezogen an. 5. System zeigt die Überwachung in der Liste der Überwachungen an 3. Benutzer wählt eine Bestehende Überwachung aus oder erstellt eine Neue 4. Benutzer macht Anpassungen und speichert diese Erweiterung Spezialanforderung Auftrittshäufigkeit häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 16/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie 3.3.11 L_UC_110: User informieren / alarmieren Bezeichnung L_UC_110 Name User informieren / alarmieren Scope LogObi Level SystemAktion Primärer Aktor System Stakeholder Entwickler Interessen Vorbedingung Überwachung ist aktiv und Schwellwert tritt ein Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Aktor informiert System über das Überschreiten des Schwellwertes 2. Erweiterung Spezialanforderung Auftrittshäufigkeit Benutzer wird durch System informiert. häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 17/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie 3.3.12 L_UC_120: Applikationen je LogEvent ansehen Bezeichnung L_UC_120 Name Applikationen je LogEvent ansehen Scope LogObi Level Benutzeraktion Primärer Aktor Entwickler Stakeholder Interessen Entwickler will sehen, ob der gleiche LogEvent noch in anderen Applikationen aufgetreten ist. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Entwickler wählt den passenden LogEvent/Filter aus. 2. Entwickler teilt dem System mit, dass er die applikationsübergreifende Ansicht will. 3. Eine Zusammenfassung des LogEvents wird applikationsübergreifend angezeigt. Erweiterung Spezialanforderung Auftrittshäufigkeit Dieser Use Case soll auch auf alle LogEvents auf einem Filter anwendbar sein. selten SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 18/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie 3.3.13 L_UC_130: Auswertungen ansehen Bezeichnung L_UC_130 Name Auswertungen ansehen Scope LogObi Level Benutzeraktion Primärer Aktor Manager Stakeholder Interessen Manager will sich über die Verteilung der Fehler informieren Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer wählt welche Auswertung er sehen will. 2. Erweiterung Spezialanforderung Auftrittshäufigkeit System zeigt passende Auswertung an. häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 19/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie 3.3.14 L_UC_140: LogEvents säubern (Clean) Bezeichnung L_UC_140 Name LogEvents säubern (Clean) Scope LogObi Level SystemAktion Primärer Aktor Job-Agent Stakeholder Entwickler Interessen Entwickler will keine veralteten Events sehen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Aktor teilt System mit, dass die LogEvents aufgeräumt werden müssen 2. System löscht die LogEvents die älter sind, als die definierte Obergrenze Erweiterung Spezialanforderung Auftrittshäufigkeit häufig SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 20/22 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie 3.4 Nicht-funktionale Anforderungen 3.4.1 Technische Anforderung Das System muss mit ASP.NET in der Sprache C# entwickelt werden und in einem .NET 4.0 Pool auf einem Windows Server 2008 laufen. Die Anwendung muss mit einem O/R-Mapper implementiert werden und mindestens mit der Datenbank SQL Server 2008 arbeiten können. 3.4.2 Ergonomische Anforderung Die Applikation unterstützt die Lokalisierung, es wird jedoch nur eine deutsche Benutzerführung zur Verfügung gestellt. 3.4.3 Verfügbarkeit Die Applikation ist während den allgemeinen Bürozeiten (Mo-Fr 07:00-19:00 Uhr) verfügbar. Bei einem Incident, welcher von der Applikation ausgeht und das PWW betrifft, ist eine max. Behebungszeit von 4 Stunden notwendig. Ist der Betrieb von PWW jedoch nicht beeinflusst, wird die Störung nach Best Effort bearbeitet. Bei Incidents, welche von ausserhalb des Einflussbereiches von Corp_LogObi stammen, können keine Angaben gemacht werden. Als „Fallback“ sind die LogFiles für die Entwickler zugänglich. Was aber auch nur als temporäre Lösung angeboten werden kann. Es kann sein, dass im Fehlerfall, der Import der Logs von den DBAs abgeschaltet wird, um die Datenbank zu entlasten. Dies ist ein geplanter Ausfall und wird nicht berücksichtigt. 3.4.4 Benutzerfreundlichkeit Obwohl die Benutzer der Software über gute bis sehr gute Computerkenntnisse verfügen werden, soll viel Wert auf ein intuitives und übersichtliches Design gelegt werden. Um dies zu erreichen, soll eine einheitliche Benutzerführung definiert werden, wodurch es den Benutzern des System in wenigen Schritten möglich ist, eine Aufgabe erfolgreich zu lösen. Das System wird über eine grafische Benutzeroberfläche mit übersichtlicher Menüführung1 verfügen, die mindestens im Internet Explorer 9 dargestellt wird. Andere Browser werden, sofern diese den Standard implementieren, soweit wie möglich unterstützt. 3.4.5 Datenverlust Wenn während der Eingabe von Daten eine Fehlfunktion auftritt, gehen nur die noch nicht in die Datenbank übertragenen Daten verloren. Dabei wird es sich lediglich um gerade eingegebene Daten handeln. Der Verlust von Daten in der Datenbank wird durch ein Backup, welches in unserer Umgebung bereits im Einsatz ist, verhindert. 3.4.6 Auftreten von Fehlfunktionen Sollte tatsächlich eine Fehlfunktion auftreten, so soll dem Benutzer dies mitgeteilt werden. Es soll jedoch nie eine Fehlerseite des Webservers angezeigt werden. 3.4.7 Sicherheit 3.4.7.1 Authentifizierung Die Authentifizierung wird durch die vorhandenen Mittel der Post (LDAP und Windows-Authentifizierung von IIS) abgedeckt. Diese wird sowohl für Benutzer als auch für Fremdsysteme, welche über eine Schnittstelle zugreifen, erforderlich sein. 3.4.7.2 SQL-Injektion SQL-Injektion wird durch den Einsatz des O/R-Mappers NHibernate verhindert. 3.4.7.3 X-Site Scripting Durch das Entfernen von HTML-Tags bei Eingabemöglichkeiten von Benutzern wie auch Fremdsystemen wird das X-Site Scripting unterbunden. 3.4.7.4 Scripts Scripts wie Javascript werden durch die Post-Library abgedeckt. 1 Die Übersichtlichkeit wird von ausgewählten Benutzern beurteilt. SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 21/22 Projektname Dokumenttitel Artifaktname 4 Corp_LogObi Systemanforderungen Corp_LogObi Systemanforderungen Informationstechnologie Anforderungen an die Entwicklungs- und Wartungsumgebung Keine weiter führenden Angaben. 5 Anforderungen an die externen Schnittstellen Keine weiter führenden Angaben. 6 Detailanforderungen Keine weiter führenden Angaben. 7 Sicherheitsanforderungen Keine weiter führenden Angaben. SY_LOGOBI_Systemanforderung_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 22/22 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Systemdesign Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung SD Systemdesign Corp_LogObi Corp_LogObi LOGOBI Irminger Pascal, IT133 28.03.2012 Zenklusen Axel, IT131 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 07.11.2011 Neues Dokument X01.01 12.12.2011 Erweiterungen Datenbank X01.02 09.01.2012 Filtern und Alarming X01.03 29.01.2012 X01.04 05.03.2012 X01.05 16.03.2012 Erweitern um Mockups und Beschreibungen Aktualisieren DB-Jobs, Komponenten (Rekursiv) Windows Service Install und Config X01.06 26.03.2012 Korrekturen X01.07 V01.07 28.03.2012 28.03.2012 Finalisierung Freigabe Zenklusen Axel, IT131 Zenklusen Axel, IT131 Zenklusen Axel, IT131 Zenklusen Axel, IT131 Zenklusen Axel, IT131 Zenklusen Axel, IT131 Zenklusen Axel, IT131 Irminger Pascal, IT133 Irminger Pascal, IT133 Haefeli Stefan, IT132 SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 1/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 3 1.1 Zweck ........................................................................................................................................................ 3 1.2 Beschreibung ............................................................................................................................................. 3 1.3 Tailoring ..................................................................................................................................................... 3 1.4 Definitionen, Akronyme und Abkürzungen ................................................................................................ 3 1.5 Referenzen ................................................................................................................................................ 3 2 Lösungsvorschläge für die Struktur des Systemdesigns .................................................................................. 4 2.1 Mögliche Importwege ................................................................................................................................ 5 2.2 Filtermöglichkeiten .................................................................................................................................... 6 3 Systemdesign Global ..................................................................................................................................... 7 3.1 Ablauf ....................................................................................................................................................... 7 3.2 Datenbank-Modell ..................................................................................................................................... 7 4 Systemdesign Logs importieren ..................................................................................................................... 9 4.1 LogImporter ............................................................................................................................................... 9 4.1.1 Installation & Starten .............................................................................................................................. 9 4.1.2 Config .................................................................................................................................................... 9 4.2 FileTransferTask ........................................................................................................................................ 10 4.3 FileImportTask .......................................................................................................................................... 10 4.4 BCP ......................................................................................................................................................... 10 5 Datenbank-Jobs .......................................................................................................................................... 11 5.1 Data Processing ....................................................................................................................................... 11 5.1.1 Insert New Values ................................................................................................................................. 12 5.2 Erstellen der Statistik ................................................................................................................................ 12 5.3 Aufräumen der Daten .............................................................................................................................. 12 6 View Applikation ........................................................................................................................................ 14 6.1 Anzeigen der LogEvents ........................................................................................................................... 14 6.2 Filtern ...................................................................................................................................................... 15 6.3 Status Anhand von Filtern setzen ............................................................................................................. 16 6.4 LogEvent Status ....................................................................................................................................... 17 6.5 Alarming.................................................................................................................................................. 18 6.6 Alarming History ...................................................................................................................................... 19 6.7 Auswertungen ......................................................................................................................................... 20 6.8 Applikationen je LogEvent ....................................................................................................................... 20 6.9 Anbieten der Komponenten aus PadMan ................................................................................................ 21 7 Schnittstellen .............................................................................................................................................. 21 7.1 Logfiles .................................................................................................................................................... 21 7.2 Daten aus Corp_PadMan ......................................................................................................................... 21 7.3 Alarming.................................................................................................................................................. 22 8 Beschreibung der Elemente ......................................................................................................................... 23 9 Anforderungszuordnung ............................................................................................................................ 24 10 Sicherheit.................................................................................................................................................... 24 SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 2/24 Projektname Dokumenttitel Artifaktname 1 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Allgemeines 1.1 Zweck Das Systemdesign ist eine Verfeinerung der Systemarchitektur und beschreibt die detaillierten Spezifikationen als Vorgabe für die Erstellung des Systems. 1.2 Beschreibung Eine verfeinerte Gliederung muss vom entsprechenden Vorgehensmodell hinzugefügt werden. Die Darstellung des Systemdesigns kann sowohl in strukturiertem Text als auch in Form von Modellen (z.B. Datenfluss-, Zustandübergangsmodelle, usw.) erfolgen. Das Systemdesign ist ein abschliessender Entwurf des technischen und organisatorischen Systems bis auf Stufe «Element». 1.3 Tailoring Das Systemdesign kann auch in mehreren eigenständigen Dokumenten vorliegen, zum Beispiel pro Systemelement (entspricht der kleinsten Systemzerlegungsstufe). 1.4 Definitionen, Akronyme und Abkürzungen Wort Definition BCP Corp_PadMan Ein DatenbankHilfsprogramm Corp_PadMan ist die neue Intranet-Applikation zur Verwaltung aller Intranet-Applikationen im PWW-Umfeld. Die dazugehörige Datenbank trägt denselben Namen. Siehe Development. Server-Umgebung Entwicklung (Stufe 1). Die Beschreibung definiert sowohl Datenbank- als auch Webserver. Beschreibt die Server-Umgebung. Es wird unterschieden zwischen Entwicklung, Integration und Produktion resp. Development, Integration und Production. Foreign Key = Fremdschlüssel Server-Umgebung Integration (Stufe 2). Die Beschreibung definiert sowohl Datenbank- als auch Webserver. Primary Key = Primärschlüssel Siehe Production. Server-Umgebung Produktion (Stufe 3). Die Beschreibung definiert sowohl Datenbank- als auch Webserver. Die Structured Query Language ist eine Datenbanksprache zur Definition von Datenstrukturen in relationalen Datenbanken sowie zum Bearbeiten (Einfügen, Verändern, Löschen) und Abfragen von darauf basierenden Datenbeständen. Der Microsoft SQL Server ist ein relationales Datenbankmanagementsystem von Microsoft. Der SQL Server Agent ist ein Microsoft Windows-Dienst, der geplante administrative Tasks ausführt, die als Jobs bezeichnet werden. Der SQL Server Agent verwendet SQL Server, um Job-Informationen zu speichern. DEV Development Environment FK Integration PK PROD Production SQL SQL Server SQL Server Agent 1.5 Referenzen Nr. Titel [01] Systemanforderungen Corp_LogObi SY_LOGOBI_Systemanforderung_V01.04.docx SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 3/24 Projektname Dokumenttitel Artifaktname 2 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Lösungsvorschläge für die Struktur des Systemdesigns Folgende Ziele sollen verfolgt werden: log4net soll bleiben, da bewährt Erweiterte Abfragemöglichkeiten Gruppieren von Fehlern Es sind 3 Lösungen denkbar: 1. „Alt“: Tabellen so lassen, wie sie sind. Keine Anpassung am Logging. 2. „Job/Trigger“: Neue Tabellen mit aufbereiteten Daten, Import über Datenbank-Job / Trigger. 3. „LogFiles“: Neue Tabellen mit aufbereiteten Daten, Import aus Log-Files. Bei Variante eins würde jegliche Filterung der Daten mit Abfragen auf dem aktuellen Datenbankmodell sein. Es würden viele „LIKE“-Abfragen generiert, welche eine hohe Last zur Folge hätten. Variante zwei und drei würden es erlauben, die Daten in einer abfragefreundlichen Form zu speichern, was bei den neuen Features sehr nützlich wäre. Bei Variante zwei ist nicht einmal eine Anpassung des Loggings nötig. Bei Variante „LogFiles“ hingegen würde das Logging so angepasst, dass die aktuellen Applikationen in Files auf den Webservern loggen würden und diese dann von der „Datenbank“ importiert würden. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 4/24 Projektname Dokumenttitel Artifaktname 2.1 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Mögliche Importwege Nach dem Abklären, welche Möglichkeiten und Ziele mit dem Logging erreicht werden sollen, haben sich drei Wege als möglich herauskristallisiert. Einerseits das direkte Logging in die Datenbank. Hier ist der Hauptvorteil im verzögerungsfreien Logging. Da direkt in die Datenbank geloggt wird, sind die Logs sofort abrufbar. Jedoch ist mit den gleichen Problemen zu rechnen wie beim aktuellen Logging. Dieses kann jedoch den Server zusätzlich belasten, wenn nebenher eine Störung im System besteht. Wird bei einer Überlastung des produktiven Systems das Logging abgeschaltet, gehen Logs verloren. Als zweite Lösung wurde das indirekte Loggen über eine zweite Datenbank angedacht. Es wäre noch immer recht schnell, die Logs würden vorverarbeitet werden und man könnte im Notfall das Importieren in die produktive Datenbank abschalten. Sobald die Überlastung des produktiven Systems behoben wurde, kann der Import aktiviert werden und die Logs werden rückwirkend in das produktive System eingespielt. Als dritte Lösung wäre das Logging in Files vorgesehen. Diese Files werden dann von den Servern gesammelt und in die Datenbank importiert. Hier könnte man die Logs wieder vorverarbeiten und danach in die Datenbank einspeisen. Das Sammeln und Importieren würde durch einen Windows Service verwirklicht, so könnte man diesen einfach abschalten und die Logs wären notfalls für die Entwickler auf den Servern als File auffindbar. Als einziger Nachteil ist die Geschwindigkeit zu sehen. Sowohl das Sammeln als auch das Importieren und Filtern dürften höchstens im Minutentakt ablaufen. Im „worst case“ treffen die Logs mit dreiminütiger Verzögerung auf dem produktiven System ein. Abbildung 1: Mögliche Importwege. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 5/24 Projektname Dokumenttitel Artifaktname 2.2 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Filtermöglichkeiten Abbildung 2: Filtermöglichkeiten. Die anzubietenden Filtermöglichkeiten wurden vom Kernteam in einem Brainstorming gesucht und dann auf den nun vorhandenen Level verfeinert. Im Mindmap sieht man das Ergebnis des Brainstormings, jedoch noch ohne die Granularität und „Verknüpfungsmöglichkeiten“ aufzuzeigen. Es wurde später noch bestimmt, dass die Filterung nach Time / Date nur unzureichende Ergebnisse geliefert hat, wenn dies nicht fortwährend gefiltert wurde. Die Idee dahinter ist, dass ein Entwickler z.B. nur die LogEvents der letzten zwei Tage interessieren. Hier ist es dann wichtig, dass das automatische Filtern auf der Datenbank auch genau diese Funktionalität unterstützt. Es wurde auch entschieden, dass das Filtern über mehrere Applikationen und die Suche nach Teilen des Applikationsnamens möglich sein soll. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 6/24 Projektname Dokumenttitel Artifaktname 3 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Systemdesign Global 3.1 Ablauf Gemeinsam mit den Verantwortlichen wurde die Variante drei „LogFiles“ gewählt. Als grosser Vorteil wurde genannt, dass das Logging Datenbank-unabhängig ist. So ist es möglich, in einem Störungsfall den Import der Logs abzuschalten und so die unter Last stehende Datenbank nicht weiter zu belasten. Daher wird die Log-Applikation in zwei Teilen entwickelt. Der erste Teil, der „Importer“, wird ein Windows Service sein, der die Log-Files sammelt und importiert. Der zweite Teil, der „Viewer“, wird eine Webapplikation sein, welche die Logs anzeigen, filtern und auswerten lässt. Auch bei der weiteren Entwicklung von Funktionalitäten wird darauf geachtet, dass alle Schritte atomar ausgeführt werden können. So wird z.B. das automatische Nachfiltern nach dem Importieren „asynchron“ durch einen Datenbank-Job realisiert. Hier gilt das Gleiche wie für alle Jobs: es wird darauf geachtet, dass jeder Job atomar laufen kann. 3.2 Datenbank-Modell tab_Filtering_MachineFilter tab_Filtering_KeywordFilter PK FilterMachineID PK FilterKeywordID FK1 FilterID Name FK1 FilterID Value Exclude tab_Filtering_Filter PK Name Von Bis Userid Environment Plattform Path Consistent InsertUser InsertDate UpdateUser UpdateDate VonDelta bisDelta tabStatusTyp PK FilterID StatusTypID Name InsertUser InsertDate UpdateUser UpdateDate tab_Filtering_AppIDFilter PK FilterAppID FK1 FilterID Value tab_Filtering_LoglevelFilter PK FilterLoglevel FK1 FilterID Value tabStatus PK Statusid FK2 FK1 FK3 LogEventID FilterID StatusTypId Comment ApplID InsertUser InsertDate UpdateUser UpdateDate tabLogEventFiltering PK LogGroupingID FK2 FK1 LogEventID FilterID Abbildung 3: Datenbank-Modell Filtern mit Status. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 7/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie tabStatus tabStatusTyp PK PK Statusid FK2 FK1 FK3 LogEventID FilterID StatusTypId Comment ApplID InsertUser InsertDate UpdateUser UpdateDate StatusTypID Name InsertUser InsertDate UpdateUser UpdateDate tabLogEventFiltering tabPlattform PK PK FK2 FK1 LogEventID FilterID FK8 FK4 FK9 FK1 tabFilePath FilePathID Value FK7 FK10 FK6 FK3 FK2 FK5 tabMachine MachineID Value tabExceptionText LogEventID Value PK LogGroupingID tabLogEvent PlattformID PK PK PK TimeInMs RecordNbr MachineID EnvironmentID PlattformID ApplID Prozess Thread LogLevelID UserID FilePathID BrowserID AppPropertiesID ExceptionTextID Message TimeStamp ImportID tabApplName PK ExceptionTextID Value tabAppProperties PK AppPropertiesID Value tabLogLevel PK LogLevelID Value tabBrowser PK BrowserID Value ApplID Value tabEnvironment PK EnvironmentID Value tabUser PK UserID Value Abbildung 4: Datenbank-Modell Log Event. Die Trennung von Filterdaten Abbildung 3 und LogEvent-Daten Abbildung 4 wurde mit der Absicht verfolgt, dass man Filter definieren kann, egal ob sich die Daten in den LogEvents befinden. Nehmen wir an, dass neue Server angeschafft würden, so wären alle Filter noch vorhanden und man könnte einfach die neuen Server einfügen. Wenn die alten Server irgendwann aus den Logs verschwinden, kann der Filter weiterbenutzt werden. Mit dem Nachteil, dass man keine Prüfung der Filtereingaben hat. Wenn ein Maschinenname eingegeben wird, den es nicht gibt, wird das vom Filter also richtig angenommen. Die Verbindung zwischen Filter- und LogEvent-Daten stellt die Tabelle tabLogEventFiltering her, die auf beiden Abbildungen zu sehen ist. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 8/24 Projektname Dokumenttitel Artifaktname 4 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Systemdesign Logs importieren Das Importieren der Logs wird durch ein als Service ausgeführtes Programm (Exe) verwirklicht. Dieser Service übernimmt dabei zwei Aufgaben, das Sammeln der auf den Servern verteilten LogFiles und danach das Importieren derer. Aufgrund der Tatsache, dass die Server pro Applikation minütlich ein Logfile schreiben, sind diese zahlreich aber klein. Daher wurde entschieden, dass nicht importierbare Files einfach übersprungen werden. Nach dem Import werden die Daten auf die Tabellen verteilt. Dies wird von einem Datenbank-Job vorgenommen. 4.1 LogImporter Der LogImporter ist eigentlich ein Verwalter von Tasks.Die beiden Haupttasks sind das Sammeln der Logfiles von den Servern (FileTransferTask) und das Importieren in die Datenbank (FileImportTask). 4.1.1 Installation & Starten Die Installation muss über die Visual Studio Konsole und das installutil gemacht werden. Der passende Befehl ist: installutil -i LogImporterService.exe Listing 1: Installieren des Windows Service. Bei der Deinstallation wird das „i“ im Befehl durch ein „u“ ersetzt. installutil -u LogImporterServ Listing 2: Deinstallieren des Windows Serviceice.exe. Gestartet und gestoppt wird der Service über die Computerverwaltung unter Services. Er ist bei der Installation auf „automatisch starten“ gestellt, so dass der Service nach einen Server-Reboot direkt gestartet wird. Bei Fehlern verhält sich der Service so, dass er bis zu zwei Fehler pro 15 Minuten toleriert und sich erst beim Dritten beendet. 4.1.2 Config <add key="ApplID" value="LogImporter" /> <add key="FromEmail" value="[email protected]" /> <add key="LogEmail" value="[email protected]" /> <add key="IntervallinMs" value="60000"/> <tasks> <task type="ImportTask.FileTransferTask, ImportTask" targetDirectory="\\serverbds\[Share]\dev\toImport\" unProcessableDirectory="\\serverbds\[Share]\dev\error\" importUser="IUSR_Anonym_Corp_LogObi" > <workdata name="transferDev" type="ImportTask.FileTransferWorkData, ImportTask" sourceDirectory="\\serverdev\[Share]\PwwLog" uniqueSourceName="DEV01" /> </task> <task type="ImportTask.FileImportTask, ImportTask" importTable="tabImport" importDatabase="Corp_LogObi" importUser="IUSR_Anonym_Corp_LogObi" importPassword="[Passwort]" importDatabasServer="serverdbdev04" bcpUtilityPath="C:\\Program Files\\Microsoft SQL Server\\100\\Tools\\Binn\\bcp.exe" batchSize="10" > <workdata name="importDev" type="ImportTask.FileImportWorkData, ImportTask" sourceDirectory="\\serverbds\[Share]\dev\toImport\" successDirectory="\\serverbds\[Share]\dev\imported\" errorDirectory="\\serverbds\[Share]\error\"/> </task> </tasks> Listing 3: Task Definieren. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 9/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Wird die Konfiguration – z.B. zum Aktualisieren der Intervall-Zeiten – verändert, muss der Service neu gestartet werden. 4.2 FileTransferTask Dieser Task überwacht die gegebenen Verzeichnisse der Server und reagiert, sobald sich Files in den Verzeichnissen befinden und kopiert diese ins Importverzeichnis. Bei dieser Aktion wird auch der Name so angepasst, dass man sieht, von welchem Server die Logs kommen. Danach ist das Verarbeiten vom FileTransferTask abgeschlossen. Sollte ein File durch einen anderen Prozess blockiert sein, so wird dieses File einfach ausgelassen und beim nächsten Lauf wird versucht, das File zu kopieren. 4.3 FileImportTask Es wird geprüft, ob Files im Importverzeichnis bereitliegen. Wenn ja, wird versucht die Files zu importieren. Falls das File nicht zugreifbar ist, wird es ebenfalls ausgelassen und beim nächsten Lauf mitgenommen. Daher liegt die maximale Verzögerungszeit durch den Import bei maximal zwei Minuten. Im Anschluss wird durch einen Konsolenbefehl der Import per BCP angestossen. tabImport PK lngLogEventID dtmLogEvent strTimeInMs strRecordNbr strMachine strApplID strEnvironment strPlattform intProcessID intThreadID strLogLevel strUser strAppProperties strFile strMessage strBrowser strException strCopyKey Abbildung 5: tabImport. 4.4 BCP BCP ist ein Kommandozeilen Programm, welches mit dem MSSQL-Server installiert wird. Es wird dazu benutzt, unsere LogFiles mit einem Bulkimport in die Datenbank zu importieren. Durch die Vorgaben von IT13 (z.B.: kein Speichern von Dateien auf den Datenbankservern) ist es nötig, den Bulkimport über BCP zu machen. Das Bulkimport SQL-Kommando von MSSQL-Server funktioniert nur, wenn die Dateien lokal sind, da es mit UNC Pfaden nicht umgehen kann. Eine genauere Beschreibung, was BCP noch weiter bietet, findet sich in den Books-Online1 von MSSQL-Server. Ziel ist es, dass jedes File in einem Stück importiert wird, da dies sehr grossen Einfluss auf die Performance haben kann. Der Parameter _fileRowsCount ist daher auf die gesamte Filelänge gesetzt. 1 _http://msdn.microsoft.com/en-us/library/aa174646%28v=SQL.80%29.aspx SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 10/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie _command = _database + ".dbo." + _table + " in " + _inProgressFileName + " b " + _fileRowsCount + @" -c -t@~ -r#$#EOR#$# -U " + _dbUser + " P " + _dbPassword + " -S " + @_databaseServer; Listing 4: BCP Command. 5 Datenbank-Jobs 5.1 Data Processing Hier ist das Verarbeiten der aus dem Import gefüllten Flattable tabImport, zu den teilnormalisierten Tabellen von Corp_LogObi gemeint. Als erstes wird die ID des aktuell letzten Logdatensatzes gespeichert, wodruch auch während dem Datenbank-Job-Run weitere Daten vom Importer her kommen können. Am Ende vom Import werden die verarbeiteten Datensätze gelöscht. Als Vorbereitung wird die ID weggespeichert, damit nur Datensätze, die nicht gerade am Importieren sind, verarbeitet werden. Declare @id int; set @id = (Select MAX(lngLogEventID) from tabImport); Listing 5: Maximal zu verarbeitende ID. Erster Schritt ist das Einfügen der noch nicht vorhandenen Werte in die Filtertabellen. Die Tabellen ApplikationsName (tabApplName) und Applikationseigenschaften (tabApplProperties) dienen hier als Beispiele. exec dbo.usp_InsertNewValues 'dbo.tabImport','dbo.tabApplName','strApplID','value' exec dbo.usp_InsertNewValues 'dbo.tabImport','dbo.tabAppProperties','strAppProperties','value' Listing 6: Aufruf Insert new Values. Danach wird die eigentliche LogTabelle gefüllt. insert into tabLogEvent Select distinct case when strTimeInMs like '%(null)%' then 0 else replace(strTimeInMs,'''', '') end, case when strRecordNbr like '%(null)%' then 0 else replace(strRecordNbr,'''', '') end, m.MachineID, e.EnvironmentID, p.PlattformID, a.ApplID, intProcessID, intThreadID, l.LogLevelID, u.UserID, F.FilePathID, b.BrowserID, ap.AppPropertiesID, et.ExceptionTextID, strMessage, dtmLogEvent, SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 11/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie null tabImport with (nolock) left outer join tabMachine as m with (nolock) on m.Value = strMachine left outer join tabEnvironment as e with (nolock)on e.Value = strEnvironment left outer join tabPlattform as p with (nolock) on p.Value = strPlattform left outer join tabApplName as a with (nolock) on a.Value = strApplID left outer join tabLogLevel as l with (nolock) on l.Value = strLogLevel left outer join tabUser as u with (nolock) on u.Value = strUser left outer join tabFilePath as F with (nolock) on F.Value = strFile left outer join tabBrowser as b with (nolock) on b.Value = strBrowser left outer join tabAppProperties as ap with (nolock) on ap.Value = strAppProperties left outer join tabExceptionText as et with (nolock) on et.Value = strException where lngLogEventID <= @maxid and lngLogEventID >= @minid from Listing 7: Laden vom Import zu der LogTabelle. 5.1.1 Insert New Values 'insert into '+@TargetTableName+' ('+@TargetField+') ( select distinct '+@SourceField +' from '+@SourceTableName+' where not exists ( select '+@TargetField +' from '+@TargetTableName+' where '+@TargetField +' = '+@SourceField +' ) )' Listing 8: Statement von Insert new Values. 5.2 Erstellen der Statistik Hier ist die erste Vorbereitung für die Management Ansicht von LogObi gemacht. Die Daten müssen für diese Anfragen weniger granular sein, als LogObi die Daten speichert. Dafür wären Auswertungen über die drei Monatsgrenzen wünschenswert. So könnten die Logs über einen grossen Zeitraum ausgewertet werden. Dies wird kurze, z.B: Feiertagbedingte Schwankungen ausgleichen. Hierfür wird ein stundenweises Zusammenrechnen der LogEvents gemacht und in die tabStatistic (siehe Abbildung 6) gespeichert. Diese werden nur mit den für das Management interessanten Daten gespeichert. tabStatistic PK StatisticID Anzahl Hour Datum ApplID Browser Environment Abbildung 6: tabStatistic. 5.3 Aufräumen der Daten Es werden alle LogEvents gelöscht die älter als 90 Tage sind. Die Statistik wird anfangs unbeschränkt behalten und je nach Nutzung des Managements werden die Daten gelöscht, wenn sie nicht mehr gebraucht werden; zum Beispiel nach 1.5 Jahren. So wären auch Auswertungen mit einem Jahresrückblick möglich. PROCEDURE [dbo].[usp_DeleteOldLogs] SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 12/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie @daysToKeep int, @DeleteBatchSize int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; CREATE TABLE #t(ID INT PRIMARY KEY); -- Zu löschende LogEvents bestimmen insert into #t select top(@deleteBatchSize) LogEventID from tabLogEvent with (nolock) where [TimeStamp] < DATEADD(d, -@daysToKeep, getdate()) order by [TimeStamp] -- Filtering auflösen delete from tabLogEventFiltering where LogEventID in( select id from #t ) -- Status löschen delete from tabStatus where LogEventID in( select id from #t ) -- LogEvents löschen delete from tabLogEvent where select id from #t ) LogEventID in( -- Temporäre Tabelle leeren drop table #t; END Listing 9: Veraltete Logs löschen. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 13/24 Projektname Dokumenttitel Artifaktname 6 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie View Applikation 6.1 Anzeigen der LogEvents Auf der Einstiegsseite werden jedem Benutzer seine LogEvents der letzten zwei Tage angezeigt. Dies entspricht der „Standardsuche“ aus dem alten Tool. Hier wird die Filtermaske (siehe Abbildung 7) beschrieben. Diese besteht aus einer Filterliste der TopFilter, die Error gruppiert nach Anwendung und die ersten 25 LogEvents auf der ersten Seite des Datagrids. Abbildung 7: Anzeigen der LogEvents. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 14/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie 6.2 Filtern Ein zentraler Bestandteil von LogObi ist das Filtern. Diese sind neu speicherbar und wiederverwendbar. Falls es gewünscht ist, kann man diesen so einrichten, dass die neuen LogEvents beim Import gefiltert werden. So wird zur Zeit der Anzeige keine Last erzeugt. Abbildung 8: Filtern. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 15/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie 6.3 Status Anhand von Filtern setzen Hier wird der Filter nur zur Info angezeigt. Falls man nun auf den Filter einen Status setzt, so ist der nachher in allen Logs, die dem Filter entsprechen, sichtbar. So ist es gegeben, dass wenn mehrere Entwickler an einer Applikation entwickeln, jeder sehen kann, ob einer der Kollegen bereits an dem/den LogEvents dran ist. Abbildung 9: Status auf Filter. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 16/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie 6.4 LogEvent Status Hier wird dasselbe Prinzip wie oben angewendet. Es wird einfach statt auf einen Filter auf einen LogEvent angewendet. Es ist möglich einen LogEvent als Library LogEvent zu markieren. Die Library Entwickler können über eine einfache Auswertung die passenden ErrorLogs finden. Es ist weiter möglich, den LogEvents weitere Status mit Bemerkung zu setzen. Abbildung 10: Status auf LogEvent. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 17/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie 6.5 Alarming Im LogObi können Alarme verwaltet werden. Das eigentliche Überwachen der Alarme erfolgt über die separate Alarming-Applikation. Die Daten werden im LogObi zwischengespeichert und mit der AlarmingID aus der Alarming-Applikation angereichert. Abbildung 11: Alarming. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 18/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie 6.6 Alarming History Die Alarming-Historie wird über einen Button im GridView auf der „Alarming“-Seite aufgerufen. Hier werden die letzten 25 Alarming-Events angezeigt. Die Menge ist über das web.config konfigurierbar. Diese werden live über den Webservice von der Alarming-Applikation abgerufen. So ist die Seite zwar etwas langsamer, aber die Daten sind dafür immer aktuell. <xsd:element name="GetAlarmEvents"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" name="plngAlarmId" type="xsd:int" /> <xsd:element minOccurs="0" name="plngNumEvents" type="xsd:int" /> </xsd:sequence> </xsd:complexType> </xsd:element> Listing 10: Alarming History Webservice. Abbildung 12: Alarming History. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 19/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie 6.7 Auswertungen Die Auswertungen sind eine Management Funktion. Der „frühere“ LogEventViewer hatte keine Funktionen die für das Management interessant waren. Hier ist es mit einfachen Kriterien möglich, eine Auswertung zu erstellen, z.B. Anzahl Fehler pro Applikation. Die Granularität ist in Absprache mit dem Management auf eine Stunde festgelegt. Dies ist wichtig für das Zusammenfassen der Daten, da nur das Nötigste gespeichert werden soll. Abbildung 13: Auswertungen. 6.8 Applikationen je LogEvent Diese Funktion ist eine Ergänzung zu den Library-Fehlern. Falls man ein anormales Verhalten der Umgebung vermutet, kann man die Fehler applikationsübergreifend suchen lassen und so herausfinden, ob der Fehler in weiteren Applikationen auftritt. Abbildung 14: Applikationen je LogEvent. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 20/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie 6.9 Anbieten der Komponenten aus PadMan Es ist im Filter auch möglich, die Komponenten anhand der Beziehungen zwischen den Komponenten auszuwählen. Hier werden die von PadMan importierten Komponenten mit folgenden rekursiven SQL Statement abgefragt. Unten die ausgefüllte Beispielanfrage für alle Komponenten, die an PadMan hängen und mit „Has“ verknüpft sind. WITH ComponentRe AS ( SELECT ToComponentID FROM tabComponentRelation WHERE FromComponentID = 'Corp_Padman' and RelationTyp =1 UNION ALL SELECT e.ToComponentID FROM tabComponentRelation e INNER JOIN ComponentRe base ON base.ToComponentID = e.FromComponentID and e.RelationTyp = 1 ) SELECT * FROM ComponentRe Listing 11: PadMan Komponenten - Rekursive Abfrage. 7 Schnittstellen 7.1 Logfiles Die Logfiles stellen die Schnittstelle zwischen log4net und Corp_LogObi dar. Die Logfiles mussten soweit angepasst werden, dass das Trennzeichen nicht mehr mit dem Pipe-Symbol („|“), aus der Konsole, entspricht. Dies war nötig, da der BCP Import über eine Kommandozeile angestossen wird und der Befehl mit dem Zeichen | ungültig wird. Speziell sind hier die Trennzeichen @~ für Feldtrennung und #$#EOR#$# für das Ende der Zeile, da in den Log-Nachrichten Zeilenumbrüche enthalten sein können. Hier eine Beispielzeile aus einem neuen Logfile: @~2011-08-29 13:27:58.123@~ 256@~ 0@~w07949@~Corp_DMS@~Local@~Intranet@~ 8088@~ 8@~DEBUG @~unknown @~@~/appl/corp/dms/WPL/statistic.aspx@~Application Corp_DMS on Host: W07949 entering LogController::StartLogging, Hello...@~Type=IE9, Browser=IE, Version=9.0, Beta=False, MajorVersion=9, MinorVersion=0, Crawler=False, Platform=WinNT, ClrVersion=0.0, MSDomVersion=9.0, W3CDomVersion=1.0, ActiveXControls=True, Cookies=True, EcmaScriptVersion=1.2, Frames=True, JavaScript=1.2, VBScript=True@~@~#$#EOR#$# Listing 12: LogFile Auszug - ein Log. 7.2 Daten aus Corp_PadMan LogObi benötigt Informationen bezüglich Komponenten von Corp_PadMan. Diese werden von Corp_PadMan mit dem WCF-Service ComponentService zur Verfügung gestellt. Der Webservice wird von LogObi täglich in der Nacht aufgerufen, damit die Komponenten aktualisiert werden können. Vom Webservice werden sämtliche Komponenten, die verantwortlichen Personen sowie die Relationen zwischen den Komponenten erhalten. Diese werden in die in Abbildung 15 dargestellte Datenbank-Struktur eingefügt. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 21/24 Projektname Dokumenttitel Artifaktname Corp_LogObi Systemdesign Corp_LogObi Systemdesign tabComponentPersonMapping tabPersonType PK Informationstechnologie TypeId PK MappingId Name InsertDate InsertUser UpdateDate UpdateUser FK1 FK2 FK3 ComponentId PersonId TypeId InsertDate tabPerson PK PersonId UserId InsertDate tabComponentRelation tabComponent PK PK lngRelationID FK1 FK2 FromComponentID ToComponentID RelationTyp ComponentId InsertDate Abbildung 15: Daten aus Corp_PadMan. 7.3 Alarming Das Alarming wird über einen Webservice, der von der Alarming-Applikation angeboten wird, verwirklicht. Es werden die Daten der Alarme auch in der LogObi Datenbank gespeichert. Erst beim Aktualisieren werden die Daten über den Webservice ans Alarming weitergegeben. Eine zweite Funktion des Webservices erlaubt das Abfragen der letzten X Alarming-Events abzurufen. So kann in LogObi eine Ansicht der letzten Alarmauslösungen angeboten werden. Alle Parameter an den Alarming Service sind fakultativ, daher könnte bei einem Updaten nur das übergeben werden was, geändert werden soll. <xsd:complexType name="AlarmParameters"> <xsd:sequence> <xsd:element minOccurs="0" name="Action" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="ActiveFlag" nillable="true" type="xsd:boolean" /> <xsd:element minOccurs="0" name="AlarmId" nillable="true" type="xsd:int" /> <xsd:element minOccurs="0" name="AlarmName" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="AlarmType" nillable="true" type="xsd:int" /> <xsd:element minOccurs="0" name="ApplId" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="CheckFrequency" nillable="true" type="xsd:int" /> <xsd:element minOccurs="0" name="ConnectionKey" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="DeleteFlag" nillable="true" type="xsd:boolean" /> <xsd:element minOccurs="0" name="Description" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="EmailAddress" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="Environment" nillable="true" type="xsd:int" /> <xsd:element minOccurs="0" name="IgnoreFeiertag" nillable="true" type="xsd:boolean" /> <xsd:element minOccurs="0" name="Lang" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="Mandant" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="MobileNumber" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="MoreLess" nillable="true" type="xsd:boolean" /> <xsd:element minOccurs="0" name="NumEvents" nillable="true" type="xsd:int" /> <xsd:element minOccurs="0" name="RunningExclusion" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="SqlStatement" nillable="true" type="xsd:string" /> <xsd:element minOccurs="0" name="Timeout" nillable="true" type="xsd:int" /> </xsd:sequence> </xsd:complexType> Listing 13: Alarming Service XML. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 22/24 Projektname Dokumenttitel Artifaktname 8 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Beschreibung der Elemente Das innere Design der Applikation dreht sich um die beiden zentralen Elemente LogEvent und Filter. Es ist so, dass die LogEvents nach dem Import analysiert und wo sinnvoll normalisiert werden. Ebenso wird dann eine Analyse mit den Filtern über die Logs laufen gelassen, um diese den passenden Kategorien zuzuordnen. So ist ein schnelles Anbieten der vorgefilterten LogEvents für die Benutzer möglich. tabLogEvent PK tab_Filtering_Filter LogEventID PK FK8 FK4 FK9 FK1 FK7 FK10 FK6 FK3 FK2 FK5 TimeInMs RecordNbr MachineID EnvironmentID PlattformID ApplID Prozess Thread LogLevelID UserID FilePathID BrowserID AppPropertiesID ExceptionTextID Message TimeStamp ImportID tabLogEventFiltering PK LogGroupingID FK2 FK1 LogEventID FilterID FilterID Name Von Bis Userid Environment Plattform Path Consistent InsertUser InsertDate UpdateUser UpdateDate VonDelta bisDelta Abbildung 16: LogEventFiltering. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 23/24 Projektname Dokumenttitel Artifaktname 9 Corp_LogObi Systemdesign Corp_LogObi Systemdesign Informationstechnologie Anforderungszuordnung Die Tabelle 1 listet die Anforderungszuordnung für Corp_LogObi auf. Bezeichnung L_UC_10 L_UC_20 L_UC_30 L_UC_40 L_UC_50 L_UC_60 L_UC_70 L_UC_80 L_UC_90 L_UC_100 L_UC_110 L_UC_120 L_UC_130 L_UC_140 Name LogEvents importieren LogEvents anzeigen LogEvent Details anzeigen LogEvent löschen LogEvent Status ändern Library Fehler markieren Filter verwalten (CRUD) Filter anwenden LogEvents gruppieren Überwachung definieren (CRUD) User informieren / alarmieren Applikationen je LogEvent ansehen Auswertungen ansehen LogEvents säubern (Clean) Kapitelzuordnung Kapitel 4 Kapitel 6 Kapitel 6.1 Kapitel 6.1 Kapitel 6.4 Kapitel 6.4 Kapitel 6.2 Kapitel 5.1 & 6.2 Kapitel 6.1 Kapitel 6.5 Kapitel 6.5 Kapitel 6.8 Kapitel 5.2 & 6.7 Kapitel 5.3 Tabelle 1: Kapitelzuordnung der Use Cases aus dem Anforderungsdokument [01]. 10 Sicherheit Keine weiter führenden Angaben. SD_LOGOBI_Systemdesign_V01.07.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 24/24 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Systemanforderungen Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung SY Systemanforderungen Corp_JobMonitor Corp_JobMonitor JOBMON Irminger Pascal, IT133 28.03.2012 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller X01.00 X01.01 X01.02 27.11.2011 16.01.2012 28.03.2012 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 V01.02 28.03.2012 Neues Dokument Überarbeitung Verschieben der Use Cases zu Reads und Indexes nach Corp_PadMan Freigabe SY_JOBMON_Systemanforderung_V01.02.docx Irminger Pascal, IT133 © Die Schweizerische Post Ausgabedatum 28.03.2012 Freigabe Haefeli Stefan, IT132 1/16 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 3 1.1 Zweck ........................................................................................................................................................ 3 1.2 Beschreibung ............................................................................................................................................. 3 1.3 Tailoring ..................................................................................................................................................... 3 1.4 Definitionen, Akronyme und Abkürzungen ................................................................................................ 3 1.5 Referenzen ................................................................................................................................................ 4 2 Allgemeine Beschreibung .............................................................................................................................. 5 2.1 Ausgangslage ............................................................................................................................................ 5 2.2 Produktperspektive .................................................................................................................................... 5 3 Allgemeine Anforderungen ........................................................................................................................... 6 3.1 Personas .................................................................................................................................................... 6 3.2 Domainmodell ........................................................................................................................................... 6 3.2.1 Strukturdiagramm .................................................................................................................................. 6 3.2.2 Konzeptbeschreibung ............................................................................................................................. 7 3.3 Systemgrenzen .......................................................................................................................................... 8 3.4 Use Cases .................................................................................................................................................. 8 3.4.1 J_UC_10: Jobs ansehen (Liste) ................................................................................................................ 9 3.4.2 J_UC_20: Job einer Komponente zuordnen .......................................................................................... 10 3.4.3 J_UC_30: Job-Details editieren .............................................................................................................. 11 3.4.4 J_UC_40: Job-Runs ansehen (Liste) ....................................................................................................... 12 3.4.5 J_UC_50: Job-Run-Details ansehen ....................................................................................................... 13 3.4.6 J_UC_60: Fehlerhafter Job-Run als erledigt markieren ........................................................................... 14 3.5 Nicht-funktionale Anforderungen ............................................................................................................ 15 3.5.1 Technische Anforderung ....................................................................................................................... 15 3.5.2 Ergonomische Anforderung .................................................................................................................. 15 3.5.3 Verfügbarkeit ........................................................................................................................................ 15 3.5.4 Benutzerfreundlichkeit .......................................................................................................................... 15 3.5.5 Datenverlust ......................................................................................................................................... 15 3.5.6 Auftreten von Fehlfunktionen ............................................................................................................... 15 3.5.7 Sicherheit ............................................................................................................................................. 15 3.5.7.1 Authentifizierung ............................................................................................................................... 15 3.5.7.2 Kommunikation ................................................................................................................................. 15 3.5.7.3 SQL-Injektion ..................................................................................................................................... 15 3.5.7.4 X-Site Scripting .................................................................................................................................. 15 3.5.7.5 Scripts................................................................................................................................................ 15 4 Anforderungen an die Entwicklungs- und Wartungsumgebung .................................................................. 16 5 Anforderungen an die externen Schnittstellen ............................................................................................ 16 6 Detailanforderungen ................................................................................................................................... 16 7 Sicherheitsanforderungen ........................................................................................................................... 16 SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 2/16 Projektname Dokumenttitel Artifaktname 1 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie Allgemeines 1.1 Zweck Die Systemanforderungen beschreiben und strukturieren die Anforderungen an das zukünftige System. Sie werden vom Auftraggeber und Auftragnehmer beidseitig als Grundlage für die Realisierung und Abnahme des zukünftigen Systems akzeptiert. 1.2 Beschreibung Die Systemanforderungen beziehen sich je nach Phase auf die Ebene System, Subsystem oder Konfigurationseinheit (KE). Eine verfeinerte Gliederung muss vom entsprechenden Vorgehensmodell hinzugefügt werden. Die Darstellung der Systemanforderungen kann sowohl in strukturiertem Text als auch in Form von Modellen erfolgen. 1.3 Tailoring Die Systemanforderungen können auch in mehreren eigenständigen Dokumenten vorliegen, zum Beispiel pro Subsystem oder Konfigurationseinheit. 1.4 Definitionen, Akronyme und Abkürzungen Wort Definition Corp_SysLog Intranet-Webapplikation. Zeigt letzte Datenbank-Job-Executions sowie deren Resultate an. Enthält weiter – nur via URL zugänglich (d.h., keine Navigation) – Informationen zu möglicherweise fehlenden Indexes in den Datenbanken sowie zu von den SQL Servern einer erhobenen Read-Statistik. Intranet-Webapplikation. Stellt innerhalb von IT13 eine zentrale Stelle für das Entwickeln von Intranet-Applikationen dar. Es stellt Konfigurationen wie zum Beispiel Datenbankzugriff, beteiligte Personen, Publikation etc. für unsere Intranet-Umgebung zur Verfügung. Datenbank-Administrator Das Hypertext Transfer Protocol ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten aus dem Internet/Intranet in einen Webbrowser zu laden. Das HyperText Transfer Protocol Secure ist die sichere Variante von HTTP. Syntaktisch ist HTTPS identisch mit dem Schema für HTTP, die zusätzliche Verschlüsselung der Daten geschieht mittels SSL/TLS. Internet Information Services. Webserver-Komponente in Microsoft Windows. Über IIS können ASP- oder .NET-Applikationen (ASP.NET) ausgeführt werden .NET-Entwicklungsabteilung von IT Post Informationstechnologie Post Skriptsprache, die hauptsächlich für das DOM-Scripting in Web-Browsern eingesetzt wird. Bestehende – in die Applikation Corp_TeamPortal eingegliederte – Webpage zur Darstellung der letzten Datenbank-Job-Executions. Das Lightweight Directory Access Protocol (LDAP) erlaubt die Abfrage und die Modifikation von Informationen eines Verzeichnisdienstes über ein IP-Netzwerk. Für .NET portiertes O/R-Mapping Framework (Hibernate). Technik der Softwareentwicklung, mit der ein in einer objektorientierten Programmiersprache geschriebenes Anwendungsprogramm seine Objekte in einer relationalen Datenbank ablegen kann. Post Wide Web. Das Intranet der Schweizerischen Post. Structured Query Language Auch Microsoft SQL Server. SQL Server Produkt von Microsoft. Derzeit in den Versionen SQL Server 2005 und SQL Server 2008 R2 bei der Schweizerischen Post im Einsatz. Secure Sockets Layer, Transport Layer Security Siehe Corp_SysLog Siehe Corp_TeamPortal Use Case Corp_TeamPortal DBA HTTP HTTPS IIS IT13 IT Post Javascript Jobübersicht LDAP NHibernate O/R-Mapping PWW SQL SQL Server SSL/TLS SysLog TeamPortal UC SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 3/16 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie Wort Definition X-Site-Scripting Cross-Site-Scripting (XSS) bezeichnet das Ausnutzen einer Sicherheitslücke in Webanwendungen, indem Informationen aus einem Kontext, in dem sie nicht vertrauenswürdig sind, in einen anderen Kontext eingefügt werden, in dem sie als vertrauenswürdig eingestuft werden. Aus diesem vertrauenswürdigen Kontext kann dann ein Angriff gestartet werden. 1.5 Referenzen Nr. Titel [01] Systemanforderungen Corp_PadMan SY_PADMAN_Systemanforderung_V01.03.docx SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 4/16 Projektname Dokumenttitel Artifaktname 2 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie Allgemeine Beschreibung 2.1 Ausgangslage Die Applikation Corp_TeamPortal stellt für IT13 eine zentrale Stelle für das Entwickeln von IntranetApplikationen dar (siehe [01]). Darin enthalten ist die sogenannte „Jobübersicht“, eine Auflistung sämtlicher Datenbank-Jobs im Umfeld des .NET-Intranets. Die „Jobübersicht“ enthält für DBAs wichtige Informationen zu den einzelnen Datenbank-Jobs wie beispielsweise Verantwortliche und Entwickler der Jobs, Beschreibung der Jobs, Abhängigkeiten sowie, was im Fehlerfall zu tun ist. Daneben gibt es eine eigenständige Intranet-Webapplikation Corp_SysLog, das sogenannte „Job-Journal“. Sie zeigt letzte Datenbank-Job-Executions an und visualisiert deren SSIS Package Logs. Sie enthält weiter – nur via URL zugänglich (d.h., keine Navigation) – Informationen zu möglicherweise fehlenden Indexes in den Datenbanken sowie zu von den SQL Servern einer erhobenen Read-Statistik. Die bestehende Problematik liegt nun darin, dass beide Tools prinzipiell gut und von den DBAs auch regelmässig verwendet werden. Doch wünschen sich die DBAs ein alleinstehendes Tool, welches die Informationen der beiden bestehenden Tools verbinden kann. Weiter zeigen die beiden Tools seit der Server-Migration von 2011, wo die Intranet-Applikationen von weitgehend einem einzigen SQL Server auf vier SQL Server Instanzen verteilt wurden, nicht mehr alle Daten an. Gerade das „Job-Journal“ zeigt nur noch Informationen zu anderen Intranet-Applikationen an, welche sich auf der selben SQL Server Instanz befinden. 2.2 Produktperspektive Es soll eine neue zentrale Intranet-Applikation entstehen, welche die aktuellen Bedürfnisse der DBAs abdeckt, um die Schwachstellen der Prozesse, wie sie heute umgesetzt werden, zu beheben. Corp_JobMonitor soll konkret den folgenden Bedürfnissen gerecht werden: Corp_JobMonitor als Managementinstrument (für Team-, Abteilungs-, Projektleitung) Corp_JobMonitor als Wartungsinstrument (für DBAs) Corp_JobMonitor als Entwicklungsinstrument (für DBAs und weitere Entwickler von Datenbank-Jobs) Der neue JobMonitor soll aufgetretene Fehler in produktiven Datenbank-Jobs nicht mehr länger nur anzeigen können (Pull), sondern aktiv die verantwortlichen Entwickler darüber informieren (Push). Durch ein geeignetes Regelwerk sollen die Entwickler in der Lage sein, die Benachrichtigungen, welche sie erhalten, zu steuern und gegebenenfalls einzuschränken. DB-Job SQL Server Agent Log Job Run Log SSIS Package Log JobMonitor Abbildung 1: Ablauf Datenaufbereitung (Grobskizze). SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 5/16 Projektname Dokumenttitel Artifaktname 3 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie Allgemeine Anforderungen 3.1 Personas Hier seien noch einmal die drei Personas aus [01] erwähnt: Peter Ledermann (44), Manuel Imhof (28) und Sabrina Schmid (32). Peter Ledermann (44): Hat gute Computerkenntnisse und arbeitet häufig mit Office (Word, Excel) sowie mit SAP. Er arbeitet als Manager und muss so die Kosten der Applikationen sowie deren Offerten überwachen. Er ist verantwortliche für die Ressourcenplanung der Entwickler und versucht so mit den Kunden eine Terminplanung der Anwendungen zu definieren. Falls die Kosten einer Anwendungsentwicklung den Betrag der Offerte überschreiten, versucht er, mögliche Lösungen mit dem Kunde zu finden. Bei Kundenanfragen für eine neue Anwendung bzw. neue Funktionen zu einer bestehenden Applikation konsolidiert er die bereits vorhanden Implementierungen und zeigt dem Kunde mögliche Lösungen wie zum Beispiel mandantenfähige Applikationen. Manuel Imhof (28): Hat fortgeschrittene Computerkenntnisse und arbeitet als SoftwareEntwickler im Webumfeld. Er nutzt das Internet als Informations- und Unterhaltungsinstrument. Als Entwickler einer Anwendung ist er meistens zugleich Projektleiter. Für das Verwalten von Anwendungen für Support sowie Wartung ist er selber verantwortlich. Für das Entwickeln einer Anwendung verwendet er Visual Studio und er verwaltet seinen Source Code mit Subversion. Als Unterstützung zur Entwicklung der Anwendung steht ihm eine Library, welche speziell für diese Abteilung entwickelt wurde, zur Verfügung. Häufig entwickelt er Anwendungen im Kostenbereich 10‘000 bis 100‘000 Franken. Bei diesen Anwendungen ist er für alle notwendigen Schritte von Offerte bis zur Publikation der Anwendung selber verantwortlich. Er übernimmt auch die Schnittstelle zum Kunde. Bei grösseren Anwendung arbeitet er in einem Team von Entwickler und ihm werden diverse Rollen übergeben. Es kann aber auch sein, dass er die Funktion Projektleiter übernimmt, jedoch keinen einzigen Code entwickeln wird. Sabrina Schmid (32): Hat gute Computerkenntnisse und das Arbeiten mit Webapplikationen fällt ihr leicht. Als 2nd-Level-Supporterin nutzt sie das Telefon und E-Mail sehr häufig. Sie ist die Schnittstelle zwischen den Entwicklern und den Benutzern. Kann der 1st-LevelSupport eine Anfrage nicht beantworten, so wird diese Anfrage an Sabrina weitergeleitet. Falls sie die Anfrage nicht selber beantworten kann, informiert sie den Verantwortlichen der Anwendung, zu welcher die Anfrage gerichtet ist. Die Kommunikation zum Benutzer übernimmt sie weiterhin. Der Verantwortliche wird ihr die Antwort entweder mündlich oder schriftlich geben. Das Verwalten sowie Überwachen der Anfragen und deren Bearbeitungszeit übernimmt ebenfalls Sabrina. Für diese Aufgabe stehen ihr verschiedene Stellvertreter sowie Mitarbeiter zur Verfügung, so dass während den Büroarbeitszeiten die Anfragen so schnell wie möglich beantwortet werden können. 3.2 Domainmodell Nachfolgend soll das geplante Domainmodell von Corp_JobMonitor mit einem Strukturdiagramm und einer Beschreibung aller Objekte aufgezeigt werden. 3.2.1 Strukturdiagramm Die Abbildung 2 zeigt das Strukturdiagramm von Corp_JobMonitor. Das zentrale Objekt ist der Job; dabei handelt es sich effektiv um den auf dem SQL Server Agent eingerichteten Datenbank-Job. Den Job kann es daher – falls notwendig – einmal je Environment (Development, Integration, Production) geben; daher die Zusammenfassung in der Job-Definition. Ein Job kann mehrere Job-Steps haben, beides wird Runs resp. Executions haben, welche alle auf definierte Weise Logs hinterlassen. SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 6/16 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen JobDefinition -JobName -Komponente -Beschreibung -Schnittstelle -Abhaengigkeit -Fehlermassnahme Informationstechnologie Job 1 * -JobName -Typ -Environment -Enabled -MustRun JobStep -StepName -PackageName 1 * 1 1 * * JobRun JobStepRun -Startzeit -Endzeit -Dauer -Status -Solved 1 * -Startzeit -Endzeit -Dauer -Status -Solved 1 1 * * JobRunLog -ForeignDatabase -ForeignTable -ForeignId -Status JobStepLog -ForeignDatabase -ForeignTable -ForeignId -Status Abbildung 2: Strukturdiagramm von Corp_JobMonitor. 3.2.2 Konzeptbeschreibung Job-Definition Beschreibung Fasst einen Job, der auf verschiedenen Environments sein kann, zusammen. Attribute Job-Name, Komponente, Beschreibung, Schnittstelle, Abhängigkeit, Fehlermassnahme. Beziehung Eine Job-Definition hat einen oder mehrere Jobs. Job Beschreibung Attribute Beziehung Job-Step Beschreibung Attribute Beziehung Run Beschreibung Attribute Beziehung Stellt einen Datenbank-Job dar. Job-Name, Typ, Environment, Enabled, MustRun. Ein Job gehört zu einer Job-Definition und hat sowohl einen oder mehrere Job-Steps als auch mehrere Runs. Ein Datenbank-Job ist aus mindestens einem Job-Step zusammengesetzt. Step-Name, Package-Name Ein Job-Step gehört zu einem Job und hat mehrere Runs. Ein Run resp. eine Execution stellt einen erfolgreichen oder fehlerhaften Durchlauf eines Datenbank-Jobs resp. dessen Job-Steps dar. Startzeit, Endzeit, Dauer, Status, Solved. Ein Run gehört zu einem Job. Ein Job kann mehrere Runs haben. SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 7/16 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Log Beschreibung Attribute Beziehung Informationstechnologie Ein Log beschreibt einen Run resp. Execution eines Job-Runs oder eines Job-Step-Runs. Foreign-Database, Foreign-Table, Foreign-ID, Status. Ein Log gehört zu einem Job-Run oder zu einem Job-Step-Run. Beide können jeweils mehrere Logs haben. 3.3 Systemgrenzen Die Abbildung 3 zeigt die Systemgrenzen von Corp_JobMonitor. Mehrere Datenbanken kommen hierbei zum Zuge. Die Datenbank-Jobs laufen auf dem Job-Server serverBDS, die Logs befinden sich ebenfalls dort sowie auf den Applikations-Datenbank-Servern. Corp_PadMan Corp_JobMonitor pwwdbprod04 pwwdbprod03 pwwdbprod02 serverdbprod01 PWW-DB-Server GUI pwwdbmobile2 serverdbmobile1 Arbeitsstation MAP-DB-Server serverBDS Job-DB-Server Abbildung 3: Systemgrenzen von Corp_JobMonitor. 3.4 Use Cases In der untenstehenden Tabelle 1 werden alle Use Cases mit deren Gewichtung dargestellt. Die Gewichtung wird zwischen 1 und 10 definiert. Dabei gilt ein Wert von 10 zwingend zu implementieren und einen Wert von 1 als „nice to have“. Umso höher der Wert Kritisch ist, je mehr Unklarheiten bzw. Wissen fehlt für die benötigte Funktion. Name Jobs ansehen (Liste) Job einer Komponente zuordnen Job-Details editieren Job-Runs ansehen (Liste) Job-Run-Details ansehen Fehlerhafter Job-Run als erledigt markieren Bezeichnung J_UC_10 J_UC_20 J_UC_30 J_UC_40 J_UC_50 J_UC_60 Gewicht 10 10 10 10 10 10 Kritisch 1 3 1 1 1 1 Tabelle 1: Use Case Übersicht von Corp_JobMonitor. SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 8/16 Projektname Dokumenttitel Artifaktname 3.4.1 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie J_UC_10: Jobs ansehen (Liste) Bezeichnung J_UC_10 Name Jobs ansehen Scope JobMonitor Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter DBAs Interessen Verwalten und Überwachung der Datenbank-Jobs. Vorbedingung Komponenten müssen bekannt und daher bereits von Corp_PadMan erhalten und abgeglichen sein. Nachbedingung Liste der selektierten Datenbank-Jobs wird angezeigt. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will Datenbank-Jobs ansehen. 2. Benutzer filtert die anzuzeigenden Datenbank-Job-Resultate. Erweiterung Spezialanforderung Auftrittshäufigkeit 3. System zeigt Datenbank-Jobs entsprechend dem Filter mit wenigstens den folgenden Informationen an. - Job-Name - Letzte Execution Produktion - Letzte Execution Integration - Letzte Execution Entwicklung - Massnahmen im Fehlerfall 2a. Benutzer wählt einen Job-Namen aus. 2b. Benutzer wählt eine Komponente resp. eine Applikations-ID (Appl ID) aus. 2c. Benutzer definiert, ob nur Jobs, deren letzte Execution mit Fehlern und/oder Warnungen geendet hatten, angezeigt werden sollen. 2d. Benutzer definiert, ob für 2c. nur die noch nicht gefixten Datenbank-Jobs angezeigt werden sollen. 2e. Benutzer schränkt auf Jobs ein, die keiner Komponente zugeordnet sind. 2f. Benutzer schränkt auf Jobs ein, die als „disabled“ markiert sind. 2g. Benutzer schränkt auf Jobs ein, die als „obsolete“ markiert sind. mittel SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 9/16 Projektname Dokumenttitel Artifaktname 3.4.2 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie J_UC_20: Job einer Komponente zuordnen Bezeichnung J_UC_20 Name Job einer Komponente zuordnen Scope JobMonitor Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter DBAs Interessen Der Entwickler will einen Datenbank-Job logisch mit einer Komponente verknüpfen. Vorbedingung Komponenten müssen bekannt und daher bereits von Corp_PadMan erhalten und abgeglichen sein. Nachbedingung Datenbank-Job ist mit der Komponente verknüpft. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will einen Datenbank-Job einer Komponente logisch zuordnen. 2. Benutzer filtert die anzuzeigenden Datenbank-Job-Resultate. 3. System zeigt Datenbank-Jobs entsprechend dem Filter an. 4. Benutzer wählt einen DatenbankJob zur Zuordnung aus. 5. System zeigt eine Auswahl aller Komponenten an, die es aus Corp_PadMan erhält. 6. Benutzer wählt eine der Komponenten aus. 7. Benutzer bestätigt seine Auswahl. Erweiterung Spezialanforderung Auftrittshäufigkeit 8. System speichert die KomponentenZuordnung. 2a. Benutzer wählt einen Job-Namen aus. 2b. Benutzer wählt eine Komponente resp. eine Applikations-ID (Appl ID) aus. 2c. Benutzer definiert, ob nur Jobs, deren letzte Execution mit Fehlern und/oder Warnungen geendet hatten, angezeigt werden sollen. 2d. Benutzer definiert, ob für 2c. nur die noch nicht gefixten Datenbank-Jobs angezeigt werden sollen. 2e. Benutzer schränkt auf Jobs ein, die keiner Komponente zugeordnet sind. 2f. Benutzer schränkt auf Jobs ein, die als „disabled“ markiert sind. 2g. Benutzer schränkt auf Jobs ein, die als „obsolete“ markiert sind. wenig SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 10/16 Projektname Dokumenttitel Artifaktname 3.4.3 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie J_UC_30: Job-Details editieren Bezeichnung J_UC_30 Name Job-Details editieren Scope JobMonitor Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter DBAs Interessen Der Entwickler will die Detailinformationen zu einem Datenbank-Job editieren. Vorbedingung Nachbedingung Die getätigten Benutzereingaben müssen gespeichert sein. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will die Detailinformationen zu einem Datenbank-Job editieren. 2. Benutzer filtert die anzuzeigenden Datenbank-Job-Resultate. 3. System zeigt Datenbank-Jobs entsprechend dem Filter an. 4. Benutzer wählt einen DatenbankJob aus. 5. System zeigt die Detailinformationen in einer Editiermaske an. 6. Benutzer ändert Detailinformationen. 7. Benutzer bestätigt seine Eingaben. Erweiterung Spezialanforderung Auftrittshäufigkeit 8. System speichert die Benutzereingaben. 2a. Benutzer wählt einen Job-Namen aus. 2b. Benutzer wählt eine Komponente resp. eine Applikations-ID (Appl ID) aus. 2c. Benutzer definiert, ob nur Jobs, deren letzte Execution mit Fehlern und/oder Warnungen geendet hatten, angezeigt werden sollen. 2d. Benutzer definiert, ob für 2c. nur die noch nicht gefixten Datenbank-Jobs angezeigt werden sollen. 2e. Benutzer schränkt auf Jobs ein, die keiner Komponente zugeordnet sind. 2f. Benutzer schränkt auf Jobs ein, die als „disabled“ markiert sind. 2g. Benutzer schränkt auf Jobs ein, die als „obsolete“ markiert sind. wenig SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 11/16 Projektname Dokumenttitel Artifaktname 3.4.4 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie J_UC_40: Job-Runs ansehen (Liste) Bezeichnung J_UC_40 Name Job-Runs ansehen Scope JobMonitor Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter DBAs Interessen Der Entwickler will die Datenbank-Job-Runs überwachen. Vorbedingung Nachbedingung Liste der Datenbank-Jobs-Runs wird angezeigt. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will Informationen zu den einzelnen Runs / Executions eines einzelnen Datenbank-Jobs ansehen. 2. Benutzer filtert die anzuzeigenden Datenbank-Job-Resultate. 3. System zeigt Datenbank-Jobs entsprechend dem Filter an. 4. Benutzer wählt einen DatenbankJob aus. Erweiterung Spezialanforderung Auftrittshäufigkeit 5. System zeigt die Informationen zu den einzelnen Runs / Executions eines einzelnen Datenbank-Jobs an. 2a. Benutzer wählt einen Job-Namen aus. 2b. Benutzer wählt eine Komponente resp. eine Applikations-ID (Appl ID) aus. 2c. Benutzer definiert, ob nur Jobs, deren letzte Execution mit Fehlern und/oder Warnungen geendet hatten, angezeigt werden sollen. 2d. Benutzer definiert, ob für 2c. nur die noch nicht gefixten Datenbank-Jobs angezeigt werden sollen. 2e. Benutzer schränkt auf Jobs ein, die keiner Komponente zugeordnet sind. 2f. Benutzer schränkt auf Jobs ein, die als „disabled“ markiert sind. 2g. Benutzer schränkt auf Jobs ein, die als „obsolete“ markiert sind. häufig SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 12/16 Projektname Dokumenttitel Artifaktname 3.4.5 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie J_UC_50: Job-Run-Details ansehen Bezeichnung J_UC_50 Name Job-Run-Details ansehen Scope JobMonitor Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter DBAs Interessen Der Entwickler will die Details eines Datenbank-Job-Runs ansehen. Vorbedingung Nachbedingung Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will die DetailInformationen zu einem Datenbank-Job-Run / -Execution ansehen. 2. Benutzer filtert die anzuzeigenden Datenbank-Job-Resultate. 3. System zeigt Datenbank-Jobs entsprechend dem Filter an. 4. Benutzer wählt einen DatenbankJob aus. 5. System zeigt die Informationen zu den einzelnen Runs / Executions des ausgewählten Datenbank-Jobs an. 6. Benutzer wählt einen DatenbankJob-Run / -Execution aus. Erweiterung Spezialanforderung Auftrittshäufigkeit 7. System zeigt die DetailInformationen zu den einzelnen Runs / Executions des ausgewählten Datenbank-Jobs an. 2a. Benutzer wählt einen Job-Namen aus. 2b. Benutzer wählt eine Komponente resp. eine Applikations-ID (Appl ID) aus. 2c. Benutzer definiert, ob nur Jobs, deren letzte Execution mit Fehlern und/oder Warnungen geendet hatten, angezeigt werden sollen. 2d. Benutzer definiert, ob für 2c. nur die noch nicht gefixten Datenbank-Jobs angezeigt werden sollen. 2e. Benutzer schränkt auf Jobs ein, die keiner Komponente zugeordnet sind. 2f. Benutzer schränkt auf Jobs ein, die als „disabled“ markiert sind. 2g. Benutzer schränkt auf Jobs ein, die als „obsolete“ markiert sind. mittel SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 13/16 Projektname Dokumenttitel Artifaktname 3.4.6 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie J_UC_60: Fehlerhafter Job-Run als erledigt markieren Bezeichnung J_UC_60 Name Fehlerhafter Job-Run als erledigt markieren Scope JobMonitor Level Benutzerabsicht Primärer Aktor Entwickler Stakeholder Manager Supporter DBAs Interessen Der Entwickler will einen oder mehrere fehlerhafte Job-Runs als erledigt markieren. Vorbedingung Nachbedingung Der selektierte Job-Run erhält den Status „erledigt“. Hauptszenario Aktor Aktionen und Absichten Systemverantwortlichkeit 1. Benutzer will einen fehlerhaften Datenbank-Job-Run / -Execution als erledigt markieren. 2. Benutzer filtert die anzuzeigenden Datenbank-Job-Resultate. 3. System zeigt Datenbank-Jobs entsprechend dem Filter an. 4. Benutzer wählt einen DatenbankJob aus. 5. System zeigt die Informationen zu den einzelnen Runs / Executions des ausgewählten Datenbank-Jobs an. 6. Benutzer wählt einen DatenbankJob-Run / -Execution aus, welcher als erledigt markiert werden soll. Erweiterung Spezialanforderung Auftrittshäufigkeit 7. System speichert die Benutzereingaben. 2a. Benutzer wählt einen Job-Namen aus. 2b. Benutzer wählt eine Komponente resp. eine Applikations-ID (Appl ID) aus. 2c. Benutzer definiert, ob nur Jobs, deren letzte Execution mit Fehlern und/oder Warnungen geendet hatten, angezeigt werden sollen. 2d. Benutzer definiert, ob für 2c. nur die noch nicht gefixten Datenbank-Jobs angezeigt werden sollen. 2e. Benutzer schränkt auf Jobs ein, die keiner Komponente zugeordnet sind. 2f. Benutzer schränkt auf Jobs ein, die als „disabled“ markiert sind. 2g. Benutzer schränkt auf Jobs ein, die als „obsolete“ markiert sind. 6a. Benutzer definiert, dass sämtliche Job-Runs als erledigt markiert werden sollen. mittel SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 14/16 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie 3.5 Nicht-funktionale Anforderungen 3.5.1 Technische Anforderung Das System muss mit ASP.NET in der Sprache C# entwickelt werden und in einem .NET 4.0 Pool auf einem Windows Server 2008 laufen. Die Anwendung muss mit einem O/R-Mapper implementiert werden und mindestens mit der Datenbank SQL Server 2008 arbeiten können. 3.5.2 Ergonomische Anforderung Die Applikation unterstützt die Lokalisierung, es wird jedoch nur eine deutsche Benutzerführung zur Verfügung gestellt. 3.5.3 Verfügbarkeit Die Applikation ist während den allgemeinen Bürozeiten (Mo-Fr 07:00-19:00 Uhr) verfügbar. Bei einem Incident, welcher von der Applikation ausgeht und das PWW betrifft, ist eine max. Behebungszeit von 4 Stunden notwendig. Ist der Betrieb von PWW jedoch nicht beeinflusst, wird die Störung nach Best Effort bearbeitet. Bei Incidents, welche von ausserhalb des Einflussbereiches von Corp_JobMonitor stammen, können keine Angaben gemacht werden. 3.5.4 Benutzerfreundlichkeit Obwohl die Benutzer der Software über gute bis sehr gute Computerkenntnisse verfügen werden, soll viel Wert auf ein intuitives und übersichtliches Design gelegt werden. Um dies zu erreichen, soll eine einheitliche Benutzerführung definiert werden, wodurch es den Benutzern des System in wenigen Schritten möglich ist, eine Aufgabe erfolgreich zu lösen. Das System wird über eine grafische Benutzeroberfläche mit übersichtlicher Menüführung 1 verfügen, die mindestens im Internet Explorer 9 dargestellt wird. Andere Browser werden, sofern diese den Standard implementieren, soweit wie möglich unterstützt. 3.5.5 Datenverlust Wenn während der Eingabe von Daten eine Fehlfunktion auftritt, gehen nur die noch nicht in die Datenbank übertragenen Daten verloren. Dabei wird es sich lediglich um gerade eingegebene Daten handeln. Der Verlust von Daten in der Datenbank wird durch ein Backup, welches in unserer Umgebung bereits im Einsatz ist, verhindert. 3.5.6 Auftreten von Fehlfunktionen Sollte tatsächlich eine Fehlfunktion auftreten, so soll dem Benutzer dies mitgeteilt werden. Es soll jedoch nie eine Fehlerseite des Webservers angezeigt werden. 3.5.7 Sicherheit 3.5.7.1 Authentifizierung Die Authentifizierung wird durch die vorhandenen Mittel der Post (LDAP und Windows-Authentifizierung von IIS) abgedeckt. Diese wird sowohl für Benutzer als auch für Fremdsysteme, welche über eine Schnittstelle zugreifen, erforderlich sein. 3.5.7.2 Kommunikation Die Schnittstellen für Fremdsysteme werden sowohl über HTTP als auch HTTPS verfügbar sein. 3.5.7.3 SQL-Injektion SQL-Injektion wird durch den Einsatz des O/R-Mappers NHibernate verhindert. 3.5.7.4 X-Site Scripting Durch das Entfernen von HTML-Tags bei Eingabemöglichkeiten von Benutzern wie auch Fremdsystemen wird das X-Site Scripting unterbunden. 3.5.7.5 Scripts Scripts wie Javascript werden durch die Post-Library abgedeckt. 1 Die Übersichtlichkeit wird von ausgewählten Benutzern beurteilt. SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 15/16 Projektname Dokumenttitel Artifaktname 4 Corp_JobMonitor Systemanforderungen Corp_JobMonitor Systemanforderungen Informationstechnologie Anforderungen an die Entwicklungs- und Wartungsumgebung Keine weiter führenden Angaben. 5 Anforderungen an die externen Schnittstellen Keine weiter führenden Angaben. 6 Detailanforderungen Keine weiter führenden Angaben. 7 Sicherheitsanforderungen Keine weiter führenden Angaben. SY_JOBMON_Systemanforderung_V01.02.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 16/16 Masterthesis „Renewal TeamPortal“ Projektplan Risikokatalog Situationsanalyse Corp_PadMan – Systemanforderungen Corp_PadMan – Systemdesign Corp_LogObi – Systemanforderungen Corp_LogObi – Systemdesign Corp_JobMonitor – Systemanforderungen Corp_JobMonitor – Systemdesign Migration (in der publizierten Version nicht enthalten) Die Schweizerische Post Informationstechnologie Systemdesign Dokumentart Titel Projektname Projektabkürzung Projektmanager Ausgabedatum Autor Übermittler Empfänger Klassifizierung SD Systemdesign Corp_JobMonitor Corp_JobMonitor JOBMON Irminger Pascal, IT133 28.03.2012 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133; Lehmann Marcel, IT132; Zenklusen Axel, IT131; Haefeli Stefan, IT132 Nicht klassifiziert Änderungskontrolle Version Datum Überarbeitung Ersteller Freigabe X01.00 X01.01 X01.02 X01.03 X01.04 V01.04 16.01.2012 25.01.2012 25.02.2012 05.03.2012 28.03.2012 28.03.2012 Neues Dokument Schnittstellen dokumentiert SSIS-Jobs dokumentiert GUI-Komponenten dokumentiert Finalisierung Freigabe Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Irminger Pascal, IT133 Haefeli Stefan, IT132 SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 1/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Inhaltsverzeichnis 1 Allgemeines .................................................................................................................................................. 4 1.1 Zweck ........................................................................................................................................................ 4 1.2 Beschreibung ............................................................................................................................................. 4 1.3 Tailoring ..................................................................................................................................................... 4 1.4 Definitionen, Akronyme und Abkürzungen ................................................................................................ 4 1.5 Referenzen ................................................................................................................................................ 5 2 Lösungsvorschläge für die Struktur des Systemdesigns .................................................................................. 6 3 Struktur des Systemdesigns........................................................................................................................... 7 3.1 Integration in die Serverumgebung ............................................................................................................ 7 3.2 Datenbankmodell ...................................................................................................................................... 8 4 Schnittstellen ................................................................................................................................................ 9 4.1 Informationen zu Datenbank-Jobs erhalten ................................................................................................ 9 4.2 SSIS-Job Corp_JobMonitor_Job_Basic_Import .......................................................................................... 10 4.2.1 Variablen .............................................................................................................................................. 10 4.2.2 Control Flow ......................................................................................................................................... 10 4.2.3 Execute SQL Task: DELETE tabJobImport ............................................................................................... 11 4.2.4 Data Flow Task: Read Job-Data and Insert Into tabJobImport ................................................................ 11 4.2.4.1 OLE DB Source Task: Read Job-Data from JobServer ........................................................................... 12 4.2.4.2 OLE DB Destination Task: INSERT INTO tabJobImport ......................................................................... 13 4.2.5 Execute SQL Task: Save PackageName .................................................................................................. 13 4.2.6 Execute SQL Task: INSERT new INTO tabJobDefinition ........................................................................... 13 4.2.7 Execute SQL Task: INSERT new INTO tabJob .......................................................................................... 14 4.2.8 Execute SQL Task: INSERT new INTO tabJobStep ................................................................................... 14 4.2.9 Execute SQL Task: UPDATE tabJob SET Enabled, CategoryName ............................................................ 15 4.3 SSIS-Job Corp_JobMonitor_Job_Logs_Import ........................................................................................... 16 4.3.1 Variablen .............................................................................................................................................. 16 4.3.2 Control Flow ......................................................................................................................................... 17 4.3.3 Execute SQL Task: Zuletzt geladene Daten bestimmen .......................................................................... 18 4.3.4 Sequence Container: Import data from msdb ....................................................................................... 18 4.3.4.1 Execute SQL Task: TRUNCATE TABLE tabJobAgentImport ................................................................... 19 4.3.4.2 Data Flow Task: Get msdb-Data ......................................................................................................... 19 4.3.4.2.1 OLE DB Source: Read JobAgent Logs .............................................................................................. 19 4.3.4.2.2 OLE DB Source: Read Job-Ids .......................................................................................................... 21 4.3.4.2.3 Sort Transformation & Merge Join Transformation .......................................................................... 21 4.3.4.2.4 OLE DB Destination: INSERT INTO tabJobAgentLog ......................................................................... 21 4.3.4.3 Execute SQL Task: Update Status in tabJobAgentImport ..................................................................... 21 4.3.4.4 Execute SQL Task: INSERT INTO tabJobRun......................................................................................... 22 4.3.4.5 Execute SQL Task: INSERT INTO tabJobRunLog ................................................................................... 22 4.3.4.6 Execute SQL Task: INSERT INTO tabJobStepRun .................................................................................. 23 4.3.4.7 Execute SQL Task: INSERT INTO tabJopStepLog .................................................................................. 24 4.3.5 Sequence Container: Import data from Corp_SysLog (PROD) ................................................................ 24 4.3.5.1 Execute SQL Task: TRUNCATE TABLE tabSysLogImport ....................................................................... 25 4.3.5.2 Data Flow Task: Get Corp_SysLog-Data (PROD) .................................................................................. 26 4.3.5.2.1 OLE DB Source Task: Read from PROD SysLog ................................................................................. 26 4.3.5.2.2 OLE DB Destination Task: INSERT INTO tabSysLogImport ................................................................. 27 4.3.5.3 Execute SQL Task: Update Status in tabSysLogImport ......................................................................... 27 4.3.5.4 Execute SQL Task: INSERT INTO tabJobStepLog .................................................................................. 27 4.3.6 Sequence Container: Import data from Corp_SysLog (INT) .................................................................... 29 4.3.7 Sequence Container: Import data from Corp_SysLog (DEV) .................................................................. 30 4.3.8 Execute SQL Task: Update Status in tabJobStepRun .............................................................................. 30 4.3.9 Execute SQL Task: Update Status in tabJobRun ..................................................................................... 31 4.4 SSIS-Job Corp_JobMonitor_CleanUp ........................................................................................................ 31 4.4.1 Variablen .............................................................................................................................................. 32 4.4.2 Control Flow ......................................................................................................................................... 32 4.4.3 Execute SQL Task: DELETE tabJobStepLog ............................................................................................. 32 SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 2/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.4.4 Execute SQL Task: DELETE tabJobStepRun ............................................................................................. 32 4.4.5 Execute SQL Task: DELETE tabJobRunLog .............................................................................................. 33 4.4.6 Execute SQL Task: DELETE tabJobRunLog .............................................................................................. 33 4.5 ComponentService .................................................................................................................................. 33 5 Beschreibung der Elemente ......................................................................................................................... 34 5.1 Ansicht JobList ......................................................................................................................................... 34 5.2 Ansicht EditJob ........................................................................................................................................ 35 5.3 Ansicht ViewJobHistory ............................................................................................................................ 36 5.4 Ansicht ViewJobRunDetail ....................................................................................................................... 37 5.5 Datenbank-Zugriff auf unterschiedliche Environments derselben Datenbank ............................................ 38 5.5.1 Klasse JobMonitorProvider .................................................................................................................... 39 6 Anforderungszuordnung ............................................................................................................................ 40 7 Sicherheit.................................................................................................................................................... 40 SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 3/40 Projektname Dokumenttitel Artifaktname 1 Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Allgemeines 1.1 Zweck Das Systemdesign ist eine Verfeinerung der Systemarchitektur und beschreibt die detaillierten Spezifikationen als Vorgabe für die Erstellung des Systems. 1.2 Beschreibung Eine verfeinerte Gliederung muss vom entsprechenden Vorgehensmodell hinzugefügt werden. Die Darstellung des Systemdesigns kann sowohl in strukturiertem Text als auch in Form von Modellen (z.B. Datenfluss-, Zustandübergangsmodelle, usw.) erfolgen. Das Systemdesign ist ein abschliessender Entwurf des technischen und organisatorischen Systems bis auf Stufe «Element». 1.3 Tailoring Das Systemdesign kann auch in mehreren eigenständigen Dokumenten vorliegen, zum Beispiel pro Systemelement (entspricht der kleinsten Systemzerlegungsstufe). 1.4 Definitionen, Akronyme und Abkürzungen Wort Definition Control Flow Item1 SSIS Tasks, mit denen Arbeitseinheiten definiert werden, die in einem SSIS Package Control Flow ausgeführt werden. Ein SSIS Package besteht aus einem oder mehreren Tasks. Enthält das Paket mehrere Tasks, werden sie im Control Flow durch sogenannte „Precedence Constraints“ miteinander verbunden und angeordnet. Corp_JobMonitor ist die in diesem Dokument beschriebene Intranet-Applikation für das Monitoring von Datenbank-Jobs. Die dazugehörige Datenbank trägt denselben Namen. Corp_PadMan ist die neue Intranet-Applikation zur Verwaltung aller Intranet-Applikationen im PWW-Umfeld. Die dazugehörige Datenbank trägt denselben Namen. Ein SSIS Control Flow Item. Der Data Flow Task2 kapselt die Data Flow Engine, mit dem Daten zwischen Quellen und Zielen verschoben werden, und ermöglicht dem Benutzer das Transformieren, Bereinigen und Ändern von Daten beim Verschieben. Durch das Hinzufügen eines Data Flow Task zu SSIS Package Control Flow kann das Package Daten extrahieren, transformieren und laden. Siehe Development. Server-Umgebung Entwicklung (Stufe 1). Die Beschreibung definiert sowohl Datenbank- als auch Webserver. Beschreibt die Server-Umgebung. Es wird unterschieden zwischen Entwicklung, Integration und Produktion resp. Development, Integration und Production. Ein SSIS Control Flow Item. Der Execute SQL Task3 führt SQL-Anweisungen oder gespeicherte Prozeduren einem SSIS Package Control Flow aus. Foreign Key = Fremdschlüssel Index (Datenbankmodell) Siehe Integration. Server-Umgebung Integration (Stufe 2). Die Beschreibung definiert sowohl Datenbank- als auch Webserver. Der Job beschreibt in diesem Dokument einen im SQL Server Agent unter Jobs gespeicherter Datenbank-Job. Der Job kann in diesem Dokument Job-Steps und Job-Runs besitzen. Der Job-Run beschreibt in diesem Dokument die / eine Ausführung eines Datenbank-Jobs. Es spielt dabei keine Rolle, ob der Datenbank-Job automatisch durch den SQL Server Agent (Schedule) oder manuell durch einen Benutzer gestartet wurde. Der Job-Run kann in diesem Dokument Job-Step-Runs besitzen. Der Job-Step beschreibt in diesem Dokument einen Prozess-Schritt innerhalb eines im SQL Server Agent unter Jobs gespeicherter Datenbank-Jobs. Der Job-Step kann in diesem Dokument Job-Step-Runs besitzen. Corp_JobMonitor Corp_PadMan Data Flow Task DEV Development Environment Execute SQL Task FK I INT Integration Job Job-Run Job-Step 1 http://msdn.microsoft.com/en-us/library/ms139892.aspx http://msdn.microsoft.com/en-us/library/ms141122.aspx 3 http://msdn.microsoft.com/en-us/library/ms141003.aspx 2 SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 4/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Wort Definition Job-Step-Run Der Job-Step-Run beschreibt in diesem Dokument die / eine Ausführung eines Job-Steps. Es spielt dabei – wie auch beim Job-Run – keine Rolle, ob der Datenbank-Job automatisch durch den SQL Server Agent (Schedule) oder manuell durch einen Benutzer gestartet wurde. Die Merge Join Transformation4 stellt einen Output bereit, welcher durch Verknüpfen von zwei sortierten Input Datasets mithilfe einer FULL JOIN-, LEFT JOIN- oder INNER JOINAnweisung generiert wird. Die OLE DB Destination5 lädt Daten mithilfe einer Datenbanktabelle, einer Datenbankview oder eines SQL-Befehls in eine OLE DB-kompatible Datenbanken. Beispielsweise können aus der OLE DB Source Daten in Tabellen in SQL Server-Datenbanken geladen werden. Die OLE DB Source6 extrahiert Daten mithilfe einer Datenbanktabelle, einer Datenbankview oder eines SQL-Befehls aus einer OLE DB-kompatiblen relationalen Datenbanken. Beispielsweise kann die OLE DB Source Daten aus Tabellen in SQL Server-Datenbanken extrahieren. Primary Key = Primärschlüssel Siehe Production. Server-Umgebung Produktion (Stufe 3). Die Beschreibung definiert sowohl Datenbank- als auch Webserver. Post Wide Web. Das Intranet der Schweizerischen Post. Ein SSIS Control Flow Item. Der Sequence Container7 definiert einen Control Flow und gruppieren das Package zu mehreren separaten Control Flows, die jeweils Tasks und Container enthalten, die innerhalb des übergeordneten Package Control Flow ausgeführt werden. Die Sort Transformation8 sortiert den Input in auf- oder absteigender Reihenfolge und kopiert die sortierten Daten in den Output. Auf einen Input können mehrere Sortierungen angewendet werden. SQL Server Integration Services ist ein ETL-Serverprodukt (Massendaten importieren, transformieren und exportieren), das mit Microsoft SQL Server 2005 resp. 2008 mitgeliefert wird. SSIS besteht aus einem Windows-Systemdienst, einer Verwaltungskonsole und einem Entwicklerprodukt (SQL Server Business Intelligence Development Studio). Die Structured Query Language ist eine Datenbanksprache zur Definition von Datenstrukturen in relationalen Datenbanken sowie zum Bearbeiten (Einfügen, Verändern, Löschen) und Abfragen von darauf basierenden Datenbeständen. Der Microsoft SQL Server ist ein relationales Datenbankmanagementsystem von Microsoft. Der SQL Server Agent ist ein Microsoft Windows-Dienst, der geplante administrative Tasks ausführt, die als Jobs bezeichnet werden. Der SQL Server Agent verwendet SQL Server, um Job-Informationen zu speichern. Merge Join Transformation OLE DB Destination OLE DB Source PK PROD Production PWW Sequence Container Sort Transformation SSIS SQL SQL Server SQL Server Agent 1.5 Referenzen Nr. Titel [01] Systemanforderungen Corp_JobMonitor SY_JOBMON_Systemanforderung_X01.02.docx Systemdesign Corp_PadMan SD_PADMAN_Systemdesign_V01.04.docx [02] 4 http://msdn.microsoft.com/en-us/library/ms141775.aspx http://msdn.microsoft.com/en-us/library/ms141237.aspx 6 http://msdn.microsoft.com/en-us/library/ms141696.aspx 7 http://msdn.microsoft.com/en-us/library/ms139855.aspx 8 http://msdn.microsoft.com/en-us/library/ms140182.aspx 5 SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 5/40 Projektname Dokumenttitel Artifaktname 2 Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Lösungsvorschläge für die Struktur des Systemdesigns Ein Punkt im Systemdesign hat massgeblich zu Diskussionen mit dem Kernteam sowie mit den DatenbankAdministratoren geführt: wie wird mit der Fülle an Logs umgegangen und wie werden sie in Corp_JobMonitor gespeichert resp. verwendet? Um diese Frage zu klären, muss zunächst festgehalten werden, wo sich die Logs derzeit befinden. Es werden grundsätzlich zwei Arten von Job-Logs unterschieden: 1. SQL Server Agent Logs: Dabei handelt es sich um Logs, welche vom SQL Server Agent selber gespeichert werden. Diese haben hauptsächlich mit dem Job Schedule und dementsprechend mit der Ausführung (Start und Ende) von Job-Steps. Die SQL Server Agent Logs befinden sich grundsätzlich in der Systemdatenbank msdb. Weiter führende Informationen dazu finden sich in Kapitel 4.1. 2. SSIS Package Logs: Ein Datenbank-Job besteht bekanntlich aus einem oder mehreren Job-Steps. Eine Form der Job-Steps ist das SSIS Package (SQL Server Integration Services). SSIS Packages sind DatenAblaufsteuerungen, welche mit Visual Studio implementiert werden können. Diese können selbständig Logs erzeugen, wovon der SQL Server Agent prinzipiell nichts erfährt. Die SSIS Package Logs befinden sich für Datenbank-Jobs – aus dem Intranet der Schweizerischen Post – in der dafür konfigurierten Datenbank Corp_SysLog verteilt in allen Environments (Development, Integration, Production). Aus oben stehenden Gegebenheiten sind folgende Varianten entstanden: Variante 1 Beschreibung Vorteile Nachteile Die Logs beider Arten werden vollständig in die Datenbank von Corp_JobMonitor übernommen und „lokal“ zur Anzeige gebracht. Alle benötigten Daten liegen an einem Ort gemeinsam vor (Datenbank von Corp_JobMonitor). Womöglich schnellere Abfragegeschwindigkeit. Grosser Speicherbedarf der Datenbank Corp_JobMonitor. Duplizierung der Log-Daten. Tabelle 1: Beschreibung der Variante 1. Variante 2 Beschreibung Vorteile Nachteile Sämtliche Logs beider Arten werden bei der Übernahme berücksichtigt. Effektiv übernommen und in Corp_JobMonitor gespeichert werden allerdings lediglich der Status sowie eine ID und Angaben zur Datenquelle. Für die Anzeige in der Webapplikation sind dann erneut Abfragen in die Quellsysteme notwendig. Überschaubarer Speicherbedarf der Datenbank Corp_JobMonitor. Keine Duplizierung der Log-Daten Mehrere Round-Trips, bis sämtliche Daten selektiert sind. Tabelle 2: Beschreibung der Variante 2. Mit den Datenbank-Administratoren wurde massgeblich aufgrund des Speicherbedarfs die Variante 2 priorisiert. Die Datenübernahme (Log-IDs und Status) wird mit einem Datenbank-Job (SSIS-Package) realisiert (siehe dazu Kapitel 4.3). SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 6/40 Projektname Dokumenttitel Artifaktname 3 Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Struktur des Systemdesigns Dieser Abschnitt zeigt und beschreibt den Aufbau des technischen und organisatorischen Systems bis auf Elementebene. 3.1 Integration in die Serverumgebung Die Webapplikation Corp_JobMonitor wird auf der PWW-Serverfarm zu liegen kommen. Die Webapplikation ist jeweils auf den Master-Server zu publizieren, die Replikation in die Serverfarm geht automatisch vonstatten. Die Datenbank von Corp_JobMonitor wird jeweils auf der 01-Instanz der Datenbank-Server liegen: serverdbdev01, serverdbint01, serverdbprod01. Die Abbildung 1 zeigt die Systemgrenzen des Systems Corp_JobMonitor. Die Verbindung zu Corp_PadMan dient dazu, an die Komponenten-Informationen zu kommen, denen die einzelnen Jobs in Corp_JobMonitor zugewiesen werden, so dass die Benutzer leicht an die verantwortlichen Personen gelangen können. Corp_PadMan Corp_JobMonitor pwwdbprod04 pwwdbprod03 pwwdbprod02 serverdbprod01 PWW-DB-Server GUI pwwdbmobile2 serverdbmobile1 Arbeitsstation MAP-DB-Server serverBDS Job-DB-Server Abbildung 1: Systemgrenzen von Corp_JobMonitor (Production). SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 7/40 Projektname Dokumenttitel Artifaktname 3.2 Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Datenbankmodell tabComponentPersonMapping tabComponent PK ComponentId InsertUser InsertDate UpdateUser UpdateDate PK MappingId FK1,I1 FK2,I2 FK3,I3 ComponentId PersonId TypeId InsertUser InsertDate UpdateUser UpdateDate tabPerson PK PersonId UserId InsertUser InsertDate UpdateUser UpdateDate tabPersonType PK tabJobDefinition PK JobName ComponentId Description Interface Dependency ErrorHandling InsertUser InsertDate UpdateUser UpdateDate tabEnvironment PK EnvironmentId TextD TextF TextI TextE Short Image InsertUser InsertDate UpdateUser UpdateDate tabJob PK JobId FK2,I2 JobDefinitionId JobName TypeId EnvironmentId Enabled MustRun InsertUser InsertDate UpdateUser UpdateDate CategoryName CreatedDate ModifiedDate FK3,I3 FK1,I1 tabJobType PK KeyName NameD NameF NameI NameE InsertUser InsertDate UpdateUser UpdateDate JobDefinitionId FK1,I1 TypeId TypeId Name InsertUser InsertDate UpdateUser UpdateDate tabJobStep PK JobStepId FK1,I1 tabJobRun Name PackageName JobId InsertUser InsertDate UpdateUser UpdateDate tabJobStepRun PK JobRunId PK JobStepRunId FK1,I1 JobId StartTime EndTime Duration StatusId Succeeded Solved InstanceId InsertUser InsertDate UpdateUser UpdateDate FK2,I2 FK1,I1 JobStepId JobRunId StartTime EndTime Duration StatusId Succeeded Solved InsertUser InsertDate UpdateUser UpdateDate FK2,I2 FK3,I3 tabJobStepLog tabJobRunLog PK JobRunLogId FK1,I1 JobRunId SSISExecutionId InstanceId StatusId InsertUser InsertDate UpdateUser UpdateDate FK2,I2 PK JobStepLogId FK1,I1 JobStepRunId ExternalDatabase ExternalDataTable ExternalId StatusId StartTime EndTime Solved InsertUser InsertDate UpdateUser UpdateDate tabStatus PK StatusId Name InsertUser InsertDate UpdateUser UpdateDate FK2,I2 Abbildung 2: Datenbankmodell Corp_JobMonitor. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 8/40 Projektname Dokumenttitel Artifaktname 4 Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Schnittstellen 4.1 Informationen zu Datenbank-Jobs erhalten Um an Informationen zu Datenbank-Jobs zu gelangen, bedarf es einer Schnittstelle zu den entsprechenden Datenbank Servern, welche den SQL Server Agent verwendet. Im PWW-Umfeld ist das derzeit lediglich ein einziger: serverBDS. Auf einem Datenbank-Job-Server stellt die Systemdatenbank msdb die entsprechenden SQL Server Agent Systemtabellen zur Verfügung, um an die Details der Datenbank-Jobs zu gelangen. msdb.dbo.sysjobactivity9 msdb.dbo.sysjobhistory10 msdb.dbo.sysjobs11 msdb.dbo.sysjobschedules12 msdb.dbo.sysjobservers13 msdb.dbo.sysjobsteps14 msdb.dbo.sysjobstepslogs15 Die benötigten Daten werden nun von zwei verschiedenen Datenbank-Jobs für Corp_JobMonitor gesammelt. Corp_JobMonitor_Job_Basic_Import importiert die Job-Basis-Informationen (siehe Kapitel 4.2). Corp_JobMonitor_Job_Logs_Import importiert Log-Daten der Datenbank-Jobs (siehe Kapitel 4.3). 9 http://msdn.microsoft.com/en-us/library/ms190484.aspx http://msdn.microsoft.com/en-us/library/ms174997.aspx 11 http://msdn.microsoft.com/en-us/library/ms189817.aspx 12 http://msdn.microsoft.com/en-us/library/ms188924.aspx 13 http://msdn.microsoft.com/en-us/library/ms187761.aspx 14 http://msdn.microsoft.com/en-us/library/ms187387.aspx 15 http://msdn.microsoft.com/en-us/library/ms174353.aspx 10 SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 9/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.2 SSIS-Job Corp_JobMonitor_Job_Basic_Import Bevor überhaupt an einen Import von Logs gedacht werden kann, müssen zunächst die Job-Basis-Informationen importiert werden. Dazu gehören Informationen wie Job-Namen und -IDs, Job-Steps mit Namen und IDs sowie Informationen dazu, auf welchen Environments die Jobs aktiv sind. All diese Informationen können aus den beiden Systemtabellen msdb.dbo.sysjobs und msdb.dbo.sysjobsteps erhalten werden. Die Abbildung 3 zeigt diejenigen Tabellen der Datenbank Corp_JobMonitor, welche vom SSIS-Package Corp_JobMonitor_Job_Basic_Import tangiert sind. tabJobDefinition PK FK1,I1 tabEnvironment PK EnvironmentId TextD TextF TextI TextE Short Image InsertUser InsertDate UpdateUser UpdateDate JobName ComponentId Description Interface Dependency ErrorHandling InsertUser InsertDate UpdateUser UpdateDate tabJob PK JobId FK2,I2 JobDefinitionId JobName TypeId EnvironmentId Enabled MustRun InsertUser InsertDate UpdateUser UpdateDate CategoryName CreatedDate ModifiedDate FK3,I3 FK1,I1 tabJobType PK JobDefinitionId TypeId Name InsertUser InsertDate UpdateUser UpdateDate tabJobStep PK FK1,I1 JobStepId Name PackageName JobId InsertUser InsertDate UpdateUser UpdateDate Abbildung 3: Datenbank-Teilmodell mit den Tabellen, welche vom SSIS-Job Corp_JobMonitor_Job_Basic_Import tangiert sind. 4.2.1 Variablen Das SSIS-Package verwendet zwei Variablen: Die Applikations-ID sowie einen Fake-Benutzernamen, damit die durch den Job hinzugefügten Rows wieder erkannt werden können. Beide Variablen gelten für das ganze SSISPackage; dies ist auch dem Scope zu entnehmen. Name _strApplID _strImportUser Scope Corp_JobMonitor_Job_Basic_Import Corp_JobMonitor_Job_Basic_Import Data Type String String Value Corp_JobMonitor ImportJob Tabelle 3: Variablen des SSIS-Package Corp_JobMonitor_Job_Basic Import. 4.2.2 Control Flow Die Abbildung 4 zeigt den gesamten Control Flow des SSIS-Packages Corp_JobMonitor_Job_Basic_Import. Die einzelnen Tasks sind in den jeweiligen Unterkapiteln genauer beschrieben. Die Tabelle 4 enthält eine Kapitelzuordnung. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 10/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Abbildung 4: SSIS-Package Corp_JobMonitor_Job_Basic_Import. Type Execute SQL Task Data Flow Task Execute SQL Task Execute SQL Task Execute SQL Task Execute SQL Task Execute SQL Task Task DELETE tabJobImport Read Job-Data and Insert Into tabJobImport Save PackageName INSERT new INTO tabJobDefinition INSERT new INTO tabJob INSERT new INTO tabJobStep UPDATE tabJob SET Enabled, CategoryName Kapitel 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 Tabelle 4: Kapitelzuordnung Corp_JobMonitor_Job_Logs_Import. 4.2.3 Execute SQL Task: DELETE tabJobImport Der Task „DELETE tabJobImport” räumt zunächst den temporären Import der letztmaligen SSIS-PackageAusführung wieder auf, indem es die Import-Tabelle tabJobImport leert. Listing 1 zeigt den SQL-Befehl dieses Tasks. DELETE tabJobImport Listing 1: DELETE tabJobImport. 4.2.4 Data Flow Task: Read Job-Data and Insert Into tabJobImport Nun müssen die benötigten Daten von der Systemdatenbank msdb auf der SQL Server Instanz serverBDS (JobServer) geladen und in die Import-Tabelle tabJobImport der Datenbank Corp_JobMonitor geschrieben wer- SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 11/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie den. Dazu wird ein Data Flow Task verwendet, dessen Sub-Tasks in den nachfolgenden Unterkapiteln genauer beschrieben sind. Die Abbildung 5 zeigt den Ablauf dieses Data Flow Tasks. Abbildung 5: Data Flow Task: „Read Job-Data and Insert Into tabJobImport”. 4.2.4.1 OLE DB Source Task: Read Job-Data from JobServer Listing 2 zeigt das SQL-Query, mit welchem der OLE DB Source Task „Read Job-Data from JobServer“ die Daten des Job-Servers ins Memory lädt. j.name sieht in der Quell-Tabelle sysjobs zum Beispiel wie folgt aus: „Int_PL_SMW_Trans_Generate_Tours“. Die Spalte job_name übernimmt den ganzen Inhalt und konvertiert ihn in ein varchar(200) Feld, während in den Spalten strJobName sowie strEnvironment Substrings landen; hier „PL_SMW_Trans_Generate_Tours“ resp. „Int_“. Die Spalte js.command der Quell-Tabelle sysjobsteps wird – vom CAST-Befehl abgesehen – 1:1 übernommen. Diese Information wird später weiter verarbeitet (siehe Kapitel 4.2.5). SELECT js.step_uid ,j.job_id ,CONVERT(varchar(200), j.name) AS job_name ,CAST(REPLACE(REPLACE(REPLACE(CONVERT(varchar(200), j.name), 'Prod_', ''), 'Int_', ''), 'Dev_', '') AS varchar(200)) AS strJobName ,CAST(js.step_name AS varchar(200)) AS step_name ,SUBSTRING(CONVERT(varchar(50), j.name), 0, CHARINDEX('_', CONVERT(varchar(50), j.name)) + 1) AS strEnvironment ,j.date_created ,j.date_modified ,j.[enabled] ,c.category_id ,c.name AS category_name ,CAST(js.command AS varchar(4000)) AS strcommand FROM sysjobs j WITH (NOLOCK) LEFT OUTER JOIN sysjobsteps js WITH (NOLOCK) ON j.job_id = js.job_id LEFT OUTER JOIN syscategories c ON j.category_id = c.category_id WHERE SUBSTRING(j.name, 0, CHARINDEX('_', j.name) + 1) <> '' AND js.subsystem IN ( 'SSIS', 'CmdExec' ) Listing 2: Read Job-Data from JobServer. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 12/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.2.4.2 OLE DB Destination Task: INSERT INTO tabJobImport Der OLE DB Destination Task „INSERT INTO tabJobImport” macht im Prinzip nichts Anderes als ein Insert aller geladenen Daten in die Ziel-Tabelle tabJobImport der Datenbank Corp_JobMonitor. Die Ziel-Tabelle enthält nun Daten auf der Granularität-Stufe Job-Step. 4.2.5 Execute SQL Task: Save PackageName Die Funktion fctGetPackageName() extrahiert aus dem Command den Package-Namen. UPDATE tabJobImport SET strPackageName = fctGetPackageName(command) Listing 3: Save PackageName. 4.2.6 Execute SQL Task: INSERT new INTO tabJobDefinition Zunächst werden die Job-Definitionen eingefügt, wo sie noch nicht existieren. Eine Job-Definition ist die übergeordnete Instanz eines Jobs, welcher auf der Umgebung Development, Integration oder Production platziert ist. Beispiel: Den Job PL_SMW_Trans_Generate_Tours gibt es für die Umgebungen Integration und Production. Es gibt daher einen Eintrag in der Tabelle tabJobDefinition und deren zwei in der Tabelle tabJob, wie die Tabelle 5 dies gut visualisiert. Job-Definition PL_SMW_Trans_Generate_Tours Job Int_PL_SMW_Trans_Generate_Tours Prod_PL_SMW_Trans_Generate_Tours Umgebung Integration Production Tabelle 5: Beispiel Job PL_SMW_Trans_Generate_Tours auf Integration und Production. Listing 4 zeigt den SQL-Befehl dieses Tasks, um die Job-Definitionen in die Tabelle tabJobDefinition zu schreiben. INSERT INTO tabJobDefinition ( JobName ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT DISTINCT strJobName ,'ImportJob' ,GETDATE() ,'ImportJob' ,GETDATE() FROM tabJobImport WITH (NOLOCK) WHERE strJobName NOT IN ( SELECT DISTINCT JobName FROM tabJobDefinition WITH (NOLOCK) ) AND job_name_sys IN ( SELECT MAX(strEnvironment) + strJobName FROM tabJobImport WITH (NOLOCK) GROUP BY strJobName ) Listing 4: INSERT new INTO tabJobDefinition. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 13/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.2.7 Execute SQL Task: INSERT new INTO tabJob Nun folgen die konkreten Jobs. Listing 5 zeigt den SQL-Befehl dieses Tasks, um die Jobs in die Tabelle tabJob zu schreiben. INSERT INTO tabJob ( JobId ,JobDefinitionId ,JobName ,EnvironmentId ,[Enabled] ,MustRun ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT DISTINCT job_id ,jd.JobDefinitionId ,job_name_sys ,env.EnvironmentId ,[enabled] ,0 ,'ImportJob' ,GETDATE() ,'ImportJob' ,GETDATE() FROM tabJobImport ji WITH (NOLOCK) INNER JOIN tabJobDefinition jd WITH (NOLOCK) ON ji.strJobName = jd.JobName INNER JOIN tabEnvironment env WITH (NOLOCK) ON ji.strEnvironment = env.Short WHERE job_id NOT IN ( SELECT DISTINCT JobId FROM tabJob WITH (NOLOCK) ) Listing 5: INSERT new INTO tabJob. 4.2.8 Execute SQL Task: INSERT new INTO tabJobStep Schlussendlich werden noch die Job-Steps hinzugefügt. Listing 6 zeigt den SQL-Befehl dieses Tasks, um die JobSteps in die Tabelle tabJobStep zu schreiben. INSERT INTO tabJobStep ( JobStepId ,Name ,PackageName ,JobId ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT DISTINCT step_uid ,step_name ,strPackageName ,job_id ,'ImportJob' ,GETDATE() SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 14/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie ,'ImportJob' ,GETDATE() FROM tabJobImport WITH (NOLOCK) WHERE step_uid NOT IN ( SELECT DISTINCT JobStepId FROM tabJobStep WITH (NOLOCK) ) AND job_id IN ( SELECT DISTINCT JobId FROM tabJob WITH (NOLOCK) ) Listing 6: INSERT INTO tabJobStep. 4.2.9 Execute SQL Task: UPDATE tabJob SET Enabled, CategoryName Zuletzt werden noch Felder aktualisiert, welche sich womöglich in der Job-Definition des SQL Server Agents verändert haben: Enabled, CategoryName, CreatedDate, ModifiedDate. Listing 7 zeigt den SQL-Befehl dieses Tasks. UPDATE tabJob SET tabJob.[Enabled] = ji.[enabled] ,tabJob.CategoryName = ji.category_name ,tabJob.CreatedDate = ji.date_created ,tabJob.ModifiedDate = ji.date_modified FROM tabJobImport ji WITH (NOLOCK) WHERE tabJob.JobId = ji.job_id Listing 7: UPDATE tabJob SET Enabled, CategoryName. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 15/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.3 SSIS-Job Corp_JobMonitor_Job_Logs_Import Sind die Job-Basis-Informationen geladen, können die Logs hinzu genommen werden. Hier sind einmal die Logs des SQL Server Agent zu erwähnen, welche sich genau wie die Job-Basis-Informationen in der SystemDatenbank msdb in der System-Tabelle msdb.dbo.sysjobhistory befinden. Derzeit liegen die Datenbank-Jobs für alle Environments auf der SQL Server Instanz serverBDS (siehe Tabelle 6). Entwicklung (DEV) serverBDS Integration (INT) serverBDS Produktion (PROD) serverBDS Tabelle 6: SQL Server Instanzen für Datenbank-Jobs (anonymisiert). Weiter loggen die SSIS-Packages selber noch Fehler, Warnungen und Informationen. Diese Logs landen seit jeher in der Datenbank Corp_SysLog je Environment. Dies bedeutet, diese Datenbank gibt es auf Development, Integration sowie Production jeweils auf der SQL Server Instanz serverdbZzz01 (siehe Tabelle 7). Entwicklung (DEV) serverdbdev01 Integration (INT) serverdbint01 Produktion (PROD) serverdbprod01 Tabelle 7: SQL Server Instanzen für System-Logs (anonymisiert). Das SSIS-Package Corp_JobMonitor_Job_Logs_Import ist daher viergeteilt, um alle Daten-Quellen abdecken zu können und das Package einigermassen übersichtlich zu halten. Die Abbildung 6 zeigt diejenigen Tabellen der Datenbank Corp_JobMonitor, welche vom SSIS-Package Corp_JobMonitor_Job_Logs_Import tangiert sind. Die Tabelle tabStatus wird zwar nicht verändert, doch zeigen alle anderen betroffenen Tabellen via Foreign-Key auf sie. tabJobRun tabJobStepRun PK JobRunId PK JobStepRunId FK1,I1 JobId StartTime EndTime Duration StatusId Succeeded Solved InstanceId InsertUser InsertDate UpdateUser UpdateDate FK2,I2 FK1,I1 JobStepId JobRunId StartTime EndTime Duration StatusId Succeeded Solved InsertUser InsertDate UpdateUser UpdateDate FK2,I2 FK3,I3 tabJobStepLog tabJobRunLog PK JobRunLogId FK1,I1 JobRunId SSISExecutionId InstanceId StatusId InsertUser InsertDate UpdateUser UpdateDate FK2,I2 PK JobStepLogId FK1,I1 JobStepRunId ExternalDatabase ExternalDataTable ExternalId StatusId StartTime EndTime Solved InsertUser InsertDate UpdateUser UpdateDate tabStatus PK StatusId Name InsertUser InsertDate UpdateUser UpdateDate FK2,I2 Abbildung 6: Datenbank-Teilmodell mit den Tabellen, welche vom SSIS-Job Corp_JobMonitor_Job_Logs_Import tangiert sind. 4.3.1 Variablen Das SSIS-Package verwendet drei Variablen: Die Applikations-ID sowie einen Fake-Benutzernamen, damit die durch den Job hinzugefügten Rows wieder erkannt werden können. Des weiteren eine Variable, welche erst im SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 16/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Verlauf des Packages befüllt werden (siehe Kapitel 4.3.3). Alle drei Variablen gelten für das ganze SSIS-Package; dies ist auch dem Scope zu entnehmen. Name _strApplID _strImportUser dtmLastRunEnd Scope Corp_JobMonitor_Job_Logs_Import Corp_JobMonitor_Job_Logs_Import Corp_JobMonitor_Job_Logs_Import Data Type String String DateTime Value Corp_JobMonitor ImportJob - Tabelle 8: Variablen des SSIS-Package Corp_JobMonitor_Job_Logs_Import. 4.3.2 Control Flow Die Abbildung 7 zeigt den gesamten – zusammen geklappten(!) – Control Flow des SSIS-Packages Corp_JobMonitor_Job_Logs_Import. Die einzelnen Tasks sind in den jeweiligen Unterkapiteln genauer beschrieben. Die Tabelle 9 enthält eine Kapitelzuordnung. Abbildung 7: SSIS-Package Corp_JobMonitor_Job_Logs_Import (eingeklappt!). Type Execute SQL Task Sequence Container Sequence Container Sequence Container Sequence Container Execute SQL Task Execute SQL Task Task SELECT MAX(dtmEndTime) FROM tabJobRun Import data from msdb Import data from Corp_SysLog (PROD) Import data from Corp_SysLog (INT) Import data from Corp_SysLog (DEV) Update Status in tabJobStepRun Update Status in tabJobRun Kapitel 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9 Tabelle 9: Kapitelzuordnung Corp_JobMonitor_Job_Logs_Import. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 17/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.3.3 Execute SQL Task: Zuletzt geladene Daten bestimmen Zunächst wird in der eigenen Datenbank Corp_JobMonitor nach dem zuletzt geladenen Job-Run gesucht. Listing 8 zeigt das SQL-Query dieses Tasks. SELECT MAX(EndTime) AS dtmLastRunEnd FROM tabJobRun WITH (NOLOCK) Listing 8: SELECT MAX(dtmEndTime) FROM tabJobRun. Das Resultat wird in die Variable User::dtmLastRunEnd gespeichert. 4.3.4 Sequence Container: Import data from msdb Nun geht es an das Importieren der SQL Server Agent Logs, welche in unserem Fall auf der SQL Server Instanz serverBDS liegen. Die Systemdatenbank msdb ist nun also die erste von vier Log-Datenquellen. Die Abbildung 8 zeigt den gesamten Sequence Container: „Import data from msdb“. Die einzelnen Tasks sind in den jeweiligen Unterkapiteln genauer beschrieben. Die Tabelle 10 enthält eine Kapitelzuordnung. Abbildung 8: Sequence Container: „Import data from msdb”. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 18/40 Projektname Dokumenttitel Artifaktname Type Execute SQL Task Data Flow Task Execute SQL Task Execute SQL Task Execute SQL Task Execute SQL Task Execute SQL Task Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Task TRUNCATE TABLE tabJobAgentImport Get msdb-Data Update Status in tabJobAgentImport INSERT INTO tabJobRun INSERT INTO tabJobRunLog INSERT INTO tabJobStepRun INSERT INTO tabJobStepLog Kapitel 4.3.4.1 4.3.4.2 4.3.4.3 4.3.4.4 4.3.4.5 4.3.4.6 4.3.4.7 Tabelle 10: Kapitelzuordnung Sequence Container: „Import data from msdb“. 4.3.4.1 Execute SQL Task: TRUNCATE TABLE tabJobAgentImport Der Task „TRUNCATE TABLE tabJobAgentImport” räumt zunächst den temporären Import der letztmaligen SSISPackage-Ausführung wieder auf, indem es die Import-Tabelle mit den TRUNCATE Befehl leert. Listing 9 zeigt den SQL-Befehl dieses Tasks. TRUNCATE TABLE tabJobAgentImport Listing 9: TRUNCATE TABLE tabJobAgentImport. 4.3.4.2 Data Flow Task: Get msdb-Data Für das Laden der SQL Server Agent Log-Daten wird wiederum ein Data Flow Task verwendet. Dieses Mal müssen die geladenen Daten allerdings mit bereits Vorhandenem verknüpft werden. Die Sub-Tasks sind in den nachfolgenden Unterkapiteln genauer beschrieben. Die Abbildung 9 zeigt den Ablauf dieses Data Flow Tasks. Abbildung 9: Data Flow Task: „Get msdb-Data”. 4.3.4.2.1 OLE DB Source: Read JobAgent Logs Mit einer OLE DB Source werden die Daten aus der Systemtabelle sysjobhistory geladen. Dem JOIN mit der Systemtabelle sysjobhistory liegt die Tatsache zugrunde, dass die Logs des SQL Server Agent auf Granularität-Stufe Job-Step vorliegen. Listing 10 zeigt die SQL-Abfrage dieses Tasks, eine detaillierte Beschreibung folgt im Anschluss. SELECT CASE WHEN jh.step_id = 0 THEN jh.instance_id SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 19/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie ELSE ( SELECT MIN(instance_id) FROM sysjobhistory AS c WITH (NOLOCK) WHERE c.job_id = jh.job_id AND step_id = 0 AND c.instance_id > jh.instance_id ) END AS instance_base_id ,jh.instance_id ,jh.job_id ,js.step_uid ,jh.step_id ,jh.sql_message_id ,jh.message ,jh.run_status ,CAST(LTRIM(STR(jh.run_date))+' '+STUFF(STUFF(right('000000'+LTRIM(STR(jh.run_time)), 6), 3, 0, ':'), 6, 0, ':') AS datetime) AS 'run_start' ,DATEADD(ss ,(jh.run_duration / 10000) * 60 * 60 + ((jh.run_duration % 10000) / 100) * 60 + (jh.run_duration % 100) ,CAST(LTRIM(STR(jh.run_date))+' '+STUFF(STUFF(right('000000'+LTRIM(STR(jh.run_time)), 6), 3, 0, ':'), 6, 0, ':') AS datetime)) AS 'run_end' ,(jh.run_duration / 10000) * 60 * 60 + ((jh.run_duration % 10000) / 100) * 60 + (jh.run_duration % 100) AS 'run_duration' ,jh.server FROM sysjobhistory AS jh WITH (NOLOCK) LEFT OUTER JOIN sysjobsteps AS js WITH (NOLOCK) ON jh.job_id = js.job_id AND jh.step_id = js.step_id WHERE DATEADD(ss ,(jh.run_duration / 10000) * 60 * 60 + ((jh.run_duration % 10000) / 100) * 60 + (jh.run_duration % 100) ,CAST(LTRIM(STR(jh.run_date))+' '+STUFF(STUFF(right('000000'+LTRIM(STR(jh.run_time)), 6), 3, 0, ':'), 6, 0, ':') AS datetime)) > ? Listing 10: Read JobAgent Logs. Wichtig zu wissen: Die Systemtabelle sysjobhistory enthält grundsätzlich Informationen des SQL Server Agent bezüglich Start und Ende einzelner Job-Runs resp. dessen Job-Step-Runs. Das Datenmodell von Corp_JobMonitor sieht einerseits vor, dass Job-Runs und Job-Step-Runs unterschieden werden. Andererseits unterscheidet es den eigentlichen Run von dessen Logs. Hintergrund davon ist, dass ein Job mehrere Job-Steps und ein Run wiederum mehrere Logs haben kann. Ziel dieser Abfrage ist, nebst all den Logs auch zu wissen, welche Logs zum selben Job-Run gehören. Die Systemtabelle sysjobhistory enthält als gruppierende Information lediglich die Job-ID (GUID). Damit kann ein Job identifiziert werden, nicht aber ein einzelner Job-Run. Problematisch ist dies hauptsächlich bei Jobs, die in dichter Abfolge aufeinander ablaufen. Mit dem CASE-Konstrukt, welches zu Beginn der Abfrage steht, werden die Logs zu einem Job-Run gebündelt. Es kann dabei glücklicherweise davon ausgegangen werden, dass das SQL Server Agent Log für Step-ID = 0 (Zusammenfassung Job-Run) stets am Schluss steht. Die nahezu kryptisch anmutenden Abfrage-Elemente am Schluss führen dazu, dass die geloggten Start und Endzeiten in ein mittels SQL weiter bearbeitbaren Format gespeichert werden. In der Systemtabelle sysjobhistory steht beispielsweise die Zeit 150309 für 15:03:09 Uhr oder aber 1728 für 00:17:28 Uhr. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 20/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.3.4.2.2 OLE DB Source: Read Job-Ids Damit schlussendlich nur zu den bekannten Jobs Logs in der Datenbank Corp_JobMonitor landen, werden mit dieser zusätzlichen OLE DB Source die Job-IDs auf den Job-Basis-Informationen geladen und später mit den Logs zusammengeführt. Listing 11 zeigt die SQL-Abfrage dieses Tasks. SELECT JobId FROM tabJob WITH (NOLOCK) Listing 11: Read Job-Ids. 4.3.4.2.3 Sort Transformation & Merge Join Transformation Die beiden OLD DB Sourcen werden anschliessend mittels Merge Join Transformation miteinander verknüpft. Dazu ist es zwingend notwendig, dass die Sourcen sortiert werden. Dies geschieht beidseitig mit einer Sort Transformation. Es wird beidseits nach der Job-ID sortiert. 4.3.4.2.4 OLE DB Destination: INSERT INTO tabJobAgentLog Der OLE DB Destination Task „INSERT INTO tabJobAgentLog” macht wiederum nichts Anderes als ein Insert aller Daten in die Ziel-Tabelle tabJobAgentImport der Datenbank Corp_JobMonitor. Die Ziel-Tabelle enthält nun Daten auf der Granularität-Stufe Job-Step-Log sowie Job-Run-Log. 4.3.4.3 Execute SQL Task: Update Status in tabJobAgentImport Nun findet eine Status-Interpretation der ausschliesslich textuell vorliegenden Logs statt. Sowohl für SQL Server Agent Logs wie auch für SSIS Package Logs wird in Corp_JobMonitor eine Status-Mapping-Tabelle geführt. Die Tabelle 11 stellt den aktuellen Tabellen-Inhalt dar. Sollte mit der Status-Interpretation etwas nicht stimmen, kann die Korrektur zur Laufzeit in dieser Tabelle von einem Datenbank-Administrator selbständig vorgenommen werden. Alle anschliessenden Status-Interpretationen werden dann korrigiert stattfinden. StatusText DTSER_FAILURE DTSER_SUCCESS The job failed. The job succeeded. The job was stopped The step failed. The step succeeded. The step was cancelled StatusId 2 0 2 0 2 2 0 2 Bedeutung Fehler Info Fehler Info Fehler Fehler Info Fehler Tabelle 11: Inhalt Status-Mapping-Tabelle tabJobAgentStatusMapping. Listing 12 zeigt die SQL-Abfrage dieses Tasks. Sie nimmt die in Listing 13 gezeigte View qryJobAgentStatus zu Hilfe. UPDATE SET FROM WHERE tabJobAgentImport tabJobAgentImport.StatusId = jas.StatusId dbo.qryJobAgentStatus jas tabJobAgentImport.instance_id = jas.instance_id Listing 12: Update Status in tabJobAgentImport. SELECT qInner.instance_id ,MAX(qInner.StatusId) AS StatusId FROM ( SELECT jai.instance_base_id ,jai.instance_id ,jai.job_id ,jai.step_uid SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 21/40 Projektname Dokumenttitel Artifaktname FROM Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie ,jai.step_id ,jai.sql_message_id ,jai.[message] ,jai.run_status ,jai.run_start ,jai.run_end ,jai.run_duration ,jai.[server] ,jasm.StatusId tabJobAgentImport jai WITH (NOLOCK) INNER JOIN tabJobAgentStatusMapping jasm WITH (NOLOCK) ON jai.[message] LIKE '%' + jasm.StatusText + '%' ) qInner GROUP BY qInner.instance_id Listing 13: View qryJobAgentStatus. 4.3.4.4 Execute SQL Task: INSERT INTO tabJobRun Der Task „INSERT INTO tabJobRun” fügt nun aufgrund eines Teils der geladenen Logs Job-Run-Einträge in die Tabelle tabJobRun hinzu. Lediglich Log-Einträge mit step_id = 0 aus dem SQL Server Agent Log gehören zu keinem Job-Step und somit zum Job selbst. Listing 14 zeigt den SQL-Befehl zum INSERT dieser Daten. INSERT INTO Corp_JobMonitor.dbo.tabJobRun ( JobId ,StartTime ,EndTime ,Duration ,Succeeded ,Solved ,InstanceId ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT job_id ,run_start ,run_end ,run_duration ,1 ,0 ,instance_id ,'ImportJob' ,GETDATE() ,'ImportJob' ,GETDATE() FROM tabJobAgentImport WITH (NOLOCK) WHERE step_id = 0 Listing 14: INSERT INTO tabJobRun. 4.3.4.5 Execute SQL Task: INSERT INTO tabJobRunLog Sind die eigentlichen Job-Runs hinzugefügt worden, übernimmt der Task „INSERT INTO tabJobRunLog“ die Aufgabe, deren Logs in die Tabelle tabJobRunLog einzufügen. Listing 15 zeigt den SQL-Befehl zum INSERT dieser Daten. INSERT INTO tabJobRunLog SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 22/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie ( JobRunId ,SSISExecutionId ,InstanceId ,StatusId ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT jr.JobRunId ,null ,jai.instance_id ,jai.StatusId ,'ImportJob' ,GETDATE() ,'ImportJob' ,GETDATE() FROM tabJobAgentImport jai WITH (NOLOCK) INNER JOIN tabJobRun jr WITH (NOLOCK) ON jai.instance_id = jr.InstanceId Listing 15: INSERT INTO tabJobRunLog. 4.3.4.6 Execute SQL Task: INSERT INTO tabJobStepRun Der Task „INSERT INTO tabJobStepRun“ fügt nun die Job-Step-Runs in die Tabelle tabJobStepRun hinzu. Infrage kommen hier alle Logs mit step_id <> 0 (ungleich). Listing 16 zeigt den SQL-Befehl zum INSERT dieser Daten. INSERT INTO tabJobStepRun ( JobStepId ,JobRunId ,StartTime ,EndTime ,Duration ,Succeeded ,Solved ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT jai.step_uid ,jr.JobRunId ,jai.run_start ,jai.run_end ,jai.run_duration ,1 ,0 ,'ImportJob' ,GETDATE() ,'ImportJob' ,GETDATE() FROM tabJobAgentImport jai WITH (NOLOCK) INNER JOIN tabJobRun jr WITH (NOLOCK) ON jai.instance_base_id = jr.InstanceId AND jai.step_id <> 0 Listing 16: INSERT INTO tabJobStepRun. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 23/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.3.4.7 Execute SQL Task: INSERT INTO tabJopStepLog Sind die eigentlichen Job-Step-Runs hinzugefügt worden, übernimmt der Task „INSERT INTO tabJopStepLog“ abschliessend die Aufgabe, deren Logs in die Tabelle tabJopStepLog einzufügen. Listing 17 zeigt den SQLBefehl zum INSERT dieser Daten. Die SQL Server Agent Logs sind danach vollständig in die Datenstruktur der Datenbank Corp_JobMonitor importiert. Das SSIS-Package fährt mit dem ersten der drei SSIS Package Log Imports aus den Datenbanken Corp_SysLog weiter. INSERT INTO Corp_JobMonitor.dbo.tabJobStepLog ( JobStepRunId ,ExternalDatabase ,ExternalDataTable ,ExternalId ,StatusId ,StartTime ,EndTime ,Solved ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT jsr.JobStepRunId ,'msdb' ,'sysjobhistory' ,jai.instance_id ,jai.StatusId ,jai.run_start ,jai.run_end ,0 ,'ImportJob' ,GETDATE() ,'ImportJob' ,GETDATE() FROM tabJobAgentImport jai WITH (NOLOCK) INNER JOIN tabJobRun jr WITH (NOLOCK) ON jai.instance_base_id = jr.InstanceId AND jai.step_id <> 0 INNER JOIN tabJobStepRun jsr WITH (NOLOCK) ON jr.JobRunId = jsr.JobRunId AND jai.step_uid = jsr.JobStepId Listing 17: INSERT INTO tabJopStepLog. 4.3.5 Sequence Container: Import data from Corp_SysLog (PROD) Als nächster Schritt folgt der Import der SSIS Package Logs aus den drei Corp_SysLog Datenbanken auf Development, Integration und Production. Dieses Kapitel beschreibt den produktiven Ablauf stellvertretend für alle drei Environments. Die Abbildung 10 zeigt den gesamten Sequence Container „Import data from Corp_SysLog (PROD)“. Die einzelnen Tasks sind in den jeweiligen Unterkapiteln genauer beschrieben. Die Tabelle 12 enthält eine Kapitelzuordnung. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 24/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Abbildung 10: Sequence Container: Import data from Corp_SysLog (PROD). Type Execute SQL Task Data Flow Task Execute SQL Task Execute SQL Task Task TRUNCATE TABLE tabSysLogImport Get Corp_SysLog-Data (PROD) Update Status in tabSysLogImport INSERT INTO tabJobStepLog Kapitel 4.3.5.1 4.3.5.2 4.3.5.3 4.3.5.4 Tabelle 12: Kapitelzuordnung Sequence Container: Import data from Corp_SysLog (PROD). 4.3.5.1 Execute SQL Task: TRUNCATE TABLE tabSysLogImport Der Task „TRUNCATE TABLE tabSysLogImport” räumt zunächst den temporären Import der letztmaligen SSISPackage-Ausführung wieder auf, indem es die Import-Tabelle mit den TRUNCATE Befehl leert. Listing 18 zeigt den SQL-Befehl dieses Tasks. TRUNCATE TABLE tabSysLogImport Listing 18: TRUNCATE TABLE tabSysLogImport. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 25/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.3.5.2 Data Flow Task: Get Corp_SysLog-Data (PROD) Für das Laden der SSIS Package Logs wird erneut ein Data Flow Task verwendet. Dieses Mal werden die gelesenen Daten direkt in die temporäre Zieltabelle geschrieben. Die Abbildung 11 zeigt den Ablauf dieses Data Flow Tasks. Abbildung 11: Data Flow Task: Get Corp_SysLog-Data (PROD). 4.3.5.2.1 OLE DB Source Task: Read from PROD SysLog Listing 19 zeigt die SQL-Abfrage des OLE DB Source Tasks. Selektiert werden die Daten aus der Datenbank Corp_SysLog. Abhängig vom Environment befindet sich diese Tabelle auf der SQL Server Instanz serverdbdev01, serverdbint01 oder serverdbprod01. Die View qryJobMonitorLog in der Datenbank Corp_SysLog hilft dabei, alle benötigten Daten aus der Datenbank zentral zu retournieren. Dabei vereint sie mit dem UNION Befehl Daten aus den Tabellen sysssislog sowie sysdtslog90. Sie definiert auch eine fiktive ID, welche in die Datenbank Corp_JobMonitor übernommen werden und bei Benutzerabfragen später wieder gegen diese View verwendet werden kann. Listing 20 zeigt die SQL-Abfrage dieser View. SELECT FROM WHERE ORDER BY * qryJobMonitorLog dtmStartTime > DATEADD(hh, -12, GETDATE()) dtmStartTime Listing 19: Read from PROD SysLog. SELECT 'sysssislog' + CAST(id AS varchar) AS strId ,'sysssislog' AS strDataTable ,id AS lngId ,[event] AS strEvent ,computer AS strComputer ,operator AS strOperator ,[source] AS strSource ,sourceid AS uidSourceId ,executionid AS uidExecutionId ,starttime AS dtmStartTime ,endtime AS dtmEndTime ,datacode AS lngDataCode ,databytes AS imgDataBytes ,[message] AS strMessage ,errorcode AS lngErrorCode ,errorcolumn AS lngErrorColumn ,bitErledigt FROM sysssislog WITH (NOLOCK) UNION ALL SELECT 'sysdtslog90' + CAST(id AS varchar) AS strId ,'sysdtslog90' AS strDataTable ,id AS lngId ,[event] AS strEvent SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 26/40 Projektname Dokumenttitel Artifaktname FROM Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie ,computer AS strComputer ,operator AS strOperator ,[source] AS strSource ,sourceid AS uidSourceId ,executionid AS uidExecutionId ,starttime AS dtmStartTime ,endtime AS dtmEndTime ,datacode AS lngDataCode ,databytes AS imgDataBytes ,[message] AS strMessage ,errorcode AS lngErrorCode ,errorcolumn AS lngErrorColumn ,bitErledigt sysdtslog90 WITH (NOLOCK) Listing 20: View qryJobMonitorLog. 4.3.5.2.2 OLE DB Destination Task: INSERT INTO tabSysLogImport Der OLE DB Destination Task „INSERT INTO tabSysLogImport” macht wiederum nichts Anderes als ein Insert aller Daten in die Ziel-Tabelle tabSysLogImport der Datenbank Corp_JobMonitor. Die Ziel-Tabelle enthält nun Daten auf der Granularität-Stufe Job-Run-Log. 4.3.5.3 Execute SQL Task: Update Status in tabSysLogImport Nun findet wiederum eine Status-Interpretation der ausschliesslich textuell vorliegenden Logs statt. Wie für die SQL Server Agent Logs wird auch für die SSIS Package Logs eine Status-Mapping-Tabelle geführt. Die Tabelle 13 stellt den aktuellen Tabellen-Inhalt dar. Sollte mit der Status-Interpretation etwas nicht stimmen, kann die Korrektur zur Laufzeit in dieser Tabelle von einem Datenbank-Administrator selbständig vorgenommen werden. Alle anschliessenden Status-Interpretationen werden dann korrigiert stattfinden. StatusText CustomErrorRow CustomInformation OnError OnTaskFailed OnWarning PackageEnd PackageStart StatusId 2 0 2 2 1 0 0 Bedeutung Fehler Info Fehler Fehler Warnung Info Info Tabelle 13: Inhalt Status-Mapping-Tabelle tabSysLogStatusMapping, Listing 21 zeigt die SQL-Abfrage dieses Tasks. UPDATE SET FROM WHERE tabSysLogImport tabSysLogImport.StatusId = slsm.StatusId tabSysLogStatusMapping slsm tabSysLogImport.strEvent LIKE '%' + slsm.StatusText + '%' Listing 21: Update Status in tabSysLogImport. 4.3.5.4 Execute SQL Task: INSERT INTO tabJobStepLog Nachdem die Status gesetzt sind, fügt der Task „INSERT INTO tabJobStepLog“ die SSIS Package Logs direkt in die Tabelle tabJobStepLog hinzu. Listing 22 zeigt den SQL-Befehl zum INSERT dieser Daten. INSERT INTO Corp_JobMonitor.dbo.tabJobStepLog ( JobStepRunId ,ExternalDatabase SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 27/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie ,ExternalDataTable ,ExternalId ,StatusId ,StartTime ,EndTime ,Solved ,InsertUser ,InsertDate ,UpdateUser ,UpdateDate ) SELECT jsr.JobStepRunId ,'Corp_SysLog' ,sli.strDataTable ,sli.lngId ,sli.StatusId ,sli.dtmStartTime ,sli.dtmEndTime ,0 ,'ImportJob' ,GETDATE() ,'ImportJob' ,GETDATE() FROM tabJobAgentImport jai WITH (NOLOCK) INNER JOIN tabJobRun jr WITH (NOLOCK) ON jai.instance_base_id = jr.InstanceId AND jai.step_id = 0 INNER JOIN tabJob j WITH (NOLOCK) ON j.EnvironmentId = 3 AND jr.JobId = j.JobId INNER JOIN tabJobStepRun jsr WITH (NOLOCK) ON jr.JobRunId = jsr.JobRunId INNER JOIN tabJobStep js WITH (NOLOCK) ON jsr.JobStepId = js.JobStepId INNER JOIN qrySysLogImport sli ON sli.dtmStepStartTime BETWEEN jsr.StartTime AND jsr.EndTime AND sli.dtmStepEndTime BETWEEN jsr.StartTime AND jsr.EndTime AND sli.strSource = js.PackageName Listing 22: INSERT INTO tabJobStepLog. Der Vollständigkeit halber zeigt Listing 23 hier noch die SQL-Abfrage der View qrySysLogImport. SELECT sli.strDataTable ,sli.lngId ,sli.strEvent ,sli.strComputer ,sli.strOperator ,sli.strSource ,sli.uidSourceId ,sli.uidExecutionId ,sli.dtmStartTime ,sli.dtmEndTime ,sli.lngDataCode ,sli.imgDataBytes ,sli.strMessage ,sli.lngErrorCode ,sli.lngErrorColumn ,sli.bitErledigt ,sli.StatusId ,q.dtmStepStartTime ,q.dtmStepEndTime FROM dbo.tabSysLogImport AS sli WITH (NOLOCK) INNER JOIN SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 28/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie ( SELECT uidExecutionId ,MIN(dtmStartTime) AS dtmStepStartTime ,MAX(dtmEndTime) AS dtmStepEndTime FROM dbo.tabSysLogImport WITH (NOLOCK) WHERE strEvent IN ( 'PackageStart', 'PackageEnd' ) GROUP BY uidExecutionId ) AS q ON sli.uidExecutionId = q.uidExecutionId Listing 23: View qrySysLogImport. 4.3.6 Sequence Container: Import data from Corp_SysLog (INT) Der Import der SSIS Package Logs aus dem Integration Environment funktioniert analog demjenigen für die Production. Die Log-Daten werden entsprechend von der Integration-Datenbank Corp_SysLog geladen und innerhalb der Datenstruktur von Corp_JobMonitor den INT-Jobs zugewiesen. Die Abbildung 12 zeigt den gesamten Sequence Container „Import data from Corp_SysLog (INT)“. Die Beschreibung der einzelnen Tasks kann den vorangegangenen Kapiteln entnommen werden. Abbildung 12: Sequence Container: Import data from Corp_SysLog (INT). SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 29/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.3.7 Sequence Container: Import data from Corp_SysLog (DEV) Der Import der SSIS Package Logs aus dem Development Environment funktioniert analog demjenigen für die Production. Die Log-Daten werden entsprechend von der Development-Datenbank Corp_SysLog geladen und innerhalb der Datenstruktur von Corp_JobMonitor den DEV-Jobs zugewiesen. Die Abbildung 13 zeigt den gesamten Sequence Container „Import data from Corp_SysLog (DEV)“. Die Beschreibung der einzelnen Tasks kann den vorangegangenen Kapiteln entnommen werden. Abbildung 13: Sequence Container: Import data from Corp_SysLog (DEV). 4.3.8 Execute SQL Task: Update Status in tabJobStepRun Momentan befinden sich Status lediglich auf Stufe Job-Run-Log sowie Job-Step-Run-Log in der Datenbank Corp_JobMonitor. In der Webapplikation wird der Status allerdings ebenfalls auf Stufe Job-Run benötigt. Damit sich die Webapplikation diesen Status nicht zusammen selektieren muss, wird in zwei Schritten der Status nach oben in der Datenstruktur propagiert. Der Execute SQL Task „Update Status in tabJobStepRun” nimmt die Status der einzelnen Job-Step-Run-Logs und propagiert ihn hinauf zum Job-Step-Run. Listing 24 zeigt den entsprechenden SQL-Befehl dieses Tasks. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 30/40 Projektname Dokumenttitel Artifaktname UPDATE SET FROM WHERE Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie tabJobStepRun StatusId = q.StatusId qryJobStepRunStatusGrouped q tabJobStepRun.JobStepRunId = q.JobStepRunId Listing 24: Update Status in tabJobStepRun. Der Vollständigkeit halber zeigt Listing 25 hier noch die SQL-Abfrage der View qryJobStepRunStatusGrouped. SELECT FROM jsl.JobStepRunId, MAX(jsl.StatusId) AS StatusId tabJobAgentImport AS jai WITH (NOLOCK) INNER JOIN tabJobRun AS jr WITH (NOLOCK) ON jai.instance_id = jr.InstanceId INNER JOIN tabJobStepRun AS jsr WITH (NOLOCK) ON jr.JobRunId = jsr.JobRunId INNER JOIN tabJobStepLog AS jsl WITH (NOLOCK) ON jsr.JobStepRunId = jsl.JobStepRunId GROUP BY jsl.JobStepRunId Listing 25: View qryJobStepRunStatusGrouped. 4.3.9 Execute SQL Task: Update Status in tabJobRun Der Execute SQL Task „Update Status in tabJobRun” nimmt nun diesen propagierten Job-Step-Run Status und verbindet ihn mit den Job-Run-Log Status. Daraus ergibt sich der Job-Run Status, welcher in die Tabelle tabJobRun propagiert wird. Listing 26 zeigt den entsprechenden SQL-Befehl dieses Tasks. UPDATE SET FROM WHERE tabJobRun StatusId = q.StatusId qryJobRunStatusGrouped q tabJobRun.JobRunId = q.JobRunId Listing 26: Update Status in tabJobRun. Der Vollständigkeit halber zeigt Listing 27 hier noch die SQL-Abfrage der View qryJobRunStatusGrouped. SELECT FROM JobRunId, MAX(StatusId) AS StatusId ( SELECT jrl.JobRunId, jrl.StatusId FROM tabJobAgentImport AS jai WITH (NOLOCK) tabJobRun AS jr WITH (NOLOCK) ON jai.instance_id = jr.InstanceId tabJobRunLog AS jrl WITH (NOLOCK) ON jr.JobRunId = jrl.JobRunId UNION ALL SELECT jsr.JobRunId, jsr.StatusId FROM tabJobAgentImport AS jai WITH (NOLOCK) tabJobRun AS jr WITH (NOLOCK) ON jai.instance_id = jr.InstanceId tabJobStepRun AS jsr WITH (NOLOCK) ON jr.JobRunId = jsr.JobRunId ) AS qInner GROUP BY JobRunId INNER JOIN INNER JOIN INNER JOIN INNER JOIN Listing 27: View qryJobRunStatusGrouped. 4.4 SSIS-Job Corp_JobMonitor_CleanUp Der dritte SSIS-Job von Corp_JobMonitor ist der Clean-Up-Job. Er löscht Job-Run-Daten weg, die nicht mehr benötigt werden. Dazu entfernt er Einträge aus den Tabellen tabJobStepLog, tabJobStepRun, tabJobRunLog sowie tabJobRunLog. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 31/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.4.1 Variablen Das SSIS-Package verwendet zwei Variablen: Die Applikations-ID sowie eine numerische Variable, welche definiert, wie viele Tage die JobMonitor-Daten behalten werden sollen. Als Default-Wert wird von 31 Tagen ausgegangen. Beide Variablen gelten für das ganze SSIS-Package; dies ist auch dem Scope zu entnehmen. Name _strApplID lngKeepForDays Scope Corp_JobMonitor_CleanUp Corp_JobMonitor_CleanUp Data Type String Int32 Value Corp_JobMonitor 31 Tabelle 14: Variablen des SSIS-Package Corp_JobMonitor_CleanUp. 4.4.2 Control Flow Die Abbildung 14 zeigt den gesamten Control Flow des SSIS-Packages Corp_JobMonitor_CleanUp. Die einzelnen Tasks sind in den jeweiligen Unterkapiteln genauer beschrieben. Abbildung 14: SSIS-Package Corp_JobMonitor_CleanUp. 4.4.3 Execute SQL Task: DELETE tabJobStepLog Der Task „DELETE tabJobStepLog” löscht zunächst die Einträge aus der Tabelle tabJobStepLog. Listing 28 zeigt den SQL-Befehl dieses Tasks. DELETE tabJobStepLog FROM tabJobStepRun jsr WITH (NOLOCK) INNER JOIN tabJobRun jr WITH (NOLOCK) ON jsr.JobRunId = jr.JobRunId WHERE jsr.JobStepRunId = tabJobStepLog.JobStepRunId and jr.StartTime < GETDATE() - ? Listing 28: DELETE tabJobStepLog. 4.4.4 Execute SQL Task: DELETE tabJobStepRun Der Task „DELETE tabJobStepRun” löscht die Einträge aus der Tabelle tabJobStepRun. Listing 29 zeigt den SQL-Befehl dieses Tasks. DELETE tabJobStepRun FROM tabJobRun jr WITH (NOLOCK) WHERE tabJobStepRun.JobRunId = jr.JobRunId and jr.StartTime < GETDATE() - ? Listing 29: DELETE tabJobStepRun. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 32/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 4.4.5 Execute SQL Task: DELETE tabJobRunLog Der Task „DELETE tabJobRunLog” löscht die Einträge aus der Tabelle tabJobRunLog. Listing 30 zeigt den SQLBefehl dieses Tasks. DELETE tabJobRunLog FROM tabJobRun jr WITH (NOLOCK) WHERE tabJobRunLog.JobRunId = jr.JobRunId and jr.StartTime < GETDATE() - ? Listing 30: DELETE tabJobRunLog. 4.4.6 Execute SQL Task: DELETE tabJobRunLog Der Task „DELETE tabJobRunLog” löscht die Einträge aus der Tabelle tabJobRunLog. Listing 31 zeigt den SQLBefehl dieses Tasks. DELETE tabJobRun WHERE StartTime < GETDATE() - ? Listing 31: DELETE tabJobRunLog. 4.5 ComponentService Corp_JobMonitor benötigt Informationen bezüglich Komponenten von Corp_PadMan. Diese werden von Corp_PadMan mit dem WCF-Service ComponentService zur Verfügung gestellt. Der Webservice wird von Corp_JobMonitor täglich in der Nacht aufgerufen, damit die Komponenten aktualisiert werden können. Vom Webservice werden sämtliche Komponenten sowie die verantwortlichen Personen erhalten. Diese werden in die in Abbildung 15 dargestellte Datenbank-Struktur eingefügt. tabComponentPersonMapping tabComponent PK ComponentId InsertUser InsertDate UpdateUser UpdateDate PK MappingId FK1,I1 FK2,I2 FK3,I3 ComponentId PersonId TypeId InsertUser InsertDate UpdateUser UpdateDate tabPerson PK PersonId UserId InsertUser InsertDate UpdateUser UpdateDate tabPersonType PK TypeId KeyName NameD NameF NameI NameE InsertUser InsertDate UpdateUser UpdateDate Abbildung 15: Datenbank-Teilmodell mit den Tabellen, welche von der Webservice-Interpretation tangiert sind. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 33/40 Projektname Dokumenttitel Artifaktname 5 Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Beschreibung der Elemente 5.1 Ansicht JobList Die Ansicht JobList ist der Einstiegspunkt in die Webapplikation Corp_JobMonitor. Sie zeige eine Liste von JobDefinitionen mit deren Namen, Komponenten, Status (Development, Integration und Production) sowie allfälliger Fehlermassnahmen. Die Ansicht JobList verfügt über mehrere Filtermöglichkeiten. Gefiltert werden kann nach: Job Name Komponente Fehlerhaften Job-Runs sowie Job-Runs mit Warnungen Nicht gefixte Job-Runs Nicht zugeteilten Job-Definitionen (d.h., Job-Definitionen ohne Komponente) Inaktiven Jobs Obsolete Jobs All diese Filter werden in Cookies gespeichert, so dass sie bei neuerlichem Laden der Seite gleich wieder aktiv sein können. Abbildung 16: Mockup Ansicht JobView. Zusätzlich kann die Ansicht JobList mit URL-Parametern gesteuert resp. deren Inhalt vorgefiltert werden. Es bietet sich schlussendlich an, diese Funktionalität gegebenenfalls auf einem (neuen) Entwickler-Portal anzubieten. Via URL-Parameter kann folgendes vorgefiltert werden: Zeige Job-Runs von heute (boolean -> ja/nein) Zeige Job-Runs von gestern (boolean -> ja/nein) Zeige alle Job-Definitionen (boolean -> ja/nein) Zeige Job-Definitionen, bei deren Komponente der Benutzer Entwickler ist (boolean -> ja/nein) Zeige Job-Definitionen, bei deren Komponente der Benutzer Stellvertreter ist (boolean -> ja/nein) Beispiel: .../JobList.aspx?ViewAll=false&ViewOwn=true&ViewStv=true&Today=true&Yesterday=true Alle diese Filter, welche via URL-Parameter erhalten werden, können auf der Ansicht JobList verändert werden. Gegenüber den „normalen“ Filter gelten die URL-Parameter-Filter nur Session-weit. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 34/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 5.2 Ansicht EditJob Die Ansicht JobList enthält pro Job-Definition im GridView einen Button, mit welchem der Benutzer auf die Ansicht EditJob gelangt. In dieser Ansicht kann eine Job-Definition einer auf Corp_PadMan geladenen Komponente zugewiesen werden. Die Komponenten sind in der Webapplikation Corp_PadMan hierarchisch gespeichert und können dort nach den Bedürfnissen der Entwickler gegliedert werden. Diese Hierarchie wird in Corp_JobMonitor derzeit nicht unterstützt. Sollte das Bedürfnis zu einem späteren Zeitpunkt dennoch bestehen, diese Funktionalität ebenfalls abzudecken, kann dies in Corp_JobMonitor erweitert werden. Die Ansicht EditJob bietet des Weiteren analog dem bestehenden Tool im TeamPortal grosse Textfelder an, in welchen der Benutzer eine Beschreibung, vorhandene Schnittstellen und Abhängigkeiten sowie allfällige Fehlermassnahmen pro Job-Definition dokumentieren kann. Zuletzt sind auf der Ansicht EditJob in einem GridView alle Jobs zur Job-Definition aufgelistet. Dies können im Minimum ein Job auf einem einzigen Environment oder maximal drei Jobs auf allen Environments (Development, Integration, Production) sein. Hier lässt sich via CheckBox definieren, ob ein Job unbedingt laufen muss und falls nicht, wer weiss was in Gang gesetzt werden muss. Diese CheckBox setzt und entfernt das MustRun-Bit in der Tabelle tabJob. Dasselbe GridView enthält ReadOnly-Informationen wie Job-Name, Enabled, etc. Die Abbildung 17 zeigt ein Mockup der Ansicht EditJob. Abbildung 17: Mockup Ansicht EditJob. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 35/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie 5.3 Ansicht ViewJobHistory Die Ansicht ViewJobHistory erreicht der Benutzer mittels Klick auf eines der drei Environment-Status-Symbols auf der Ansicht JobList (siehe Abbildung 16). Diese Ansicht zeigt sämtliche Job-Runs des selektierten Jobs. Mit dem EnvironmentSwitcher oben rechts kann innerhalb des selektierten Jobs zwischen den Environments gewechselt werden. Das Icon des aktuell selektierten Environments ist grösser dargestellt, im Mockup zu dieser Ansicht (siehe Abbildung 18) ist es das rote – die Production. Die Ansicht ViewJobHistory zeigt nebst der eigentlichen History wiederum eine kleine Übersicht über den Job und deren verantwortlichen Personen, sofern eine Komponente zugeordnet wurde. Zu den Job-Details gehören der Job-Name, die Komponente sowie verantwortlich Personen (Entwickler, Stellvertreter, Job- Verantwortlicher und -Schreiber). Mittels Klick auf das E-Mail-Icon oder die E-Mail-Adresse lässt sich der entsprechenden Person ein E-Mail schreiben, dazu wird mittels <a href=“mailto:...“ />-Tag ein Outlook-Fenster geöffnet. Das History-GridView zeigt schlussendlich Informationen zu Job-Runs an: Job-Name Startzeitpunkt Endzeitpunkt Dauer in Sekunden Status Die Abbildung 18 zeigt ein Mockup der Ansicht ViewJobHistory. Abbildung 18: Mockup Ansicht ViewJobHistory. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 36/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Ein Job-Run mit Fehler (Status-Icon = rot) oder Warnung (Status-Icon = gelb) kann mit der CheckBox rechts neben dem Status als erledigt markiert werden, sobald der Job-Run zu Ende analysiert und/oder gefixt wurde. Im Footer des GridView (im Mockup nicht ersichtlich) befindet sich ein zusätzlicher Button, welcher für den selektierten Job im selektierten Environment das Flag „Erledigt“ aller Job-Runs mit Fehlern oder Warnungen auf true setzt; eine sehr praktische Funktionalität, welche den bestehenden Applikationen stets gefehlt hatte. 5.4 Ansicht ViewJobRunDetail Zuletzt gibt es noch die Ansicht ViewJobRunDetail, welche der Benutzer mit einem Klick auf den „View“-Button auf der Ansicht ViewJobHistory erreicht. Diese Ansicht zeigt Detail-Informationen zu einem einzelnen Job-Run an. Dazu gehören: Job Name Startzeitpunkt Endzeitpunkt Dauer in Sekunden Computername, auf welchem der Job-Run ausgeführt wurde User-ID, womit der Job-Run ausgeführt wurde Source ID – definiert den Job Execution ID – definiert im SSIS Package Log den Job-Run Direkt anschliessend folgen die Details zu den einzelnen Job-Step-Runs, dazu gehören: Step-Nummer Job Step Name Startzeitpunkt Endzeitpunkt Dauer in Sekunden Status – basierend auf den Logs des Job-Step-Runs Schlussendlich beinhaltet die Ansicht ViewJobRunDetail die Logs – sowohl die SQL Server Agent Logs als auch die SSIS Package Logs. Als geeignetste Darstellung für diese Daten hat die Tab-Struktur erwiesen. Nun gibt es in dieser Ansicht stets ein Tab „Übersicht“, welches die SQL Server Agent Logs visualisiert. Für jeden Job-Step gibt es dann ein weiteres Tab mit dessen SSIS Package Logs. Die Log-Daten in allen Tabs werden aufgrund der Tatsache, dass Corp_JobMonitor zu den Logs nur eine ID und den Status kennt, direkt auf den Quell-Datenbanken msdb sowie Corp_SysLog geladen. Für die SSIS Package Logs ist es daher wichtig, dass die Webapplikation Corp_JobMonitor die Möglichkeit hat, die Datenbank Corp_SysLog auf unterschiedlichen Umgebungen (Development, Integration, Production) anzusprechen. Im nachfolgenden Kapitel 5.5 wird dieses Vorgehen beschrieben. Die Abbildung 19 zeigt ein Mockup der Ansicht ViewJobRunDetail. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 37/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie Abbildung 19: Mockup Ansicht ViewJobRunDetail. 5.5 Datenbank-Zugriff auf unterschiedliche Environments derselben Datenbank Die Logs der SSIS-Packages sind – wie früher in diesem Dokument beschrieben – auf unterschiedlichen SQL Server Instanzen (Development, Integration, Production) gespeichert. Auf alle drei Environments muss aus derselben Intranet-Applikation zugegriffen werden können. SSIS Package Logs von Development-Jobs befinden sich auf der SQL Server Instanz serverdbdev01. SSIS Package Logs von Integration-Jobs befinden sich auf der SQL Server Instanz serverdbint01. SSIS Package Logs von Production-Jobs befinden sich auf der SQL Server Instanz serverdbprod01. Mit dem Verwenden der Post.Lib erben eigene Konfigurations-Klassen grundsätzlich von der Lib-Klasse Post.Lib.Data.NHibernate.Session.ManagerWebConfiguration. Werden nun drei verschiedene Connections benötigt, müssen auch drei Ableitungen dieser Klasse implementiert werden. Diese unterscheiden sich lediglich im Aufbau des Connection-Strings, welcher wiederum mittels Post.Lib erhalten wird. Listing 32, Listing 33 sowie Listing 34 zeigen den Code der entsprechenden Klassen im Namespace Post.Appl.Corp.JobMonitor.DAL. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 38/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie public class SysLogDevManagerWebConfiguration : ManagerWebConfiguration { public override void Init() { base.Init(); ConnectionString = PwwDatabase.GetConnectionString(AppGlobal.Id, "Corp_SysLog", DBEnvironment.Development); } } Listing 32: Klasse SysLogDevManagerWebConfiguration. public class SysLogIntManagerWebConfiguration : ManagerWebConfiguration { public override void Init() { base.Init(); ConnectionString = PwwDatabase.GetConnectionString(AppGlobal.Id, "Corp_SysLog", DBEnvironment.Integration); } } Listing 33: Klasse SysLogIntManagerWebConfiguration. public class SysLogProdManagerWebConfiguration : ManagerWebConfiguration { public override void Init() { base.Init(); ConnectionString = PwwDatabase.GetConnectionString(AppGlobal.Id, "Corp_SysLog", DBEnvironment.Production); } } Listing 34: Klasse SysLogProdManagerWebConfiguration. 5.5.1 Klasse JobMonitorProvider Die Klasse JobMonitorProvider, über welche die NHibernate-Repositories bezogen werden, kann mit diesem Konstrukt umgehen. Den Kontext selektiert man in diesem konkreten Fall mit der Methode SysLogContext(Environment). public class JobMonitorProvider : PostProvider { public IDbContext JobMonitorContext { get; private set; } public IDbContext MsdbContext { get; private set; } public IDbContext SysLogDevContext { get; private set; } public IDbContext SysLogIntContext { get; private set; } public IDbContext SysLogProdContext { get; private set; } public IValidatorFactory ValidatorFactory { get; private set; } public JobMonitorProvider(IConfigManager configManager, IDbContext jobMonitorContext, IDbContext msdbContext, IDbContext sysLogDevContext, SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 39/40 Projektname Dokumenttitel Artifaktname Corp_JobMonitor Systemdesign Corp_JobMonitor Systemdesign Informationstechnologie IDbContext sysLogIntContext, IDbContext sysLogProdContext, IValidatorFactory validatorFactory) : base(configManager) { ConfigManager = configManager; JobMonitorContext = jobMonitorContext; MsdbContext = msdbContext; SysLogDevContext = sysLogDevContext; SysLogIntContext = sysLogIntContext; SysLogProdContext = sysLogProdContext; ValidatorFactory = validatorFactory; } public IDbContext SysLogContext(Environment environment) { if (AppGlobal.Production().Equals(environment)) { return SysLogProdContext; } if (AppGlobal.Integration().Equals(environment)) { return SysLogIntContext; } if (AppGlobal.Development().Equals(environment)) { return SysLogDevContext; } return null; } } Listing 35: Klasse JobMonitorProvider. 6 Anforderungszuordnung Die Tabelle 15 listet die Anforderungszuordnung für Corp_JobMonitor auf. Bezeichnung J_UC_10 J_UC_20 J_UC_30 J_UC_40 J_UC_50 J_UC_60 Name Jobs ansehen (Liste) Job einer Komponente zuordnen Job-Details editieren Job-Runs ansehen (Liste) Job-Run-Details ansehen Fehlerhafter Job-Run als erledigt markieren Kapitelzuordnung Kapitel 5.1 Kapitel 5.2 Kapitel 5.2 Kapitel 5.3 Kapitel 5.4 Kapitel 5.3 Tabelle 15: Kapitelzuordnung der Use Cases aus dem Anforderungsdokument [01]. 7 Sicherheit Keine weiter führenden Angaben. SD_JOBMON_Systemdesign_V01.04.docx © Die Schweizerische Post Ausgabedatum 28.03.2012 40/40