1
面向对象软件工程实践指南
1.3.1.4 12.4 开 发 阶 段
12.4 开 发 阶 段

该阶段提供模块开发卷宗。

12.4.1 模块开发卷宗

12.4.1.1 引言

1)编写目的

本软件开发卷宗文档的编写目的是对二手商品交易平台软件的开发工作进行记录,在之前的需求规约、系统分析和系统设计的基础上,完成软件的实现、测试和交付。文档将展示项目的开发计划,描述功能和设计,提供软件的源代码,并给出测试和结论。本文档用于开发团队在开发中记录相关信息,辅助开发的实现。

2)适用范围

本文档适用的软件:校园二手商品交易平台。

与该软件相关的特性、子系统、模型、代码等均符合本文档中的内容。

3)定义

本文件中涉及的术语定义在项目词汇表(词汇表.docx)中给出。

4)参考资料

(1)《面向对象软件工程——使用UML、模式与Java》(第3版),清华大学出版社, 2011。

(2)《疯狂Android讲义》(第3版),电子工业出版社,2015。

5)概述

本文档包括引言、开发计划、功能描述、设计描述、源代码清单、测试描述和审查结论7部分。开发计划部分列出人员分工、项目进展的计划和进度。功能描述部分通过用例和顺序图展现本系统所具有的功能。设计描述部分展示系统各组件和外界的交互以及系统的设计类。源代码清单将具体地介绍系统的源代码构成及各文件承担的功能。测试描述部分将给出测试系统的数据及结果。最后,在审查结论部分,将对开发软件的功能、代码等做全面的评估和总结。本文件的各部分内容联系紧密,按照整个项目开展的流程进行展开,回顾了之前的工作,重点展示了系统实现的相关信息。各部分互为补充和对照,共同呈现本软件的开发过程和结果。

12.4.1.2 开发计划

(1)参与人员与承担的任务(见表12-19)。

表12-19 项目任务分工表

(续 表)

(2)开发前原始计划(见表12-20和表12-21)。

表12-20 原始计划分工表

(续 表)

表12-21 项目计划时间表

(3)实际进度(见表12-22)。

表12-22 项目实际进度时间表

项目开发过程中的关键路径如图12-98所示。

12.4.1.3 功能描述

本节内容摘录自软件需求规约文档的12.2.2.3.4节的用例模型部分,包括用例图。实际文档中需要把内容复制过来。此处省略。

图12-98 项目关键路径图

12.4.1.4 设计描述

12.4.1.4.1 组件说明

以下列出了每一个组件的主要属性和方法。一些获取、修改信息的方法省略,同时构造方法和析构方法也省略。

1)Client Dialog Control.java

属性:

private int current User ID

方法:

public Dialog[]get My Dialogs(int user ID)

public Dialog chose Dialog(int dialog ID)

public Dialog get Dialog Info(int dialog ID)

public Boolean start Communication(int caller ID,int callee ID)

public Boolean communication Request(int caller ID)

public Boolean send Message(int send ID,int receiver ID,String contents)

public Boolean show Message(int sender ID,int receiver ID,String contents)

2)Client Item Control.java

属性:

private int current User ID

方法:

public String get Item Types()

public Stringget Itemsby Type(String type Name)

public Boolean publish Item(String item Name,String description,String price,String item Type,Image image)

public void publish Item Process()

public int validate Item Info(String item Name,String description,String item Type,int price,Image image)

public void get My Published Info(int user ID)

public Item get Published Item Info(int item ID)

public Boolean withdraw Item(int item ID)

public Item[]get My Favored Info(int user ID)

public Item get Favored Item Info(int item ID)

public Item get Item Info(int item ID)

public Boolean cancel Favor(int user ID,int item ID)

public Item[]search Items(String keywords)

public Item request Item Details(int item ID)

public Boolean favor Item(int user ID,int item ID)

3)Client Purchase Control.java

属性:

private int user ID

方法:

public void purchase Item()

public Boolean submit Order(intuser ID,int item ID,Date deal Time,String deal Place, String phone Number)

public int submit Order()

public int validate(int user ID,int item ID,Date deal Time,String deal Place,String phone Number)

public Boolean confirm Order(int order ID)

public String get Order Status(int order ID)

public Boolean close Deal(int order ID)

public Boolean confirm Closure(int order ID)

public Boolean cancel Order(int user ID,int order ID)

public Boolean confirm Order Cancel(int order ID,int user ID)

public Order[]get My Order Info(int user ID)

