Accessibility: Barrierefreie Software-Entwicklung mit .net bzw. C#

Im Artikel „Richtlinien zur barrierefreier Software-Entwicklung ( Accessibility ) mit .net bzw. C#“ ging es um Richtlinien wie man mit .net barrierefreie Software entwickelt. In diesem Artikel geht es um die konkrete Umsetzung der Richtlinien.Sie erfahren in diesem Artikel konkrete Schritte zur Entwicklung von barrierefreie Software mit .net bzw. C#.

Im Artikel „Richtlinien zur barrierefreier Software-Entwicklung ( Accessibility ) mit .net bzw. C#“ ging es um Richtlinien wie man mit .net barrierefreie Software entwickelt. In diesem Artikel geht es um die konkrete Umsetzung der Richtlinien.Sie erfahren in diesem Artikel konkrete Schritte zur Entwicklung von barrierefreie Software mit .net bzw. C#.

Die erste Programmiersprache welche die Entwicklung von barrierefreie Software unterstützte war Java. Mehr dazu können Sie im Artikel „Barrierefreie Software-Entwicklung (Accessibility) mit Java“. Bei den Programmiersprachen Delphi und C++ fehlt eine Unterstützung von Haus aus.

Eine wichtige Voraussetzung für eine barrierefreie Software ist die Unterstützung von Eingabehilfen wie z. B. Screenreader. Damit diese Eingabehilfen die entsprechenden Informationen bekommen, besitzen .net-Komponenten haben hierfür folgende Eigenschaften:

AccessibleName:
Die Eigenschaft „AccessibleName“ ist eine Kurzbeschreibung der entsprechenden Komponente

AccessibleDescription:
Die Eigenschaft „AccessibleDescription“ ist eine Textbeschreibung der visuellen Darstellung dieser Komponente.

AccessibleRole:
Die Eigenschaft „AccessibleRole“ beschreibt die Aufgabe, die an Eingabehilfen übermittelt wird. Die zulässigen Werte werden von der AccessibleRole-Enumeration definiert. Der Wert wird von vielen Eingabehilfen verwendet, um zu ermitteln, um welche Art von Schnittstellenelement es sich bei dem Objekt handelt.

AccessibilityObject:
Enthält eine AccessibilityObject-Instanz, die für die Eingabehilfe Informationen über das Steuerelement enthält. Die Eigenschaft ist schreibgeschützt und wird vom Designer festgelegt.

AccessibleDefaultActionDescription:
Enthält eine Beschreibung der Standardaktion des Steuerelements. Diese Eigenschaft kann nicht zur Entwurfszeit festgelegt werden, sondern nur per Programmcode.

Hier kurz ein Beispiel wie man diese Eigenschaften setzt.

neuToolStripMenuItem.AccessibleName = „Datei neu“;
neuToolStripMenuItem.AccessibleDescription = „Neue Textdatei anlegen“;
neuToolStripMenuItem.AccessibleRole = AccessibleRole.MenuItem;

Des weiteren ist es wichtig wie oben schon erwähnt wird, dass die Software den Kontrastmodus unterstützt. Zum Unterstützen des Kontrastmodus kann folgende Methode verwendet werden:

privatevoid KontrastModus()

{

if (SystemInformation.HighContrast)

{

foreach (Control vControl inthis.Controls)

{

vControl.BackColor = SystemColors.Control;

vControl.ForeColor = SystemColors.ControlText;

}

}

}

Um die Bedienbarkeit der Software auch über Tastatur zu gewährleisten, ist es wichtig auf die Tabulatorreihenfolge zu achten. Jede .net-Komponmente hat eine Eigenschaft “TabIndex” welcher man eine Zahl übergeben kann. Mit dieser Zahl legt man fest, in welcher Reihenfolge die Komponenten aktiviert werden, wenn der Anwender die Tabulatortaste drückt.

Eine weitere Möglichkeit die Bedienbarkeit von Software über Tastatur zu verbessern, ist das vergeben von Shortcuts für Labels, Buttons, Grouboxen und Menüs. Das erstellen eines Shortcuts macht man, in dem man vor einem bestimmten Buchstaben einer Beschriftung ein “&”-Zeichen setzt. z. B. “&Suchen”.

