BASS Audio Library

Durch die Mitarbeit an einem Projekt, bin ich auf die interessante und sehr umfangreiche Un4seen BASS Audio Library gestossen. In Kombination mit der BASS.NET Library als .NET Wrapper, lassen sich damit sehr einfach Audiofunktionalitäten, wie Wiedergabe, Aufzeichnung und Streaming realisieren. Der Umfang ist überwältigend und lässt keine Wünsche offen. Die Libraries lassen sich mit mono.NET sowie Xamarin verwenden, somit kann man Audio Projekte auch für OS X und Linux umsetzen.

Fehlerkosten 10er Regel Zehnerregel (Rule of Ten)

Die Zehnerregel der Fehlerkosten besagt, dass je weiter ein Fehler sich unentdeckt in die späten Phasen des Werdeganges eines Produktes oder Prozesses bewegt – oder gar bis zum Kunden –, umso höher werden die Kosten zur Behebung dieses Fehlers. Eindrucksvoll untermauert wird die Zehnerregel durch die Ergebnisse einiger Studien aus den 70er Jahren in Japan, USA und Großbritannien, die sich mit den Ursachen von Produkt- bzw. Qualitätsmängeln beschäftigten. Alle Analysen lieferten nahezu die gleichen Ergebnisse: Ca. 70 % aller Produktmängel hatten ihre Ursache bereits in der Entwicklung, Konstruktion und Arbeitsvorbereitung. Der Herstellungsprozess selbst hat bezüglich der Endqualität des Produktes offensichtlich eher einen sekundären Einfluss. Eine VDMA-Studie zum Thema „Qualitätsbezogene Kosten“ Anfang der 90er Jahre in der Bundesrepublik bestätigt dieses Ergebnis.

Die Zehnerregel der Fehlerkosten oder Rule-of-Ten sagt aus, dass sich die Fehlerkosten für einen nicht entdeckten Fehler von Stufe zu Stufe der Wertschöpfung um den Faktor 10 erhöhen. Je früher ein Fehler entdeckt und beseitigt wird, desto kostengünstiger ist dies für die Organisation.

In Zusammenhang mit der Zehnerregel der Fehlerkosten müssen auch die Ansätze von Deming und dessen Aussage „Qualität kann nicht erprüft, sie muss erzeugt werden“ gesehen werden. Deming hat hier einen entscheidenden Beitrag für das Qualitätsverständnis geliefert. Entscheidend ist ein umfassendes Qualitätsmanagement, dass möglichst frühzeitig im Prozess aufgesetzt wird.

Das zeigt ganz deutlich, wie wichtig Qualitätsbewusstsein auch beim Programmieren ist.

Quelle

Bug beim Parsen eines Währungsstring der tzm-CultureInfo in .NET

Beim Testen der Konvertierung numerischer Werte in einen Währungsstring und umgekehrt ist mir ein Fall aufgefallen, den man als Bug einstufen kann. Das Parsen von Währungsstrings, unter Verwendung der CultureInfo als FormatProvider, funktioniert bis auf die tzm-CultureInfo problemlos. Der Versuch einen mit der tzm-CultrueInfo formatierten Währungsstring zu parsen verursacht eine FormatException.

Ergebnis Meldung:    System.FormatException : Die Eingabezeichenfolge hat das falsche Format.
Ergebnis StackTrace:
bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
bei System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt)
bei System.Decimal.Parse(String s, NumberStyles style, IFormatProvider provider)
bei Currency.Test.CurrencyTest.TestCurrency(CultureInfo cultureInfo) in CurrencyTest.cs:Zeile 29.

Bei der tzm-CultureInfo ist der CurrencyDecimalSeparator = "." und der CurrencyGroupSeparator = ",". Tauscht man jedoch die Werte, wird der Währungsstring korrekt geparsed. Das Problem besteht in den .NET Framworks 2.0 bis 4.5.1. Eine Lösung für das Problem habe ich leider nicht gefunden. Die einzige Möglichkeit bei dynamischen Unit Tests besteht darin diese CultureInfos rauszufiltern.

Eine weitere Besonderheit ist mir auch beim Testen mit dem Framework 3.5 aufgefallen. Das Parsen eines Währungsstrings mit einer neutralen CultureInfo wird mit einer NotSupportedException quitiert. Andere Frameworkversionen sind davon nicht betroffen.

Ergebnis Meldung:    System.NotSupportedException : Die Kultur "af" ist neutral. Sie kann nicht als die aktuelle Threadkultur festgelegt werden, da sie nicht zum Formatieren und Analysieren verwendet werden kann.
Ergebnis StackTrace:
bei System.Globalization.CultureInfo.CheckNeutral(CultureInfo culture)
bei System.Globalization.CultureInfo.get_NumberFormat()
bei Currency.Test.CurrencyTest.TestCurrency(CultureInfo cultureInfo) in CurrencyTest.cs:Zeile 21.

Die tzm-CultureInfo steht für Tamazight, Berbersprachen und -dialekte. Nun wird man wohl selten in die Verlegenheit kommen diese CultureInfo direkt zu verwenden, aber im Hinblick auf dynamische Unit Tests ist es vorteilhaft von diesen Einschränkungen zu wissen.

Weiterlesen