At Birmann Infor Tech, we excel in designing, developing, and testing firmware and software across a variety of hardware and software platforms. We collaborate closely with companies, adhering to industry standards such as EN 50128 (Transportation), ECSS (Space), RTCA/DO-178B (Avionics), IEC 62304 (Medical), and ISO 26262 (Automotive). Depending on the sector and client requirements, we utilize either the traditional Waterfall model or the Agile methodology for iterative and incremental project management.
Software Life Cycle
Our software lifecycle is meticulously structured into the following phases:
- Analysis
- Design
- Development
- Integration
- Validation
- Acceptance
- Maintenance
We tailor our approach to meet the specific needs of our clients, their methodologies, and industry standards. If a client lacks internal standards, Birmann Infor Tech proposes the most suitable solution to meet functional, budgetary, and timeline constraints.
Tools for Different Development Phases
- Project Management: DOORS
- Code Analysis: Understand, STP
- Bug Tracking: Bugzilla
- Modeling: Visual Paradigm
Firmware Development
Our firmware development focuses on the lower layers of embedded software systems, emphasizing real-time performance. We integrate hardware components, including microprocessors and DSPs, with our packages, which encompass BSP, OS customization, middleware, and specific small applications. We work with various operating systems such as VxWorks, MQX, Psos, Linux RT, and OS20, or even simple schedulers when necessary. Our programming languages include C and assembler routines, and we frequently work with communication protocols like CAN/CANopen, Modbus, Profibus, Ethernet, TCP/IP, SIP, and SNMP.
Software Development
Our software development targets the upper layers of embedded systems, often utilizing cross-compilation techniques. We develop core applications using graphical user interfaces, databases, communication stacks, and application frameworks. The typical operating systems, languages, and frameworks we use include: Operating Systems: VxWorks, Windows, WinCE, Linux Languages: C/C++, C#, Java, JavaScript, Python Frameworks: Tornado, MFC, .NET, QT, GTK Tools: Matlab/Simulink We begin by designing our applications with a functional architecture, followed by a physical architecture, and produce the necessary documentation. Depending on the project and client needs, we apply either a structured or object-oriented approach (e.g., DeMarco/Jourdon, UML, and Model-Based Design). When dealing with poorly documented pre-existing software, we employ reverse engineering techniques and specialized tools like UNDERSTAND. Our projects start with defined written requirements and test procedures for internal validation and, if requested, formal acceptance by the client.
Integration & Testing
As software systems become more complex, the need for thorough testing at every development stage increases. We employ both static and dynamic testing techniques (unit and integration testing) to identify defects early in the lifecycle, reducing the cost implications of faults. We utilize a wide range of environment suites, tools, and protocols tailored to the specific application type, rules, and constraints of each test or integration project. We bring extensive experience in developing and testing industrial and safety-critical applications for railway and airborne systems, adhering to stringent standards like SIL4 for Cenelec EN50128 and DO-178B. Our expertise spans various tools, including GCC for Linux, QAC, Cantata++, SVN, and Lauterbach Trace32. Additionally, we have a strong background in networking (C on VxWorks) and UMTS for the telecommunications sector, utilizing tools such as Omnitracker and Flexelint