Der Anwender kann nun durch gleichzeitiges drücken von der Taste “Alt” und “s” den Schalter Suchen aktivieren.

Bei Menüshortcuts ist es empfehlenswert dem Anwender eine Möglichkeit bereitzustellen, diese selber anzupassen,da Menschen, bei welchen behinderungsbedingt nur eine Hand funktionstüchtig ist, mit Tastenkombinationen Ihre Schwierigkeiten haben.

Wenn Sie alle diese Dinge berücksichtigen, haben Sie einen wichtigen Schritt in Sachen barrierefreie Software gemacht.

Accessibility: Richtlinien zur barrierefreier Software-Entwicklung mit .net bzw. C#

In diesem Blogartikel möchte ich die Richtlinien von Microsoft für .net bzw. C# zur barrierefreier Software-Entwicklung besprechen. Wenn eine Software barrierefrei ist, dann ist Sie für Menschen mit Behinderung verwendbar.

Im Artikel „Was ist eine barrierefreie Software“ habe ich erklärt welche Kriterien erfüllt werden müssen, damit eine Software barrierefrei ist. Microsoft hat in ihrer Dokumentation, die MSDN, Richtlinien veröffentlicht wie eine Standardsoftware barrierefrei bzw. behindertengerecht gemacht werden kann. Ich werde hier die Richtlinien wiedergeben und erklären.


Punkt 1: Unterstützung der Systemsteuerungseinstellungen für Größe, Farbe, Schriftart und Eingabe

Unterstützung der Systemsteuerungseinstellungen für Größe, Farbe, Schriftart und Eingabe. Wenn die Benutzer die Einstellungen der Systemsteuerung ändern, wird die Größe der Menüleiste, der Titelleiste, der Ränder und der Statusleiste automatisch geändert. In dieser Anwendung müssen keine weiteren Änderungen an den Steuerelementen oder dem Code vorgenommen werden

Erklärung:
Microsoft hat in jedem Windows, wie oben erwähnt, in der Systemsteuerung einige Einstellungsmöglichkeiten die Menschen mit Behinderung zu gute kommen. Deswegen ist es unabdingbar, dass eine entwickelte Software diese Einstellungen übernimmt und nicht ignoriert. Es wäre zum Beispiel kontraproduktiv, wenn ein Mensch mit einer Sehbehinderung sich in der Systemsteuerung große Schriftarten einstellt und in der Software erscheinen alle Zeichen in der Schriftgröße 10.


Punkt 2: Unterstützung des Kontrastmodus

Erklärung:
In der Eingabehilfe, die man in der Systemsteuerung findet, gibt es einen Reiter „Anzeige“. Hier findet man ein Kontrollkästchen mit der Beschriftung „Kontrast aktivieren“. Klickt man es an und aktiviert rechts unten den Schalter „Übernehmen“ wird der Kontrastmodus aktiviert. Die Aktivierung dauert ein bisschen. Nach und nach wird der Hintergrund Pech schwarz und überall erscheint eine weiße Schrift.Dieser Kontrastmodus darf durch eine Software nicht verändert oder verhindert werden.


Punkt 3: Bereitstellen eines dokumentierten Tastaturzugriffs auf alle Features

Erklärung:
Wie oben schon erwähnt, benutzen Menschen die blind oder sehbehindert sind, eher die Tastatur wie die Maus. Deswegen sollten alle Programmfunktionen auch über Tastatur erreichbar sein und die entsprechenden Tastenkürzel sollten in der Programmhilfe dokumentiert sein.


Punkt 4: Visuelle und programmgesteuerte Anzeige der Position des Tastaturfokus

Erklärung:
Für Menschen die hauptsächlich oder ausschließlich mit der Tastatur arbeiten ist es wichtig, schnell zu erkennen wo der Tastaturfokus ist. Aus diesem Grund muss der Tastaturfokus visuell angezeigt und erkennbar sein.


Punkt 5: Vermeiden der Übermittlung wichtiger Informationen allein per Audioausgabe

