第3章 系统架构设计 工作任务 需求分析与UML技术应用;  体系架构设计的思路和规则;  软件概要设计与数据库设计。 3.1 项目任务划分 3.1.1 参与角色 项目经理、系统分析员、软件架构师、软件工程师。 3.1.2 问题讨论 索图冀: 在用户的业务流程基础上,我们经过需求调研和需求分析,得到1.0版的需求报告并通过评审,现在对整个项目的开发任务经过细化做出如下的安排。 《博览会票务系统》项目开发任务安排 ( 年 月 日,第 组) 项目团队: 项目经理: 索图冀 项目成员: 王昆山、索图冀、常易逊(评审组);索图冀、易化维、马涛略、括胡台与昆仑(开发组);姬察金与铭喜(测试、质保组). 任务安排: 需求分析: 索图冀、易化维、马涛略 软件设计:  界面设计: 易化维、马涛略  功能组件: 易化维、马涛略  数据库设计: 易化维、马涛略 模块实现: 索图冀、易化维、马涛略、括胡台与昆仑(可适度增添程序员) 组装测试: 姬察金与铭喜(可适度增添测试员) 编码任务: 功能编号功能名称编码任务编号备 注01系统信息维护CODE01A02用户权限管理CODE01B03登录、注册、退出CODE01C04添加门票信息CODE02A05查询门票信息CODE02B06修改门票信息CODE02C07查询客户账户信息CODE03A08修改客户账户信息CODE03B09订单查询或者修改CODE03C10客户主动注销账户CODE03D11添加客户详细信息CODE03E12查询客户详细信息CODE03F13添加公告、常见问题CODE04A14查询公告、常见问题CODE04B15修改公告、常见问题CODE04C16网上购票与购物车管理CODE05A17网上支付与后台结算审核CODE06A18后台订单处理与快递管理CODE07A19用户反馈CODE08A20错误处理CODE08B21博览会票务网站系统主页CODE09A开发阶段: (2009年10月12日-2010年1月22日) 需求报告: 2009年10月12日-2009年10月16日 系统分析: 2009年10月19日-2009年10月23日 软件设计: 2009年10月26日-2009年11月30日 模块实现: 2009年11月02日-2009年11月20日 测试组装: 2009年11月23日-2009年12月25日 用户验收: 2009年12月28日-2010年01月08日 项目总结: 2010年01月11日-2010年01月22日 注: 参照以上的时间规划,在不同期给予时间调整,用Project 2003制作进度计划表。易化维: 用户对网络平台的应用没有更多了解,但是考虑将来的业务扩展和功能改进,我们开发组建议客户基于Java平台技术,以电子商务网站的前瞻性来架构软件系统,所以要求大家了解更多的电子商务网站规划和设计理念、基于Java Web/Java EE的B/S体系架构,为客户开发能够满足网络商品展示、购物车管理、网上预购、线下结算的初级功能。 马涛略: 考虑到我们团队的技术实力,决定采用Java Web技术以及轻量级的J2EE框架技术实现,在分析设计阶段采用面向对象方法,所以要求组员提前学习RAD 6.0/7.0中提供的UML选项的功能。开发过程遵循迭代方式,对系统需求分优先级并跟踪管理,最开始实现初级需求,然后实现次级需求。将来可以考虑引进EJB组件技术以及Java Web Service技术。 括胡台: 对RAD 6.0/7.0工具以及其UML功能选项,我们还不够熟悉但是考虑将来的功能改进和技术储备,建议采用集成更多功能选项的RAD 6.0/7.0,以便将来的开发技术升级。 索图冀: 参考以下两图,我们在票务系统开发的始终,都要有个良好的组织管理,特别是对需求理解不清或发生变更的时候,要及时和项目主管、用户主管以及项目组成员交流,做到及时发现问题、解决问题。3.2 系统分析模型 在系统分析初期阶段,要在用例的基础上,结合顺序图、活动图,对系统涉及的实体类(商务数据逻辑类)以及相关的界面类、控制类进行建模,可从以下几个方面考虑。 1. 发现候选对象(类) (1) 问题域: 启发分析员发现对象的因素有人员、组织、物品、设备、事件、表格、结构等。 (2) 系统边界: 考虑的因素包括人员、设备和外系统。 (3) 系统责任: 包括系统安装、配置、信息备份、浏览等。系统责任要求的某些功能可能(图形用户界面,数据库管理系统)与实现环境相关。在OOA阶段,候选对象中不提供这些对象是正常的、应推迟到设计阶段再加以考虑。 2. 对象的精简 (1) 舍弃无用的对象: 通过属性或通过服务判断。 (2) 对象的精简: 只有一个属性的对象或只有一个服务的对象。 3. 发现候选属性 (1) 按一般常识这个对象应该有哪些属性。 (2) 在当前的问题域中,这个对象应该包含哪些属性。 (3) 根据系统责任的要求,这个对象应该包含哪些属性。 (4) 建立这个对象是为了保存和管理哪些信息。 4. 发现候选服务 (1) 考虑系统责任、问题域。 (2) 分析对象的状态。 (3) 追踪服务的执行路线。 在需求说明基础上,在以上原则的指导下,获取的是系统分析模型,在此基础上细化分析和设计,得到类的更细化的属性和方法描述,以及类间关系和约束规则,就是系统设计模型。 5. 数据库表设计 1) 数据库结构信息(表3-1) 表 3-1 序 号表 名功能说明优先级2.2.1TICKETS门票信息一期实现2.2.2TICKET_ITEM门票明细二期实现2.2.3INVENTORY存货清单一期实现2.2.4SHOP_MEMBER会员信息一期实现2.2.5MEMBER_CLASS会员等级一期实现2.2.6MEMBER_ACCOUNT会员账户一期实现2.2.7ORDER_TICKET订单信息一期实现2.2.8ORDER_ITEM订单明细一期实现2.2.9TRANSACTIONS支付记录一期实现2.2.10INVOICES发票信息二期实现2.2.11INVOICE_ITEM发票明细二期实现续表 序 号表 名功能说明优先级2.2.12DELIVERYS配送信息一期实现2.2.13MANAGER管理员信息一期实现2.2.14FEEDBACKS反馈信息一期实现2.2.15QUESTIONS常见问题一期实现2.2.16BULLETINS最新公告一期实现 2) 数据表结构设计 (1) 表TICKETS(表3-2) 表 3-2 表 名 列 名TICKETS数据类型(精度范围)空/非空约束条件其他说明TICKET_IDBIGINT非空主键门票编号TICKET_NAMEVARCHAR(50)非空门票名称TICKET_CLASSVARCHAR(50)非空门票类型TICKET_PRICEDECIMAL(6)非空门票价格TICKET_INTROVARCHAR(200)非空门票介绍TICKET_STATUSVARCHAR(20)非空门票状态TICKET_SDATEDATE非空初售日期TICKET_ADATEDATE非空指定日期补充说明 (2) 表TICKET_ITEM(表3-3) 表 3-3 表 名列 名TICKETS_ITEM数据类型(精度范围)空/非空约束条件其他说明TITEM_IDBIGINT非空主键序列号 TICKET_IDBIGINT非空门票编号TSTATEVARCHAR(10)非空是否售出补充说明 (3) 表INVENTORY(表3-4) 表 3-4 表 名列 名INVENTORY数据类型(精度范围)空/非空约束条件其他说明INVT_IDBIGINT非空主键序列行号TICKET_IDBIGINT非空门票编号QUANTITYINTEGER非空库存数量SHELFVARCHAR(20)非空存放单元续表 表 名列 名INVENTORY数据类型(精度范围)空/非空约束条件其他说明LOCATION VARCHAR(20)非空存放区域IUPDATEDATE非空更新日期补充说明 (4) 表SHOP_MEMBER(表3-5) 表 3-5 表 名 列 名 SHOP_MEMBER数据类型(精度范围)空/非空约束条件其他说明JIDBIGINT非空主键客户编号USERNAMEVARCHAR(50)非空UNIQUE用户名称PASSWORDVARCHAR(20)非空用户密码REALNAMEVARCHAR(50)非空真实姓名ID_CARDVARCHAR(20)UNIQUE身份证号SEXVARCHAR(10)客户性别AGEINTEGER客户年龄CLASS_NAMEVARCHAR(50)非空客户类别HANDYVARCHAR(20)非空手机号码EMAILVARCHAR(50)非空电子邮件COUNTRYVARCHAR(100)所在国家STATEVARCHAR(100)所在州省CITYVARCHAR(100)所在城市ADDRESSVARCHAR (100)详细地址POSTCODEVARCHAR(50)邮政编码PHONEVARCHAR(50)固定电话FAXVARCHAR(50)传真电话RDATEDATE非空注册日期DDATEDATE注销日期补充说明 (5) 表MEMBER_CLASS(表3-6) 表 3-6 表 名列 名MEMBER_CLASS数据类型(精度范围)空/非空约束条件其他说明CLASS_NAMEVARCHAR(50)非空主键客户类别DISCOUNTDECIMAL(6)折扣比列COMMENTRAYVARCHAR(1000)备注信息 补充说明 (6) 表MEMBER_ACCOUNT(表3-7) 表 3-7 表 名列 名MEMBER_ACCOUNT数据类型(精度范围)空/非空约束条件其他说明ACCT_IDBIGINT非空主键账户编号JIDBIGINT非空客户编号ACCT_PWDVARCHAR(20)非空账户密码ACCT_AMOUNTDECIMAL(6)非空账户余额CREDIT_GRADEINTEGER非空信用等级CREDIT_LIMITDECIMAL(6)非空信贷限度ACCT_STATUSVARCHAR(20)非空账户状态补充说明 (7) 表ORDER_TICKET(表3-8) 表 3-8 表 名列 名ORDER_TICKET数据类型(精度范围)空/非空约束条件其他说明ORDER_IDBIGINT非空主键订单编号JIDBIGINT客户编号ORDER_CDATEDATE订单日期ORDER_CTIMETIME订单时刻SHIP_CDATEDATE递送日期SHIP_CTIMETIME递送时刻PAYMENT_METHODVARCHAR(50)支付方式SHIP_NAMEVARCHAR(50)接收姓名SHIP_COUNTRYVARCHAR(100)所在国家SHIP_STATEVARCHAR(100)所在州省SHIP_CITYVARCHAR(100)所在城市SHIP_ADDRESSVARCHAR(100)详细地址SHIP_POSTCODEVARCHAR(50)邮政编码SHIP_PHONEVARCHAR(50)固定电话SHIP_METHODVARCHAR(50)递送方式POSTAGEDECIMAL(6)递送费用ORDERTAXESDECIMAL(6)订单税费TOTALDECIMAL(10)订单金额ORDER_STATEVARCHAR(50)订单状态补充说明 (8) 表ORDER_ITEM(表3-9) 表 3-9 表 名列 名ORDER_ITEM数据类型(精度范围)空/非空约束条件其他说明OITEM_IDBIGINT非空主键序列编号ORDER_IDBIGINT非空订单编号TICKET_IDBIGINT非空门票名称NUMBERINTEGER非空所定数量SUB_TOTALDECIMAL(10)单项金额补充说明 (9) 表TRANSACTIONS(表3-10) 表 3-10 表 名列 名TRANSACTIONS数据类型(精度范围)空/非空约束条件其他说明TRANC_IDBIGINT非空主键交易编号ORDER_IDBIGINT非空订单编号JIDBIGINT非空客户编号ACCT_IDBIGINT非空账户编号TRANC_TOTALDECIMAL(10)非空交易金额TRANC_DATEDATE非空交易日期 补充说明 (10) 表INVOICES(表3-11) 表 3-11 表 名列 名INVOICES数据类型(精度范围)空/非空约束条件其他说明INVOICE_IDBIGINT非空主键发票编号ORDER_IDBIGINT非空订单编号PAYERNAMEVARCHAR(50)非空客户名称PAYEENAMEVARCHAR(100)非空开票单位FILLERNAMEVARCHAR(50)非空真实姓名INVOICE_TOTALDECIMAL(10)非空发票金额INVOICE_DATEDATE非空发票日期 补充说明 (11) 表INVOICE_ITEM(表3-12) 表 3-12 表 名列 名INVOICE_ITEM数据类型(精度范围)空/非空约束条件其他说明VITEM_IDBIGINT非空主键序列编号INVOICE_IDBIGINT非空发票编号PROD_IDBIGINT门票编号PROD_NAMEVARCHAR(50)门票名称PROD_SPECSVARCHAR(100)规格描述PROD_UNITSVARCHAR(50)计量单位NUMBERINTEGER所定数量PROD_PRICEDECIMAL(10)门票单价SUB_TOTALDECIMAL(10)单项合计补充说明 (12) 表DELIVERYS(表3-13) 表 3-13 表 名列 名DELIVERYS数据类型(精度范围)空/非空约束条件其他说明DELIV_IDBIGINT非空主键递送编号ORDER_IDBIGINT非空订单编号JIDBIGINT非空客户编号DELIV_NAMEVARCHAR(50)非空递送方式DELIV_EXESDECIMAL(10)非空递送费用DELIV_DATEDATE非空递送日期INCEPT_DATEDATE非空接收日期DELIV_STATEVARCHAR(50)非空配送状态DELIV_SCOREVARCHAR(50)接收反馈 补充说明 (13) 表MANAGER(表3-14) 表 3-14 表 名列 名MANAGER数据类型(精度范围)空/非空约束条件其他说明MAN_IDBIGINT非空主键管理编号JIDBIGINT非空客户编号MAN_USERVARCHAR(20)非空UNIQUE管理用户MAN_PWDVARCHAR(20)非空管理密码MAN_GRADEVARCHAR(20)权限等级MAN_REQUESTDATE非空申请日期MAN_CONFIRMDATE批准日期CFM_MAN_IDBIGINT责管编号补充说明 (14) 表FEEDBACKS(表3-15) 表 3-15 表 名列 名FEEDBACKS数据类型(精度范围)空/非空约束条件其他说明FIDBIGINT非空主键序列编号JIDBIGINT非空客户编号FDATETIMESTAMP(10)留言时间FINFO VARCHAR(2000)反馈内容补充说明 (15) 表QUESTIONS(表3-16) 表 3-16 表 名列 名QUESTIONS数据类型(精度范围)空/非空约束条件其他说明QIDBIGINT非空主键问题编号JIDBIGINT非空客户编号QTITLEVARCHAR(100)非空UNIQUE问题标题QDATETIMESTAMP(10)非空提问时间QREPLYVARCHAR(1000)答复内容MAN_IDBIGINT非空管理编号QPATHVARCHAR(200)存放路径RDATETIMESTAMP(10)答复时间补充说明 (16) 表BULLETINS(表3-17) 表 3-17 表 名列 名BULLETINS数据类型(精度范围)空/非空约束条件其他说明BIDBIGINT非空主键公告编号MAN_IDBIGINT非空管理编号BTITLEVARCHAR(100)非空UNIQUE公告标题CONTENTVARCHAR(1000)非空公告内容BDATEDATE非空公告日期补充说明 在设计数据库表结构的时候,参照实体类的属性定义字段,注意参考数据库的设计规范。