Information Systems Audit and Control Association - Serving IT Governance Professionals Code-Konventionen (1)

Ordnungsmerkmale

erschienen in: <kes> 2006#5, Seite 88

Rubrik: ISACA informiert

Zusammenfassung: Bei der Prüfung und Bewertung von Software spielt die Analyse von Programmquellen eine wichtige Rolle. Code-Konventionen erleichtern diese Arbeit erheblich.

Die Funktionalität und Ordnungsmäßigkeit von Programmquellen lässt sich für Dritte mit geringerem Aufwand analysieren, wenn Code-Konventionen entsprechend der verwendeten Programmiersprache genutzt werden. Dies hat den zusätzlichen Effekt, dass bei der Wartung von Programmquellen durch verschiedene Programmierer eine schnellere Einarbeitung in die Logik und das Verständnis einer Programmquelle möglich ist. Allerdings werden derartige Code-Konventionen von den Programmierern gerne auch als unnötiger formaler Balast bewertet, sodass im Sinne einer wirksamen schriftlich fixierten Ordnung eines Betriebes und dessen Softwareentwicklungsmethode die verbindliche Anweisung durch die Geschäftsleitung notwendig erscheint.

Java-Konventionen

Wegen der zunehmenden Verbreitung von browser-orientierten Anwendungen unter Java (J2EE) als objektorientierte Programmiersprache sollen dessen Code-Konventionen an dieser Stelle näher betrachtet werden, wobei eine Anlehnung an die Vorgaben von Sun als Urheber von Java erfolgt ([externer Link] http://java.sun.com/docs/codeconv/).

Code-Konventionen erfüllen keinen Selbstzweck, sondern haben vielmehr die folgenden Aufgaben:

Die Konventionen können sich auszugsweise auf Dateiaufbau, Zeilenlänge, Zeilenumbruch, Kommentare, Deklarationen, Initialisierung, Plazierung, Statements, Namensgebung, Klassen, Schnittstellen und die Programmiertechnik beziehen. Im Detail sollen hiervon an dieser Stelle die Verwendung von Kommentaren, Namenskonventionen und die Programmiertechnik vorgestellt werden.

Kommentare helfen beim Lesen und Verstehen der Programmquellen, indem diese als Block- oder Zeilenkommentar gegebenenfalls mit entsprechenden Sonderzeichen bei der Nutzung des Werkzeuges javadoc eingefügt werden (s. http://java.sun.com/javadoc/). Diese Sonderzeichen und speziellen Tags können maschinell über javadoc gelesen und in einer Datei (HTML/PDF) als Bericht ausgegeben werden. Als javadoc-Tags stehen unter anderem die Werte @param, @return, @version und @exception bereit. Kommentare können für die Implementierung der gegenwärtigen Version (/*... */, //) und als allgemeine Dokumentation (/**...*/) zur Spezifikation der Programmquelle für javadoc unterschieden werden.

Namenskonventionen dienen der eindeutigen Unterscheidung von Java-Objekten und unterstützen damit die Erkennung der Programmlogik. So sollten Methodennamen mit Verben beginnen, der erste Buchstabe klein und jeder interne Bezeichner groß geschrieben werden – Beispiel: computeStandardDeviation(). Die Bezeichner der Java-Objekte Packages, Klassen, Schnittstellen, Methoden, Variablen und Konstanten folgen ähnlichen Strukturen, welche in den angesprochenen Sun-Konventionen beschrieben sind (vgl. Abbildung).

[Illustration]
Quick-Reference zu Namenskonventionen für Java-Objekte

Programmiertechniken können mit Strukturierung von Zugriff, Referenzen, Konstanten und Klammersetzung die Qualität von Programmquellen verbessern. So sollten beispielsweise Konstanten grundsätzlich nicht als "magische Zahlen" in der Programmquelle direkt verwendet, sondern vielmehr an zentraler Stelle vorab definiert werden – auf diese Weise lässt sich eine Variable als Konstante verwenden und bei Bedarf an zentraler Stelle ändern. Eine Ausnahme bilden hierbei die Werte 1, 0, -1 als Zählwerte zur Steuerung von for-Schleifen, welche naturgemäß zulässig sind. Als Beispiel:

//gut 
private static final int TEAM_SIZE [7] 
Player[] players = new Player [TEAM_SIZE] 

//unvorteilhaft 
Player[] players = new Player [7]

Fazit

Die Verwendung von Code-Konventionen ist kein unumstößliches Gesetz. Die Verwendung von Code-Konventionen ist vielmehr eine lohnende Maßnahme, welche effizient Qualität und Wartbarkeit von Programmquellen vereinfacht, sowie die Analyse der Funktionalität sowie Prüfung der Ordnungsmäßigkeit unterstützt. Gegenüber diesen vorteilhaften Gesichtspunkten sind gute Programmierer in der Regel aufgeschlossen, soweit man situationsbedingte Ausnahmen zulässt.

Weitere Informationen

ISACA German Chapter e. V.
Eichenstraße 7
46535 Dinslaken
[externer Link] www.isaca.de

Karin Thelemann (CISA, CISM)
ISACA-Vorsitzende
Tel.: +49 69 15208-26488
E-Mail: karin.thelemann@de.ey.com

Bernd Wojtyna (CISA)
Vizepräsident ISACA Germany Chapter
Tel.: +49 251 288-4253
E-Mail: Bernd.Wojtyna@extern.Sparkassen-Informatik.de

Bezüglich der Control Objectives for Information and related Technology (CoBIT) sind drei Bereiche relevant: Develop and Maintain Procedures (AI4), Manage Changes (AI6) sowie Manage Quality (PO11).

Die manuelle Analyse von Java-Sources oder anderen Programmquellen zur Einhaltung der Code-Konventionen ist jedoch aufwändig und sollte deshalb durch ein geeignetes Software-Werkzeug vollzogen oder zumindest unterstützt werden. In der Praxis wurden dazu Erfahrungen gesammelt, die durch parametergestützte Berichte solcher Software-Werkzeuge mit den Kriterien Inspektion, Spezifikation sowie Measurement unterstützt werden.

Der zweite Teil dieses Beitrags wird konkret über ein entsprechendes Werkzeug zur maschinellen Analyse informieren.