zu besseren PL/SQL-Programmen

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

der Universität Oldenburg
DANSY Dynamische Analyse von Systemen
Objekt – Relationales – Modell Tomasz Makowski IN
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Objektorientierung mit VBA
Java: Dynamische Datentypen
FH-Hof Effizienz - Grundlagen Richard Göbel. FH-Hof Inhalt Einführung Aufwand für Anfragen ohne Indexierung Indexstrukturen für Anfragen an eine Tabelle.
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Modularisierungstechniken
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
DVG Klassen und Objekte
Einführung MySQL mit PHP
2.2 Definition eines Datenbankschemas (SQL-DDL)
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Style Guidelines für Java und .NET
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 SQL (Teil 5)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
HORIZONT 1 XINFO ® Das IT - Informationssystem XINFO 3.3 HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
HORIZONT 1 SmartJCL ® Der einfache Weg zur fehlerfreien JCL HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
HORIZONT 1 XINFO ® Das IT - Informationssystem Assembler HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Grundkonzepte des Programmierens (mit ActionScript)
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Purga - Scriptengine Ein Einblick.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Algorithmen und Datenstrukturen SS 2005
MODULA-2.
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Verdichten von Daten mit Gruppenfunktionen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Integritätsbedingungen (Constraints)
11 Verwaltung von Abhängigkeiten. Ziele Am Ende dieser Lektion verfügen Sie über die folgenden Kenntnisse: Überwachen prozeduraler Abhängigkeiten Effekte.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
The Programming Language Pascal
Calendar+ makes things easier! calendar+ makes things easier!
Objektorientierte (OO) Programmierung
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Das IT - Informationssystem
Das IT - Informationssystem
Vorlesung #8 SQL (Teil 5).
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
 Präsentation transkript:

zu besseren PL/SQL-Programmen TÜV für PL/SQL? Ein effizienter Weg zu besseren PL/SQL-Programmen Eschborn, Januar 2007 Klaus Borel , Peter Bug OPLAn

Wer macht den PL/SQL - TÜV für Sie? Am besten Ihre eigenen Entwickler zusammen mit: itdoc24 Ltd. Chefentwickler itdoc24: Peter Bug 069-96580012 info@itdoc24.de Kfm. Ansprechpartner: Klaus Borel 06196-41764 kborel@t-online.de Techn. Ansprechpartner: Jörg Rauh 0172-6150379 jud.rauh@t-online.de

verständlich? laufsicher? SW-Entwicklung bisher: Schwachstellen, Fehler Manager Ideen, Fremdsoftware, Änderungen Aufgabe, Projekt Programmierer Tabellen-Design, SQL, PL/SQL Code Anwender ? ? ? verständlich? laufsicher? erweiterbar? änderbar?

SW-Entwicklung jetzt: Gesicherte Software-Qualität Programmierer Anwender OPLAn Code Sauberer Manager Aufgabe, Projekt Ideen, Fremdsoftware, Änderungen Tabellen-Design, Neues SQL, PL/SQL Fehlerart, Fehlerort, Listen, professionelle technische Dokumentation verständlich, laufsicher, erweiterbar, änderbar Pro-aktive Programm- Analyse

OPLAn TECHNIK OPLAn sichert Programmierrichtlinien informiert über 80 Fehlerarten bietet Online-Hilfe mit Beispielen und liefert Listen und Dokumentation des Codes

OPLAn findet Schwachstellen wie: Nicht erreichbare Anweisungen ( toten Code), Deklarierte, aber danach nicht mehr verwendete Objekte, Benutzerdefinierte Datentypen oder Savepoints, OPEN CURSOR ohne CLOSE CURSOR oder FOPEN ohne FCLOSE, Unzulässige Verwendung von Reserved Words, Insert-Statements ohne Spaltenliste, unlogische IF-Bedingung, Falsche Verwendung von Operatoren (z.B. ... =NULL), Unterdrückte Fehlerbehandlung z.B. WHEN OTHERS THEN NULL;, LOOPs ohne EXIT , unterschiedlich deklarierte Variable, Überschreiben von Objekten im Package STANDARD, Package-übergreifende globale Variable, ungenutzte Variable, Fehlende Deklaration von Konstanten, u.a.

