第 3章 计算机系统工程
计算机软件工程和硬件工程可以看作是一门更广义的学科 ——“计算机系统工程,内的活动 。
它们所要做的都是按一定的次序开发基于计算机的系统 。
计算机系统工程是指与构造基于计算机系统有关的过程,方法和技术 。 它是一种问题求解活动 。 计算机系统工程的任务是:组织并指导系统工程师定义全系统各层次中的所有基于计算机系统的要素 。
第 3章 计算机系统工程度和有关人员的统一体。软件工程在各个领域有着广泛的应用,如计算机辅助设计( CAD)系统、计算机辅助制造( CAM)系统、计算机辅助教学系统、计算机辅助医疗系统、军用的计算机指挥系统、通信软件工程、公用或专用的现代通信系统和信息服务系统都各具特色,管理软件是一类最具代表性的软件工程。
第 3章 计算机系统工程
3.1 基于计算机的系统
3.2 可行性研究
3.3 系统开发过程的新体系结构 —— 快速原型与面向对象
3.4 本章小结
3.1 基于计算机的系统
基于计算机的系统是
,某些要素的一个集合,这些要素被组织起来以实现某种方法,
过程或借助处理信息进行控制 。,图 3.1给出了基于计算机系统的系统要素及相互之间关系 。
过 程文 档 硬 件软 件人数据库输入 输出系统图 3.1 基于计算机系统的系统要素及相互之间关系
3.1.1 计算机系统工程
计算机系统工程是一个问题求解活动,
目的是揭示,分析所期望的功能,并把它们分配到各个单独的系统要素中去 。 计算机系统开发设计周期见图 3.2。
详细设计:软件硬件开发或购买硬件测试硬件模块组成软件和硬件联调功能测试维护改进现场运行软件详细设计设计评审模块编程调试联调软件模块测试 调试分析系统要求完成系统规范用户确认总体设计主要功能确认设计并选择硬件来源设计评审图 3.2 系统开发设计周期
在系统的功能规范确立之后,下一步要对系统的功能进行认真、仔细的分析,问题的焦点集中于功能、性能、信息流和容量上 。
一个计算机系统方案应包括以下几个方面的内容:
( 1)任务的来源,技术要求,质量指标和经费,
( 2)采取的技术途径。
( 3)方案的规模,子系统的划分。
( 4)系统的数据库结构。
( 5)预计系统的各项指标。
( 6)所需的设备、仪器、关键元器件、工艺工具 等的购置情况及保证条件。
( 7)研制周期、异常情况的处理等等。
用户中心设计 ——UCD方法在某种程度上代表了当今的计算机系统技术发展水平,使用该方法能设计极具竞争力的产品,UCD方法适合一切项目。
现将传统设计方法与用户中心设计 ——UCD方法加以比较。
传统的设计方法技术驱动以组件为中心有限的多学科协作注重产品的内部体系结构没有专门考虑用户体验竞争意识不强开发先于用户评价产品缺陷质量观不重视用户测量只考虑现有用户
UCD方法用户驱动以解决方案为中心多学科小组成员协同工作注重产品的外部设计专门考虑用户体验以竞争为目标由用户评价设计方案后才开发用户质量观很重视用户测量考虑当前和将来所有用户图 3.3 UCD方法和传统设计方法的比较
3.1.2 硬件和硬件工程
基于计算机的系统离不开计算机硬件的支撑 。 计算机系统工程师根据系统需求为硬件系统指派任务,产生硬件需求 。
21世纪以来,信息可以很方便地通过计算机网络实现共享 。 作为网络文件服务器的计算机,可以给分布在网络上不同站点的客户提供共享的公用程序和数据,
这就是客户/服务器计算模式 。
计算机的硬件工程是在几十年电子设计经验的基础上发展起来的,一般将硬件工程分为三个阶段。
硬件工程阶段 需解决的问题 成果
( 一 ) 硬件研制计划需求分析根据功能可选择,采购的硬件?
哪几种硬件接口?
必须制造的硬件? 潜在的问题及资源?
确定项目成本估计,工程进度估计,硬件规格说明
( 二 ) 硬件设计硬件实现确定硬件元素中的所有元件精确的功能,性能和接口需求 。 设计约束条件 ( 如尺寸,环境 ) 及测试准则;
必要时建造原型并对原型进行测试;
画出生产图,硬件规格说明书,对规格说明书评审和修改
( 三 ) 生产,销售售后服务质量如何得到保证?
产品的维护和修理如何实现?
建立质量保证方法,建立产品销售机构,储备备件,
售后服务表 3.1 硬件工程三个阶段
3.1.3 软件和软件工程
从系统工程的角度来看,软件与硬件,软件工程与硬件工程分别是基于计算机系统和基于计算机的系统工程的重要组成部分 。 系统工程的论证阶段应该确定系统的软硬件功能和性能 。
系统对软件提出的功能和性能要求将成为软件需求分析的基础 。
基于计算机系统的软件要素由程序、数据和文档组成。它们分为两类应用软件与系统软件:
应用软件实现信息处理,系统软件完成使应用软件能与其他系统要素交互的控制功能。
一个基于计算机的系统可以用输入 —处理 —输出 ( IPO) 模型来表示 。 软件要素在这个模型的各个方面都起着一定的作用 。
( 1)软件从系统的外部实体或其他系统要素(包括宏要素)接收输入信息。
( 2) 软件还用于建立数据库的接口,使程序能够存取预先存储的数据 。
( 3) 软件实现系统功能所需要的计算方法 。
( 4) 在实际使用中,软件必须产生输出,把数据转换成某种能适合于输出介质的格式,或适合于输出设备接口的格式 。
软件工程三个阶段软件工程阶段 必须完成的步骤 阶段成果
(一)
软件定义制定软件项目规划;
需求分析和定义;
确定软件性能和资源约束;
软件要素定义验收标准成本,工程进度估计;
通过软件原型化/信息域分析获得软件规格说明;
对软件规格说明技术评审
(二)
软件开发、
实现软件总体结构设计 ——软件模块结构;
数据设计,过程设计 ——接口及信息结构;
编码 ——生成源程序代码确定一些有效性准则;
对规格说明书评审修改 ;
根据 准则判断软件质量
(三)
检验、发行、
维护测试软件,找出错误:
进行单元测试 ——调试,组装测试 ——
调试;
开发用户文档;
把软件发行给终端用户对测试文档,测试用例和测试结果进行评审;
建立配置管理机制;
整个使用寿命中维护软件 ;
3.1.4 人机工程
人机工程是应用从心理学和方法论导出的知识来确定和设计高质量 HCI( 人机界面 ) 的多学科活动 。 人机工程过程包括以下步骤:
( 1) 活动分析 。
( 2) 语义分析和设计:
( 3) 语法和词法设计:
( 4) 用户环境设计:
( 5) 原型:
人机工程的关键要素是设计一个整体解决方案,
它应该对用户而言:
易于购买、易于安装,易于学习、
易于使用、直观、吸引人,有用
3.1.5 数据库和数据库工程
数据库系统 是基于计算机系统的重要组成部分,它将有关的硬件、软件、数据和数据库管理人员组合起来,为用户提供信息服务。
开发、运行和管理一个数据库系统是一项复杂的数据库工程,人们也常称之为数据库工程 。
阶段 任务 结果
( 一 ) 需求分析,
可行性研究调查用户信息需求,处理要求进行可行性论证;
提出成本预算和工作计划
( 二 ) 选择硬件和软件应确定数据管理系统;
支持数据库查询,维护和分析确定运行的操作系统,网络环境
( 三 ) 数据库设计与实现根据需求分析和数据分析;
概念设计;
逻辑设计;
物理设计;
评审,测试;
产生需求说明和数据说明;
产生数据库概念模型;
产生逻辑模型;
产生数据软件工程的原则;
生成各种文档
( 四 ) 运行和管理及时补充,修改和更新数据库;
数据的收集,整理,分类;
储存数据库的管理和维护对数量大,类型多,关系复杂的数据存储应有利于数据的查询,
修改并尽量减少数据的冗余;
为用户提供培训及有关资料表 3.4 数据库工程的阶段不同的数据存储管理模式有不同的特点,适用范围也不相同。
3.2 可行性研究可行性研究的 目的 就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
在讨论一个项目是否可行,需要从市场可行性,
技术可行性,经济可行性,法律可行性分析几个方面着手进行考虑 。
3.2.1 可行性研究的任务图 3.4表明了可行性研究的步骤系统输入约束条件定义问题研究旧系统 分析问题导出新系统模型市场可行性技术可行性操作可行性经济可行性成本估算目标做什么
( 流图 )

