### 架构设计目标
从技术架构层面讲需要满足以下目标：
- **弹性：**架构要支持高度组件化，各子系统/功能模块/子功能模块均能实现独立编译。可适应从高端手机（如：8核SOC@3GHz/16GB RAM/512GB ROM）到手环、IoT模块(如：单核MCU@50MHz/128KB RAM/64MB ROM)等硬件配置差异巨大的多种终端，以及将来8~10年内可能出现的新类型终端。
- **可分布性：**系统提供的各种软件硬件服务，具有非集中式服务架构，可以在同一分布式系统下的多个终端上形成非对称的分布式计算。同时系统提供分布式用户程序框架，使应用程序同样具有可分布性。可分布式性一个隐含的需求是对跨版本，跨设备的较长周期的兼容性要求。
- **可演进性：**可适应未来8~10年可能出现的新技术带来的新业务模式，可实现老特性的逐步淘汰和新特性的平滑上线。
- **生态友好性：**可高效支持三方开发北向应用和对南向设备，并允许三方设备厂家开发扩展能力获得足够的商业利益，同时确保系统生态的完整性和一致性。
- **可重构性：**支持系统可局部重构。从项目基本需求考虑，由于存在生态环境变化、产品业务策略变化、业界技术趋势变化等诸多不确定因素，因此需要系统架构支持随时存在局部重构的可能性。为了保证局部重构的工作量尽可能小，需要子系统/功能模块/子功能模块均可支持可独立重构，每个子功能模块的代码规模要求不大于2万行。
- **可用性：**可用性是指系统处在可工作状态的时间的比例，单设备系统异常每千小时不大于0.2次，分布式系统异常每千小时不大于2次。
- **流畅性：**最终目标是向用户提供流畅的业务体验，用户交互设计在架构上需要保障处理时长可控。
- **安全性：**构建用户隐私数据保护的安全体系与分级，隔离的安全防御体系。
### 架构设计原则
- **用户体验优先原则：**面向业务获取和使用场景，构建实时、按需、在线、自助、社区化、方便易用的用户体验；
- **UX交互优先原则：**用户交互相关服务/组件优先获取足够系统资源，软件资源或硬件资源，保障用户体验的高流畅性。
- **隐私保护与安全原则：**构建最小权限、纵深防御、最小公共化、权限分离、不轻信、开放设计、完全仲裁、失效安全、保护薄弱环节、安全机制经济性、用户接受度以及加强隐私保护的安全体系，确保系统、网络和数据的机密性、完整性、可用性、可追溯。在各项设计目标发生冲突的情况下，隐私保护必须优先满足。
- **生态开放原则：**面向生态场景，按需开放平台设施、中间件、数据、业务逻辑、UI等能力，构建开放生态，支持分层、远程、自动、自助、简单高效地完成定制、集成、第三方应用开发。
- **跨多设备原则：**同类设备采用统一技术架构，技术框架和技术方案，支持一次开发支持所有设备，尽可能保持一致的业务体验。充分发挥不同设备的优势功能点，通过相关设备弥补自身设备的劣势功能点，设备间支持快速能力发现，能力互相调用，协同完成业务过程中对用户和开发者尽量无感知。
- **模块解耦原则：**对业务进行抽象建模，业务数据与业务逻辑解耦，软件和硬件解耦，平台和产品解耦，系统各部件间解耦。
- **服务化/组件化原则：**以服务、数据为中心，构建服务化、组件化架构，具备灵活、按需组合的能力。
接口隔离及兼容性原则：通过接口隐藏服务/组件的实现细节，服务/组件间只能通过接口进行交互，接口契约化、标准化，跨版本和跨设备兼容；热点服务/组件长期支持可独立演进、独立发布、独立升级；服务或组件自治，可管、可控、可测、可维、关键服务/组件要求故障可自愈。
- **高性能低功耗原则：**在满足用户业务体验的前提下，功耗要做到最低；在同样功耗条件下，性能要做到最高。性能和功耗高度统一，不在无谓的性能上浪费功耗，也不在为了节省功耗而牺牲用户体验。
- **高效开发原则：**创建支持迭代、增量、持续交付的架构，支持部件独立开发、自动化编译构建、测试、集成验证，并易于高效修改和持续优化；支持开发组织小型化、扁平化，支持小团队独立高效并行开发。
- **开源引用原则：**充分利用业界优秀的开源实践，不重复造轮子。需要进一步说明的是，每一个架构设计原则的守护都要付出一定的代价，也会带来相应的收益。甚至部分原则间存在不可避免的冲突和矛盾，上述架构原则需要综合考虑，整体权衡，不可孤立的强调一个而忽视另一个。权衡时针对具体问题具体分析，权衡的过程也是在某一个特定场景下的设计原则的优先级选择过程。