项目设计文档

项目设计文档

本次我们的团队项目是设计一个快递代取app,我们的设计思路是将其分为前端与后端两个部分同时开发,在双方开发的过程中尝试建立起两者之间的交互,最终在两个部分做完之后进行联调。下面我们针对前端与后端的设计思路进行分别论述。

前端

我们选择的前端设计工具是Android Studio,针对我们的需求分析(前面已经发布),我们设计出了如下的科技树:

前期制作alpha版产品时,我们主要进行登录注册界面、初始主界面、代取界面、设置界面的设计与制作,以保证我们能够实现快递代取这一主要功能。alpha版设计完成后,我们将优化已设计出的界面,并将如上科技树中没有设计的界面添加上去。

后端

我们使用Flask框架开发,并使用MySQL的数据库。

资源(Resources)

网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务。你可以用一个URI指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

“上网”,就是与互联网上一系列的“资源”互动,调用它的URI。

表现层(Representation)

“资源”具体呈现出来的形式

比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;

图片可以用JPG格式表现,也可以用PNG格式表现。

状态转化(State Transfer)

​ 访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。

因此,如果客户端通过“某种手段”操作服务器,服务器端就会发生“状态转化”,而这种转化是建立在表现层之上的。具体实例中的“某种手段”,就是HTTP协议(里面四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。)

Rxjava:用于多线程异步数据处理,是一种响应式编程,采取观察者模式(发布-订阅模式)。

流程:Observable -> Operator 1 -> Operator 2 -> Operator 3 -> Subscriber

ØObservable 发出一系列事件,他是事件的产生者;

ØSubscriber 负责处理事件,他是事件的消费者;

ØOperator 是对 Observable 发出的事件进行修改和变换;

Ø若事件从产生到消费不需要其他处理,则可以省略掉中间的 Operator,从而流程变为 Observable -> Subscriber;

ØSubscriber 通常在主线程执行,所以原则上不要去处理太多的事务,而这些复杂的事务处理则交给 Operator。

EventBus:组件间通信。

l与Rxjava一样基于观察者模式,在异步数据流处理时Rxjava更为强大,可选择其中之一进行开发,目前打算用Rxjava 处理异步数据流,用EventBus实现组件通信。

l使用原因:当我们的项目越来越复杂,使用Intent、Handler、Broadcast进行模块间通信、模块与后台线程进行通信时,代码量大,而且高度耦合。

机制:

ØEvent 事件。它可以是任意类型。

ØSubscriber事件订阅者。在EventBus3.0之前我们必须定义以onEvent开头的那几个方法,分别是onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,而在3.0之后事件处理的方法名可以随意取,不过需要加上注解@subscribe(),并且指定线程模型,默认是POSTING。

ØPublisher 事件的发布者。我们可以在任意线程里发布事件,一般情况下,使用EventBus.getDefault()就可以得到一个EventBus对象,然后再调用post(Object)方法即可。

四种线程模型:

ØPOSTING (默认) 表示事件处理函数的线程跟发布事件的线程在同一个线程。

ØMAIN 表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。

ØBACKGROUND 表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。

ØASYNC 表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作。

OKHttp:网络请求。

get 方法/ post方法,可同步/异步,可传递Json对象。

fastjson:数据解析。

方便地使用json对象。

picasso:图片加载。(非本项目必要框架,若有需要再使用)

Android图形缓存库,允许应用程序无障碍图像加载。

posted @ 2018-05-27 21:55  软件工程第六组  阅读(484)  评论(3编辑  收藏  举报