490 likes | 612 Views
Object Oriented. 软件工程研究室. 处理实例 —— 在线购物: 客户定单. 一个计算机制造厂商提供了通过因特网购买计算机的可能 性, 客户 可以在制造商的 Web 页面上选择一台计算机,计算 机分为服务器、台式机和笔记本。客户可以选择标准配 置,或者可以在线建立自己希望的配置。可配置的构件( 如内存)显示在一个可供选择的列表中。对每个新的配 置,系统可以计算价格。. 要发出定单,客户必须填上运送和付款信息,可接收的付 款方式为信用卡和支票,一旦定单被输入,系统向客户发 送一个确认 e-mail 消息,并附上定单的细节,在等待计算
E N D
Object Oriented 软件工程研究室
处理实例——在线购物:客户定单 • 一个计算机制造厂商提供了通过因特网购买计算机的可能 • 性,客户可以在制造商的Web页面上选择一台计算机,计算 • 机分为服务器、台式机和笔记本。客户可以选择标准配 • 置,或者可以在线建立自己希望的配置。可配置的构件( • 如内存)显示在一个可供选择的列表中。对每个新的配 • 置,系统可以计算价格。 • 要发出定单,客户必须填上运送和付款信息,可接收的付 • 款方式为信用卡和支票,一旦定单被输入,系统向客户发 • 送一个确认e-mail消息,并附上定单的细节,在等待计算 • 机送到的时候,客户可以在任何时候在线查到定单的状态。 • 后端定单处理包含下面所需的步骤:验证客户的信任度和 • 付款方式、向仓库请求所订购的配置、打印发票并且请求 • 仓库将计算机运送给客户。
用例建模 • 参与者: 与用例交互的任何人或任何事情.要 得到有用的结果 • 用例:功能的具体化为用例(功能需求可以直 接映射到用例)表示一个完整的给用户 传值的功能性单元. • 用例图: 将用例赋给参与者. 是系统行为模型的主要可视化技术. 图形元素:用例、参与者. • 为用例编写文档: 用事件流来描述.
第1步(在线购物)用例建模:寻找系统中参与者第1步(在线购物)用例建模:寻找系统中参与者 • 考虑如下扩展的需求来发现在线购物应用中的参与者。 • 1.客户使用制造厂商的Web页面来查看所选择的服务器、 • 台式机或笔记本的标准配置,价钱也同时显示出来。 2.客户选择查看配置的细节,也许带有买它的意愿或建 立一个更合适的配置。每种配置的价格在客户要求的 情况下可以计算出来。 3.客户可以选择在线订购计算机,或者也可以要求销售 人员在定单真正发出之前与自己联系,解释定单的细 节、协商价格等。
4. 要发出定单,客户必须填写在线表格关于运送和发票 地址以及付款细节(信用卡或支票)。 5. 在客户定单输入到系统之后,销售人员发送电子请求 给仓库,附上所订购的配置的细节。 6. 事务的细节,包括定单号和客户账号,要e-mail客给 户,使得客户可以在线查看定单的状态。 7.仓库从销售人员那里获得发票,并给客户运送计算机。
第1步(在线购物)用例建模:寻找参与者 • 基于以上分析创建以下参与者: • 1.客 户------Customer • 2.销售人员------Salesperson • 3.仓库管理------Warehouse Warehouse Customer Salesperson 图1-1 参与者(在线购物)
第2步(在线购物)用例建模:寻找用例 • 表1-1 寻找用例(在线购物)
请求销售人员联系 建立计算机配置 显示标准计算机配置 订购预先配置的计算机 Build Computer Configuration Order Configured Computer Display Standard Computer Configuration Request Salesperson Contact 更新定单 状态 将定单通知仓库 验证并接受客户付款 打印发票 Inform Warehouse about Order Verify and Accept Customer Payment Update Order Status Print Invoice 第2步(在线购物)用例建模:寻找用例 图1-2 用例(在线购物)
验证并接受客户付款 打印发票 Verify and Accept Customer Payment Print Invoice 第3步(在线购物)用例建模:画用例图 制定计算机配置 显示标准计算机配置 订购预先配置的计算机 Build Computer Configuration Display StandardComputer Configuration Order Configured Computer 《extend》 请求销售人员联系 Customer 更新定单状态 Request Salesperson Contact 图1-3 用例图(在线购物) Update Order Status 将定单通知仓库 Salesperson 销售人员 Warehouse 仓库管理 Inform Warehouse about Order
第4步(在线购物)用例建模:编写用例文档 表1-2 用例“订购配置的计算机”(在线购物)的陈述性规格说明 后置 条件
活动建模 • 活动图填补了系统行为在用例模型中的 高级表示和行为在交互模型中的低级表 示之间的空白 • 活动状态可根据用例文档来建立 • 活动应从系统的角度,而不是从参与者的 观点命名; • 活动图也可用于在一个高的抽象层次上 理解业务进程; 在多线程应用中设计并发活动.
第5步(在线购物)活动建模:找出活动 表1-3 在主要的和附加的流中找出活动 • 为用例Order Configured Computer(定购配置计算机)找出活动
Display Current Configuration Display Purchase Form Get Order Request Email Order Details Get Purchase Details 显示当前配置 获取购买细节 获取订购请求 Email定单细节 显示购物表格 [incomplete] Store Order 存储定单 第6步(在线购物)活动建模:活动图 [timeout] [OK] 图1-4 用例Order Configured Computer的活动图
类建模 • 类建模元素包含: 类自身、类的属性、操作、关联、聚合、组合、 泛化,类图提供这些建模元素的组合可视化表示。 • 类建模和用例建模可并行进行。 用例辅助类的发现,类模型可以发现被忽略的用例。 • 实体类:定义业务对象 边界类:定义GUI对象 控制类:控制程序逻辑的类 • 类的结构由它的属性定义; • 对象协作的路径由关联表示 即关联用于指向所关联类的属性类型。
第7步(在线购物)类建模:找出实体类 表1-4 需求到实体类的赋值(在线购物)
ConfiguredComputer Order Invoice Payment 第7步(在线购物)实体类 Customer (from Use Case View ) Computer 计算机类 客户类(从用例角度) ConfigurationItem 配置细节类 配置的计算机类 发票类 定单类 付款类 图1-5 类(在线购物)
ConfigurationItem - item_type:String- item_descr:String Customer (from Use Case View) • - customer_name:String • - customer_address:String • - phone_number:String - email_address:String Order - order_number:String - order_date:Date – ship_address:String - order_total:Currency - order_status:String - salesperson_name:String Computer -computer_name:String -standard_price:Currency 第8步(在线购物)类建模:原始类型的属性
第8步(在线购物)类建模:原始类型的属性 ConfiguredComputer -computer_name:String -configured_price:Currency Invoice -invoice_number:String -invoice_date:Date –invoice_total:Currency Payment -payment_method:String -date_received:Date –amount_received:Currency 图1-6 原始属性(在线购物) 18
Customer (from Use Case View ) ConfiguredComputer Order Payment Invoice Computer ConfigurationItem 第9步(在线购物)类建模:增加关联(聚合) 1 1..* 0..* 1 0..* 配置细节类 1 1..* 1 0..1 1..* 发票类 配置的计算机类 图1-7 聚合(在线购物)
第10步(在线购物)类建模:增加泛化 Customer (from Use Case View ) ConfigurationItem 1 0..* 1..* Order Computer 1 0..* 1..* 1 1 0..1 Payment Invoice 配置 的计 算机 类 ConfiguredCompute StandardComputer 标准 计算 机类 图 1-8 泛化(在线购物)
Customer (from Use Case View) -customer_name:String -customer_address:String –phone_number:String -email_address:String Order -order_number:String -order_date:Date –ship-address:String -order_total:Currency -order_status:String -salesperson_name:String Payment Invoice ConfiguredComputer Computer ConfigurationItem -item_type:String -item_descr:String -payment_method:String -date_received:Date –amount_received:Currency -invoice_number:String -invoice_date:Date –invoice_total:Currency -configured_price:Currency -computer_name:String 第11步(在线购物)类建模:类的属性 1..* 0..1 1 0..* 1 0..* 1..* 1 StandardComputer 1 -standard_price:Currency 配置的计算机类 标准计算机类 图1-9 类图(在线购物)
交互建模 • 交互建模是需求分析的高级阶级.提供了用例的详细规 格说明,用来捕获执行一个用例的对象之间的交互。 • 交互建模是将事件赋予了对象,显示了协作对象之间的 事件(消息)的次序。 • 交互模型有: (交互是某个行为的一组消息及在对象间的交互) 序列图—强调时间序列,是二维图(水平维表示对象, 垂直维表示消息的次序)需求分析中使用 。 消息在序列图中出现,规定了在类图中需要一个关联。 协作图—强调对象关系,系统设计中使用。 • 交互和操作:检测交互导致操作的发现。 交互模型中的消息和实现类中的方法之间 是一对一的映射。
第12步(在线购物)交互建模:序列图 配置窗口类 计算机类 配置细节类 aConfWin: ConfigurationWindow aComp: Computer : Configuration Item :Customer openNew getConf 打开新配置窗口 *getConfItem(out item_rec) 获取配置 displayComputer(item_recset) 获取配置细节 显示计算机 图1-10 活动 display current configuration 的序列图(在线购物)
第13步(在线购物)交互建模:显示用操作扩展的类第13步(在线购物)交互建模:显示用操作扩展的类 • 《boundary》 • ConfigurationWindow 《 constructor 》openNew() displayComputer(item_reset) 《边界类 》配置窗口类 Computer ConfigurationItem Computer-name -item_type:String -item_descr:String 《 abstract 》 getConf() getConfItem(out item_rec) 计算机类 配置细节类 图1-11 用交互关系来给类增加操作(在线购物)
:配置窗口类 :定单窗口类 :配置窗口类 :计算机类 :定单类 aConfWin: ConfigurationWindow aConfWin: ConfigurationWindow aComp: Computer : OrderWindow : Order :Customer openNew 打开新配置窗口 getConf acceptConf 获取配置 接受配置 prepareForOrder displayOrder 准备定单 显示定单 submitOrder 提交定单 storeOrder 存储定单 linkComputer linkCustomer 链接计算机对象 linkPayment emailOrder Email定单 图1-13 活动图Order Configured Computer 的序列图 图1-13 活动图Order Configured Computer 的序列图(在线购物) 第14步(在线购物)交互建模:简化序列图 :计算机类 :定单类 :定单窗口类 aComp: Computer : Order : OrderWindow :Customer openNew getConf 打开新配置窗口 acceptConf 获取配置 prepareForOrder displayOrder 接受配置 准备定单 submitOrder 提交定单 storeOrder linkComputer 存储定单 转下页 链接计算机对象 emailOrder linkCustomer linkPayment 图1-13 活动图Order Configured Computer 的序列图 图1-12 活动图Order Configured Computer的序列图(在线购物)
(在线购物)交互建模:简化序列图 :Payment : Customer : Order : OrderWindow displayOrder storeOrder Computer linkCustomer linkPayment 图1-12 活动图Order Configured Computer 的序列图
状态图建模 • 对象的状态由对象属性的当前值表示(原始属性及指向 其他类的属性). • 状态模型给出了类的详细描述,类的状态的动态变化.这 些动态变化典型地描绘了对象跨越几个用例时的行为. • 状态模型捕获了类可以具有的状态即捕获了类生命期的 历史.对象在其生命期间的标识是不变化的,但对象的状 态可能发生变化. • 状态图是状态和由事件引起的变迁(箭头)组成的图. 对每个对象状态,它决定这个对象在接收到一个事件时 将采取什么行为,行为的执行将引起状态的变化. 变迁的完整描述: event (parameters) [guard] / action
Unpaid 第15步(在线购物)发票状态图 Partial payment Partly Paid 部分付款状态 未付款状态 final payment final payment Fully Paid 完全付款状态 图1-13 类Invoice的状态和事件
stock available[ship date in future] [canceled] stock available[ship date now]/configureComputer ship[accepted] 图1-14 类Order的状态图(在线购物) 第16步(在线购物)状态图建模:给类Order画状态图 pending 没有库存 stock not available Back Order New Order 延期的定单 有库存[将来运送日期] Future Order stock available[ship date in future] 将来的定单 有库存[现在的运送日期]/配置计算机 Cancel Ready to Ship [cancellation] 取消预定 准备运送 Filled 定单信息存入数据库
第17步(在线购物):限定关联 Order -order_number:String -order_date:Date -ship_address:String -order_total:Currency -order_status:String -salesperson_name:String Configuration_id:Integer 0..* 1 Computer Computer_name:String 图1-15 被限定的关联 Getconf()
aCust: Customer aConfItem: ConfigurationItem 1 openNew 3 *getConf(out item_rec) 2 getConf aComp: Computer AConfWin: ConfigurationWindow 4 displayComputer(item_reset) 第18步(在线购物):协作图 获取配置细节 获取配置 图1-16 Display Current Configuration 的协作图
可能的配置 制定计算机配置 送货 将定单通知仓库 更新定单状态 第19步(在线购物):用例包 产品 显示标准计算机配置 购买 请求供货方合同 订购预先配置的计算机 付款 验证并接受客户付款 打印发票 图1-17 用例包(在线购物)
《entity》Customers 《boundary》 OrderGUI 《entity》Orders 《entity》Computers 《db interface》Connection 《db interface》CRUD 《db interface》 Schema 计划 第20步(在线购物):类包 《控制包》定单处理 《boundary》ConfigurationGUI 《边界包》 配 置 《control》OrderPlacement 《control》ConfigureProcess 《控制包》配置处理 创建-读-更新-删除 《数据库包》连接 图1-18 类包(在线购物)
构件与部署的设计 • 构件是系统的物理部分,依赖实现平台. • 构件是有清晰边界的功能单元. • 构件必须被仔细的设计和实现. • 支持Web应用的部署结构包括四层计算结点: 带浏览器的客户端; Web服务器; 应用服务器; 数据库服务器. Web服务器处理来自浏览器的页面请求,并为客户端上 的执行和显示动态产生的页面和代码. Web服务器还与用户一起解决活动阶段的客户化和参 数化.若在实现时引入了分布式对象,使用应用服务器管 理业务逻辑.业务构件将它们的接口通过如CORBA、 DCOM和EJB等的构件接口向其他结点发布.
业务构件封装了存储在数据库中的永久对象,它们业务构件封装了存储在数据库中的永久对象,它们 与数据库服务器通过数据库互连协议进行通信如 JDBC, ODBC. 典型技术: ODBC(开发数据库互连) JDBC(Java数据库互连) RBO(远程数据对象) ADO(ActiveX数据对象) DBLib(数据标准库) Web服务器技术: 脚本化HTML(超文本Markup语言) 页面—ASP(活动服务器页面) JSP(Java服务器页面)
Web页面技术: 客户机脚本(JavaScript或VBScript) XML(eXtensible Markup语言)文档 Java应用程序、JavaBean或者ActiveX控件. 客户使用HTTP(超文本传输协议)来从Web服务器 获得Web页面, 该页面可以被脚本化或包含己编译的可执行的DLL(动 态链接库)模块 如:ISAPI(因特网服务器应用程序设计界面)、 NSAPI(Netscape服务器应用程序设计界面) 、 CGI(公共网关界面)或Java小服务程序 36
ProductDisplay ProductList Configuration Purchase OrderTracking 产品显示 产品列表 配置 购买 定单追踪 第21步(在线购物):构件图 图1-19 构件包(在线购物)
第22步(在线购物):部署图 图1-20 部署图(在线购物)
详细设计 • 包、构件、结点属于体系结构的设计。 • 详细设计集中在协作上,协作定义用例的 实现或复杂操作的实现。 • 协作设计导致类图的细化或产生,顺序图、 状态图的细化。
第23步(在线购物):用例规格说明 用例规格说明:Order Configured Computer 1.[UC15 Order Configured Computer] 1.1简述 客户填写并提交购买定单表。系统验证细节并确认或拒绝这个定单. 2.事件流 2.1.基本流 2.1.1.[UC15.1系统在客户的Web浏览器上显示Order Entry表格,这 个表格包含如下项目] • [UC15.1.1 表的标题为Order Your Computer。] • [UC15.1.2 解释信息显示在标题下方 这段解释信息的正文如下: “请填写表格中的项目。要求的项目为红颜色并且是黑体。 按Submit键提交该表,或者如果你决定不继续你的预定时,按Cancel 键。你能够在提交预定的24小时之内取消你的预定,不用交罚金。 你可以用Web、email、fax或电话取消提交的预定。”]
第23步(在线购物):用例规格说明 [UC15.1.3运送地址项] [UC15.1.3.1 所要求的运送地址项为:名字、国家、城市、街区、 邮政方向.] [UC15.1.3.2 后选的运送地址项为:郊区、州、邮政编码。] • [UC15.1.4不同于运送地址提供的其他联系细节。] [UC15.1.4.1 偏好的联系方式:电子邮件、电话、传真、普通邮件、 快递邮件。] [UC15.1.4.2 所要求的联系细节为下列项目之一:电子邮件、电话、 传真。] [UC15.1.4.3 候选的联系细节为:上述三种所要求的联系细节中的任 何两种, 邮件地址(如果与运送项目中提供的不一样 的话)。] • [UC15.1.5 账单地址,如果与运送项目中提供的不一样的话。] 41
第23步(在线购物):用例规格说明 • [UC15.1.6 付款方法。] [UC15.1.6.1 客户可以选择用支票或者信用卡付款。] [UC15.1.6.2 对支票付款,系统提供支票的付款对象信息和应该寄往 的地址信息。它还要通知客户一旦收到支票将在三天内 从账户中取钱。] [UC15.1.6.3 对信用卡付款,系统显示要由客户填写的项。这些项是 可接受的信用卡类型列表、信用卡号、信用卡的过期日期。] • [UC15.1.7 销售代表的名字,如果客户在前面已经知道的话] • [UC15.1.8 两个行为键:Submit和Cancel。] 2.1.2 [UC15.2 系统将光标放在第一个可编辑的域(Name域)上, 通过这种方式提示客户输入定单信息。] • [UC15.3 系统允许按任何次序输入信息。]
第23步(在线购物):用例规格说明 • [UC15.4 如果客户不在15分钟之内提交或者取消这个表,替换动作 “客户未激活”就开始执行] 2.1.3.[UC15.5 如果客户点击Submit按钮,并且所要求的信息都已经提 供,则该定单就提交给Web服务器。该Web服务器通知数 据库服务器在数据库中保存该定单。] • [UC15.6 数据库为这次订购赋予唯一的一个编号和一个客户账号。] • [UC15.7 如果数据库服务器不能创建和存储这个定单,则替换动作 “数据库异常”就开始执行。] • [UC15.8 如果客户提交了信息不完全的定单,则替换动作“不完全信 息”就开始执行。]
第23步(在线购物):用例规格说明 2.1.4.[UC15.9 如果客户提供email地址作为通信方式,系统将定单和 客户编号以及所有的定单细节email给客户,作为对接 收定单的确认。用例终止。] [UC15.10 否则定单信息将寄给客户,该用例也终止。] 2.1.5.[UC15.11 如果客户点击Cancel键,则替换流Cancel就开始执行。] 2. 2 替换流 2.2.1.客户未激活 [UC15.4.1 如果客户在15分钟内没有被激活,则系统中断与浏览 器的连接。用例终止。] 44
第23步(在线购物):用例规格说明 2.2.2 数据库异常 [ UC15.7.1 如果数据库出现异常,系统要进行解释并通知客户错误 的性质。如果客户的连接已经中断,系统将错误信息email 给客户和销售人员。用例终止。如果客户用Internet和 email不能联系,销售人员需要用其他方式联系客户。] 2.2.3.不完全信息 [UC15.8.1 如果客户没有填写所要求的项目,系统请求客户提供这些 漏掉的信息并显示漏掉项目的列表。用例继续。] 2.2.4.取消 [UC15.11.1 如果客户点击Cancel键,该表格的域消失,用例继续。]
第23步(在线购物):用例规格说明 3. 前置条件 3.1. 客户将因特网浏览器指向该系统的Web页面,该页面显示所 配置的计算机的细节以及它的价格。客户点击Purchase键。 3.2. 客户要在请求建立后的计算机配置并在浏览器页面上显示 出来之后的15分钟之内点击Purchase键。 4.后置条件 4.1. 如果客户的预定提交成功,该购买定单记录在系统数据库中。 否则,系统的状态不变。 46
《entity》e_Customer 《db interface》d_Transaction Customer_number Trans_cookie 《entity》 e_order Order_number order_date 《client page》b_OrderClientPage 《server page》c_OrderServerPage 第24步(在线购物):协作的结构 耒自Order Configured Computer的协作类图 《client page》b_ConfigurationClientPage 《form》b_OrderClientForm title explanation shipment contact invoice payment salesperson <<button>>cancel <<button>>submit 《button》Purchase refresh() newOrderClientPage() incompleteSubmit() [onPurchase] beginTransaction()commitTransaction()rollbackTransaction() [On Submit] order 《entity》e_Configuration configuration newOrder() deleteOrder() order order newOrderServerPage() readClient() writeOrder() payment 《entity》 e_Payment customer newCustomer()updateCustomer()emailCustomer() newPayment() 图1-21 用例Order Configured Computer的结构协作(在线购物)
第25步(在线购物):用例的行为协作 HTML格式的客户页面 UC15.8.1 UC15.1,15.2,15.3 订单信息 [on Submit]incompleteOrder 提交不完整订单 :b Order ClientPage [on Purchase]newOrderClientPage UC15.11.1 [on Cancel]refresh更新 :b Configuration ClientPage getConfOID(out ConfOID) :b Order ClientForm :c Order ServerPage [over 15 min]rollbackTransactio 剩余最小值15,消减业务 [on Submit]newOrder 提交新订单 newOrder(in ConfOID) UC15.5 :d Transaction CommitTransaction 提交业务 beginTransaction 开始业务 Link(in ConfOID) :e Order :e Configuration deleteOrder newCustomer :e Customer :e Payment newPayment emailCustomer 图1-22 用例Order Configured Computer的行为协作图(在线购物))
结束 2014年11月6日