软件系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件系统架构设计
第5章 软件系统架构设计【学习目标】
•系统设计内容
•系统平台设计
•系统拓扑设计
•软件体系结构模式
•软件应用结构
5.1系统设计概述
系统设计是从创建新系统角度来描述、组织、构造系统的过程。
它是对系统分析的深化和细化,需要考虑系统的实现环境和系统的效率、可靠性、安全性、适应性等非功能需求,得出软件系统的设计方案。
一、软件系统设计的过程
1.系统总体设计任务
总体设计也称为概要设计,其主要的任务是根据用户需求分析阶段得到的目标系统的物理模型,确定一个合理的软件系统的体系结构。
它包括:
•合理地划分组成系统的部件
•确定部件间的控制关系
•部件间的接口关系
•系统数据结构
2.系统总体设计过程
•确定系统划分•功能分解
•设计软件结构•数据库的设计
3.系统设计基本方法
1)抽象化
•抽象是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。
•抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。
•软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述。
2)逐步求精
•逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法。
•抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有助于设计者在设计过程中揭示低层的细节。
3)模块化
•模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程。
•模块是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过名字来访问。
例如,过程。
函数、子程序、宏等。
4)信息隐藏
•每个模块的实现细节对于其它模块来说应该是隐蔽的。
•块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。
•通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取限制。
5)模块独立
•模块独立:模块完成独立的功能,并且与其他模块的接口简单,符合信息隐蔽和信息局部化原则,模块间关联和依赖程度尽可能小。
•模块独立便于功能被划分,并且接口被简化,更易于开发和维护。
•模块的独立性可以由两项指标来衡量:内聚度与耦合度。
二、系统设计的主要工作
1.平台设计
系统平台是指软件系统开发和运行的环境,包括网络系统、服务器系统、存储系统、备份系统以及相关设备,同时也包括系统软件和支撑软件等。
平台设计根据软件系统设计要求,通过对技术和市场的综合分析,确定出IT基础架构、设备选型和软件部署。
2.结构设计
在软件系统结构设计中,需要确定软件系统的功能结构、拓扑结构、软件结构和计算模式。
3.详细设计
详细设计是对软件结构进行细化设计,确定出各个子系统的用例设计、设计类和接口。
4.界面设计
界面设计是对人和外部系统与软件系统之间交互界面设计。
它包括操作界面、表单、报表、系统接口等要素设计。
5.数据库设计
数据库是软件系统存储和管理数据的主要手段。
数据库设计任务是根据给定的软件系统应用需求,设计出合理的系统数据库结构。
数据库设计需要经过概念设计和物理设计等步骤。
5.2 系统平台设计
一、网络平台设计
软件系统一般是集成式的综合系统,由网络平台将系统的各个部分连接在一起。
网络平台在系统设计中占有很重要的地位。
网络平台设计考虑网络需求、网络结构设计和网络详细设计三部分。
1. 网络需求分析
网络需求分析是通过对所开发软件系统的规模、系统所覆盖业务的地域分布、计算机设备、网络服务等方面需求进行分析,确定系统网络类型、网络规模、网络结构、网络性能等需求。
2.网络结构设计
网络结构设计是根据网络需求分析的结果,设计出能够满足软件系统需要、结构合理、易于扩充、性能价格比高的系统网络结构。
3.网络详细设计
网络详细设计包括网络节点设计、网络设备选型、网络布线设计、网络操作系统选择、网络管理设计。
二、系统物理设备选型
根据软件系统实际需求,合理地选择物理设备,提出的物理设备方案满足软件系统的可靠性、安全性、高效性等特性要求,并具有高性价比。
物理设备一般包括有:
•计算机系统(数据库服务器、应用服务器、WEB服务器、客户机等)
•网络设备(路由器、交换机、网关等)
•相关I/O设备(磁盘存储阵列、磁带库、光盘库等)
•安全设备(防火墙、认证服务器、IDS服务器、防毒墙等)•办公设备(打印机、IP电话、传真机等)
•电源系统
•机房设备
三、软件平台设计
软件平台是软件系统开发和运行所需的支撑软件系统。
设计和选择高效、实用、方便、功能齐全的软件平台,对软件系统开发具有十分重要的意义。
平台软件类型一般包括有:
•操作系统——Unix、Linux、Windows等
•支撑软件——数据库管理系统、中间件。
•CASE平台——Rational Rose、Power Designer等
案例:
电子科技大学清水河校区数字化校园“IT基础软硬件平台系统”
5.3 系统拓扑结构
拓扑结构设计将确定软件系统的节点和节点之间连接结构。
节点是软件系统中在逻辑上相对独立的处理实体,如计算机、外围设备、服务器等。
拓扑结构设计应包括节点分布、节点类型、节点作用以及节点之间的联系。
软件系统拓扑结构的演化
问题: 请画出适合电子商务系统的拓扑结构图,并简要说明各部分作用。
5.4 软件体系结构
一、什么是软件体系结构
软件体系结构(或称软件架构)用于表达整个软件系统的组成结构和控制行为,并标识各个系统组件之间的交互与依赖关系,及其操作所需满足的约束关系。
软件架构的作用:
•便于开发人员理解这个系统的软件构成
•展现系统软件构件之间的关系
•如何基于系统的部分进行复用,进行系统复用
二、软件体系结构设计
将大型系统分解成一些子系统,并建立起子系统控制和通信的框架,这个过程叫做体系结构设计。
三、典型体系结构风格
1.主从调用模式
2. 面向对象模式
面向对象模式
面向对象模式优点:
•高度模块化
•封装功能实现了数据隐藏
•继承性提供了一种实现代码共享的手段
•提供了系统的灵活性,便于维护及扩充
面向对象模式缺点:
•对象之间的调用需要知道所调用对象的标识。
•如果对象的标识发生改变,就必须通知所调用该对象的其他对象,否则系统可能无法正常运行。
事件驱动模式优点:
•支持软件重用,容易实现并发处理
•具有良好的可扩展性。
通过注册可引入新的构件,而不影响现有构件
•可以简化软件代码
事件驱动模式缺点:
•构件削弱了自身对系统的控制能力。
一个构件事件触发时,并不能确定响应该事件的其它构件的执行顺序。
•不能很好地解决数据交换问题。
•使系统中各构件的逻辑关系变得更加复杂。
4. 分层模式
分层模式采用层次化的组织方式,每一层都是为上一层提供服务,并使用下一层提供的功能。
分层模式
分层模式优点:
•便于将复杂问题逐步分层实现,使整体设计更加清晰。
•支持系统设计的逐级抽象。
•支持重用
分层模式缺点:
•并不是每个系统都可以很容易地划分层次,此外,层次的划分没有一个统一的方法。
•层次过多,会造成系统性能降低。
5. 容器模式
容器模式采用共享数据库方式组成系统,各个子系统共享数据库容器,实现数据交换和共享。
容器模式
容器模式优点:
•有效地实现共享大量数据。
•各子系统不必对数据库进行维护。
容器模式缺点:
•子系统必须与共享数据库保持一致的接口。
•难以实现分布处理。
6. 客户/服务器模式
客户/服务器模式
客户/服务器模式是一个分布式系统模式,它将应用逻辑与数据处理在多个节点机之间进行分布。
服务器提供计算或处理服务,如应用服务器、数据库服务器等;客户机向服务器请求服务,由服务器将处理结果返回客户机。
客户机与服务器一般通过网络连接。
也可以在同一物理机器内。
客户/服务器模式优点:
•允许数据分布处理。
•一个服务器可以服务多个客户机,有效地利用软硬件资源。
客户/服务器模式缺点:
•客户机与服务器的通信依赖于网络,可能成为整个系统运行的瓶颈。
•当有大量客户机访问服务器时,服务器也可能成为性能瓶颈。
四、客户/服务器模式分布式应用
二层的客户机/服务器结构的根本问题是:
必须将软件系统的表示层、应用层、数据访问层映射在两个计算机系统上。
如果选择的是瘦客户机模型,则可能有伸缩性和性能的问题,若选择的是胖客户机模型,则可能有系统管理上的问题。
B/S 模式
随着Internet技术的发展,尤其是基于Web的信息发布和浏览技术出现,传统的C/S结构模式已经不能适应新的环境。
为了避免这些问题,出现了一个替代方法,即三层的客户机/服务器体系结构,即B/S结构模式。
例银行系统使用三层的客户机/服务器体系结构的例子。
银行的客户数据库(通常在一个大型计算机上)提供数据管理服务,一个Web服务器提供应用服务如现金转账、生成银行结算单和工资单等。
用户计算机上的浏览器是客户机。
五、软件体系架构实例。