A mobile phone software platform development is a big project, including the underlying driver, class library, and the basic application of the upper layer, must be divided into many modules to develop, I have participated in two platforms. Dozens of modules. Need modularity is common sense, but how modularization is to need skill.
Modularity first requires a division, so that it is easy to manage, for example, the operating system level module is the basis of the UI class library. The UI library requires the basis of the application of the UI, which can divide the module into three levels. In management, every level of Release must be closed, otherwise, it will bring unnecessary trouble to depend on its upper level module.
Communication between the modules is also a problem, especially between modules of the application level. Windows Mobile can use COM and .NET easy to implement IPC, Linux operating system itself lacks standardized IPC mechanism, Linux-based QTE and GTK provide IPC mechanism, but feel is still very limited, QTE's QcopChannel can only communicate asynchronously, can not synchronize GTK supports CORBA, but has not heard of CORBA on the embedded device, and the performance of GTK2.x determines its unlike embedded. Symbian's work mechanism is not understanding, I don't know if there is no mature and convenient IPC.
I personally disagreed with Shared libray to solve the IPC in a way, so the Dependent relationship is too direct. As a platform, an application should be established for communication (including synchronization and asynchronous) mechanisms. Otherwise, after the project is large, such interdependence becomes a mesh, it is difficult to control.