1) Environment choice: This part is more related to decide the language (such as C#, C++), the systems (Windows, Linux) and API (Qt, MFC, .Net Framework). 2) Architecture design: This part is related to design pattern, software models (such as MVC, Cloud computation). 3) Algorithm design: the algorithm to solve specific problems (such as motion planning). 4) Development mode: How the programmers manage time and other resources to achieve development task (such as programming in pair). 5) Upgrade and Maintance: How to update software( online/offline ; automatic/manual) and how to maintaince.