对于做App架构设计的一些思考

简介: 对于做App架构设计的一些思考

注:本文是个人经过学习之后,所做的一篇简单的笔记,并不涉及理论分析,仅供参考。)


一、如何理解架构?


架构分为三个阶段:规划、设计、构建。


规划阶段,考虑的是产品的需求、质量的需求,技术的可行性分析以及预研。

设计阶段,考虑的如何将一个复杂的系统拆分,并设计如何进行组织这些拆分的模块。


构建阶段,考虑的就是具体的实施问题,并且要保证一定的伸缩扩展性,因为架构是不断演进的。


架构的设计可以从两个维度来考虑,一是架构思维,二是架构原则

思维是我们的思考方式,是我们解决问题的方法。

原则是我们思考问题的方向,是我们解决问题的一些标准。


二、移动端的app架构


移动端的app架构是一种基于产品和技术的进行统筹管理最终所形成的共识。


1.产品


产品,是我们产品经理们设计的结果,也是开发人员开发的最终成果,是前后两种人群的共同目标。


开发的角度来思考产品 产品设计(做什么)、迭代计划(计划怎么做)、开发资源(用什么做)、产品质量(做的怎么样)、风险规避、产品交付。

1)产品设计(做什么):用户群体(什么人用)、核心理念(要做什么)。

需求可以分两种,一种是人性本能的需求,还有一种,是我们的产品催生的需求。

2)开发资源:

    (1)开发团队配置(人):

      一个App的开发团队至少需要5个角色,即产品、交互、UI、软件、测试。不同角色也分不同的层次。

      eg:软件分初级、中级、高级。不同角色、不同层次合理搭配,才能够获得更高的工作效率,保证产品开发顺利进行。


   (2)数据内容配置(物):


      产品最终呈现给用户的是数据。

      数据分两种,一种是私有的数据,是由开发商自己生产的数据。一种是平台自生的数据,是由用户生产的。

      如果是自己生产的数据,就得考虑数据来源,数据的覆盖率,数据的准确性,合法性等。如果是用户生产数据,就得考虑用户生产数据的动力、入口以及数据安全性、传播性等。


    (3)开发投入预算(钱):


      完成一款app开发,需要一支专业的开发团队,就需要考虑,开发周期多长、需要多少人、后期维护怎么办等等;

      综合公司预算是多少去思考,毕竟多少钱能办多大事;需要考虑开发团队会消耗公司多少资源,公司能否获得相应或者更高的产出。


    (4)第三方资源:


      很多资源是可以寻找第三方合作的。eg:服务器、云存储、支付接口、登录接口、内容数据以及开发过程中的一些开源框架等等。我们需要选择、商务谈判直到集成到自己的APP中。


3)产品质量(做的怎么样):


            用户体验、软件性能、产品安全、质量评测。

软件的性能主要从软件的启动速度、流畅度、内存、功耗、流量、apk体积等几个方面来评判。

产品的安全性可以从两个角度来看,产品的生产商和产品的最终用户。

对于生产商而言,有许多的内容是需要受到法律保护的,有许多的敏感信息,核心技术、网络接口等是不可以泄露的。

对于用户而言,在本地或者服务器存储了大量的用户信息,eg:账号密码,一些信息一旦泄露将严重伤害到用户的个人利益。

我们需要通过代码混淆、数据加密、权限限制等等一些技术手段来保护我们的应用。

质量评测主要从上述用户体验、软件性能、产品安全三个维度来进行评判。另外,相比同类产品来讲,app的优缺点,还有哪些改进空间。了解我们的产品质量是一件非常有意义的事情。


4)风险规避:


人力变动风险:主要是人员的流动对项目的影响,eg:公司内部的调整,员工跳槽等。思考如果某某不在了,项目是否可以正常运行。开发团队之间是否能够交叉熟悉各自之间的业务。

上层决策风险:eg:假设就在项目做一半你的老板说你现在的项目不做了,那么如何才能最大程度的挽回损失?如何进行项目的收尾工作?而不至于在项目又突然重启的时候接收的是一个烂摊子。

