软件系统设计_第1页
软件系统设计_第2页
软件系统设计_第3页
软件系统设计_第4页
软件系统设计_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件系统设计软件系统的组成物理结构逻辑结构软件系统设计的原则掌握设计、部署用户表示层掌握设计、部署业务逻辑层掌握设计、部署数据层实例演示(.NET)训练:订单管理系统的实现掌握数据传输对象(DTO)模式的设计与.NET实现企业级应用程序部署剖析软件系统的结构软件系统由什么组成:程序代码、控件、数据库、文档服务器、客户机我们关注软件系统内部结构物理结构有多少类台机器?它们的职责的是什么?如何分布?部署的问题系统架构逻辑结构软件系统内部如何组织?软件(应用)架构的软件系统物理结构发展史单主机方式单机-IBM AS400客户机-服务器(C/S)方式PB, Delphi, VB6.0,FoxPro应用

2、程序客户机-服务器客户机-服务器(B/S)方式WEB-BASE应用程序客户机-WEB/应用服务器-数据库服务器四层结构目前最为常用的部署结构客户机-WEB服务器-应用服务器-数据库服务器物理结构-单主机方式特点:由单主机完成所有功能主机昂贵,并发数量有限伸缩性差,应用范围有限用户界面交互性差哑终端数据显示,数据输入示例:IBM Mainframe物理结构- C/S结构(二节点)客户机数据表示/输入/验证业务逻辑服务器数据存储业务逻辑特点:丰富的用户交互界面部署困难(目前向智能客户端方面发展)两种实现:胖客户端、痩客户端客户端/服务器的实现痩客户端业务逻辑在服务端实现存储过程、触发器数据库移可植

3、性好客户端配置要求一般胖客户端业务逻辑有客户端实现程序可植性好客户端配置要求高物理结构- B/S结构(三节点)客户机数据表示/输入/验证WEB/应用服务器业务逻辑系统服务数据服务器数据存储业务逻辑特点:简化部署问题好的响应能力服务器成为系统瓶颈伸缩性不太好用户界面交互能力差(AJAX方向发展)物理结构- B/S结构(四节点)客户机数据表示/输入/验证WEB服务器系统服务应用服务器业务逻辑数据服务器数据存储业务逻辑特点:简化部署问题更好的响应能力伸缩性好交互能力取决于客户端是目前最为经典的结构软件系统逻辑结构解决问题:软件系统由哪件些部件组成?各个部件成什么样的功能?各个部件如何协作、通信?系统

4、逻辑分层原理软件系统逻辑分层软件系统的部件经典的三层结构系统逻辑分层(Layered)原理问题”分而治之”的处理方式职责分配原理相互协作,向上服务的原理示例:ISO/OSI模型Windows系统系统分层的分类分类Strictly layered只能调用下层提供的服务Relaxed layered可以跨层调用Layer Super type(超层)每一层的公用行为,可以由所有层调用抽象接口每一层的部件对外的名称上一层通过这个名称调用请求服务关健概念服务应用逻辑的分散单元把基于消息、适合通过网络访问的接口展示出来基于服务的架构允许非常灵活的部署战略服务可以用来平衡网络计算资源,面不要求所有的数据的

5、逻辑驻在一台计算机上企业应用-发展新模式面向服务体系结构SOA面向服务结构-软件部件的分类把功能相同/或相似的组件组织成了“层“(Layer)如我们常见的三层结构:表示层业务逻辑层数据层系统服务层经典的三层结构表示层用户界面和界面处理数据验证,输入,数据显示Windows Form(或智能客户)、Web Form 逻辑层业务逻辑处理业务流程控制数据层访问外部数据源(数据库、XML etc)三层结构的组成部件表示层用户界面部件(UIC)用户界面处理部件(UPC)业务逻辑层业务部件(BC)业务工作流(BWF)业务实体业务接口数据层数据访问组件服务代理表示层用户界面部件(UIC)按钮、文本框、下拉列

