Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "TÜV für PL/SQL? Ein effizienter Weg zu besseren PL/SQL-Programmen Eschborn, Januar 2007 Klaus Borel, Peter Bug OPLAn."—  Präsentation transkript:

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

2 2 Chefentwickler itdoc24: Peter Bug Kfm. Ansprechpartner: Klaus Borel Techn. Ansprechpartner: Jörg Rauh Wer macht den PL/SQL - TÜV für Sie? Am besten Ihre eigenen Entwickler zusammen mit: itdoc24 Ltd.

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

4 4 SW-Entwicklung jetzt: Gesicherte Software-Qualität Programmierer Anwender OPLAn Code Sauberer Code 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

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

6 6 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 ;, LOOP s 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 Schwachstellen wie:

7 7 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 kritischen Code wie:

8 8 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 findet weiteren kritischen Code wie:

9 9 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 OPLAn listet auf:

10 10 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. Was sagen die Anwender ?

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

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

13 13 Zusammenfassung 1.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.

14 14 OPLAn macht Ihr Unternehmen erfolgreicher.

15 15 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 )

16 16 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 / )'; -- 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'; Treshold value for the number of statements per module. comment_in_code = '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'; 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)

17 17 Erfahrungen in konkreten Projekten Umfang der Analysen: 500 – 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

18 18 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

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

20 20 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


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

Ähnliche Präsentationen


Google-Anzeigen