Full Stack Software Developer
Role details
Job location
Tech stack
Job description
The NATO Information and Communication Agency (NCI Agency) is currently involved in the development of joint, new capabilities/services for NATO, as well as in the support of existing capabilities and services. In the light of these activities, the Command-and Control Centre is looking for an experienced Full Stack Software Developer, hereby referred to as Contractor.
Specifically, the selected Contractor will work as a member of the software development team on the development and maintenance of existing software modules and on the development of new software modules of the Interoperability, Test and Assessment (IOTA) suite of tools.
Under the supervision of the Project Manager (PM) and the Service Delivery Manager (SDM), the Contractor will work under the guidance of the Lead Developer (LD) and develop and update the IOTA suite of tools. This includes the following activities:
- Design, develop, test and maintain the software for the IOTA suite of tools;
- Write, update and maintain the software documentation for the IOTA suite of tools;
- Participate in the team meetings as required by the Lead Developer (LD), the Service Delivery Manager (SDM) and the Project Manager (PM);
- Update accordingly the development backlog system with progress and comments;
All code, scripts and documentation will be stored under configuration management within the NATO Software Factory.
The coordination will be carried out accessing remotely the NCIA systems with the unclassified development laptop provided by the NCI Agency.
The Contractor will be part of a development team and will work using the SCRUM approach to software development with the aim to meet a set of deliverables. The content and scope of each deliverable will be planned by the Lead Develope
D001: Maintaining IOTA performance, coherence and stability;
- The Contractor shall design, implement, test and document the architectural changes required to maintain the stability, coherence and performance of IOTA systems (OANT, SMACQ) upon various changes introduced to IOTA that may cross-affect each other, as specified in the JIRA issues assigned to D001.
D002: Exporting and viewing recorded/live messages to Journal XML
- The Contractor shall deliver the design, implementation, testing and documentation of the changes required to (1) export all recorded messages with/without a filter applied to Journal XML file(s), (2) export live messages with a filter applied to Journal XML file(s), (3) view a selected live/recorded message as a Journal XML file in accordance with the JIRA issues assigned to D002.
Exposed Functionality Statements:
- EFS-D002-001 When End-User opens a recording and clicks the Export button, it downloads all recorded messages translated as a well-formed XML file valid against the corresponding Journal schema.
- EFS-D002-002 When End-User opens a recording, applies a filter and clicks the Export button, it downloads all recorded messages that satisfy filter criteria as a well-formed XML file valid against the corresponding Journal schema,
- EFS-D002-003 When End-User opens a live message view, applies a filter and clicks the Export button, it downloads all live messages that satisfy filter criteria as a well-formed XML file valid against the corresponding Journal schema,
- EFS-D002-004 When End-User opens a recording, selects a single message and clicks the View button, it opens a new browser tab showing a corresponding well-formed XML file valid against the corresponding Journal schema,
- EFS-D002-005 When End-User opens a live message view, selects a single message and clicks the View button, it opens a new browser tab showing a corresponding well-formed XML file against the corresponding Journal schema,
D003: Improving filtering capability in the IOTA suite of tools
- The Contractor shall deliver the design, implementation, testing and documentation of the changes required to extend filtering capabilities in the IOTA suite of tools, including broader definition of filtering conditions over DFI/DUI fields, pre-application of filters over the data stream, and the ability to save and edit filters, in accordance with the JIRA issues assigned to D003.
D004: Message UDP Sink and FSM Analyzer;
- The Contractor shall deliver the design, implementation, testing and documentation of the changes required to implement:
- A new component responsible for serializing messages in given TITO-supported TDL formats over an assigned UDP multicast address (Message UDP Sink), and
- A new type of OANT Analyzer that has an associated Finite State Machine transitioning between internal states based on analyzed TDL messages in a given TITO-supported TDL format and having an ability to emit/sink a new TDL message of the same format using an associated Message UDP Sink component upon: (a) beginning/finishing to transition over some FSM transitions, (b) entering/leaving some FSM states (FSM Analyzer), in accordance with the JIRA issues assigned to D004.
Exposed Functionality Statements:
- EFS-D004-001: When End-User creates a new FSM analyzer (A001), after it has chosen the corresponding message format (F), it chooses an FSM state machine from configured & compatible FSM machines and selects a UDP multicast port (P) for the associated Message UDP Sink component. When End-User creates another simple analyzer (A002) of the same format (F) over the UDP multicast port (P), it receives messages emitted by FSM associated with A001.
- EFS-D004-002: When End-User edits FSM analyzer (A001) and changes the FSM state machine script to another, the coupled analyzer A002 automatically starts to receive messages emitted by another FSM associated with A001 without any further End-User actions.
- EFS-D004-003: When End-User creates and starts two FSM analyzers of the same format (F), UDP multicast port (P) but different FSM, the coupled analyzer A002 automatically starts to receive messages emitted by both FSM without any further End-User actions.
D005: Migrate SUM & SIP of IOTA systems to docbook;
- The Contractor shall deliver the design, implementation, testing and documentation of the changes required to automate the creation of SUM & SIP pdf documents based on docbook artefacts, such as the collection of xml files containing text, a set of images and a docbook template file defining each document structure and an assembly process. Each IOTA subsystem (OANT, SMACQ) requires a migration of corresponding Software User Manual (SUM) and System Installation Procedure (SIP) within its documentation module, in accordance with the JIRA issues assigned to D005.
Exposed Functionality Statements:
- EFS-D005-001: When End-User triggers the viewing of Software User Manual (SUM) document via SMACQ GUI, it views the SUM file of SMACQ system in a separate browser tab of a supported browser.
- EFS-D005-002: When End-User views the Software User Manual (SUM) file of SMACQ system and navigates via the bookmark of "Document History", it sees the page describing the most recent changes within SMACQ system, including the latest SMACQ version number.
- EFS-D005-003: When End-User views the SUM file of SMACQ system and navigates via the bookmark of "Index of Figures", it sees the page listing all figures.
- EFS-D005-004: When End-User triggers the viewing of Software Installation Procedure (SIP) document using OANT GUI, it views the SIP file in a separate browser tab of a supported browser.
- EFS-D005-005: When End-User views the SIP file of OANT system and navigates via the bookmark of "Document History", it sees the page describing the most recent changes within OANT system, including the latest OANT version number.
- EFS-D005-006: When End-User views the SIP file of OANT system and navigates via the bookmark of "Installation Overview", it sees the page describing the overview of the installation procedure.
Requirements
Do you have experience in XML?, Do you have a Bachelor's degree?, * Nationality of one of the NATO Nations;
- At least 5 years of relevant experience in software development environments;
- Proven knowledge of NATO Tactical Data Links (Link 16, Link 11, Link 22), FFT (FFI, NFFI) and other military or civilian interoperability standards for messaging and data exchange;
- Proven extensive experience with NATO Tactical Data Links data connectivity and quality monitoring techniques;
- Proven experience with installation and maintenance of NATO Tactical Data Links Enabling Services in operational environments and exercises;
- Proven experience and proficiency in Front-end development.
- Excellent knowledge of technologies such as Angular 17 or higher, HTML5, CSS, Typescript and JavaScript;
- Proven experience and proficiency in Back-end development. Excellent knowledge of technologies such as Java 17 or higher, Spring Framework 5.3 or higher and Spring Boot 3;
- Proven experience in development of (near) real-time RESTful web systems using the following protocols: HTTP, HTTPS, WS, WSS and SOAP;
- Proven experience and proficiency in writing automated testing for software modules (JUnit/Component, Functional and Integration);
- Proven knowledge of XML, JSON, Git, Maven and Jenkins;
- Proven knowledge of TCP/UDP/IP protocols, networking concepts and ability to use networking tools (SSH, Terminal).
Language
- Excellent command of spoken and written English;
Desirable Skills, Experience and Certifications
- Desirable previous experience within the NATO enterprise (ACO, ACT, NCIA, etc.);
- Desirable previous experience working in the NATO Software Factory (NSF);
- Desirable previous experience supporting NATO Interoperability exercise (CWIX, etc.);
- Desirable previous experience with NATO Data Centric Security Standards (4774, 4778).
Desirable Education
- Desirable Bachelor's degree in Computer Science, Information Technology or a closely related engineering field, * Valid National or NATO Secret personal security clearance