2013 Softwarehersteller (M&M Software)
Alarm Informations-System für die Schifffahrt.
2 monatiges Folgeprojekt für Kongsberg-Maritime.
Einige Erweiterungen und Change-Requests.
Technologie: C#, .Net 3.5, .Net Compact Framework, WPF, MVVM, XML, XSD
Tools: Visual Studio 2008 und 2010, Unit test Framework,
Log4Net, SVN, Cruise Control, Bugzilla
Geräte: DFI Alarm Panels
OS: Windows 7, Windows CE 6.0, Windows XP
2012 Softwarehersteller (M&M Software)
Erweitertes Alarm Informations-System für die Schifffahrt.
Das System verteilt sich auf 2 Servereinheiten (Master, Backup) mit je zwei Kommunikationskanälen (Redundanz) zu jedem individuellen Client (Touchscreen Panels mit Windows CE Betriebssystem, sowie Kontrollstationen auf Windows XP, Windows 7).
Über das Schiff werden 30 oder mehr Geräte verteilt, die im Netzwerk mit den Kontrollstationen, der Bridge und der Server Steuerungssoftware kommunizieren.
Zur Kommunikation der Server mit den Schiffseinheiten (Process-Stations) dient eine, von „Kongsberg Maritime“ entwickelte Software, die sich der von den Servern bereitgestellten externen
Schnittstellen bedient.
Mit Ausnahme der IP Adressen wird die Konfiguration der Einheiten dynamisch geladen, um größtmögliche Flexibilität und Anpassungsfähigkeit zu gewährleisen.
Während einer 2 jährigen Softwareentwicklungspause wurde eine neue Geräte Hardware entwickelt, die nun im 1. Rollout des Systems zum Einsatz kommt.
Aufgaben:
Fehlerbehebung und Anpassung sowohl der Server-, wie auch der Clientsoftware.
Überarbeitung der technischen Architektur.
Erstellung von System- und Unit Tests, speziellen Applikationen zur Simulation der Testfälle und zur Ansteuerung des Systems.
- Das ursprüngliche System arbeitete mit performanten, aber kostspieligen Geräten, die in einer Neuentwicklung ersetzt wurden.
Die Performanz der Software musste deutlich gesteigert werden, um die geforderte Reaktionszeit, vor allem bezüglich der Alarminformationen, zu gewährleisten. - In der ersten Entwicklungsphase hatte man sich, bedingt durch Probleme des CE Betriebssystem mit Webservices und WCF Technologien entschieden, die Kommunikationsebene ausschließlich auf Basis von TCP/IP Sockets zu implementieren.
- Asynchrone Kontollflüsse (multithreading) in Verbindung mit 5 parallelen, auf expliziter, low-level Socket-Implementierung gründenden Kommunikationsebenen erzeugten in diesem System eine erhebliche Komplexität.
Zeitweise auftretende Fehler im Laufzeitverhalten und der Geschäftslogik waren die Folge fehlender Synchronisation, Deadlocks und Socketblockaden.
Behoben wurden diese Probleme einerseits durch Bugfixes in der Synchronisation, wie auch durch Re-Design der Kommunikationsschichten. - Eine neue Anforderung betrachtete die Möglichkeit, dass während eines Alarmvorgangs in einer, oder mehreren Prozessstationen durch Unterbrechungfehler auftreten könnten.
Dieser Tatsache wurde durch Einführung einer Schicht Rechnung getragen, in der die extern entwickelte Software die Daten während der Ausfallzeit persisiert und die Server- und Clientsoftware um die entsprechende Logik erweitert wurde. - Test der technischen Qualität und Behebung von Memoryleaks zur Gewährleistung
eines unterbrechungsfreien Langzeiteinsatzes. - Das Entwicklungsteam verteilte sich auf mehrere Länder: Deutschland, Norwegen, Indien, China und Taiwan.
Technologie: C#, .Net 3.5, .Net Compact Framework, WPF, MVVM, XML, XSD
Tools: Visual Studio 2008 und 2010, Unit test Framework,
Log4Net, SVN, Cruise Control, Bugzilla
2011 - 2012 Führender Hersteller medizinischer Patientenmonitore (Philips Medical)
Software zur Durchführung der automatisierten Software Tests für den Systemtest, als Teil der Verifizierung und Validierung der Monitor Software Releases.
Aufgaben:
Beratung und Umsetzung einer verbesserten Architektur der Testsoftware mit dem Fokus auf Wartbarkeit, Wiederverwendung und Erweiterbarkeit.
Fehlerbehebung, Anpassung und Test der bestehenden Testsoftware.
Durchführung der automatisierten Tests und Erzeugung der Testberichte.
Ausbau und Dokumentation der Teststationen mit Geräten, Simulatoren, Infrastruktur und Netzwerkverbindungen.
• Alle Monitortypen werden nach formalen Vorgaben (SRS) getestet.
Die arbeitsintensiven und durch zahlreiche Eingangsparameter gekennzeichneten Tests werden nicht mehr manuell, sondern automatisiert durchgeführt.
• Die Testsoftware kommuniziert in mehreren Testnetzwerken mit Simulatorgeräten, Simulatorsoftware und den Testmonitoren.
Die technische Softwarearchitektur unterteilt sich in eine Integrationsplatform, WCF Servermodule, Simulationsapplikationen sowie die Steuerungssoftware für die Durchführung der Tests, implementiert in C# und Python.
Reports werden automatisch im Log4View Format generiert und durch eine Applikation in ein formales XML Dokument transformiert, das als Basis für formale Reports dient.
- Da die Laufzeit eines einzigen Tests zwischen 8 Stunden und 4 Tagen beträgt und, durch die komplexe Hardwaretopologie bedingt, ein hohes Auftreten von Fehlern und Ausnahmen berücksichtigen muss, benötigt die Testsoftware eine angemessene Stabilität.
- Design und Ausnahmebehandlung aller Module tragen dem Rechnung.
- Der Zeitraum zwischen 2 Freigaben der Monitorsoftware beträgt durchschnittlich eine Woche.
Um der hohen Testdichte entsprechen und simultan die Testsoftware erweitern und pflegen zu können wurde als Entwicklungsmethode SCRUM gewählt.
Technologie: C#, .Net 3.5 und 4.0, Python 2.6, C++, WCF, XML, XSD, XSLT, HTML
Tools: Visual Studio 2008 und 2010, Unittest Framework, Iron Python 2.71,
TFS, Log4View, Philips Tools, Snapshot CM
Geräte: Monitore und Measurementserver der Antares Familie, CISCO VLan,
Moxa Portmapper, Simulatoren von HP, Agilent, Philips,
Respironics, u.v.a.
OS: Windows 7, XP
2011 Hersteller von Hardware und Software zum Datenmanagement klinischer Studien
Software zur Konfiguration und zum Deployment medizinischer Studien.
Aufgaben:
Konzept, Design und Entwicklung einer modular aufgebauten Client-Applikation.
3 Hauptmodule realisieren Aufgaben der Produkt Administration, der Systemkonfiguration (Released Systems) sowie die technische Konfiguration der Serverlandschaft mit dem abschließenden Deployment der Devicesoftware und deren Plugins.
Weitere Module geben Informationen über vorhandene Installationen und deren Historie, zeigen Management relevante Informationen und erlauben spezielle Backend Tests.
- Als Basis für das UI wurde die Windows Presentation Foundation gewählt. Um flexibles UI-Design zu unterstützen wurden WPF Templates, Defaults und Styles in themenbezogene Plugins ausgelagert.
- Der Business Layer wurde durch das Microsoft Model-View-View-Model Design (MVVM) realisiert und gewährleistet somit die von Microsoft als WPF Standard empfohlene, qualitativ hochwertige Trennung von Businesslogik und Presentation.
- Datenübertragung und Authentifizierung wurden unter Verwendung der Windows Communication Foundation (WCF) realisiert. Zur Datenübertragung und Steuerung wurden 3 neue Service-Contracts mit den entsprechenden Operations und Data-Contracts entwickelt. Authentifizierung erfolgt über einen bereits vorhandenen, konzernweiten Service.
- Zur Implementierung der Server Businesslogik wurde, wie auch für den Client, .Net mit C# verwendet. Die Datenzugriffsschicht auf die SQL-Server Datenbanken wurde durch LLBLGEN generiertes O/R Mapping realisiert.
- Funktionale und Nicht-funktionale Spezifikationen wurden unter Verwendung des UML Tools Enterprise Architect dokumentiert.
- Erwähnenswert ist die hohe Qualität der Kommunikation in einem internationalen Team, die in einem sehr dynamischen Entwicklungsprozeß auch kurzfristige Anpassungen und Änderungen möglich machte.
Technologie:
C#, .Net 3.5 und 4.0, WPF, MVVM, MVP, WCF.
Tools: Visual Studio 2010, Team Foundation Server, Sparx Enterprise Architect, SQL Server.
OS: Windows 7, XP
2008 - 2011 Versicherungskonzern
Clientsoftware zur Erstellung und Verwaltung von Versicherungsangeboten und
Bestandsdaten mit CRM Anteilen. Die Kernfunktionalität der Applikation besteht in der Erstellung und Bearbeitung von Angeboten und Anträgen durch den Außendienst, der den Hauptumsatz dieses Konzerns bestreitet.
Aufgaben:
Konzept, Design und Entwicklung
Framework und zentrale Bibliotheken
AAV (Angebots-, Antrags-, Vertragssystem)
Integration bestehender Komponenten
Framework
- Der Kunde wünschte ein Framework auf Basis der Microsoft Enterprise Library (Entlib) v.4.1 in der C# Ausprägung.
- Ausgangspunkt für die Framework Architektur und das technische Design der Fachmodule waren die SCSF (Smart Client Software Factory) und CAB.
- Es wurde eine Integrations platform entwickelt, die ein einheitliches Moduldesign gewährleistet.
- Zentrale Steuerung durch Services, Object Builder sowie den Einsatz zentraler Vorgehensweisen und Standardpatterns (MVP, Commands, Dependency-Injection, etc.).
- Enkapsulierung der CAB Komplexitäten und der HOST-seitigen Anforderungen durch eine Schichten Architektur ermöglichte ein hohes Maß an Transparenz und robuste, einfache Modulentwicklung, insbesondere
- Transparente Anbindung an das HOST-gesteuerte Rechtesystem.
- Transparente Umschaltung des Organisations-Modus (unterschiedliche Tochterunternehmen mit verschiedenen Layouts, Styles und fachlichen Subsystemen)
- Transparente Auswahl der Anwender (Multi-User Betrieb).
- Transparente Anbindung der Persistenzschicht.
- Codegeneratoren erzeugen alle wesentlichen Aspekte eines Modul Microdesigns.
- Unterstützung des Entwicklungsprozesses
- Codegeneratoren erzeugen alle wesentlichen Aspekte eines Modul Microdesigns.
- Zahlreiche Tools zur Debug Unterstützung.
- Gezielte und sichere Realisierung fachlicher Anforderungen durch standardisierte Workflows.
- Vollständige Testbarkeit des Clientsystems, der Subsysteme und Module Test-Plugins.
Angebots- und Bestandssystem
- Erstellung und Bearbeitung von Aussendienstangeboten, Anträgen und Versicherungsbestätigungen.
- Übernahme der existierenden Tarifrechner (über 40 Produkte in 8 Hauptsparten).
- Nahtlose Integration der bestehenden Tarifierungssoftware (Rechner, UI, Druck, etc).
- Integration der Möglichkeiten der Alt-Applikation durch eine Produkt Engine (Migration der Tarife, Übertragung der VB-Daten, Antragsdatenübertragung, etc.).
- Exchange Aufgaben- und Terminverwaltung durch OWA Integration.
- Dokumentenerstellung mit serverseitiger Verwaltung und Synchronisation.
- Serienbrieferstellung, Notizsystem, etc.
Unterstützung von On- und Offline Betrieb:
- Online-Kommunikation mit den Konzern - Backendservern durch Webservices via WCF sowie diverser integrierter Webapplikationen.
- Offlinebetrieb mit Datenspeicherung auf SQL-Server und XML im Dateisystem.
- Datenübertragung und automatische Synchronisation zwischen Offline/Online Betrieb durch VPN-Tunnel.
- Gesicherte Datenspeicherung und -übertragung durch Authentifizierung und/oder Verschlüsselung via Zertifikat (Zertifikatverwaltungssystem: eToken).
Entwicklungsprozess
- Agile Entwicklung mit kontinuierlicher Anpassung eines evolvierenden Fachkonzepts in enger Zusammenarbeit mit den Businessanalytikern.
- Modellierung mit RSM und Innovator, Anforderungsmanagement mit IRQA.
C#, .NET 4.0, 3.5, 2.0, C++, C++/CLI, Java (JNI)
Visual Studio 2008 Team Edition, Visual Studio 2005,
MS Enterprise Library, CAB, SCSF, Infragistics,
WCF, SQL Server, RSM, Innovator, IRQA, XML, CVS, Webservices
2006 - 2008 Lübecker Softwareunternehmen
Multigas Detektor System
Software zur Steuerung eines Gaschromatographen für bis zu 40, individuell kalibrierbaren Substanzen. Präzision im Millionstel Bereich / Anteil (ppb).
Das Messgerät ist eine Stand-Alone Maschine, die sowohl entfernt, als auch über einen Touch-Screen gesteuert und bedient werden kann. Neben der eingebetteten Controller Software läuft die Hauptapplikation auf Windows CE 4.2 und 5.0 unter dem .NET Compact Framework 1.0. Das Gerät wird beispielsweise in sterilen Produktionsstätten zum Schutz vor Verunreinigungen und sicheren Umgebungen zum Schutz vor schädlichen chemischen Substanzen eingesetzt.
Aufgaben:
Codereview, Qualitätsmaßnahmen
Konzept, Design und Neuentwicklung
Codereview und Maßnahmen
- Das Gerät stürzte nach 10-14 Tagen kontinuierlichen Betriebs ab.
- Die Analyse ergab, dass ein Memoryleak den Absturz verursachte.
- Als Auslöser wurde die threadübergreifende Anbindung an eine Controllersoftware ermittelt.
- Nach einer Anpassung des Threadings war das Memoryleak behoben.
- Die naive Verwendung einer zentralen Windows-Forms Applikation ohne formales Design hatte, durch das Wachstum der Applikation zu einer schlechten Wartbarkeit geführt.
- Hierdurch bedingt konnten Fehler nicht mehr zeitnah behoben werden.
- Die Möglichkeiten der Weiterentwicklung und Pflege waren stark eingeschränkt.
- Es wurde ein neues Design eingeführt, das in der Lage war, die bestehenden Funktionalitäten aufzunehmen und zu stabilisieren, wie auch neue Funktionalität zu gewährleisten.
- Die Teile der Ursprungsapplikation, die fehlerfrei arbeiteten, wie z.B. mathematische Algorithmen und Auswertungen wurden integriert.
Adixen Projekt
- Umsetzung einer Custom-Spezifikation einer Spezialversion für einen internationalen Großkunden, einschließlich der dazugehörenden Tools
- Erstellung einer Emulator/Simulationssoftware zum PC-seitigen Testen der Devicesoftware.
- Kommunikation zwischen CE Device und PC über TCP/IP (ActiveSync) sowie einem proprietären, FS basierenden Protokoll.
Kalibrierungssystem
- Bevor dasGerät die Umwelt auf Substanzen analysieren kann, ist es notwendig durch ein aufwendiges Kalibrierungsverfahren, bei dem genau definierte Mengen einer Substanz in einer kontrollierten Umgebung zugeführt werden, die, dem individuellen Gerät entsprechende Kalibrierungskurve zu bestimmen.
- Neben der einfacheren Möglichkeit, im Testlabor durch direkte Eingaben das Gerät zu kalibrieren wurde ein Konzept entworfen, bei dem eine PC Software die Resultate der Geräteanalyse automatisch aufzeichnet und auswertet. Die Versorgung mit der Substanz wurde von einem eigenen Server übernommen.
- Es wurde eine Client PC Software entwickelt, die während der Kalibrierungsdauer von mehreren Tagen in ständigem Kontakt mit dem Device und dem Substanzserver steht.
- Der Anwender hat im Rahmen des Fachkonzepts die Möglichkeit in die aktiven Vorgänge einzugreifen.
- Die Daten (Resultate der Chromatographie) werden binär persisiert. Alle Kalibriervorgänge können nachträglich abgerufen und in verschiedenen Graphen und Tabellen analysiert werden.
- Ausgewertete Daten können mit einem einfachen, flexiblen UI direkt auf das Device übertragen werden.
Entwicklungsprozess
- Vom Review bis zur Neuentwicklung wurden Design und Implementierung in enger Abstimmung mit dem Leading Engeneer des Projekts und der Projektleitung und dem Projektmanagement durchgeführt.
- Als fachliche Vorlagen dienten Einzelne UML-Diagramme, Excel Tabellen und Anwender Beschreibungen(Portfolio Management).
C#, .Net 1.1, .Net 2.0, .Net Compact Framework 1.0, C++, C,
Visual Studio 2003, Visual Studio 2005, MS Embedded C++ 4.0,
XML, Windows XP, Windows CE 4.2, 5.0, MS Active Sync, AES, OpenNETCF (eigener Built mit Erweiterungen), MKS, CVS
2006 Münchener Softwareunternehmen
Vertriebsdemo "Individual Card Design"
Web-Frontend Applet mit verschiedenen graphischen Möglichkeiten zur Individualisierung von Kreditkarten.
Administrations-Applet und Servlet zur betriebsinternen Weiterverarbeitung.
Design, Implementierung und Dokumentation
Java, JDK 1.5, JRE 1.5, Ant 1.65, Swing, Netbeans 5.0, XML, CSS, HTML
2006 Münchener Softwareunternehmen
Authentifizierung des SW Repositories eines Münchener Softwareunternehmens
Repository - Checkout, Build und Runtime-Tests aller Hauptversionen.
Dokumentation der Konfigurationen und der Problemstellen für alle Release und Debug Versionen.
Dokumentation und Test der notwendigen Konfigurationen zum Aufbau einer Entwicklungsumgebung mit MSVC++ 6.0.
Dokumentation des CVS Repositories mit allen Branches.
Authentifizierung des Repositories mit SHA1.
C++, XML, CVS, SHA1
2006 Münchener Softwareunternehmen
Kunden / Terminmanagement eines Autozubehörhauses
Applikationserweiterung auf firmeneigenem Enterprise Framework
Analyse/Test der Individual Applikation und des Frameworks Schwerpunkte: Effektivität und Sicherheit im Entwicklungsprozess, Time-to-market, Skalierbarkeit
Java, j2re 1.4.2, JRE 1.5.0, JDK 1.5, Swing, JDBC, Netbeans 4.1 + 5.0, PostgreSQL
2004/05 Capeware Technologies, München/Mannheim
Position: /> Aufgaben: Projektmanagement und technische Leitung
Softwareentwicklung
Spezifikationen, Konzepte, Pflichtenhefte
Präsentationen
Kunden: Alle deutschen Automobil OEMs,
zahlreiche Automotive - Zulieferer,
International: PSA, TNI, Verkehrsbetriebe Nantes, John Deere
2004/05 Kompatibilitätsmanagement und Funktionale Modellierung
BMW
Reengineering der Software des 7er Sicherheitsbusses
Automatische Transformation der Software von 12 Steuergeräten (C) in ein funktionales Modell (CAPE/C)
Generierung der Bibliotheken und eines Hybrid-Daten-Kontrollflusses mit diskreter Controller Schnittstellenbeschreibung
Konfigurierbares Reengineering mit frei wählbarer Granularität
Manuelles Reengineering der HW-Partitionierung auf Basis der Steuergeräte Spezifikationen und Lastenhefte
Analyse des Sourcecodes auf ANSI-C Konformität
Entwicklung separater, modellunabhängiger Tools und Backendbibliotheken zur Weiterverarbeitung und allgemein-verständlichen Visualisierung der reengineerten Daten, Call-Tree, static Allocation für Basistypen, Structs, Unions etc,
Dynamische Call-Stack Reduktion, Symbol Tabelle und Variable Flow
Stand Alone Tool zur Generierung einer PDF Dokumentation aus XML Export Daten
C++, MFC, STL, UML, C#, Windows, CAPE/C (Interpretations- und Transformationslogik), CodeWright,
XML, XSLT, XSL-FO(Apache) zur PDF-Generierung
AntLR BNF Parsergenerator(Java, JNI)
Projektleitung, Spezifikation (ANSI-C -> Funktionales Modell), Analyse, Systemdesign,
Implementierung der Transformations- Dlls, und der Applikationslogik, Präsentation.
2005 Qualitätskontrolle von embedded Controller - Software
Bayerischer Automobil OEM und verschiedene Zulieferer
Spezifikation eines Kontrollflusses, basierend auf C Reengineering.
Automatisierter Delta Vergleich verschiedener Softwarestände mit Schwerpunkten
Schnittstellenintegrität, Speicherbedarf und Komplexität.
Erweiterte Abhängigkeitsmatrizen zur Analyse konditionaler Zustände der Automaten und Fault-Tracking
Partielles, konfigurierbares Blackbox - Prinzip zur Realisierung von Information-hiding.
Einsatz von ANTLR Parser und CAPE/C Transformations- und Interpretationslogik
Projektleitung, Spezifikation, SW-Konzept, Angebot, Prototypen, Präsentation
C++, C#, .NET, MFC, Java, JNI, AntLR, CAPE/C
2004 Klimasystem Modellierung
Norddeutscher Automobil Zulieferer
Konzept und Präsentation der modellbasierten, funktionalen Architektur einer Automobil Klimasteuerung.
Lastenheftanalyse
Modellierung des Systems
Präsentation
2004/05 Offene Schnittstelle und API für CAPE/C
Rework des Applikationsframeworks auf ein DCOM basierendes System
CAPE/C Applikation als Server, Interfaces mit managed Code
Konzept, Spezifikation,
Implementierung der Framework Erweiterung und der Client-Prototypen
C++, C#, .NET, DCOM, ATL, UML, CAPE/C
2005 FIBEX 2 CAPE/C
Spezifikation der Realisierung von FIBEX in CAPE/C Funktionsmodellen
Konzept des Mappings aller FIBEX Elemente auf vorhandene CAPE/C Modellelemente
(Hardware Partitionierung, Bussysteme, Libraries, Instanziierung)
Formale Beschreibung der notwendigen Erweiterungen des CAPE/C Objektmodells
2004 CAPE/C Code Analyse
CAPE/C hatte durch neue Funktionalität eine Komplexität erreicht, die ein Rework sinnvoll erscheinen ließ.
Die Einarbeitungsphase im Bereich Basisentwicklung sah zu diesem Zeitpunkt ½ Jahr vor produktivem Einsatz
vor. Ziel war eine größere Flexibilität im Entwicklungsprozess und höhere Platformflexibilität.
Der Analyseansatz war die Modularisierung der Basisapplikation im Hinblick auf Abhängigkeitsminimierung,
Konzept einer echten, frei skalierbaren 3-tier Architektur,
Migration des Persistenz-Layers von dem objektorientierten Datenbanksystem zu einem relationalen Datenbanksystem.
Team Leader mit externen Mitarbeitern
2004 BMW "Magic Tool"
Adaption zur Transformation von Message Sequence Charts der MOST BNDB Daten in CAPE/C Abhängigkeitsmatrizen
Mitarbeit an der Spezifikation
Aufsetzen des Test DB-Servers
Anpassung der Datenbankschnittstelle
Funktionale Tests
Entwicklung der für den Import benötigten speziellen Updatealgorithmen und eines Autolayouters
Oracle 8.i, CAPE/C, MSC, C++, MFC
2002-2004 Capeware GmbH, Mannheim
Position: Senior Softwareentwickler
Aufgaben: Weiterentwicklung, Pflege und Optimierung der firmeneigenen Software "CAPE/C",
Tests und Bug Fixing
CAPE/C ist eine Applikation zur funktionalen Modellierung komplexer Bordnetze,
wie sie in heutigen Automobilen eingesetzt werden.
Plugin Zusatzmodule bieten die Option, CAPE/C als Integrationsplatform für zahlreiche gängige Tools
(MATLAB, ASCET-SD, u.a.) einzusetzen.
Die Applikation wurde seit Mitte der 90er Jahre entwickelt und zur Codegenerierung für Steuergeräte in
Schienenfahrzeugen eingesetzt. Im Jahr 2001 wurde die Software neu konzipiert, um zeitgemäßen,
höheren Anforderungen gerecht zu werden und den Automobilmarkt zu erschließen.
Die Software realer Bordnetzwerke besteht aus umfangreichen, teils Steuergeräte-übergreifend eingesetzten
Funktionsbibliotheken, RT Betriebssystemen und Applikationslogik, die in CAPE/C durch feingranulare
Funktionsbibliotheken modelliert werden. Die hieraus abgeleitete netzwerkorientierte, funktionale Strukturierung
mit implizitem Mapping der Typen auf funktionale Instanzen bildet die Grundlage des CAPE/C Systems.
Der Umfang der Basisapplikation und der Core-Dlls umfasste Mitte 2004 mehr als 800000 Zeilen Sourcecode.
Das Team bestand aus bis zu 23 Entwicklern.
Zusammenfassung der, von CAPE/C verwendeten Technologien
Sprachen: C++, Java, C#
Bibliotheken: MFC, STL, ATL, COM, ActiveX, Rogue Wave Stingray, Objective Toolkit, Objective Views, Objective Grid, Softel SFT Tree, .NET, Boost
Persistenz: XML, Object Store, Oracle 8i
Scripting: Python
Reporting: XSLT, FOP
OS: Windows NT, 2000, XP
UML: Rational Rose
VersionMgmt: CVS, Visual Source Safe
QA: PC Lint C++, Nu Mega Toolsuite
Adaptionen: Matlab, Simulink, ASCET-SD, CaliberRM, CANalyzer, CodeWright, OSEK, VxWorks, JDos, RoseRT, SourceSafe, CAN, ByteFlight,
BMW BNDB(Sulzer)
Parser: Xerces DOM, YACC, ANT-LR, MSC
2002 Komplexer Routing Algorithmus
Um einen komplexen Datenfluss graphisch überzeugend darzustellen, ist es notwendig die Flusselemente übersichtlich
anzuordnen. Ein Modell von 10 Steuergeräten enthält zwischen 400.000 und 1 Million Verbindungen über das Gesamtsystem verteilt.
Ich entwickelte eine Bibliothek generischer Routing Algorithmen mit minimaler Clientschnittstelle, die sich in das bestehende
System nahtlos integrieren ließ.
Anders als bei einem Leiterplatinen- oder Schaltplan Layouter müssen hier keine physikalischen Optimierungen vorgenommen,
doch der Router muss hochperformant sein und User Interaktion muss berücksichtigt werden . Das Konzept besteht darin, dass der User die Hauptelemente willkürlich platziert und der Router den verbleibenden Raum benutzt, um das Linienlayout zu berechnen.
Im reinen Import Modus, wie auch bei der Übersetzung von externen Datenbankinformationen wird ein vorgeschalteter Element Autoplacer benutzt, um ein initiales Elementlayout zu optimieren.
Neben einem Default Routing existieren verschiedene Konfigurationen, die untergeordnete Algorithmen ein- bzw. ausschalten, um nach Bedarf das Layout zu individualisieren, oder Performance und Qualität zu balancieren.
Konzept, Design, Implementierung
C++, STL, MFC
2002/03 CAPE/C Graphisches Framework
Das graphische Framework baut auf den Component Bibliotheken von Rogue Wave "Stingray" auf und war in ein MFC DV Framework als MVC Adapter integriert.Die Stingray Bibliotheken förderten in der Anfangsphase eine zügige Entwicklung, jedoch traten bereits bei den ersten realen Modellen ernstzunehmende Performance Probleme auf. Da Rogue Waves MVC und Command Architektur die eigenen graphischen Component Bibliotheken starr einbindet, musste das gesamte graphische Framework entschlackt, das Objektmodell überarbeitet und zum Teil die Bibliothek neu kompiliert werden. Eine Performance Steigerung um einen Faktor >100 ließ sich erzielen.
Rework Konzept, Implementierung
C++, Stringray, MFC, Object Store, XML
2003 Element Gruppen
Ein einzelner Graph(eine CAPE/C Node) mit z.b. 200 Terminalen und 1000 Liniensegmenten kann auch auf einem 19'' Bildschirm unübersichtlich werden. Der User hat deshalb die Option, terminale Elemente mit den dazugehörigen Verbindungen in logische Gruppen zusammenzufassen.
Ein Element-Group-Subsystem analysiert das Buisness Modell und ermöglicht dem User über eine interaktive Selektion Elementgruppen zur Laufzeit zu aktivieren, deaktivieren oder zu verändern. Alle Gruppierungen sind persistent.
Konzept, Design,
Graphik, Buisnesslogik, Persistenz, UI
C++, MFC, Stringray, Objective Views, Object Store, XML
2003/04 Rechteverwaltungssubsystem: Konfigurationstool, Codegenerator
CAPE/C kann als Standalone oder Multiuser betrieben werden.
Der Multiuser Betrieb stellt sowohl Online, wie auch Offline Modus bereit. Ein User kann in Abhängigkeit von seinen Zugriffsrechten einzelne Elemente bis hin zu Teilsystemen exklusiv auschecken, offline bearbeiten und anschließend online synchronisieren.
Um den Offline Betrieb zu ermöglichen und spätere, sichere Synchronisation zu gewährleisten ist es notwendig den Online Betrieb im Offline-Modus
zu simulieren.
Rechte von Gruppen und Individualusern werden durch ein diskretes Rechte Framework im UI-Layer realisiert. Die systemweiten Ressourcen werden durch ein Standalone Tool geparst, analysiert und der User Zugriff ressourcenabhängig, feingranular definiert. Alle Definitionen werden als XML serialisiert, übersetzt und entsprechender Applikationscode wird generiert.
Ein zweites, dynamisches Subsystem realisiert die Zugriffsoptionen zur Laufzeit auf Basis lokaler Datenbankinformationen.
Konzept, Design und Implementierung
C++, MFC, XML, Object Store, Stingray
2004 Adaption der UML 2.0
Einige Automobil Hersteller hatten begonnen, die neue UML 2.0 Spezifikation für das Bordnetz Design zu nutzen
Ziel war es, ein partielles Roundtrip Engineering mit CAPE/C als UML Platform zu realisieren. Starke proprietäre Individualisierungen seitens der Kunden machten es unmöglich einen einheitlichen Übersetzungsstandard zu spezifizieren.
Die Implementierungsphase wurde nicht eingeleitet.
Mitarbeit am Grobkonzept, Prototyp eines erweiterten Objektmodells, Übersetzung, UI
UML(Rational Rose), C++, C#, XML, MFC, .NET
2002/04 CAPE/C Graphic
Ein Teil meiner Aufgabe war die Entwicklung und Pflege aller graphischen Komponenten und des UI.
Das Framework hostete beliebig viele Projekte, wobei ein einzelnes Projekt bis zu 20 verschiedene View Typen haben konnte.
Das graphische Komponenten Objekt Modell bestand aus etwa 300, zum Teil parameterisierten Klassen die vom MVC Framework getrieben wurden. Die Views bestanden aus Graphen, Strukturbäumen, Listen und Messaging Fenstern mit loser Kopplung an das Buisness Modell und
feingranularer Update Logik, da ein klassisches MVC Design (View basierte Observer) den Performance und Speichermöglichkeiten nicht gerecht werden konnte.
Das Objektmodell war zum Teil auf das Stringray Component Object Model aufgebaut, zum Teil auf GDI Komponenten basierend.
Alle Komponenten waren Drag & Drop enabled. Komplexe, zum Teil verschachtelte Property Dialoge ermöglichten dem Benutzer intuitives Property Handling der referenzierten Buisness Objekte. Über eine Command Prozessor Architektur wurden alle Änderungen implizit in die Object Store Datenbank serialisiert. Transaktionssicherheit im Multiuser Online Betrieb wurde durch Rollback und Exception Handling garantiert.
Über XML Konfigurationen konnte der Benutzer sowohl das Aussehen, wie auch das Mapping proprietärer Elemente auf alle Graphiken beeinflussen.
Um die aufwendigen Diagramme fachgerecht im Stil eines technischen Layouts zu präsentieren, entwickelte ich einen komplexen Autorouter.
Alle Graphiken konnten in verschiedene Bildformate exportiert werden.
Konzepte, Design, Implementierung
C++, XML, Stringray, GDI+, O-Views, O-Grid, MFC, Windows-API
2000 - 2001 Itera Consulting Group, Grosch & Link AG, Frankfurt a.M.
Position: Software Entwickler, Consultant,
Durchführung interner Schulungen
(C++, OOP, Design Pattern)
Externe Projekte:
2001 Softwarehaus
Kjaer-Vibro
System zur Zustandsüberwachung und Diagnose von Anlagen und Maschinen
Erstellen eines serverseitigen ATL-Connection-Point Frameworks.
Erweiterung der Delphi-Client Applikationen um COM Event Sources.
Entwurf eines Reporting Systems
Konzept, Implementierung, Dokumentation
ATL, C++, O-Pascal (Delphi), COM, SQL, Interbase
2001 Softwarehaus
SAP
Ersatzteilbestellungssystem für die Erdölindustrie
Modul zur clientseitigen Verarbeitung von CEP Packages außerhalb des SAP R3.
Erstellung eines graphischen ActiveX Controls zur Verwendung im Webbrowser.
Dynamische Generierung der CEP Packagestrukturen aus XML Schema.
Up- und Download Funktionalität via HTTPS zwischen Client und SAP Webserver.
Lokaler Excel Export der CEP Packagedaten.
GUI, Find Algorithmen, XML Schema Interpreter
Implementierung, Dokumentation
C++, JS, HTML, STL, ATL, ActiveX, MFC, XML, SAP R3
2000/01 Softwarehaus
Anbieter von Systemen für die Automobilfertigung
Migration einer Touchscreen Werkhallen Diagnosesoftware von OS/2 nach Windows NT
Überarbeitung der Kommunikationsschicht und der Benutzeroberfläche einer prozeduralen Software in C.
Rework zu einem objektorientierten Fachkonzept in C++ und Aktualisierung des GUIs.
Umstellung des Kommunikationslayers von named Pipes nach COM.
Analyse, Pflichtenheft, Entwurf und Prototyping
C++, C, COM, Named Pipes, MFC, TCP IP
Bibliotheken und Frameworks
Hier ist eine Auswahl von Projekten zusammengefasst, die keinem Kunden unmittelbar zugeordnet werden können. In Projekten wurden Teilkonzepte und ausgewählte Anteile der Implementierung eingesetzt.
Alle Bibliotheken sind sorgfältig getestet, vollständig objektorientiert und exportieren Interfaces durch parameteriesierte Class Factories (mit Ausnahme einiger, zur Ableitung bestimmten, exportierten Basisklassen)
Diese Systeme dienen der sicheren und/oder zeitnahen Entwicklung von Applikationen und der Erstellung von Prototypen.
Der Focus liegt auf Modularisierung, objektorientiertem Design, Entkopplung und Wiederverwendbarkeit.
2007/2008 Fundamentals
Zahlreiche Erweiterungen der .Net System Module, insbesondere für Collections, Reflection und Resource Management.
Enthält u.a. ein Framework für eine steuerbare Serialisierung(read/write) von Objekten und Containern(Listen und Tabellen)
in ein Standard XML Format. Die Objekte können vollautomatisiert eingelesen und upgedated werden und erzeugen im Default
eine XML formattierte, objektorientierte Datenbank. Das Schema wird aus den Objekteigenschaften erzeugt, explizite
Schemadefinition bzw. Schemaanpassung bei Objektevolution sind nicht notwendig.
C#, .Net 1.1, .Net 2.0
2007 Event basiertes Actionsystem
Entkoppeltes Nachrichtenübertragunssystem.
Basierend auf .Net Delegaten und objektorientiertem Mapping bietet dieses System die größtmögliche Entkopplung einer
intermodularen Kommunikation.
Eine zentrale Controller Einheit erkennt automatisch alle Nachrichten und sorgt, wenn gewünscht, für korrekte Registrierung,
Enfernung und Verteilung(Dispatching) von Events, während Standard Listener den Empfang ermöglichen.
Steuerung und Ablaufverfolgung durch verschiedene Konventionen(single-, multithreaded, direct, delayed, priority, etc).
Die Integration in bestehende Applikationen ist sehr einfach und erzeugt keine weiteren Abhängigkeiten.
C#, .Net 1.1, .Net 2.0
2007/2008 Graph und Diagramm Bibliotheken
Sammlung von .Net Controls und diversen Erweiterungen, Plugins und Adaptern zum Einbetten von
Graphen in Applikationen.
Die Graphen bieten ein hohes Maß an Flexibilität, sowohl im visuellen Bereich, wie auch in der adaptergesteuerten Auswertung
und Übertragung ihrer Eingangsdaten.
C#, .Net 1.1, .Net 2.0
2004/05 Plugin Bibliotheken
Generisches System zur automatischen, laufzeit-gesteuerten Verbindung und Kommunikation eines Prozesses mit externen Modulen.
Einfache Schnittstelle zur problemlosen Integration in bestehende Applikationen.
Vollständige applikationsseitige Konfigurationsmöglichkeit.
Meta-System zum Datenaustausch.
Im Default, automatisches Laden und applikationsseitige Generierung der notwendigen Menus.
Generisches bidirektionales Eventmapping
C++, UML
2004/06 Generische Tabelle
Strukturierter Speicher für beliebige C++ Objekte mit einfach zu benutzendem Interface und flexibler Garbage Collection
Ziel war die Entwicklung eines Containers, der vergleichbar flexible und einfache Benutzung bereitstellt, wie bei den, in C++ nicht existierenden Basis Objekttypen einer managed Runtime in .NET oder Java.
Benutzt keine void* als Speichertyp; kann daher auch für polymorphe Objekte typsicher eingesetzt werden.
Automatische oder explizite Kontrolle des Lebenszyklus der Elemente.
2 Proxy Interfaces zum Handling von Rows und Columns
Strict Type Checking auch bei Queries mit bis zu 32 ( VC Compiler Maximum für Template Verschachtelung ) verschiedenen, beliebigen Objekten. Einfache Möglichkeit, Adapter zum Einsatz in beliebigen Frameworks zu erstellen.
Effektive Tabellen Standard Funktionalitäten. Binding von DB Tabellen an UI Elemente (Listen, Gridviews, u.a. )
C++, UML, Templates, STL
2003 XML Adapter
Auf Xerces DOM aufbauender Adapter zur problemlosen Einbindung generischer Objekte in standardisierte XML Serialisierung.
Von XML Validierung unabhängiges Objektmodell zur transienten Verarbeitung
Extract und Merge Funktionialität von Unterbäumen
Standard Interfaces mit Default Implementierungen
C++, STL, Xerces
2001/04 Adapter und Erweiterte Funktionen für die STL
Generische Funktionalität und Algorithmen für STL Containerklassen. Erweiterungen hauptsächlich von std::functional und std::algorithm
effektive Sort- und Find-Algorithmen
Parallele Synchronisierung für komplexe Container Gruppen
C++, Templates, STL
1998/05 Toolkit für MFC DV Architekur
Bibliothek zur vereinfachten Anwendung komplexer DV Funktionalität.
Umfasst einige Funktionalität, wie z.B. automatisches Generieren von Imagelists mit automatisiertem Mapping zur Systemregistierung,
Einfache Einbindung von Controlbars mit erweiterten Möglichkeiten, z.T. multithreaded,
Adaptierung von generischen Objekten, wie String-bäumen aus STL Vector Interfaces,
dynamische Bearbeitung von Imageressourcen wie Icons und Bitmaps u.a.
MFC Views(insbes. Tree und List),Framewnd, Controls
C++, MFC, Templates, STL, Explorer Shell
1998/02 Bibliotheken für Windows Applikationen
Zahlreiche Dlls zur Adaptierung der Windows API
Explorer Shell, Registry, File System, Controls, OLE Drag & Drop, Parser, graphische System Komponenten,
und weitere Windows API Funktionalitäten. Einige C# Wrapper zur Adaptierung von Windows nativen Dlls
C++, Windows API, Templates, COM, STL
2001 MS WindowsExplorer Kontextmenus
C++ API und graphisches Tool zur Erstellung und Bearbeitung von Explorer Kontextmenus
Verwaltung, beliebige Anordnung und Verschachtelung
Frei definierbarer Kontext für Pfad, Filetype und File
Freie Parameterdefinition
C++, Explorer-Shell, COM
2001 Junctions
C++ und C# API, Graphische Tools zum Erstellen und Verwalten von NTFS Reparse Points
NTFS stellt die Möglichkeit bereit, Reparse Points in Form von Junctions zu erstellen, jedoch stellt Windows für diese Funktionalität
kein sicheres UI zur Verfügung. In Verbindung mit anderen Tools lassen sich hiermit Pfade unabhängig von der Partitionierung verteilen
und z.b. verschiedene Installationen einer Software aktivieren und deaktivieren. Nachteilig ist, dass Manipulation von SubLinks u.U.
das Filesystem korrumpiert und dass die "delete" Funktionalität im WindowsExplorer unvorhersehbare Folgen haben kann
Vollständige Validierung des Filesystem und sichere Verwaltung von NTFS Mountpoints
API Adapter
C++, Explorer-Shell, COM
1990 - 2000 Freiberuflicher Softwareentwickler in den USA (Auswahl)
1999 Dienstleistung, Handel
GUI Entwicklung für Handelsunternehmen
Tabellarische Darstellungen und Charts in Kombination mit neuen Auswahlmasken für Personalwesen und Sales Provision
Graphische Bibliothek und Übersetzungsalgorithmen, MySQL Backend, erweiterte Komponenten für Reporting
C++, MFC, MySQL
1998 Handel
Abrechnungs- und CRM Software, spezialisiert für Direktvertrieb
Warendurchsatz, Endkunden- und Mitgliederverwaltung, Umsätze(Gesamt, Einzel, Gruppen), Punktwert- und Bonusberechnung,Termine, Erinnerungen, Aufgaben, kundenspezifische Preislisten, Warenkatalog, Sales Tax, Umlagen, etc.
C++, MFC, STL, MySQL
1997/98 Softwarehaus
Code Anal">Code Analyzer für Visual Studio 5.0
Tool Sammlung zur Unterstützung der Teamentwicklung mit C++
C++, IDL, rc und Project-Script Parser und Analyzer, Smart Merger und konfigurierbarer Backup(Submitsafety,local Version), Konfigurierbares Renaming komplexer Abhängigkeiten, Spezialtools für Workspace und Projektmanagement in Visual C++ 5.0,User Defined Wizard Creator
Entwurf und Realisierung
C++, MFC, STL
1997 Softwarehaus
Kompositions Software "Partitur"
Applikation zur computergestützten Komposition von Musik
Standard Notation mit Anastasia Fonts, User definierte Notation über integrierten Editor, 16 Channel Midi Sequencer, Erweiterungsfähige Template Library für Standard Harmoniesequenzen für vierstimmigen Satz, An Tonalität gebundene Harmonieanalyse
C++, MFC, STL, Midi
1996/97 Handel
Verteilte Anwendung für Einkauf, Verkauf und Inventur
Konvertierung proprietärer Datenformate in konfigurierbare, einheitliche Reports und Datasheets
XML als Backend Format, Implementierung der Parser/Translator, GUIs und eines COM Client-Server Systems
XML, Windows SDK, MFC, DCOM, STL, MSXML
1996 Immobilien
CRM System Erweiterung
Systemanbindung zur Verwaltung vertraulicher Kundendaten, Use-Cases auf der Basis von Kunden User-Stories, Applikation, GUI, Verschlüsselung
Windows SDK, MFC, DDE, STL, MSAccess, UML
1996 Industrie
Ersatzteilverwaltung und Bestellung Flugzeugbau
Funktionserweiterung einer Clientapplikation durch Multithreading
Design und Implementierung der Thread Funktionalitäten und der damit verbundenen Synchronisation
C++, MFC
1996 Dienstleistungen
Handelsunternehmen Intranet
Konzept und Entwicklung einer Sicherheitssoftware für FAT-Filesystem für Windows 95
Benutzerdefinierte Sicherheit auf Applikationsebene, als Ersatz für fehlende User-Sicherheitseinstellungen im Windows 95 Betriebssystem
C++, MFC, Windows API
1996 Dienstleistungen
Softwareentwicklungsprozess Beratung Logistik Software
Beratung OOD, OOP
Überarbeitung der Use-Cases, Sequenzdiagramme und des Objektmodells, Konzepterstellung, Dokumentation, Roundtrip-engineering mit UML, Reduzierung der Abhängigkeiten, Ressourcenplanung
C++, UML, MS Project, Oracle
1995/96 Bau
Rework/Dokumentation einer Software zur Berechnung von Klimaanlagen
QA, Erstellung eines Frameworks für kontext-sensitive Hilfe, Profiling und Anpassung. Partielles Redesign des Fachkonzeptes
C++, Doxygen, HTML Help Workshop
1996 Shareware
Konfigurationstool für Windows 95 und Windows NT
Zahlreiche Systemeinstellungen über Registry und Systemfiles, Analyse von COM-Komponenten bzgl. aktiver Links, Undo-Fähigkeit sämtlicher Änderungen
Konzept und Implementierung
C++, MFC, COM
1995/96 Softwarehaus
Computergestütztes Erlernen von Fremdsprachen
Fachkonzept, Implementierung und graphisches Interface, User Einstellungen, Dictionnary, Tutor, Schwierigkeitsgrade, Automatisiertes Lernen der Stärken und Schwächen des Benutzers
C++, MFC, UML, MS Word, ODBC, MS-Access
1995 Softwarehaus
Word processor für Farsi (persisch)
Rich-Text Applikation mit Spezialisierung für persische Schrift
Keyboard Konfiguration und Eingabe über On-Screen Keyboard, Mitarbeit an Konzept und Implementierung, Graphic Import Library, GUI
C++, MFC, STL, Irna-Fonts
1994 Dienstleistungen
Road-Service Dispatch System
Event getriebenes System zur Optimierung von Außendienst Serviceleistungen, Zentrale Zeiterfassung und Verteilung von Serviceaufträgen, Zeiten und Wegstrecken, Implementierung Eingabemasken und Eventhandling
C, MS-DOS, Windows 3.11
1985 - 1990 Olivetti Systems & Networks, Berlin
Administrative Software
Verwaltung von Endbenutzern, Serviceleistungen, elektronischen Bauelementen und deren Historie
Ein-,Ausgang von Elektronikelementen, Kosten, Anfälligkeit und Standards
Registrierung von Modifizierungen und externen Reparaturen
Einfaches Reporting und Statistiken
Testsoftware zur Diagnose von Elektronikperipherien
C, MS-C, x86 Assembler, GWBasic
MS-DOS, UNIX, HAI, PCOS