6、表等控件Win formSystem.Windows.Forms and controlsWeb formSystem.Web.UI.WebControlsSystem.Web.UI.HtmlControls用户处理部件(UPC)分隔用户界面和业务逻辑下一步,执行什么?Front Controller, Application Controller模式参考业务逻辑层业务组件处理特定的业务问题-封装了业务逻辑/规则业务工作流协调多个业务组件,共同完成某个业务处理过程业务实体是数据容器表示业务逻辑里的一个对象业务工作流和业务组件过业务实体交互DTO的一个用法服务接口业务外观层外部调用接口数据层数据

7、访问逻辑组件隔离数据源和业务逻辑层业务层不在依赖于数据库配置性和维护性服务代理调用外部服务接口回顾把功能相同/或相似的组件组织成了“层“(Layer)如我们常见的三层结构:表示层业务逻辑层数据层系统服务层软件系统设计的原则标识出您系统中所需要的部件每个部件中,保持设计一致性部件间低耦合、部件内高内聚部件间统一的数据交换格式XML, Serialized objects, DataReader应用程序逻辑尽可以能抽象/使用接口可以有不同的实现开始设计时,决定层件调用规则零售系统-示例场景设计表现层设计用户接口部件设计用户接口处理部件简单系统UI 部件Win Form & Web Form复杂系统

8、使用UPC用户交互有流程如向导程设计表现层-零售系统电子商务网站外部用户Win Form 应用程序内部销售代表执行相同的任务查看产品、产品购买、付款结帐设计用户界面部件用户接口-管理用户的交互显示数据数据输入-文字、图片、声音、等解释用户动作不参与事务处理可以封装数据显示和操作控制设计用户界面部件数据输入数据输入提示数据输入限制数据输入验证捕获用户动作事件数据显示数据值的对照可以使用单独部件进行数据缓存可以使用单独部件进行分页处理设计用户界面部件数据显示调用业务层数据层获取数据数据格式化数据本地化获取的数据通常是业务实体,需要一些额外的代码(UPC)去解析自定义数据展示爱好可以使用单独部件进行

9、数据缓存可以使用单独部件进行分页处理用户接口调用示例private void addItem_Click(object sender, System.EventArgs e) AddItemToBasket(selectedProduct, selectedQuantity) public void AddItemToBasket(int ProductID, int Quantity) / code to add the item to the basket用户接口部件的交互访问业务部件访问用户处理部件访问数据访问逻辑组件尽管违反分层原理,但现实是存在的需要将数据访问组件与UI一起部署用户与

10、系统的交互会按照一个特定流程例如销售系统中的购买流程输入购买的产品和数量计算产品金额输入付款信息输入收货地址购买流程中包含了多个步骤使用用户处理部件完成这个购买流程设计用户处理部件设计用户处理部件用户处理组件用类来实现UI可以调用用户处理组件类UPC类中方法封装了:完成一个流程所需的动作示例:结帐处理PurchaseUserProcess.cs表示层设计将用户交互分成用户界面和用户界面处理特点:更好的管理用户交互-如可以撤消操作多个用户界面可以重用相同的处理处理并发用户的活动设计UIC和UPC标识出用户交互要处理的业务处理标识出业务处理所需要的数据标识出用记交互过程中状态的变化设计出用户交互流

11、程ASP.NET的实现Session 表示用户交互流程的变化-购物车Windows Form的实现成员变量用户处理组件设计UPC设计建议确定是否需要用户处理组件如果用户处理过程长中间状态需要应该保存数据库中如果用户处理过程短中间状态需要应该保存在内存/会话中将用户处理组件设计支持序列化,可以支持成多种数据存储业务层设计业务组件业务实体服务接口业务工作流业务组件/业务工作流是否需要业务工作流?业务处理包括多个步骤?是否包括多个业务组件去完成一个业务处理?保存业务处理中间状态?使用BizTalk服务器什么时候不需要业务工作流?不需要维护业务处理中间状态业务组件可以被多个业务处理重用零售系统-订单生

