系统架构笔记-2-计算机系统基础知识
知识要点-2.6计算机语言
UML 对系统架构的定义是系统的组织结构,包括系统分解的组成部分以及它们的关联性、交互机制和指导原则等,提供系统设计的信息。
具体有以下 5 个系统视图:
1. 逻辑视图:也称为设计视图,表示设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。
2. 进程视图:是可执行线程和进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发与同步结构。
3. 实现视图:对组成基于系统的物理代码的文件和构件进行建模。
4. 部署视图:把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构。
5. 用例视图:是最基本的需求分析模型。
解决多数实际问题的关键是建立数学模型(包括数学方程、数学公式、图形描述、符号表示等)。数学建模是对现实世界的一种近似的、简化的、易于求解的抽象描述。数学模型常需要忽略某些次要因素,以便易于近似求解。过于简单的模型可能准确性不足,为提高准确性,若建立过于复杂的模型,求解的难度就会增加。在简单性和准确性之间求得平衡是数学建模的一条原则。对同一问题可以建立多种数学模型。数学模型也常带有一些可变的参数。选用哪个模型,或选择什么样的参数,更能近似地解决实际问题,符合实际要求,这需要反复多次试验,根据求解失败的教训或用户的反馈意见逐步对模型进行修正或改进,不断完善模型,并求得使用户满意、符合实际情况的结果。对一般的问题,并没有统一的、普适的模型评价标准,没有最好,只有更好,实践是检验真理的唯一标准。
UML2.0提供了13种图:
类图:展现了一组对象,接口,协作和它们之间的关系。
定时图:强调消息跨越不同对象或参与者的实际事件,而不仅仅是关心消息的相对顺序。
部署图:软件和硬件组件之间的物理关系以及处理节点的组件分布情况。
包图:描述由模型本身分解而成的组织单元,以及它们之间的依赖关系。
顺序图:描述对象之间的交互,其中循环,选择等复杂交互使用序列片段表示。对象之间的消息类型包括同步消息/异步消息/返回消息/参与者创建消息/参与者销毁消息。
其中交互概览图、定时图、顺序图(序列图)、通信图(协作图)均被称为交互图。除此以外,动态模型还包括状态图和活动图等。
UML 中有 4 种事物:
1. 结构事物: UML 模型中的名词。它们通常是模型的静态部分,描述概念或物理元素;
2. 行为事物: UML 模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为;
3. 分组事物: UML 模型的组织部分。它们是一些由模型分解成的盒子;
4. 注释事物: UML 模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。
UML 中有 4 种关系:
1. 依赖:是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义;
2. 关联:是一种结构关系,描述了一组链,链式对象之间的连接,聚集是一种特殊类型的关联,描述整体与部分间的结构关系;
3. 泛化:是一种特殊一般关系,特殊元素的对象可替代一般元素的对象;
4. 实现:是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。
在面向对象系统中,类之间的整体与部分关系可分为聚合关系和组合关系两种类型。
1. 聚合关系。其含义是“部分”可能同时属于多个“整体”,“部分”与“整体”的生命周期可以不相同。例如,汽车和车轮就是聚合关系,车子坏了,车轮还可以用;车轮坏了,可以再换一个。
2. 组合关系。与聚合关系的区别在于:组合关系中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。例如,一个公司包含多个部门,它们之间的关系就是组合关系。公司一旦倒闭,也就无所谓部门了。
快速应用开发(Rapid Application Development,RAD)是一种比传统生存周期法快得多的开发方法,强调极短的开发周期。RAD 模型是瀑布模型的一个高速变种,通过使用基于构件的开发方法获得快速开发。如果需求理解得很好且约束了项目范围,利用这种模型可以很快地开发出功能完善的信息系统。
但是 RAD 也具有以下局限性:
1. 并非所有应用都适合 RAD。RAD 对模块化要求比较高,如果有哪一项功能不能被模块化,那么 RAD 所需要的构建就会有问题;如果高性能是一个指标,且该指标必须通过调整接口使其适应系统构件才能获得,则 RAD 也有可能不能奏效。
2. 开发者和客户必须在很短的时间完成一系列的需求分析,任何一方配合不当都会导致 RAD 项目失败。
3. RAD 只能用于管理信息系统的开发,不适合技术风险很高的情况。例如,当一个新系统要采用很多新技术,或当新系统与现有系统有较高的互操作性时,就不适合使用 RAD。
配置管理工具的常见功能包括版本控制、变更管理、配置状态管理、访问控制和安全控制等。配置管理工具包含了版本控制工具,用来存储、更新、恢复和管理有关软件的多个版本。
知识要点-2.9系统性能
性能指标
性能指标是软、硬件的性能指标的集成。在硬件中,包括计算机、各种通信交换设备、各类网络设备等;在软件中,包括操作系统、数据库、网络协议以及应用程序等。
1. 计算机的性能指标
评价计算机的主要性能指标有时钟频率(主频)、运算速度、运算精度、内存的存储容量、存储器的存取周期、数据处理速率(Processing Data Rate,PDR)、吞吐率、各种响应时间、各种利用率、RASIS 特性(即可靠性(Reliability)、可用性(Availability)、可维护性(Serviceability)、完整性和安全性(Integrity and Seourity))、平均故障响应时间、兼容性、可扩充性和性能价格比。
主存容量大小反映了计算机即时存储信息的能力。
2. 路由器的性能指标
评价路由器的主要性能指标有设备吞吐量、端口吞吐量、全双工线速转发能力、背靠背帧数、路由表能力、背板能力、丢包率、时延、时延抖动、VPN 支持能力、内部时钟精度、队列管理机制、端口硬件队列数、分类业务带宽保证、RSVP、IP DiffServ、CAR 支持、冗余、热插拔组件、路由器冗余协议、网管、基于 Web 的管理、网管类型、带外网管支持、网管粒度、计费能力/协议、分组语音支持方式、协议支持、语音压缩能力、端口密度、信令支持。
3. 交换机的性能指标
评价交换机所依据的性能指标有交换机类型、配置、支持的网络类型、最大 ATM 端口数、最大 SONET 端口数、最大 PDDI 端口数、背板吞吐量、缓冲区大小、最大 MAC 地址表大小、最大电源数、支持协议和标准、路由信息协议(RIP)、RIP2、开放式最短路径优先第 2 版、边界网关协议(BGP)、无类别域间路由(CIDR)、互联网成组管理协议(IGMP)、距离矢量多播路由协议(DVMRP)、开放式最短路径优先多播路由协议(MOSPF)、协议无关的多播协议(PIM)、资源预留协议(RSVP)、802.1p 优先级标记,多队列、路由、支持第 3 层交换、支持多层(4~7 层)交换、支持多协议路由、支持路由缓存、可支持最大路由表数、VLAN、最大VLAN 数量、网管、支持网管类型、支持端口镜像、QoS、支持基于策略的第 2 层交换、每端口最大优先级队列数、支持基于策略的第 3 层交换、支持基于策略的应用级 QoS、支持最小/最大带宽分配、冗余、热交换组件(管理卡、交换结构、接口模块、电源、冷却系统)、支持端口链路聚集协议、负载均衡。
4. 网络的性能指标
评价网络的性能指标有设备级性能指标、网络级性能指标、应用级性能指标、用户级性能指标和吞吐量。
5. 操作系统的性能指标
评价操作系统的性能指标有系统上下文切换、系统响应时间、系统的吞吐率(量)、系统资源利用率、可靠性和可移植性。
6. 数据库管理系统的性能指标
衡量数据库管理系统的主要性能指标包括数据库本身和管理系统两部分,有数据库的大小、数据库中表的数量、单个表的大小、表中允许的记录(行)数量、单个记录(行)的大小、表上所允许的索引数量、数据库所允许的索引数量、最大并发事务处理能力、负载均衡能力、最大连接数,等等。
7. Web 服务器的性能指标
评价 web 服务器的主要性能指标有最大并发连接数、响应延迟和吞吐量。
性能计算
等效指令速度法:也称为吉普森混合法(Gibson mix)或混合比例计算法,是通过各类指令在程序中所占的比例(Wi)进行计算得到的。
基准程序法:把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序(benchmark)。基准程序法不但考虑到了 CPU(有时包括主存)的性能,还将 I/O 结构、操作系统、编译程序的效率等对系统性能的影响考虑进来了,所以它是目前一致承认的测试系统性能的较好方法。
性能评估
性能评估是为了一个目的,按照一定的步骤,选用一定的度量项目,通过建模和实验,对一个系统的性能进行各项检测,对测试结果做出解释,并形成一份文档的技术。性能评估的一个目的是为性能的优化提供参考。
1. 基准测试程序
大多数情况下,为测试新系统的性能,用户必须依靠评价程序来评价机器的性能。下面列出了4种评价程序,它们评测的准确程度依次递减:真实的程序、核心程序、小型基准程序和合成基准程序。 把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序 (benchmark),基准测试程序有整数测试程序 Dhrystone、浮点测试程序 Linpack、Whetstone 基准测试程序、SPEC 基准测试程序和 TPC 基准程序。
2.Web 服务器的性能评估
在Web 服务器的测试中,反映其性能的指标主要有:最大并发连接数、响应延迟和吞时量等。
常见的 Web 服务器性能评测方法有基准性能测试、压力测试和可靠性测试。
3.系统监视
进行系统监视的方法通常有3种方式:一是通过系统本身提供的命令,如 UNIX/Linux 中的W、ps、last, Windows 中的netstat 等;二是通过系统记录文件查阅系统在特定时间内的运行状态三是集成命令、文件记录和可视化技术,如 Windows 的 Perfmon 应用程序。
其他
计算机系统的性能一般包括两个大的方面。
一个方面是它的可靠性或可用性,也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度(例如:平均无故障时间),也可以是在一段时间内,能正常工作的时间所占的百分比;
另一个方面是它的处理能力或效率,这又可分为三类指标:第一类指标是吞吐率(例如:系统在单位时间内能处理正常作业的个数),第二类指标是响应时间(从系统得到输入到给出输出之间的时间),第三类指标是资源利用率,即在给定的时间区间中,各种部件(包括硬设备和软件系统)被使用的时间与整个时间之比。当然,不同的系统对性能指标的描述有所不同,例如,计算机网络系统常用的性能评估指标为信道传输速率、信道吞吐量和容量、信道利用率、传输延迟、响应时间和负载能力等。
通常,计算机系统的可用性可从故障率、健壮性和可恢复性三个方面来进行评测。
故障率是指在给定的时间里,系统故障和维护事件出现的次数。
健壮性是指系统检测和处理故障的能力,以及系统在各种故障情况下仍然具有的工作能力。
可恢复性是指系统从故障状态恢复到正常状态的能力。
计算机应用系统的可移植性对推广应用来说是重要的,但对于使用单一系统的多数用户而言,可用性指标主要包括故障率、健壮性和可恢复性。
综合知识
案例分析
试题一:某畜牧饲料公司欲建设一套面向互联网的商品交易平台,该平台可以方便畜牧业养殖户与饲料公司之间的询价与交易。参考目前的电子商务模式,该平台的主要需求可参考下图:
需求具体描述如下:
1. 平台主要分为商家、顾客和管理员三类用户。商家代表在平台上发布供应和商品的用户;顾客代表在平台上下采购订单的用户;管理员代表平台上的运营和维护人员。
2. 商家在注册账户后获得一个店铺,店铺拥有库存,库存中存放商品记录。商家可以通过添加商品和追加库存的方式,向库存中添加店铺中可销售的商品。通过标记商品上/下架状态或调整库存的方式设置商品是否在店铺中展示和销售。当商品库存为 0 时,不会出现在商家店铺中。
3. 顾客在浏览商家店铺和商品的过程中可以直接下订单(3.1),或将商品加入购物车(3.2),然后再使用购物车生成订单(3.3)。
3.1 顾客在浏览到某个合意的商品时,可直接填写商品数量并生成订单;
3.2 顾客在浏览到某个合意的商品时,可将商品添加到购物车中。添加时可提前填入商品数量,也可未来在购物车中修改商品数量;
3.3 在购物车中,顾客可以移除商品,也可以调整购买商品的数量。顾客可以通过复选框勾选部分商品或全部商品,然后通过生成订单按钮依据选中商品生成一个新的订单。
问题一(10 分):图 2-1 采用 UML 中的类图来描述商品交易平台中的需求,类图中可描述分析类和设计类两种。请问分析类和设计类有什么差异?图中绘制的类是分析类还是设计类?分析类和设计类分别会在软件生命周期模型中的哪个或哪些阶段中产生?
参考答案: 分析类主要描述应用领域中的概念,分析类可以从这些概念中得出,或者说分析类图中的类是从需求中获取的。设计类图描述软件的接口部分,而不是软件的实现部分,设计类更易于开发者之间的相互理解和交流,设计类通常是在分析类的基础上进行细化和改进的。 图中的类是分析类。 分析类主要在需求分析和架构设计中产生,设计类主要在概要设计阶段产生。
问题二(8 分):图 2-1 中出现了 UML 类图中的哪几种关系?请简要描述这些关系所代表的涵义。
参考答案: 顾客、商家和管理员与用户间是泛化关系:泛化关系是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。 商家与库存间是依赖关系:依赖关系是一种使用的关系,即一个类的实现需要另一个类的协助。 库存与商品间是聚合关系:聚合关系是整体与部分的关系,且部分可以离开整体而单独存在。 购物车与订单之间存在关联关系。
问题三(7 分):请根据详细描述为图 2-1 添加合适的类,并为图中的类添加适当属性。
参考答案: 可添加的类:店铺。 类添加属性: 商品:标识、名称、描述、单价。 库存:标识、库存明细(商品标识、库存数量)。 订单:标识、订单明细(商品标识、订购数量、订单金额)。 购物车:用户标识、购物车明细(商品标识、数量)。
试题二(25 分)阅读以下关于系统设计的叙述,在答题纸上回答问题 1 至问题 3。
【说明】 某软件公司为知名制造企业开发一套网上销售系统,以增加销售的渠道和效率。在项目之初,项目组决定采用面向对象的开发方法进行系统开发,并对系统的核心业务功能进行了分析,具体描述如下:
注册用户通过商品信息页面在线浏览商品,将需要购买的商品添加进购物车内;点击“结算”按钮后开始录入订单信息。
用户在订单信息录入页面上选择支付方式,填写并确认收货人、收货地址和联系方式等信息。点击“提交订单”按钮后产生订单,并开始进行订单结算。
订单需要在 30 分钟内进行支付,否则会自动取消,用户也可以手工取消订单。
用户支付完成,经确认后,系统开始备货,扣除该商品可接单数量,并移除用户购物车中的所有商品资料。
生成订单表单,出货完毕,订单生效。为用户快递商品,等待用户接收。
用户签收商品,交易完成。
【问题 2】(3 分)在面向对象的设计过程中,活动图(activity diagram)阐明了业务用例实现的工作流程。请用 300 字以内的文字给出活动图与流程图(flow chart)的三个主要区别。
参考答案:活动图和流程图的主要区别有以下三点: 1. 活动图是面向对象的,而流程图是面向过程的。 2. 活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。 3. 活动图能够表示并发活动的情形,而流程图不能。
【问题 3】(10 分)在面向对象的设计过程中,状态图(statechart diagram)描述了一个实体基于事件反应的动态行为。请根据题干描述,填写图 2 - 1 中的(a)(e)空白,完成订单处理的状态图。
参考答案:(a)取消;(b)待结算;(c)大于 30 分钟;(d)订单生效;(e)用户签收。
试题三(20 分) 阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】 某 ETC(Electronic Toll Collection,不停车收费)系统在高速公路沿线的特定位置上设置一个横跨道路上空的龙门架(Toll gantry),龙门架下包括 6 条车道(Traffic lanes),每条车道上安装有雷达传感器(Radar sensor)、无线传输器(Radio transceiver)和数码相机(Digital Camera)等用于不停车收费的设备,以完成正常行驶速度下的收费工作。该系统的基本工作过程如下:
1. 每辆汽车上安装有车载器,驾驶员(Driver)将一张具有唯一识别码的磁卡插入车载器中。磁卡中还包含有驾驶员账户的当前信用记录。
2. 当汽车通过某条车道时,不停车收费设备识别车载器内的特有编码,判断车型,将收集到的相关信息发送到该路段所属的区域系统(Regional center)中,计算通行费用创建收费交易(Transaction),从驾驶员的专用账户中扣除通行费用。如果驾驶员账户透支,则记录透支账户交易信息。区域系统再将交易后的账户信息发送到维护驾驶员账户信息的中心系统(Central system)。
3. 车载器中的磁卡可以使用邮局的付款机进行充值。充值信息会传送至中心系统,以更新驾驶员账户的余额。
4. 当没有安装车载器或者车载器发生故障的车辆通过车道时,车道上的数码相机将对车辆进行拍照,并将车辆照片及拍摄时间发送到区域系统,记录失败的交易信息,并将该交易信息发送到中心系统。
5. 区域系统会获取不停车收费设备所记录的交通事件(Traffic events),交通广播电台(Traffic advice center)根据这些交通事件进行路况分析并播报路况。 现采用面向对象方法对上述系统进行分析与设计,得到如表 3 - 1 所示的用例列表以及如图 3 - 1 所示的用例图和图 3 - 2 所示的分析类图。
【问题 2】(6 分)用例图包括哪几个基本元素,并用 300 字以内的文字进行简要说明。
参考答案:
1. 参与者。参与者是指存在于系统外部并与系统进行交互的任何事物,既可以是使用系统的用户,也可以是其他外部系统和设备等外部实体。
2. 用例。用例表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。
3. 通信关联。通信关联表示的是参与者和用例之间的关系,或用例与用例之间的关系。箭头表示在这一关系中哪一方是对话的主动发起者,箭头所指方是对话的被动接受者,箭尾所指方是对话的主动发起者。如果不想强调对话中的主动与被动关系,可以使用不带箭头的关联实线。
试题四(25 分) E-Mall 是一家电子商务公司,其主要业务是在线购物,包括书籍、服装、家电和日用品等。随着公司业务规模不断增大,公司决策层决定重新设计并实现其网上交易系统,公司负责系统开发的王工和李工分别给出了两种不同的设计方案,如下图 1 和图 2 所示。
公司的架构师和开发者针对这两种设计方案,从服务器负载情况、业务逻辑的分离性、系统可靠性、实现简单性等方面进行讨论与评估,综合考虑最终采用了李工给出的方案。
【问题 3】(8 分)性能是 Web 应用系统的一个重要质量属性。请用 200 字以内的文字说明三个主要影响 Web 应用系统性能的因素,针对每个因素提出解决方案以提高系统性能。
参考答案:影响 Web 应用系统性能的三个主要因素分别是: 1. 数据库的连接与销毁。可以采用数据池的方式缓存数据库连接,实现数据库连接复用,提高系统的数据访问效率。 2. 构件或中间件的加载与卸载。可以采用分布式对象池的方式缓存创建开销大的对象,实现对象复用,用以提高效率。 3. 线程的创建与销毁。可以采用线程池的方式缓存已经创建的线程,提高系统的反应速度。