# Software Development Process Considerations in GNSS-Denied Navigation Project for Drones
## 3 Software Development Process Given for Consideration in This Paper  
The designed and described process analysed in this article is not a standard adaptive process but is tailored to the specific environment and needs. The \"end user\" of that software is an autonomous drone, capable of operating for hours in GNSS-denied conditions. This was an AGILE [8; 9; 17; 22; 23] -based process, driven by three scrum pillars [30], as they were considered valuable and helpful in the target environment. The main factors that dictated the implementation of the identified process activities, which had a big impact on how the process looked, were cumulated around the following:  
* Current work style;
* Company internal regulations;
* Team experience and attitude to adhering to established processes;
* Different locations of teams (teams were not working in one place);
* Research character of a project that was burdened with a dose of uncertainty regarding the direction of understanding the problem; product development started from Technology Readiness Level 4 (TRL 4) [31] and was targeted to achieve Technology Readiness Level 6 (TRL 6);
* Knowledge maturation regarding the problem to be solved and possible solutions that may significantly change current ideas and draft solutions that may generate frequent changes;
* Plans regarding project continuation in the future and development of the product to a higher Technology Readiness Level [31]. More about the presented and discussed project may be found in [PERSON] et al. [32] and [PERSON] et al. [33]. The factors mentioned above are justification for choosing an AGILE-based process over a plan-driven one as a base for development. As stated in [9], while selecting a development approach, _product-_, _project-_ and _organization_-related factors should be taken into account. The most important factors from those mentioned above that were decided in our case were as follows:  
* A big dose of uncertainty related to the research character of the project; in fact, our knowledge greatly matured during development, which might cause a lot of unexpected changes;
* Low team experience in following established process and reluctant attitude to follow. In fact, only two of the three groups of factors mentioned in [9] had a significant impact on the decision, as factors related to _the project_ group were stable enough to put them in second place. To find the justification for using three scrum pillars, please see Section 3.2.4. In general, the decision that stands behind those pillars is cumulated around _adaptation_, which allows us to be smarter in the future by learning from the past. Aspects Considered in the Process for the GNSS-Denied Navigation System Development Project for Drones  
There were many aspects and issues to consider including in the drone-dedicated software development process chosen as an example project. These were as follows:  
* General standard development approach to use as a base for tailoring: a good software engineering practice used in the company;
* Software requirements: elicitation/decomposition/definition;
* Quality characteristics of the desired product: functional completeness and correctness, time behaviour, resource utilisation, analysability, modifiability and testability, as described in ISO/IEC 25010 [34];
* Software design: a good software engineering practice used in the company;
* Software implementation: embedding that software into the onboard navigation computer;
* Software verification and testing: software-in-the-loop and hardware-in-the-loop laboratory tests;
* Standards to consider: DO-178C [6];
* Process metrics: individual velocity, team velocity, process suitability in a given environment;
* Tools that support activities: Gitlab and Enterprise Architect;
* Transform software requirements into \"issues\" [35] or tasks to ensure the product is complete and traceable;
* Defects and errors management to ensure every defect and error found is addressed in the software;
* Version and release management to enable control and product management.