Job Description
Job Duties:
Apply state-of-the-art industry-standard software development methodologies and techniques to design, program, and test automotive, mobile, and embedded software based on the architecture and requirements specification under a technical manager or lead engineer's supervision.
Review software architecture and requirements specifications and understand the features and functionality of the software.
Review and analyze high-level software design and test plans based on software requirements.
Understand product/software system requirements/architecture/high-level design and develop a low-level design for software verification and testing.
Follow Test Driven Development methodology to develop software and automated unit tests for white box and coverage testing.
Implement software design into code, including writing the code per architecture and design to produce high-quality code using state-of-the-art algorithms, tools, and programming techniques.
Integrate, optimize, and debug third-party modules and tailor and port software to designated hardware and mobile devices.
Develop automation scripts using test frameworks. Configure, program, debug, and execute the automated test scripts in XML, Python, or other languages across multiple target platforms.
Develop test plans, cases, and scripts to verify the developed software.
Perform various software verification phases, including – Unit, Functional, Integration, Regression, Stability, and Performance Testing.
Adhere to development processes and quality, generate and monitor the required metrics (Code Coverage, Performance, etc.)
Provide detailed status and comprehensive communication reports to the project and management teams.
Report software problems and bugs in the issue tracking system (like Jira, RTC, etc.) and provide failure details and logs to help resolve issues.
Set up software and hardware tools, devices, and modules and maintain test devices, benches, and vehicles in the development and test environment.
Requirements
Knowledge and Skills Applied:
Computer Science, software development, and testing fundamentals and a thorough understanding of different verification methodologies, strategies, and tools.
Embedded operating systems like Android, QNX, Linux, etc.
Android and Infotainment software systems, Frameworks, and application software for the Android platform, mobile, automotive, and Infotainment software.
Automotive networks and protocols (CAN, LIN, MOST, Ethernet AVB) using testing tools for these protocols
Embedded software systems – like vehicle control (Telematics, CAN, LIN, and Ethernet AVB), navigation (GPS, Maps), connectivity (WiFi, Bluetooth, and Cellular), multi-media (Audio, Video, and Radio), and automotive (In-vehicle applications) systems
Automated testing frameworks, simulation, converting manual tests to automated tests, and executing, analyzing, and reporting automated test runs on multiple software versions and releases
Languages: Java, C/C++, Perl, Python, XML, Windows, and UNIX shell
Phases of software verification include – Unit, Coverage, Functional, Integration, Regression, Stability, and Performance Testing
Software versioning, issue tracking, software build, and analysis systems
Relevant Project or Graduate level course work in at least 3 of the following areas:
Communication Networks
Computer Systems Security
Design & Analysis of Algorithms
Digital Communications
Digital Image Processing & Analysis
Embedded Systems
Machine learning, Deep learning, Data visualization & Analysis
Mobile & AR/VR development.
Networking, Distributed & Concurrent Programming
Power Electronics/Vehicle Electronics
Smart Sensors/Robotics
System Simulation & Modeling
UI/UX design & demo creation
Education Requirements:
Master's degree in Computer Science, Information Science, Electrical Engineering, or Computer Engineering.
Benefits
- Full-time salaried position
- Excellent Health, Vision and Dental Benefits
- PTO and Sick Leave
- 401K Matching
Full-time