第六章商务应用软件设计商务应用软件设计的定位电子商务应用软件(网络银行、网络购物、B2B、C2C平台等)电子商务服务平台安全(firewall等)认证与支付(CA/SET/SSL)中间件性能管理(LoadBalance等)电子商务应用开发及运行支持平台操作系统(Windows/UNIX/Linux)开发平台(MSVisualStudio.NET、Eclipse等)应用服务器和Web服务器(IIS、WebSphere、WebLogic等)计算机硬件(主机、外部设备等)网络基础设施(电信网络、有线电视网、无线网络等)电子商务系统电子商务应用商务应用基础环境开发及运行支撑环境硬件环境网络环境软件支撑平台基础设施平台应用软件设计电子商务系统体系结构一、商务应用软件的功能系统分析阶段所进行的功能分析是应用软件设计的基础电子商务应用软件的主要业务功能信息服务功能交易功能支付结算功能对商品(或服务)的跟踪功能系统管理和维护功能:网络管理、网络安全、网络应用、数据管理等二、商务应用软件设计的基本内容软件架构设计确定构成系统的成分、这些成分之间的相互作用、指导其组合的风格子系统的划分与模块设计从计算机实现的角度,将应用软件分解为功能相对独立的子系统,并将其进一步细分为功能独立的模块,分析确定每个模块的处理流程,以指导后续的编程工作。数据库设计与联机事务处理设计主要针对利用数据库管理系统(DBMS)管理结构化数据,对数据的逻辑结构、存取方式等进行设计设计联机事务处理的相关内容,以保证业务逻辑的正确实现输入/输出设计选择客户端设备,并根据客户端设备的基本特征选择或设计客户端应用软件输入/输出软件设计,主要是对应用软件的输入/输出数据的格式、内容、方法、校验等方面进行设计关于输入/输出设计与应用软件核心业务逻辑处理相关的代码占总代码的20%,而与输入/输出相关的代码则占80%输入设计输入方式设计:键盘输入、自动识别输入、来自其它系统输入界面设计输出设计设计系统输出结果的形式:必须满足特定标准规范的数据非标准数据三、商务应用软件设计商务应用软件的层次结构设计子系统划分及模块设计应用软件详细设计商务应用软件的层次结构设计层次性是现代所有计算机软硬件系统均具有的特征层次化的目的简化问题分头求解重用组件电子商务系统基本的层次划分方法客户端表达逻辑(ThinClinet)服务器端表达逻辑(ServerSide)表达逻辑(FatClient)商务逻辑数据存取电子商务应用软件页面、广播动画、短信……网络广告信息发布虚拟社区……网络交易电子零售客户关系管理供应链管理……数据存取联机事务处理联机分析……电子商务应用软件逻辑电子商务应用软件功能电子商务应用软件分布浏览器Web服务器专用客户端应用服务器数据库服务器应用表示层业务逻辑层数据层应用表示层的应用软件主要运行于服务器和用户终端设备,其主要作用是为最终用户提供一个友好的交互界面,接收用户提交的事件,并将处理结果返回给用户业务逻辑层的应用软件主要运行于服务器或者应用服务器,其主要作用是进行业务处理,实现企业业务逻辑的核心功能数据层的应用软件主要运行于应用服务器或数据库服务器,其主要作用是实现不同数据源数据的存取、联机事务处理或联机事务分析进一步细分的电子商务系统多层次结构Web服务器Web服务器Web服务器应用服务器应用服务器数据访问/交易中间件数据库服务器数据库服务器通信中间件客户端请求子系统及模块的划分划分原则相对独立性—高内聚较低的耦合—低耦合数据冗余小充分利用各类资源便于系统分阶段实现划分方法按逻辑功能划分按职能划分按过程划分按时间划分按通信划分大中型电子商务软件中子系统及模块的划分一般采用先按职能划分子系统,再按功能划分模块的方式电子商务系统部门1子系统部门2子系统部门3子系统信息发布模块报表输出模块信息反馈模块信息发布模块交易管理模块报表输出模块…………信息维护模块用户管理模块报表输出模块……应用软件详细设计应用软件的详细设计主要是面向软件开发需要,对系统各模块功能和处理流程进行更深入和详细的分析,完成系统模块的功能及处理流程设计、输入/输出设计、信息编码设计、数据存储设计等内容。结构化设计方法详细设计的目标给出软件模块结构中各模块的内部过程描述(算法)选定某种表达形式来描述各种算法面向对象设计方法详细设计的目标明确各个类的组成给出各个类成员函数的内部过程描述(算法)案例应用软件详细设计的基础是系统分析阶段得出的用例图、活动图等文档针对“用户提交报修申请”这一过程,根据系统分析结构可利用一张交互图来描述完整的报修申请提交的过程以及此过程中所涉及到的对象用户报修申请提交过程交互图进一步归纳出所涉及的三个对象的信息对象名称方法属性RepairSubmitInterface信息接收处理销售信息核对显示用户产品信息报修申请提交提交结果显示报修申请信息销售信息ServiceDataManage数据核对SalesDataManage报修信息提交继续针对其它处理过程进行设计报修任务分配交互图顺序图的细化CustomerOrderFormOrderControlCustomerLineItemOrderProductselectitem()selectitem()createorder()additem()providelogininfo()requestlogin()verifylogin()revieworder()revieworder()getcustomerinfo()getorderinfo()getlineitems()getproductinfo()confirmorder()confirmorder()chargecustomer()updateorderinfo()updatelineitems()updateinventory()图6.14PlaceOrder用例的顺序图交互系统的设计模式在电子商务系统的设计中,最常用的一个设计模式是MVC(Model-View-Controller模式-视图-控制)。MVC架构是随着80年代smalltalklanguage语言的发展而提出的,它是一个著名的软件设计模式,现在已经被广泛的使用。经典的MVC架构把一个组件(可认为是整个应用程序的一个模块)划分成三部分:1模型(Model)模型是应用程序的主体部分,包含应用程序的核心功能。用来管理这个模块中所用到的数据和值,通常表示业务数据,或者业务逻辑。2视图(View)视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面,它是应用程序的外观。3控制器(controller)控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态,管理用户与视图发生的交互。抽象产生类图,并进一步划分得到包图PersonsInterfacesDataManageBusiness包图Person包中的部分类信息四、数据库设计及联机事务处理设计数据库设计就是指对于给定的软硬件环境,针对现实问题,设计一个较优的数据模型,建立数据库结构和数据库应用系统。包括:数据结构设计规划设计数据库的框架以及数据库、表的结构关系数据库表结构的设计数据行为设计设计相关的应用处理逻辑、事务处理方法等联机事务处理设计数据库表设计的基本原则提高数据共享能力减少冗余避免数据不一致保持数据完整性增强安全性加强标准化数据库表设计的具体工作指南对于公共的、基础的属性类数据尽可能建立数据字典同一条信息尽可能只存放于一个表中利用工具画出E-R图,并生成数据库建表的脚本对于主要是读操作的数据,可以适当保留冗余数据库表设计方法(案例)分析业务流程中所涉及的信息案例中包括客户信息、客户服务信息、销售信息等针对信息分类确定待设计的数据库表确定维修基本信息表(RepairBaseInfo)考虑数据库设计基本原则,确定采用单独的表(ClientInfo)存储客户信息确定表的关键字及关联方式RepairBaseInfoClientID……ClientInfoIDNameAddressPhone继续设计数据库表考虑到维修时需掌握其当初销售的相关信息,因此,如果在其它模块设计中尚未建立订单基本信息表(OrderInfo),则增加之RepairBaseInfoClientIDOrderID……ClientInfoIDNameAddressPhoneOrderInfoIDClientIDOrderTime……由订单可以获取该用户可能修理的产品的种类、规格、型号等信息,因此增加产品信息表考虑到订单与产品之间可能存在的N:N关系,因此,增加中间关系表“订单—产品关系表”继续设计数据库表RepairBaseInfoClientIDOrderID……ClientInfoIDNameAddressPhoneOrderInfoIDClientIDOrderTime……Order_ProductOrderIDProductIDNumber……ProductInfoIDNamePriceMaterialStyle……继续设计数据库表为了记录承担维修工作的维修人员信息,增加维修人员信息表(EngineerInfo)考虑到维修任务与维修人员之间的N:N对应关系,增加“维修计划—维修人员对应表”RepairBaseInfoIDClientIDOrderIDPlanStartTimeRealStartTimeFinishTime……ClientInfoIDNameAddressPhoneOrderInfoIDClientIDOrderTime……Order_ProductOrderIDProductIDNumber……ProductInfoIDNamePriceMaterialStyle……Repaire_EngineerRepairIDEngineerIDEngineerInfoIDNameClass……经补充完善之后,形成较完整的报修处理相关的数据库表结构对应的维修信息表结构字段名意义类型长度备注ID报修信息编号int4自动编号、主键ClientID报修用户编号int4ManagerID此报修问题处理人编号int4OrderID订单编号int4Problem问题详细描述varchar300ReportTime报修时间DateTime8PlanStartTime计划开始维修时间DateTime8RealStartTime实际开始维修时间DateTime8FinishTime维修完成时间DateTime8Suggestions用户意见建议varchar300联机事务处理基本概念概念:事务是一个逻辑工作单元,它包括一些数据库操作(特别是一些更新操作),这些操作要么都执行,要么都不执行,是一个不可分割的工作单位。事务的特性原子性在事务内的所有操作要么在一起成功,要么一起失败。一致性当事务失败退出时,所有在本事务中被修改的数据,都会被恢复到事务开始时的状态。独立性在事务执行过程中,已被修改但未被提交的数据,对于其他事务是不可见的。永久性已被提交的数据是永久的,不可再恢复的。事务的两种基本操作提交:commit表明事务成功地结束它告诉事务管理器一个逻辑工作单元已成功完成,数据库又处于或应该又处于一致性状态,该工作单元的所有更新操作现在可被永久保留。回滚:rollback表明事务不成功地结束它告诉事务管理器出故障了,数据库可能处于不一致的状态,该逻辑工作单元已做的所有更新操作必须被撤消。有时,由于某种原因,尽管并未真的出现故障,也会在程序中利用回滚机制放弃最近所做的工作,使数据恢复到之前的某一状态事务处理应注意的问题保证事务的原子性保证事务的连续性保证事务的隔离性保证一组并发事务的交叉执行(通常)是可串行的事务的并发处理事务处理中的并发问题丢失更新读取未提交的“脏”数