NIFTi developers meeting
Working out a methodology for continuous integrated S&T development
NIFTi is an integrated project. Our take on integration is that it covers the entire track. From questions, to ideas how to answer them, to the systems that help us explore these answers.
In other words, we integrate from science to technology to systems. Our systems instantiate the theories we develop about natural human-robot cooperation. We regularly deploy these systems in training areas, to experiment with them, evaluate our theories. Yearly.
But to bring that about, we need a fairly solid methodology to do so. We need a methodology that enables us to test whether we do the right things -- and whether we do them right. And in doing so, we can develop our theories and systems continuously, in an integrated fashion.
That turns integration into exploration. It is a discovery process. Of how to explore questions. Ideas. Possible system designs. More often than not, revealing the real questions, at the interfaces between different functionalities of a cognitive system.
At our first NIFTi developers meeting at Fraunhofer IAIS (March 1-2, 2010) we laid down the basis for such a methodology. We follow a design cycle, in which we closely cooperate with end users. The cycle takes us through requirements, component design, system design, and testing in roughly 4-6 months each time round. So that the lessons learnt in real life can feed back into further theory development.
The key components on which we build in NIFTi are the following:
-
Scenario-based use cases: Together with end users we establish story-based scenarios, and use cases that focus on aspects of these scenarios. This helps us to define acceptance tests -- the “right things” we need to be able to do.
-
Team-based integration: Integration in general is a team-based effort, and typically 15-20 people are actively involved in system development. In NIFTi, we structure these efforts further. During a development cycle, we dynamically form teams, working off self-defined team charters to solve targeted S&T problems within 3-6 months. We are using advanced web-based tracking & management software to provide the necessary infrastructure. The infrastructure enables us to track activity, and store project experience over time -- so that we have it ready at hand, even when people have moved on.
-
Test-driven development: Cognitive systems are very difficult to test -- particularly if we first design, then implement, and only then start thinking about testing. Instead, we adopt test-driven development in NIFTi. Development starts with formulating tests for “doing things right.” In development, we then follow test-code-refactor cycles to evolve to better, testable designs. We thus always have a testable system -- and at every time, we have an integrated system with guaranteed functionality.
-
Quality assurance: We adopt coding- and documentation standards, coupled to code reviewing, to ensure that everybody can read, understand, and use everybody else’s code. We use a continuous build server to perform regular full-scale unit testing, and the construction of virtual machines for an entire system.
-
Virtual Machine-based distribution: The continuous build server provides a VM with a complete installation of the system. The installation includes all the code, the necessary libraries, and an IDE. The VM runs Ubuntu, and can be run within any major operating system. This way, everybody can work with the same setup. And we avoid spending time on installing software.
Over the next couple of months, we will be fine-tuning the methodology, and see how it works out in practice ...
---
NIFTi is an IP funded by the EU FP7 ICT programme, ICT-247870 (Cognitive Systems & Robotics unit). Project Officer: Olivier da Costa. Coordinator: Geert-Jan M. Kruijff (DFKI GmbH, gj@dfki.de)



