(Updated: June 2011) Designing and building an unmanned autonomous vehicle (UAV) is one of the most difficult problems in engineering; and it is particularly challenging from a software systems perspective. By optimizing software performance, scalability, high availability and reliability, security, interoperability, and affordability, system designers can create a UAV that is adaptable to new mission parameters while remaining robust across the product lifecycle.