Python ist eine universell einsetzbare und leicht verständliche Programmiersprache. Sie zeichnet sich besonders durch übersichtlichen und gut lesbaren Programmcode aus, ist leicht erlernbar und dennoch ein umfassendes und mächtiges Programmierwerkzeug. Python zählt zu den plattformunabhängigen Programmiersprachen und kann auf jedem Betriebssystem ausgeführt werden. Für die Anwendungsentwicklung steht eine Vielzahl an frei verfügbaren Bibliotheken und Frameworks zur Verfügung, die ständig durch die Python-Community weiterentwickelt werden und auch im Bereich der Testautomation und Prüftechnik zum Einsatz kommen. Deren Verwendung macht Python-Entwickler im Vergleich zu Nutzern vieler anderer Sprachen produktiver, weil Sie ein Python-Programm mit weniger Codezeilen schreiben können. Python wird unter einer von der OSI genehmigten Open-Source-Lizenz entwickelt und ist somit frei verwendbar und verteilbar, auch für kommerzielle Zwecke. Laut dem TIOBE Programming Community Index, der die Beliebtheit von Programmiersprachen angibt, ist Python seit April 2022 die weltweit beliebteste und am häufigsten verwendete Programmiersprache.
Einer der vielen Bereiche in denen Python glänzt ist die Entwicklung von Webanwendungen. Python lässt sich beliebig mit HTML, CSS und JavaScript als Frontendsprachen kombinieren. Ob ein Dashboard für die Verwaltung interner Systeme, zusätzliche Funktionen für den Analysedienst Microsoft Power BI, ein zentrales Portal für einen unternehmensweit verfügbaren Webdienst nach Kundenwunsch oder ein API-Endpunkt benötigt wird - mit Python können die vielfältigsten Anforderungen umgesetzt werden. Die für den individuellen Anwendungsfall passende Webanwendung kann beispielsweise eine sinnvolle Kombination aus einem Basis-HTTP-Anwendungsserver, einem Speichermechanismus wie einer Datenbank, einer Template-Engine, einem Request Dispatcher, einem Authentifizierungsmodul und einem AJAX-Toolkit sein. Dabei kann es sich um einzelne Komponenten handeln oder sie werden zusammen in einem High-Level-Framework bereitgestellt. Zur weiteren Orientierung finden Sie einen Überblick verfügbarer WebFrameworks auf wiki.python.org.
Eine grafische Benutzeroberfläche (GUI) ist das Erste, was der Benutzer sieht und womit er häufig sogar täglich interagiert. Eine gute GUI trägt daher wesentlich zum Erscheinungsbild und der Akzeptanz eines neuen Testsystems, einer Analyseoberfläche oder neuen Webseite bei. Glücklicherweise gibt es viele Frameworks für Python, die darauf spezialisiert sind sehr ansehnliche und höchst intuitive Benutzeroberflächen zu designen. Unsere Entwickler können somit eine durchgängige und logische Benutzerführung für unterschiedliche Benutzerlevel wie bspw. Operator, Engineer, Admin erzeugen. Wir können gar nicht genug betonen, wie wichtig eine minimalistische und gleichzeitig robuste Benutzeroberfläche besonders im Bereich der Testautomation ist, die nur die zum jeweiligen Zeitpunkt wichtigen Informationen anzeigt und Fehlbedienungen bestenfalls unmöglich oder zumindest unwahrscheinlicher macht. Die leistungsfähigen Python-Frameworks ermöglichen es somit unseren Entwicklern mit einem vertretbaren Kosten-Nutzen-Verhältnis sehr gute moderne Benutzeroberflächen zu erstellen.
Eines der bekanntesten Frameworks ist PyQt, welches für das Erstellen von grafischen Benutzeroberflächen benutzt wird. Dabei handelt es sich um ein plattformunabhängiges Framework, weshalb Python-typisch derselbe Programmcode auf verschiedenen Hardwareplattformen und Betriebssystemen ausgeführt werden kann. Die einzelnen Designelemente einer Oberfläche passen sich automatisch an das Aussehen des jeweiligen Betriebssystems an und ermöglichen somit ein natives Design, welches auch nach einem Betriebssystemwechsel oder Update weiterhin passend aussieht.
Dank der großen Anzahl an bereits existierenden und ausführlich getesteten Bibliotheken und Frameworks bietet sich Python als erste Wahl an, wenn es um das Thema Rapid Prototyping im Bereich der Softwareentwicklung geht. Die schnelle Implementierung von lauffähigen Software-Prototypen erlaubt folglich die schnelle Bewertbarkeit eines Lösungsansatzes bevor zu viel Zeit mit theoretischen Überlegungen verbraucht wird. Zusätzlich können Probleme früher identifiziert und Änderungswünsche rechtzeitig erkannt und umgesetzt werden.
Für das Rapid Application Development, also die schnelle Erstellung eines ersten Softwareentwurfs, ist Python somit auch bei Merecs Engineering eine gern eingesetzte Sprache. Die rasche Entwicklung von individuellen Lösungen stellt sich mit Python als besonders einfach dar. Hervorzuheben sind die Pakete im Bereich der Datenanalyse (NumPy, SciPy, Pandas), der Datenvisualisierung (Matplotlib, seaborn, PyQtGraph) und der Bildverarbeitung (OpenCV). Zusätzlich zu den genannten Bibliotheken ist auch eine Einbindung von Programmcode anderer Sprachen möglich - bspw. wenn kundenseitig bereits Code-Module vorhanden sind, die weiterhin verwendet werden sollen. Diese externen Code-Module können bspw. auch Knowhow beinhalten, welches unsere Augen nicht sehen sollen. Die Beistellung in Form einer Dynamic Link Library (DLL) oder ähnlichen Formaten kann dies ermöglichen.
Softwaretests sind ein wichtiger Bestandteil der modernen Softwareentwicklung und dienen nicht nur als Unterstützung während der Entwicklungszeit, sondern können auch nachträglich eingesetzt werden, wenn neue Anforderungen im Rahmen von Change Requests umgesetzt wurden. Durch Softwaretests kann sichergestellt werden, dass die gesamte Funktionalität der zu testenden Software und deren ausgegebene Daten mit den definierten Anforderungen übereinstimmen.
Softwaretests tragen wesentlich zur Qualitätskontrolle des jeweiligen Entwicklungsstands einer Software bei. Ausführliche Tests können auch dabei helfen, unbedachte Wechselwirkungen mit anderen Softwarekomponenten aufzudecken. Im Vergleich zum manuellen Testen einzelner Funktionen durch den Entwickler sind automatisierte Softwaretests zu beliebigen Zeitpunkten regelmäßig durchführbar, in der Regel wesentlich umfangreicher und sorgen so dafür, dass Fehler frühzeitig erkannt und rechtzeitig behoben werden können. Sie optimieren also nicht nur die Entwicklungstätigkeit, sondern ermöglichen es auch einem Testsystem sich regelmäßig selbst zu testen und im Fehlerfall zuständiges Personal zu informieren. Besonders beliebt ist die Ausführung von automatisierten Softwaretests im Kontext von Continuous Integration (CI), wobei Tests regelmäßig immer dann ausgeführt werden, sobald eine Änderung an der Zielanwendung vorgenommen wurde.
Auch wenn die eigentliche Software nicht in Python entwickelt wurde, können große Teile eines Softwaretests mit Python abgedeckt werden. So können mit Python Testumgebungen generiert, Testdaten extrahiert, Testergebnisse ausgewertet und Testberichte erstellt werden. Auch Schnittstellen können einfach getestet werden, wenn z.B. eine REST-Schnittstelle vorhanden ist. Durch den Einsatz verschiedener Bibliotheken kann auch der Betrieb von Software automatisiert werden. Manuelle Systemtests können so vollständig automatisiert werden. Selbst das Testen von Webseiten kann, dank Selenium, mit Python automatisiert werden.
Python bietet zahlreiche Pakete und Gerätetreiber für allgemeine Anwendungen im industriellen Umfeld (EtherNet/IP, ProfiNet IO, Modbus), den Automotive-Bereich (CAN, FlexRay, LIN) und die Medizintechnik uvm. So lassen sich mit dem PyVISA-Paket Messgeräte und Prüfhardware über GPIB, RS232 oder USB ansteuern. Python steht damit in keiner Weise gegenüber anderen Programmiersprachen zurück, was die Konnectivität mit Bezug zu Hardwareansteuerung und Gerätetreiber angeht. Auch NI hat Bibliotheken veröffentlicht, welche die Ansteuerung von NI-Hardware wie PXI, CompactDAQ und CompactRIO mittels Python erlauben. Geräte beliebiger Hersteller lassen sich üblicherweise über Modbus und weitere ähnliche Bussysteme direkt in Python integrieren. Das Spektrum der zur Verfügung stehenden Gerätetreiber wird einerseits durch die Geräteanbieter selbst bestimmt und auch zusätzlich von der breit aufgestellten Python-Community erweitert und gepflegt.
Merecs gehört seit 2014 zur Community zertifizierter NI Partner. Wir orientieren uns an allgemeingültigen Design-Guidelines und arbeiten eng mit NI zusammen.
Merecs erfüllt die Anforderungen der Norm und verfügt über ein Qualitätsmanagementsystem, welches einem stetigen Verbesserungsprozess unterliegt.