HamburgerMenu
hirist

Job Description

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).


info-icon

Did you find something suspicious?