Erklärung:
Im Artikel weiter oben wurde es erwähnt, dass es Menschen gibt die gehörlos sind. Wenn wichtige Informationen nur per Audioausgabe zur Verfügung stehen, bekommen gehörlose Menschen die Informationen nicht mit. Deswegen sollten Informationen die per Audioausgabe zur Verfügung stehen auch in visueller Form angeboten werden. Ein Mail-Programm, welches dem Anwender nur über Sprache mitteilt, dass er neue Mails hat, wäre für gehörlose Menschen unbrauchbar.

Wenn diese 5 Punkte bei einer Standardsoftware erfüllt sind ist, laut Microsoft, eine Software barrierefrei.

Java-Software auf Barrierefreiheit (Accessibility) testen

Im letzten Artikel haben wir die Grundlagen der barrierefreien Software-Entwicklung mit der Programmiersprache Java angeschaut. In diesem Artikel schauen wir an, wie Java-Software auf Barrierefreiheit getestet werden können.

Angenommen Sie haben sich richtig Mühe gegeben Ihre Java-Software barrierefrei zu entwickeln und möchten nun wissen, ob die Software wirklich barrierefrei ist. Welche Möglichkeiten gibt es?

Zunächst mal muss man feststellen, dass unter Umständen barrierefrei nicht barrierefrei ist. Wenn eine Software für eine bestimmte Person oder Personengruppe(z. B. Blinde Menschen) mit einer bestimmten Behinderung barrierefrei gemacht werden soll, ist das nicht so zeitaufwendig, wie eine barrierefreie Software die alle möglichen Behinderungsarten berücksichtigen soll.

Ein Software die für blinde Menschen barrierefrei entwickelt werden soll, kann anschließend von einem blinden Menschen auf Barrierefreiheit getestet werden.Wenn eine Software sämtliche Behinderungsarten berücksichtigen soll ist diese Art von Test keine gute Idee.

Die Entwickler von Java, die Firma Sun, haben auch über dieses Problem nachgedacht.Deswegen entwickelten Sie eine Software mit der Java-Anwendungen auf Barrierefreiheit testen kann. Die Software heißt „Java Accessibility Helper“.

Mit dem „Java Accessibility Helper“ kann man Java-Anwendungen auf alle wichtigen Kriterien der Barrierefreiheit testen. Zum Beispiel kann mit dem Java Accessibility Helper getestet werden ob eine Java-Anwendung nur mit Tastatur bedienbar ist. Blinde und viele Sehbehinderte Menschen arbeiten nur mit Tastatur und nicht mit der Maus.

Der Java Accessibility Helper kann hier runter geladen werden: Java Accessibility Helper

Barrierefreie Software-Entwicklung / Barrierefreiheit mit Java

