Molecular programming of DNA makes use of computeraided design, a programming language to encode the design, and a a compiler that compiles the code into a list of corresponding DNA strands. To implement the code, the developer orders the DNA from a supplier and then runs the molecular program in the laboratory. Instruments such as spectrofluorometers and atomic force microscopes help verify that the molecular program ran correctly, self-assembling to achieve the intended structure and behavior. Applications of molecular programming that are on the horizon for commercial production include targeted and personalized medical applications, biosensors for air and water, molecular robots that can navigate in cells, and biocompatible computational devices. In this talk I describe the experiences and results of our interdisciplinary team in applying goal-oriented requirements techniques, reaction network modeling, and probabilistic model checking to molecular programmed nanosystems. Requirements challenges include handling scalability to very large numbers of devices or services (roughly similar to the internet of things), dealing with probabilistic behavior, and understanding the limits of safe operation in changing (literally fluid) environments. I discuss how computational tools and thinking assist the development efforts and what limitations currently hamper our requirements analysis in practice. More broadly, I suggest that the approaches useful for molecular programming may help with understanding the requirements for other large, distributed, autonomous systems.
['Robyn R. Lutz']
Requirements for Molecular Programmed Nanosystems (Keynote)