OPLAn findet kritischen Code wie: GOTO in Modulen, select mit distinct/unique ELSE-IF-Kaskaden oder CASE ohne ELSE-Zweige Hochkomplexe IF-, ELSIF- oder CASE- Bedingungen Fehlende (Bereichs-) Prüfung übernommener Parameter Module mit höherer als der eingestellten Komplexität Module mit hoher Schachtelungstiefe von Schleifen Präfixe, die nicht dem empfohlenen Wert entsprechen Zu kurze Namen, Auffallende Ähnlichkeit im Code Variable, die nie in einem Modul abgefragt werden Fehlende Initialisierung von Variablen Module ohne error logging oder ohne exception handler Rekursiver Aufruf von Modulen Rownum oder Function in Where-Condition

OPLAn findet weiteren kritischen Code wie: LOCK TABLE . . ohne anschließendes COMMIT/ROLLBACK SELECT..FOR UPDATE und kein COMMIT/ROLLBACK VARCHAR anstelle von VARCHAR2, Nicht initialisierte Variable FETCH ohne %FOUND bzw. %NOTFOUND Unzureichende Kommentierung (Prozentzahl ist einstellbar) Identisch benannte Prozeduren und Funktionen in einem Package Verwendung der Pseudospalte ROWNUM in einer WHERE-Klausel Fehlerhafte Konstruktionen, z.B. group aggr.function m. %notfound Nichtssagende (z.B. zu kurze) benutzerdefinierte Namen Ähnliche Module, die evtl. zu einem Modul zusammenfassbar sind Variablen gleichen Namens mit unterschiedlichem Typ Fehlende Exception-Handler, fehlendes Error-Logging Select * anstelle einer column list

OPLAn listet auf: Den automatisch strukturierten Quellcode in HTML Den ursprünglichen Quellcode in HTML Alle Fehlermeldungen mit Hinweis auf ihr Vorkommnis im Code Alle Module mit allen Zugriffen auf Objekte wie Packages, Types, Functions, Procedures, Trigger, Tables, Views und Files Alle updates auf Tabellen-Spalten Den call tree sowie die Schnittstellen zum Betriebssystem Ereignisse der Transaktionslogik (commit, rollback, savepoint) Alle Konstanten, Variablen, Parameter und Cursors und Eine Kosten/Nutzen-Berechnung der laufenden Analyse

Was sagen die Anwender ? OPLAn wurde fester Bestandteil bei PL/SQL-Code-Entwicklungen und bei der Abnahme von SQL- und PL/SQL-Fremdsoftware. OPLAn beschleunigt die Abnahme durch bessere Modularität, Lesbarkeit, Sicherheit und Erweiterbarkeit des Codes.   OPLAn wird bei der Abnahme zur „Dritten Instanz“ für die Qualität. Die Übersichtlichkeit der Analyseergebnisse fördert den Dialog der Qualitätsbeauftragten, Entwickler und Manager. Die Entwicklungs-, Prüf- und Wartungs-Kosten werden gesenkt.  

Prototyping mit OPLAn performant Programmieren/ berichtigen Automatisch analysieren erweiterbar sicher Testlauf durchführen Vollständigkeit bewerten lesbar

PL/SQL-Qualitätssicherung Aufwand Nutzen Zeit Auswahl des PL/SQL-Codes OPLAn- Auftrag Korrekturen durch OPLAn + Fachpersonal Code-Abnahme Schwachstellenbereinigte Produktion

Zusammenfassung Frei erstellter, nicht automatisch geprüfter Code ist fast immer fehlerhaft, unstrukturiert, unübersichtlich und gefährlich. 2. Für SQL und PL/SQL gibt es jetzt ein professionelles Werkzeug zur automatischen vorausschauenden Analyse und Dokumentation. 3. Sauberer Code macht Programme erweiterbar, lesbar und sicher.

OPLAn macht Ihr Unternehmen erfolgreicher.

