A

Software Architect

Alstom · Hyderabad, Telangana, India

full_timePosted 3w ago
Apply now →

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 RESPONSABILITIES** - 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