软件工程最后一次大作业完工了,作为PM我将这次大作业的一些详细的工作与设计写在这篇博客之中。由于我们决定将这个项目上线,所以目前还在对一些细节进行改造,所以这里就不提供APK的下载地址了。
一、引言:
1.1、编写目的
“苕皮段子”,通过段子一词就知道这是娱乐大众的语言合集。为了给大家提供最新鲜,最搞笑的段子,该项目是做成一个浏览笑话段子和搞笑图片的APP应用平台。
1.2、编写背景:
在当下有很多流行的笑话段子APP,如糗事百科、笑霸来了等,这些APP在大多数人群中都成为了他们手机上的常用APP。这些APP共同的特点就是免费提供给用户,同时靠大量的广告来实现营收。
1.3、定义:
在服务器端使用了三大框架,主要使用java编程,同时需要具备xml基础。
安卓手机客户端,使用xml进行布局,使用java进行数据和逻辑控制。
在服务器与手机客户端之间利用json数据进行数据通信。
服务器端:
通过MyEclipse(2014最新版本)采用Struts2+Spring3+Hibernate4框架搭建服务器,采用阿里云数据库来存放数据。
客户端:
采用ADT(20140321版本)进行安卓客户端的开发
已经搭建好了SVN服务器,在开发工具中输入url并输入相应的账号密码进行团队开发。
二、系统需求分析:
2.1、系统的综合要求:
独立设计并完成一款APP以及其服务端,其功能要求是:
1. 能够发送笑话段子和搞笑图片到服务器上。
2. 能够审核举报笑话段子和搞笑图片,在审核达到一定数量后即可在主界面上让大多数用户浏览,同样的,当笑话段子和搞笑图片的举报数达到一定数量会下架并对发布用户实行封号等处罚措施。
3. 能够在主界面选项卡中查看已经审核通过的笑话段子或搞笑图片,用户能够对所浏览的内容进行点赞或者踩的操作,也可以对这些内容发表评论,同样的,这些评论也是允许其他用户进行点赞操作的。
4. 实行积分模式,每日登录可以有一定的积分奖励,用户也可以通过浏览本APP上的广告获取积分,而通过支付积分,用户可以缓存下载一定量的段子笑话或照片内容进行离线浏览。
5. VIP用户申请,通过支付宝开通VIP用户,用户可以享受无限制的服务(包括无限的离线缓存量,无广告模式等)
6. 该项目的最终目的是在应用商店上线实现营收。
2.2、风险识别:
1.在现在的App生态链中有多款类似的产品,同时这些产品都取得了一定的成功,发布具有类似功能的App很有可能与这些产品产生正面冲突(前提是该App也能获得成功)。
2.没有采用分布式的框架来写服务器端,可能在用户流量接近峰值时会出现响应延迟从而降低用户体验。
3.在用户量增加后会加重服务器的负担。
4.没有苹果用户客户端。
2.3、风险应对策略:
1.针对第一条风险,只有在用户体验和上手度进行突破,主要靠UI开发和接口开发人员所做的工作。
2.针对第二条和第三条可以在用户量增加后升级服务器和数据库性能。
3.已经开始考虑招募iOS程序员
三、系统设计:
对于一个类似于糗事百科的系统,一般都是基于C/S模式进行设计,这就意味着要对服务器端和客户端进行分别的设计。服务器采用了SSH+JPA框架,而客户端采用了Android的异步线程处理网络时间方法并且将逻辑层与视图层进行了严格的分离。
3.1、服务器端模块设计:
管理员表、段子表、赞段子表、踩段子表、段子审核表、段子评论表、赞段子评论表、段子举报表、图片表、赞图片表、踩图片表、图片审核表、图片评论表、图片评论赞表、图片举报表、用户表等
3.2、客户端模块设计:
用户第三方登录模块、发送段子\图片模块、浏览段子模块、浏览图片模块、热门话题模块、广告模块等。
数据库设计的PDM图如下:
四、客户端功能模块详解:
4.1、第三方登录模块:4.2、发送段子\图片模块:
4.3、浏览段子模块:
4.4、浏览图片模块:
4.5、广告模块:
点击推荐按钮,会自动跳转进入广告模块
4.6、审核模块:
进入审核模块会随机让登录用户进行段子或者图片的审核
五、后台整体功能模块:
六、其他:
6.1、数据安全:
采用第三方登录,对于数据安全有保障;
采用SSH+JPA框架,使得MVC进行分离,有效管理代码;
6.2、人机交互设计:
客户端采用了.9.png图片,解决了不同屏幕图片拉伸问题;
采用自定义Theme和自定义的动画,使得界面炫酷;
6.3、技术说明:
采用SSH+JPA框架,实现MVC严格分离,同时利用JPA进行模型映射不用编写XML文件,精简了代码量;
Android客户端采用将视图与逻辑进行了分离,在Service里创建线程和异步任务来处理网络请求和图片下载,Activity与Fragment负责界面的显示与用户的交互;
采用了Android的Shareprefrence来存放JSON数据,对图片进行缓存处理,减少了第二次使用时流量的浪费
6.4、相关问题:
在开发过程中遇到了图片缓存无法显示的情况,根据这一情况在CSDN其他相关博客中找到了结局办法,即采用第三方写好的图片下载缓存开发工具universal-image-loader-1.8.6-with-sources.jar来解决
七、小组分工:
项目经理:
兰鹏飞
软件开发:
兰鹏飞(Android客户端UI设计及逻辑设计,SSH框架搭建,数据库设计)
李传根,杨崴(服务器端接口编写)
王元(Android第三方登录模块开发)
李岩锗,张俊伟(广告嵌入)
朱柯(管理员模块开发)
测试:
丁红月(Android客户端测试)
郭正方(服务器端接口测试)
文档:
周丹、兰鹏飞
八、软件工程课程知识应用:
1、采用了面向对象的方法来设计系统;
2、在后期进行了代码的重构,对一些删除了一些冗余代码,并对能进行封装的代码进行了二次封装;
3、利用Junit进行了单元测试,在各个模块完成的情况下进行了集成测试,最后进行了确认测试。同时我们还进行了黑盒测试;
4、代码的重用,对以前已有的代码进行了重用;