12、成多个步骤信用卡验证付款安排交货交货确认按照一定的秩序完成的每一个步骤是由单独的业务组件完成的设计业务部件业务部件具有最基本的事务性封装使用业务规则/业务逻辑被表现层/业务工作流调用/服务接口调用数据层/数据访问逻辑COM/COM+部署在应用服务器上 .NET业务部件设计由类的方法实现业务组件处理事务数据输入/输出的验证调用数据访问数据层/服务代理起动业务工作流异常处理业务部件可以被以下:服务接口用户处理部件业务工作流其它业务部件典型的业务部件业务组件可以被表示层调用可以被服务接口调用可以调用DALC可以服务代理层外部服务数据传输方式XMLDataReaderDataSetTyped Data

13、SetCustom object(业务实体)业务实体设计能过属性来访问(Get和Set)集合数据使用索引也可用系统内置的DataTable业务实体成员的命名Validate, Save, HasCheckedOut, IsLogged通过方法使用的业务实体提高可维护性、扩展性根据系统象命名业务实体名称OrderCustomer业务实体设计建议考虑是否需要业务实体增加编码工作量所有的业务实体继承一个基类业务实体需要串行化为业务实体建个一个通用的实体接口如: Save, Load, Delete, IsDirty, andValidate.业务实体验证数据业务实体依赖于数据访问层而不是数据库不要在

14、这里写SQL业务层设计回顾业务组件业务实体服务接口业务工作流设计数据层用什么做数据存储关系数据库消息数据库文件系统XML文件数据访问逻辑部件部件间传输格式数据访问逻辑部件提供inserting, deleting, updating, retrieving 分页、排序使用data access helper管理数据连接,特定的数据库操作可以使用存储程/触发器性能和可维护性数据访问逻辑部件示例OrderData.cspublic void UpdateOrder(DataSet updatedOrder) / code to update the database/ Data in as a p

15、arameter of type dataset数据访问逻辑部件设计建议返回仅需要的数据使用数据库完成数据密集型的操作使用存储过程/触发器封装存储逻辑:insert, read, update, and find 功能不同有客户端使用一致的数据接口如果需要,数据加密操作/解密操作仅在需要的地方使用事务管理设计数据访问助理件DAOHelper重用数据库连接,操作隔离数据库身份认证隔离源信息简化数据访问代码针对不同数据库需要不同的DADOHelper演示 Sample客户订单查询功能层次结构用户界面层WinForm/Web Form业务逻辑层数据层DAO Helper Sample PageDem

16、o Step数据公用服务层数据层业务逻辑层用户界面层(Web Form)使用DataSet 作为数据传输对象重用业务逻辑层Win Form项目管理数据公用服务层DAOHelperLayer数据层DataLayer业务逻辑层BusinessLayer用户界面层(Web Form)WebFormProejctDAOHelperLayerStirng connectionStringGetDataSet(string selectSql)GetDataRader(string dataReader)void executeSql()数据DataLayerGetCustomerOrderByID(st

17、ring customerID)生成 SQL 连接语句“Select * from customer where customer ID = ” + customerID + “”;调用DAOHelperBusinessLayer-业务层GetCustomerOrderByID(string customerID)生成 SQL 连接语句“Select * from customer where customer ID = ” + customerID + “”;调用数据层表示层 用户界面组件(UI)ASPX用户处理部件(UPC)CS/VB重用表示层Windows Form Project训练-订单管理系统客户档案管理产品管理订单管理新增订单查询订单客户订单查询数据库northwindDemo Step数据公用服务层数据层业务逻辑层用户界面层(Web Form)使用DataSet 作为数据传输对象重用业务逻辑层Win Form项目管理数据公用服务层DAOHelperLayer数据层Data Layer业务逻辑层BusinessLayer用户界面层WebForm Project实现总结讨论分层理解服务接口实现外部调用接口Web Service 实现D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论