public Boolean select Order(int order ID)

public Orderget Order Info(int order ID)

4)Client User Info Control.java

属性:

private User current User

方法:

public void register()

public int submit User Info(String user Name,String password,String mail,String phone Number,String password Confirmation)

public int validate Personal Info(String user Name,String password,String mail,String phone Number,String password Confirmation)

public int login(String user Name,String password)

public int validate Login Info(String user Name,String password)

public void show Personal Info()

public int update Personal Info(String user Name,String password,String mail,String phone Number,String password Confirmation)

5)Dialog.java

属性:

private Message[]message List

方法:

private int seller ID

private int buyer ID

private time start Time

private time end Time

public Boolean update Message(int sender ID,int receiver ID,String contents)

内部类:

Message

属性:

private String message

private int sender ID

private int receiver ID

private time send Time

6)Dialog Adapter.java

属性:

方法:

public Dialog[]get My Dialogs(int user ID)

public Dialogget Dialog Info(int dialog ID)

public Boolean communication Request(int caller ID)

public Boolean send Message(int send ID,int receiver ID,String contents)

public Boolean show Message(int receiver ID,String contents)

public Boolean update Message(int sender ID,int receiver ID,String contents)

7)Dialog List.java

属性:

方法:

private Dialog[]dialogs

8)Dialog List Page.java

属性:

private Dialog[]dialog List

方法:

public void chose Dialog()

9)Dialog Page.java

属性:

方法:

public void start Communication()

public void send Message()

public Boolean show Message(int sender ID,int receiver ID,String contents)

10)Favored List.java

属性:

private Item[]favored Items

public User user

方法:

public Boolean cancel Favor(int item ID)

11)Http Util.java

属性:

方法:

public String request(String request String,String url)

12)Item.java

属性:

private int item ID

private String item Name

private String description

private int price

private String item Type

private Image image

private int seller ID

private String status

13)Item Adapter.java

属性:

方法:

public String get Item Types()

public int add Item(String item Name,String description,String item Type,int price, Image image)

public Item[]get My Published Info(int user ID)

public Itemget Item Info(int item ID)

public Boolean withdraw Item(int item ID)

public Item[]get My Favored Info(int user ID)

public Item get Item Info(int item ID)

public Boolean cancel Favor(int item ID,int user ID)

public Item[]search Items(String keywords)

public Boolean favor Item(int user ID,int item ID)

14)Item List Page.java

属性:

方法:

public void request Item Details()

15)Item Page.java

属性:

方法:

private Item current Item

public void submit Item Info()

public void show Withdraw()

public void withdraw Item()

public void show Favor()

public Boolean cancel Favor()

public void favor Item()

public void purchase Item()

16)Item Type.java

属性:

方法:

private int type ID

private String type Name

private String type Description

public String get Item Types()

17)Login Page.java

属性:

方法:

public void register()

public int login()

18)Main Page.java

属性:private item Type[]item Types;//保存商品类型。

构造方法:Main Page对象构造时,需要Main Page对象启动Http Util对象;启动Rong Cloud SDK;启动Dialog Adapter、Purchase Adapter、Item Adapter、User Adapter,并把Http Util对象传给它们;启动Client Dialog Control、Client Item Control、Client User Info Control、Client Purchase Control对象,并分别把 Dialog Adapter、Item Adapter、User Adapter、Purchase Adapter对象的引用传给它们,同时把Rong Cloud SDK对象引用传给Client Dialog Control;启动Login Page对象,同时把Client User Info Control传给Login Page。

析构方法:依次关闭各个Client Control对象;依次关闭各个Adapter对象;关闭Rong Cloud SDK对象、Http Util对象。

操作:

public int browse Items()//浏览商品按钮的响应函数

public int show Item Types()//显示商品种类,发送get Item Types消息给Client Item Control获取种类信息

public String get Itemsby Type(String type Name)//获取某一类商品的信息

public void manage Personal Info()//管理个人信息按钮响应,发送Show Personal Info消息给Client User Control对象获取用户信息并进行显示

public void publish Item()//发布商品按钮响应,发送消息Publish Item Process给Client Item Control对象

public void get My Published Info()//我的发布商品按钮响应,发送get My Published Info消息给Client Item Control对象

public void get My Favored Info()//我的收藏按钮响应,发送get My Favored Info消息给Client Item Control对象

public void get My Order Info()//我的订单按钮响应,发送get My Order Info消息给Client Purchase Control对象