项目延期风险:严格的掌控项目的进度,平衡可能会遇到的问题(eg:需求变动、技术难题等),保证能够按时交付产品。

软件缺陷风险:能够提供一个稳定的版本。

人为失误风险:测试版本、灰度机制(先给少量的用户发布,看看用户的反馈,而后逐步发布给所有用户。)、版本管理


2.技术


1)技术主要从以下6个方面进行思考:技术选型、业务拆分、开发实现、开发规范、软件测试、开发等

技术选型: 开发平台、开发工具、 开发语言、开发模式(eg:MVP、MVVM等)、开源框架、 新兴技术

业务拆分:常用基础业务、通用技术业务、特定功能业务

架构设计(关注点分离、抽象):

开发实现:项目分包、抽象接口、数据存储、性能管理、特殊处理、Log打印、软件重构、兼容适配


2)一些常用的第三方库:


(注:以下只简单列出一小部分在开发中常用的库)

网络:okhttp、 android-asyn-http、 volley、 Retrofit

事件总线:otto、 EventBus

依赖注入:Dagger、 RoboGuice、 ButterKnife

图片:Fresco、Glide、 picasso

数据库:GreenDao、 Ormlite、LitePal

Json解析: Gson、JackSon、 FastJson

响应式编程: RxJava、 RxAndroid

异常统计平台:腾讯Bugly、Crashlytics

性能优化: blockcanary、 leakcanary


3)其他技术:


AndroidSupport:DataBinding、MaterialDesign等;

混合开发:ReactNative、Hybrid、Weex等;

编程语言:Java8、Kotlin;

热修复:AndFix、HotFix、Tinker等;

构建:InstantRun、Freeline


三、App架构开发设计的推荐准则


1)不要把在Manifest中定义的组件作为提供数据的来源(包括Activity、Services、Broadcast Receivers等),因为他们的生命周期相对于App的生命周期是相对短暂的。

2)严格的限制每个模块的功能。eg:MVVM中不要在ViewModel中增加如何获取数据的代码。

3)每个模块尽可能少的对外暴露方法。

4)模块中对外暴露的方法要考虑单元测试的方便。

5)不要重复造轮子,把精力放在能够让App脱颖而出的业务上。

6)尽可能多的持久化数据,因为这样即使是在网络条件不好的情况下,用户仍然能够使用App

7)保证数据来源的唯一性


四、常见的几种App架构模式


请点击《了解MVC、MVP、MVVM、AAC等App架构模式》


目录
相关文章
|
7月前
|
人工智能 监控 安全
java基于微服务架构的智慧工地监管平台源码带APP
劳务管理: 工种管理、分包商管理、信息采集、班组管理、花名册、零工采集、 现场统计、考勤管理、考勤明细、工资管理、零工签证
321 4
|
3天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
22 3
|
5月前
|
JSON JavaScript 小程序
|
6月前
|
消息中间件 存储 NoSQL
浅谈返利app架构设计
浅谈返利app架构设计
|
6月前
|
安全 前端开发 Java
Spring Boot导购电商返利App架构设计
Spring Boot导购电商返利App架构设计
|
6月前
|
负载均衡 监控 UED
高可用电商返利APP架构设计与实现分享
高可用电商返利APP架构设计与实现分享
|
5月前
|
消息中间件 存储 监控
构建支持实时数据处理的返利App系统架构
构建支持实时数据处理的返利App系统架构
|
5月前
|
消息中间件 负载均衡 Kubernetes
构建可扩展性强的返利App后端服务架构
构建可扩展性强的返利App后端服务架构
|
6月前
|
消息中间件 缓存 Java
高性能电商返利APP架构设计与实现
高性能电商返利APP架构设计与实现
|
6月前
|
存储 前端开发 JavaScript
构建高性能返利App的技术架构解析
构建高性能返利App的技术架构解析

热门文章

最新文章

下一篇
DataWorks