Die Programmiersprache Java, war die erste Programmiersprache die das Entwickeln von barrierefreier Software unterstützte. Die Grundlagen der barrierefreien Software-Entwicklung mit Java erfahren Sie in diesem Artikel.
Eine grafische Oberfläche von Software sollte so gestaltet sein, dass Menschen mit unterschiedlichen Einschränkungen bzw. Behinderungen sie bedienen können. Eine Software die keine Hindernisse(=Barrieren) in der Bedienung für Menschen mit Behinderungen hat, ist eine barrierefreie Software.
Spezielle Hilfsmittel (engl. assistive technology) wie Screenreader, Braille-Zeile, Bildschirmlupe oder ein Spracheingabesystem unterstützen behinderte Menschen bei der Bedienung von Software. Eine Kontrastreiche Darstellung oder das aktivieren von Bedienelementen per Tastatur können ebenfalls dazu beitragen eine Software barrierefrei zu machen. Blinde und sehbehinderte Menschen bedienen oft eine Software per Tastatur. Deswegen ist es wichtig darauf zu achten, dass eine Software auch ohne Maus bedienbar ist.
Es gibt 4 Elemente die wichtig sind für die Umsetzung von Barrierefreiheit(=Accessibility)
in Java.
JAAPI(Java Accessibility API):
Die JAAPI(Java Accessibility API) ermöglicht es durch eine Art Vereinbarung, dass Komponenten einer Java-Anwendung, Informationen von Unterstützungstechnologien (wie Screenreader-Software oder Braille-Anzeigegerät) erhalten. Die Hauptschnittstelle ist das Accessible Interface.
Alle Komponenten, die Barrierefreiheit unterstützen, müssen diese Schnittstelle benutzen.
Die meisten Swing-Komponenten (JFC), wie Jbutton und Jtextarea, benutzen das
Accessible-Interface(javax.accessibility.Accessible). Deswegen ist es ratsam Swing-
Komponenten zu verwenden, wenn man barrierefreie Software mit Java entwickeln
möchte.
Java Accessibility-Dienstprogramme:
Damit können Informationen aus einer Anwendung erfasst und für die Anzeige mit
Spezialgeräten weiterverarbeitet werden. Mit ihnen können Unterstützungstechnologien
komponentenspezifische Ereignisse überwachen und zusätzliche Informationen über das
GUI(=Programmoberfläche) erhalten, zum Beispiel die momentane Mausposition oder,
welches Fenster gerade aktiv ist.
Java Access Bridge (JAB):
Die Java Access Bridge ist eine Brücke zwischen Java und der integrierten
Unterstützungstechnologien von Microsoft Windows. Sie wird gebraucht, damit Java-
Anwendungen für Microsoft Windows barrierefrei entwickelt werden können. Sie wurde in
J2SE 1.3 eingeführt.
Java Foundation Classes (JFC):
Dies ist eine Bibliothek von Komponenten der graphischen Benutzeroberfläche, in welche
JAAPI vollständig implementiert ist.
Folgende zwei Eigenschaften von Swing-Komponenten sind für die barrierefreie Software-Entwicklung wichtig:
AccessibleName:
Ist ein Kurzname der Komponente, der über deren Verwendung was sagen soll.
Der AccessibleName wird von Screenreadern vorgelesen, wenn die Komponente den
Fokus erhält, sprich aktiviert wird.
AccessibleDescription:
Wenn die Bedeutung einer Komponente von Ihrem Namen abgeleitet werden kann,
braucht man diese Eigenschaft nicht zu setzen. Ist bei einer Komponente die Tooltips
gesetzt sind, bekommt die Eigenschaft AccessibleDescription den Inhalt vom Tooltip.
Ansonsten muss diese Eigenschaft explizit gesetzt werden. Die Eigenschaft kann genutzt
werden um ausführlichere Informationen bereit zu stellen z. B. für eine Screenreader-
Software.
LabelFor:
Manche Komponenten benötigen eine Beschriftung. Zum Beispiel Eingabefelder.
Mit Labelfor kann ein Eingabefeld mit seiner Beschriftung verbunden werden.
Ist die Beschriftung durch ein Tastenkürzel(=Shortcut) ansteuerbar, wird das dazugehörige
Eingabefeld aktiviert. Dies ist deshalb wichtig, weil blinde und sehbehinderte Menschen oft
mit Tastatur arbeiten und nicht mit der Maus.
Die Firma Sun hat auf Ihrer Webseite Richtlinien veröffentlicht zur Entwicklung von barrierefreier Software. Diese werde ich aber in einem eigenen Artikel besprechen.
Dieser Artikel soll nur die Grundlagen der barrierefreien Software-Entwicklung mit der Programmiersprache Java zeigen.

Die Programmiersprache Java, war die erste Programmiersprache die das Entwickeln von barrierefreier Software unterstützte. Die Grundlagen der barrierefreien Software-Entwicklung mit Java erfahren Sie in diesem Artikel.

Wenn Sie Barrierefreie Software-Entwicklung mit JavaFX umsetzen möchten dann lesen Sie folgenden Artikel:

Wenn Sie lieber Video schauen wie lesen, dann schauen Sie in folgendem Video an wie Barrierefreie Softwareentwicklung mit Java Swing funktioniert:

Eine grafische Oberfläche von Software sollte so gestaltet sein, dass Menschen mit unterschiedlichen Einschränkungen bzw. Behinderungen sie bedienen können. Eine Software die keine Hindernisse(=Barrieren) in der Bedienung für Menschen mit Behinderungen hat, ist eine barrierefreie Software.

Spezielle Hilfsmittel (engl. assistive technology) wie Screenreader, Braille-Zeile, Bildschirmlupe oder ein Spracheingabesystem unterstützen behinderte Menschen bei der Bedienung von Software. Eine Kontrastreiche Darstellung oder das aktivieren von Bedienelementen per Tastatur können ebenfalls dazu beitragen eine Software barrierefrei zu machen. Blinde und sehbehinderte Menschen bedienen oft eine Software per Tastatur. Deswegen ist es wichtig darauf zu achten, dass eine Software auch ohne Maus bedienbar ist.