public void get My Dialogs()//我的对话按钮响应,发送 Get My Dialogs消息给Client Dialog Control

19)Order.java

属性:

private int order ID

private int item ID

private int buyer ID

private int seller ID

private Date deal Date

private String deal Place

private String phone Number

private String status

public Boolean update Status(int order ID,String status)

20)Order List.java

属性:

public User user

方法:

private Order[]orders

21)Order Page.java

属性:

private Order current Order

方法:

public void submit Order()

public void confirm Order()

public void refresh()

public Boolean close Deal()

public Boolean confirm Closure()

public void cancel Order()

public Boolean confirm Order Cancel()

22)Persistent Service.java

属性:

private String connection String

方法:

public int check Record(String sql String)

public Boolean insert Record(Object sql String)

public Record[]get Records(String sql String)

public String check Similar Record(String sql String)

public int update Record(String sql String)

public Object get Record(String query String)

public Boolean remove Record(String sql String)

23)Personal Favored Page.java

属性:

方法:

public void select Item()

24)Personal Info Page.java

属性:

方法:

public void edit Personal Info()

public int update Personal Info()

25)Personal Order Page.java

属性:

方法:

public void select Order()

26)Personal Published Page.java

属性:

方法:

public void select Item()

27)Published List.java

属性:

private Item[]published Items

28)Purchase Adapter.java

属性:

方法:

public Boolean submit Order(int user ID,int item ID,Date deal Time,String deal Place, String phone Number)

public Boolean confirm Order(int order ID)

public String get Order Status(int order ID)

public Boolean close Deal(int order ID)

public Boolean confirm Closure(int order ID)

public Boolean cancel Order(int user ID,int order ID)

public Boolean confirm Order Cancel(int order ID,int user ID)

public Order[]get My Order Info(int user ID)

public Orderget Order Info(int order ID)

29)Registration Page.java

属性:

方法:

public void submit User Info()

30)Rong Cloud SDK.java

属性:

方法:

public Boolean start Communication(int caller ID,int callee ID)

public Boolean send Message(int sender ID,int receiver ID,String contents)

31)Search Bar.java

属性:

public Main Page main Page

方法:

public void search Items()

32)Server Com.java

属性:

方法:

public int http Post(String request String,String url)

33)Server Dialog Control.java

属性:

方法:

public String request(String request String)

34)Server Item Control.java

属性:

方法:

public String request(String request String)

35)Server Purchase Control

属性:

方法:

public String request(String request String)

36)Server User Control.java

属性:

方法:

public String request(String request String)

37)User.java

属性:

private int user ID

private String user Name

private String password

private String mail

private String phone Number

38)User Adapter.java

属性:

方法:

public int check Duplication(String username,String mail,String phonenumber)

public int add User(User user)

public int check Login Info(String user Name,String password)

public int update Personal Info(int user ID,String user Name,String password,String mail,String phone Number)

12.4.1.4.2 系统设计类图

在实际文档中此处需要插入软件设计模型文档中的12.3.2.3节的内容。

12.4.1.5 源代码清单

1)Android客户端的Project

客户端的开发基于Android Studio和Eclipse,文件结构如下。

Erhuo

2)服务器端的Project

服务器的开发环境为Eclipse+Tomcat插件,文件结构如下。

Erhuo Server

3)数据库的关系表

(1)概述:本应用使用My SQL关系型数据库,将实体对象模型映射到关系型数据库中。

(2)实体类及其属性的映射(见表12-23~表12-28)。

表12-23 用户信息表User Info

表12-24 物品信息表

表12-25 订单信息表Order

表12-26 物品类别表Item Type

表12-27 对话信息表

表12-28 对话内容表

(3)关联的映射(见表12-29)。

表12-29 收藏物品列表Favored List

12.4.1.6 测试描述

测试描述如表12-30所示。

表12-30 测试描述

12.4.1.7 审查结论

开发的系统经修改之后通过所列的测试,表明系统能够成功接受正常的输入,判断错误的输入并做出相应的响应,暂未发现系统的漏洞。

将实际开发出的系统与需求获取、分析及设计阶段的文档、模型进行对比,表明系统基本符合预期的结果,实现了二手交易市场的商品发布、浏览、查找、购买等核心功能。

系统开发的代码设计符合前期所列的各项规范和标准,和系统的设计模型基本保持一致。

综上所述,本团队开发的校园二手交易平台基本完成,实现了预定功能,可以进一步测试后投入使用。