3.2.2 市场可行性
要求在项目启动时定位目标市场,清楚在这个市场中的所有用户及他们的特点,并且清楚大部分目标用户当前所采用的解决方案,从而掌握产品竞争形势 。 必须在项目一开始就得到这些信息 。 如果没有这些信息或信息不全,那么接下来的设计活动是否有效就值得怀疑了 。
3.2.3 经济可行性
基于计算机系统的成本 —效益分析是可行性研究的重要内容,它用于评估基于计算机系统的经济合理性,
给出系统开发的成本论证,并将估算的成本与预期的利润进行对比。
计算机系统的成本由四个部分组成:
① 购置并安装软硬件及有关设备的费用;
② 系统开发费用;
③ 系统安装,运行和维护费用;
④ 人员培训费用 。
在系统分析和设计阶段只能得到上述费用的预算,
即 估算成本 。 在系统开发完毕并交付用户运行后,
上述费用的统计结果就是 实际成本 。
系统效益 包括经济效益和社会效益两部分 。 经济效益指应用系统为用户增加的收入,可以通过直接的或统计的方法估算 。 社会效益只能用定性的方法估算 。
1.成本估计
( 1)代码行技术 ( 2)任务分解技术
2.成本/效益分析成本/效益分析的第一步是估计开发成本,运行费用和新系统将带来的经济效益 。
3.货币的时间价值
通常用利率的形式表示货币的时间价值 。 假设年利率为 i,如果现在存入 P元,则 n年后可以得到的钱数为:
F=P( 1+ i) n
这也就是 P元钱在 n年后的价值 。 反之,如果 n
年后能收入 F元钱,那么这些钱的现在价值是:
P=F/( l+ i) n
假定年利率为 12%,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。
年 将来值(元) ( l+ i) n 现在值(元) 累计的现在 值(元)
1 2500 1.12 2232.14 2232.14
2 2500 1.25 1992.98 4225.12
3 2500 1.40 1779.45 6004.57
4 2500 1.57 1588.80 7593.37
5 2500 1.76 1418.57 9011.94
4.投资回收期
所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间 。 投资回收期越短就越能获得利润 。
例如,修改库存清单系统:
两年以后可以节省 4225.12元,比最初的投资 ( 5000元 )
还少 774.88元;
三年以后将再节省 1779.45元,774.88/ 1779.45=0.44,
因此,投资回收期是 2.44年。
5.纯收入
衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。
3.2.4 技术可行性
技术可行性的评估必须在软件系统分析和定义过程中进行,当技术可行性确定后,就可以完成在规格说明书 。
一般地,技术可行性要考虑的情况包括:
开发风险,在分析时给出的各种约束条件下,
系统能否被设计出来,并实现必需的功能和性能?
资源有效性,可用于开发系统元素的人员是否存在问题? 是否具备用于建立系统的其他资源 ( 硬件,软件 )?
技术,相关技术的发展是否能支持这个系统?
3.2.5 方案选择
系统分析任务完成后,系统工程师开始研究问题求解方案 。 通常系统工程师将一个大的复杂系统分解为若干个子系统;精确地定义子系统的界面,功能和性能;给出各子系统之间的关系 。 这样可以降低解决方案的复杂性,有利于人员的组织和分工,提高系统开发效率和工作质量 。
可行性研究的结果可作为系统规格说明书的一个附件。
项目背景,问题描述;实现环境;限制条件;
管理概要与注意事项,重要的研究结果;说明;注意事项;影响 ;
候选方案,候选系统的配置;选择最终方案的准则;
系统描述,简略的范围描述;分配元素的可行性;
市场可行性,项目是否有潜在市场,以及市场的变化对项目影响经济可行性 ( 成本 — 效益分析 ),经费概算;预期的经济效益;
技术可行性 ( 技术风险评价 ),技术实力;已有工作基础;设备条件;
法律可行性,系统开发可能导致的侵权,违法和责任;
用户使用可行性,用户单位的行政管理,工作制度;使用人员的素质;
其他与项目有关的问题,其他方案介绍;未来可能的变化 。
表 3.7 可行性研究报告目录
3.3 系统开发过程的新体系结构
——快速原型与面向对象
1,存在的问题
( 1)有些类型的系统需求是模糊的
( 2)项目参与者之间存在通信鸿沟
( 3)预先定义的需求可能是过时的
2.解决问题的途径
为克服传统方法的缺点,人们在实践中逐渐创造出 快速原型法 和 面向对象方法等软件工程的新途径。
面向对象的统一软件开发方法迭代开发模式近似小型的瀑布流程迭代工作流迭代 2 迭代 1
下一循环
V1
提交 构造 演化 起始主里程碑迭代 3
迭代计划需 求分析与设计实 现测 试准备版本
3.4 本章小结
计算机系统工程是指与构造基于计算机系统有关的过程,方法和技术 。 它是一种问题求解活动 。 计算机系统工程的任务是:组织并指导系统工程师定义全系统各层次中的所有基于计算机系统的要素 ( 硬件,软件,
人,数据库,文档,过程 ) 。
本章首先阐述了计算机系统工程的总体设计方案的内容及要点:硬件工程,软件工程,人机工程和数据库工程 。
然后进一步阐述了计算机系统工程可行性研究的目的:
应确定问题是否值得去解;任务是从市场,经济,技术,法律,开发方案的选择性四方面研究计算机系统工程可能性;强调了技术可行性研究应给以高度重视,
这一阶段决策的失误将会给开发工作带来灾难性的影响 。 介绍了系统结构模板的概念与使用要点 。