Es gibt 4 Elemente die wichtig sind für die Umsetzung von Barrierefreiheit(=Accessibility) in Java.

JAAPI(Java Accessibility API)

Die JAAPI(Java Accessibility API) ermöglicht es durch eine Art Vereinbarung, dass Komponenten einer Java-Anwendung, Informationen von Unterstützungstechnologien (wie Screenreader-Software oder Braille-Anzeigegerät) erhalten. Die Hauptschnittstelle ist das Accessible Interface.

Alle Komponenten, die Barrierefreiheit unterstützen, müssen diese Schnittstelle benutzen. Die meisten Swing-Komponenten (JFC), wie Jbutton und Jtextarea, benutzen das Accessible-Interface(javax.accessibility.Accessible). Deswegen ist es ratsam Swing-Komponenten zu verwenden, wenn man barrierefreie Software mit Java entwickeln möchte.

Java Accessibility-Dienstprogramme

Damit können Informationen aus einer Anwendung erfasst und für die Anzeige mit Spezialgeräten weiterverarbeitet werden. Mit ihnen können Unterstützungstechnologien komponentenspezifische Ereignisse überwachen und zusätzliche Informationen über das GUI(=Programmoberfläche) erhalten, zum Beispiel die momentane Mausposition oder, welches Fenster gerade aktiv ist.

Java Access Bridge (JAB)

Die Java Access Bridge ist eine Brücke zwischen Java und der integrierten Unterstützungstechnologien von Microsoft Windows. Sie wird gebraucht, damit Java-Anwendungen für Microsoft Windows barrierefrei entwickelt werden können. Sie wurde in J2SE 1.3 eingeführt.

Java Foundation Classes (JFC)

Dies ist eine Bibliothek von Komponenten der graphischen Benutzeroberfläche, in welche JAAPI vollständig implementiert ist.

Folgende zwei Eigenschaften von Swing-Komponenten sind für die barrierefreie Software-Entwicklung wichtig:

AccessibleName:

Ist ein Kurzname der Komponente, der über deren Verwendung was sagen soll. Der AccessibleName wird von Screenreadern vorgelesen, wenn die Komponente den Fokus erhält, sprich aktiviert wird.

AccessibleDescription:

Wenn die Bedeutung einer Komponente von Ihrem Namen abgeleitet werden kann,braucht man diese Eigenschaft nicht zu setzen. Ist bei einer Komponente die Tooltips gesetzt sind, bekommt die Eigenschaft AccessibleDescription den Inhalt vom Tooltip. Ansonsten muss diese Eigenschaft explizit gesetzt werden. Die Eigenschaft kann genutzt werden um ausführlichere Informationen bereit zu stellen z. B. für eine Screenreader-Software.

LabelFor:

Manche Komponenten benötigen eine Beschriftung. Zum Beispiel Eingabefelder.Mit Labelfor kann ein Eingabefeld mit seiner Beschriftung verbunden werden.Ist die Beschriftung durch ein Tastenkürzel(=Shortcut) ansteuerbar, wird das dazugehörige Eingabefeld aktiviert. Dies ist deshalb wichtig, weil blinde und sehbehinderte Menschen oft mit Tastatur arbeiten und nicht mit der Maus.

Die Firma Sun hat auf Ihrer Webseite Richtlinien veröffentlicht zur Entwicklung von barrierefreier Software. Diese werde ich aber in einem eigenen Artikel besprechen.

Dieser Artikel soll nur die Grundlagen der barrierefreien Software-Entwicklung mit der Programmiersprache Java zeigen.


Weitere Artikel zu barrierefreie Softwareentwicklung

Barrierefreiheit mit Java 8
Barrierefreie Software – Was ist das?
Barrierefreie Softwareentwicklung / Barrierefreie Software-Entwicklung – Was ist das?
Warum ist barrierefreie Softwareentwicklung für Software-Unternehmen wichtig?
Barrierefreie Softwareentwicklung: Artikelreihe

Was ist eine „barrierefreie Software“?