Drei Funktionen in einem Tool: 1. Automatische Überprüfung der Einhaltung unternehmensweit empfohlener Programmier-Standards, Qualitäts-Standards und Naming-Conventions 2. Maschinelle Erzeugung einer professionellen Dokumentation (incl. Darstellung des Kontrollflusses mit exakter logischer Einrückung) 3. Funktionalität: (OPLAn findet mehr Fehler und Schwachstellen als jedes andere Tool )

Stellschrauben für die Analyse mit OPLAn limit_htm_output = '100000'; -- Limit for HTML-Output (in Lines-of-Code of the analyzed Application). oplan_control = 'ORACLE9i'; -- ORACLE9i or ORACLE10g -- ---------------------------------------------------------------------------------------------- -- Company, Project, Test-Team html_head_line_01 = ‘Bosch ABCX'; -- Your company, your project, html_head_line_02 = 'itdoc24-Team, Frankfurt/Main (+49(0) 69 / 96 58 00 12)'; -- your team, your name. -- Project-standards to be checked. pfx_local_var = 'v_'; -- Prefix for all variables declared locally. pfx_local_var2 = 'l_'; -- Prefix for all variables declared locally. pfx_global_var = 'g_'; -- Prefix for all variables declared globally. pfx_global_var2 = 'vg_'; -- Prefix for all variables declared globally. pfx_parameter = 'p_'; -- Prefix for all parameters. pfx_parameter2 = 'pi_'; -- Prefix for all parameters. pfx_constant = 'c_'; -- Prefix for all constants. pfx_constant2 = 'cp_'; -- Prefix for all constants. compl_mc_cabe = '7'; -- 7 Treshold value for the compl. according to McGabe. compl_max_nes = '4'; -- 3 Treshold value for the max. nesting of loops and conditions. compl_sql_dml = '9'; -- 9 Treshold value for the compl. for SQL-Statements. compl_stm_cnt = '100'; -- 100 Treshold value for the number of statements per module. comment_in_code = '20'; -- 20 Percentage on comments in the source-code (characters within comments/all characters). limit_oper_in_if = '3'; -- 3 Treshold value for the number of operators in IF/ELSIF/CASE-conditions. limit_short_name = '4'; -- 4 Treshold value for min. length on user-defined names. limit_line_length = '80'; -- 90 Max. line-length in the footer-window. -- suppress_msg = '(005W)(046W)'; -- Suppresses warning- and information-messages. spaces_for_tab = '8'; -- Number of spaces for one horizontal tab. in the HTML-output. -- Root for the call-tree (if available).

Erfahrungen in konkreten Projekten Umfang der Analysen: 500 – 500.000 Lines of code PL/SQL Fehler bezogen auf die Lines of Code: 10%-40% je nach Programmierer Davon 20% gravierende Fehler, 30% Warnungen, 50% Informationen Quelle und Ort der Fehler werden zeilengenau angezeigt Die Auswirkung der Fehler hängt von den Datenbereichen ab, deshalb Prüfung der Datenbereiche Die Abschätzung des Aufwandes für die Fehlerbeseitigung ist möglich Danach ist zu entscheiden, ob eine Neuprogrammierung erforderlich ist

Zu erwartender Nutzen für den Auftraggeber Der Auftraggeber hat Probleme mit der Lauffähigkeit/Sicherheit Der Auftraggeber hat Probleme mit der Lesbarkeit Der Auftraggeber hat Probleme mit der Erweiterbarkeit Der Auftraggeber hat Probleme mit der Gefahr seiner Haftung Der Auftraggeber hat Probleme mit der Kundenfreundlichkeit Der Auftraggeber hat Probleme mit seinen Programmierern

Kreative Preisgestaltung Master-Lizenz (10.000 Euro) zum Start erforderlich Danach Mengenrabatte, da im Idealfall alle damit arbeiten

Vertrieblicher Approach Traditioneller Vertrieb bei großen Firmen Hilfe durch Fa. Oracle Zu gegebener Zeit und nach Prüfung Speziallösung für den Hochschul- und Forschungsbereich Durchführung von Auftrags-Analysen Download einer Testversion Internet-Forum für PL/SQL-Programmierer