Posted on: 10/12/2025
Educational Requirements :
Mandatory :
Engineering degree in Computer Science, Software Engineering, or a related field.
Desirable :
Masters degree.
Mandatory :
- Proven experience as a Software Architect with a strong portfolio of successful projects.
- Proficiency in Python and C programming languages.
- Knowledge on communication protocols [Ethernet, TCP/IP, UDP, NTP, etc.
- Knowledge of software development methodologies and lifecycle.
- Understanding of agile development practices.
- Familiarity with version control systems, such as Git.
- Knowledge of user interface design principles for desktop applications.
- Experience in performance optimization and code refactoring.
Desirable :
- Knowledge of software development methodologies and lifecycle.
- Experience with railway signaling software or other transportation-related systems.
- Vital or secure software development.
- Knowledge of databases [MySQL, InfluxDB, MongoDB, NoSQL, Prometheus, RethinkDB or Redis], and communication protocols [Profibus or Modbus] would be a plus.
Competencies & Skills :
- Strong problem-solving skills and ability to think critically and independently.
- Excellent English communication skills, both written and verbal.
- Ability to work effectively in a collaborative team environment and lead projects autonomously.
- Detail-oriented with a commitment to delivering high-quality software solutions.
- Ability to work with remote collaborators.
- Agile, Inclusive, Responsible.
- International mindset.
Main Responsibilities :
- Contribute to the elaboration of product/system specification & architecture, in collaboration with cross-functional teams.
- Define the software requirements specifications.
- Define the functional requirements, operational requirements, interfaces requirements and the requirements linked to performance, safety, cybersecurity, Reliability Availability and Maintainability (RAM) constraints.
- Ensure that all the requirements can be verified (testability, ).
- Ensure the traceability of the software requirements through the development cycle.
- Define the software architecture.
- Elaborate the functional and structural breakdown into software components.
- Allocate the requirements to the software components.
- Define the interfaces between the software components.
- Define the dynamical behavior of the software.
- Validate the feasibility of the solution : model simulation, mock-up.
- Take main technical choices for software development.
- Select development tools, methodology (ex : UML, ), programming languages, coding strategy and coding rules, strictly following internal process/methods & tools recommendations.
- Contribute to the selection of the execution environment (processor, operating system, middleware, basic software), together with the product architect, system engineering manager and hardware architect.
- Arbitrate and validate major software design choices.
- Mentor developers and provide technical leadership within the team.
- Perform software/software integration, together with the software designers.
- Perform hardware/software integration, together with the hardware architect.
- Specify, design, prepare and perform tests and verifications of his/her deliverables.
- Sustain the software.
- Keep informed of the evolution of technologies through techno watch.
- Contribute to standardization by reusing existing solutions or by defining reusable solutions, including COTS-.
- Apply and ensure application of processes and standards.
- Contribute to continuous improvement (RoE : Return of Experience, process).
Did you find something suspicious?