Eine Barriere ist ein Hindernis. Für Menschen mit Behinderung und auch für ältere Menschen, kann es beim bedienen von Software Barrieren, sprich Hindernisse geben.

Ich möchte mal ein paar Beispiele für Barrieren nennen:

Eine Software die nur mit der Maus, nicht aber mit der Tastatur bedienbar ist, ist für blinde und sehbehinderte Menschen gar nicht zu bedienen, weil man mit einem Sehproblem, nicht wahrnehmen kann, wo sich gerade der Mauszeiger befindet.

Eine Software, die keine Menüs hat sondern nur Schalter mit Bildern ohne Beschreibungstext, ist für blinde Menschen nicht zu bedienen, weil der Screenreader(eine Software die dem blinden den Bildschirminhalt „vor liest“) nur lesen, aber nicht sehen kann.

Eine Software die Fehlermeldungen nur Akustisch übermittelt, aber keine Meldung auf dem Bildschirm bringt, ist für gehörlose Menschen nicht zu bedienen.

Eine Software die viele Funktionen mit Tastenkombinationen belegt hat, bei den man 2-3 Tasten gleichzeitig drücken muss, ist für Menschen die behinderungsbedingt nur mit einer Hand tippen können ebenfalls nicht zu bedienen!

Eine Software, die zwischen Schrift-und Hintergrundfarbe zu wenig Kontrast hat, ist für Menschen mit einer Farbenfehlsichtigkeit nicht zu bedienen.

Dies alles können Barrieren bei einer Software für Menschen mit unterschiedlichen Einschränkungen sein.

Eine barrierefreie Software nimmt auf diese ganzen Einschränkungen Rücksicht und ist so individuell anpassbar, dass jeder Mensch sie bedienen kann. In der englischsprachigen Literatur findet man das Wort „Accessibility“ statt Barrierefreiheit.
Im Artikel Was bedeutet Accessibility? können Sie mehr darüber lesen.

Wenn Sie eine barrierefreie Software benötigen, dürfen Sie gerne meine Webseite besuchen.
Barrierefreie Software

Barrierefreie Software mit der Programmiersprache Java


Seit 10 Jahren bemüht sich Markus Lemcke, Inhaber von Marlem-Software, Internetseiten und Software für Menschen mit Behinderung zugänglich zu machen. Im November 2009 hielt Lemcke beim Fernsehsender MDR in Leipzig einen Vortrag zum Thema „Barrierefreiheit mit Java“.

Seit Mai 2002 gibt es in Deutschland ein Gleichstellungsgesetz, welches dafür sorgen soll, dass Menschen mit Behinderung gleiche Chancen bekommen, wie Menschen ohne Behinderung. In diesem Gesetz gibt es auch einen §11 Informationstechnologie in dem u.a. gefordert wird, dass Software barrierefrei gestaltet werden sollte. Staatliche Einrichtungen werden in obigem Paragraph hierzu verpflichtet, während es für gewerbliche Anbieter lediglich heißt, dass entsprechende Software barrierefrei sein soll. Barrierefrei bedeutet, dass Menschen mit unterschiedlichen Behinderungen bzw. Einschräkungen (gehörlos, sehbehindert, blind usw.) eine Software bedienen können.

Markus Lemcke hat am 2. November 2009 beim Fernsehsender MDR in Leipzig darüber referiert, wie man mit Java barrierefreie Software entwickelt. Grund hierfür war, dass der Fernsehsender MDR mehrere Java-Anwendungen in Benutzung hat, die nun barrierefrei werden sollen. Im Gespräch wurden die Funktionsweise der Umstellung und deren Aufwändigkeit geklärt.

Die Programmiersprache Java war die erste Programmiersprache die an Bedürfnisse von Behinderten gedacht hat. Durch entsprechende Schnittstellen und Eigenschaften werden Menschen mit Behinderung beim Bedienen der Software unterstützt. Java ist sogar in der Lage die Software (Screenreader) von blinden Menschen mit geeigneten Informationen zu versorgen, damit diese die Programmoberfläche wahrnehmen können.

Weitere Informationen zu barrierefreier Software und der Programmiersprache Java finden Sie im Internet unter nachstehendem Link.

Barrierefreiheit mit Java