第3章系统工程基础与可行性研究1第3章系统工程基础与可行性研究3.1基于计算机的系统3.2系统需求识别3.3可行性研究与分析3.4系统体系结构建模3.5系统定义与评审3.6小结第3章系统工程基础与可行性研究23.1基于计算机的系统3.1.1基于计算机的系统概述基于计算机的系统将一组元素组织起来,以实现某种方法、过程或利用处理信息进行控制。图3.1给出了计算机系统的基本结构。软件,是指计算机程序、数据结构和描述所需逻辑方法、过程或控制的文档;硬件,是指计算机系统中提供计算能力的物理电子设备;人指硬件和软件的操作员和用户;数据库,是一个大型的有组织信息的集合,它通过软件进行数据加工与存取,是系统功能的一个主要部分;文档,是指手册、表格和其他用以描述系统使用和操作的描述性信息;过程,一系列步骤,定义每种元素特定的使用步骤或系统的主流过程性环境。第3章系统工程基础与可行性研究3图3.1计算机系统及其元素数据库文档软件硬件人过程系统输入输出“系统”是元素的集合。同时,系统的概念又是一个递归的概念。一个系统可能包含有大量的元素,而自身又充当其他的、更大的系统的元素,如图3.2所示。3.1.1基于计算机的系统概述第3章系统工程基础与可行性研究4图3.2系统的系统工厂自动化系统库存系统制造系统信息系统材料传输系统制造单元机器人数控机床数据输入设备3.1.1基于计算机的系统概述第3章系统工程基础与可行性研究5系统工程师(系统分析员)的职责分析客观需求,设计、选择适当的元素并定义其间的关系和设计、建造特定的系统。作为计算机系统分析员,关心的是基于分析设计、基于计算机的系统。形式化方法来表示系统工程整体视图(WV)包含若干个领域(Di),它们本身可以是一个系统或者是系统的系统:WV={D1,D2,D3,…,Dn}每个领域由若干个特定的元素(Ej)构成,每个元素代表了完成领域的实体和目标:Di={E1,E2,E3,…,Em}最后,刻划每个元素,组成元素的是实现(完成)元素功能的技术构件(C):Ei={C1,C2,C3,…,Ck}3.1.1基于计算机的系统概述第3章系统工程基础与可行性研究6计算机系统工程概念一个问题求解活动,通过和用户的协商揭示并分析客观的功能需求,把整体需求化整为零,分配给计算机系统中的各个元素去完成。系统分析员从界定目标与约束条件开始,导出针对本系统的功能、性能、接口、环境、数据结构的表示,并据此选择必要的元素,进行功能分配、设计元素间的关联关系。也就是针对用户的需求进行基于计算机的系统设计。具体的硬件工程、软件工程、人机工程和数据库工程的作用就是细化功能和性能的范围,产生一个能够和其他元素适当集成的可操作的系统元素。3.1.2计算机系统工程第3章系统工程基础与可行性研究71.硬件和硬件工程计算机系统工程师选择某种硬件元素的组合构成基于计算机系统的硬件元素。在选择硬件元素时,应当考虑以下特性:(1)从集成化的角度考虑,对各种元件打包形成单独的构件块。(2)各个元件/构件块之间尽量采用标准接口。(3)性能、成本、有效性相对地比较容易确定。(4)尽量提供多种可供权衡选择的硬件方案。计算机硬件工程是在几十年以来电子设计和电子工程的基础上发展起来的。硬件工程的过程可以划分为计划与定义,设计和样机实现,生产、销售和售后服务三个阶段。3.1.2计算机系统工程第3章系统工程基础与可行性研究82.软件和软件工程在系统工程中,功能和性能的分配一般把部分功能和性能要求分配给软件来实现。在某种情况下,可以把功能看作是一个顺序的数据处理过程,对性能不作显式定义。在另一些情况下,可以把功能看作是对内部各个系统元素的协调和对其他并发程序的控制,而性能则显式定义为响应和等待时间。软件的功能和性能实现软件工程师必须获取或者开发一系列的软件部件。与硬件不同的是,软件部件很难标准化。应尽量采用可复用构件是选择软件部件的第一原则。3.1.2计算机系统工程第3章系统工程基础与可行性研究9软件元素一般由程序、数据和文档组成,包括系统软件和应用软件两类。IPO(输入—处理—输出)模型表示输入:软件可以从外部实体或系统内的其他元素接收输入信息,软件还能够用于建立数据库接口,使程序能够存取预先存储的数据;处理:针对接收到的源数据实现完成系统需求所必需的处理;输出:形成数据或信息并输出到其他系统元素、宏元素或外部对象。软件工程三个阶段(回想第一章),分别如图3.3、图3.4、图3.5所示。3.1.2计算机系统工程第3章系统工程基础与可行性研究10图3.3软件工程的定义阶段软件项目计划评审需求分析或原型评审项目计划需求规格说明原型分配给软件的功能3.1.2计算机系统工程第3章系统工程基础与可行性研究11图3.4软件工程的开发阶段数据与结构设计评审过程设计评审程序编码评审概要设计规格说明原型详细设计规格说明源程序代码3.1.2计算机系统工程第3章系统工程基础与可行性研究12图3.5软件工程的运行维护阶段调试交付与销售QA评审运行维护评审操作过程用户文档修改的文档修改的源代码单元测试集成测试确认测试因缺陷可能导致返回到前面的步骤测试计划测试过程测试结果3.1.2计算机系统工程第3章系统工程基础与可行性研究133.人与人机工程(人机交互工程)系统是否具有明显的“用户友好性”,是评价计算机系统质量优劣的指标之一。“人”是重要的元素组成人元素的元件包括:人的记忆和知识表示、思维和推理、直观感觉、人的对话构造等等。人类工程学是应用心理学和方法论导出的知识来确定和设计高质量人机对话界面(HCI,HumanConversationInterface)的多学科活动。人机工程过程包括:3.1.2计算机系统工程第3章系统工程基础与可行性研究14(1)活动分析:对分配给人的每一项活动,在与其他系统生成元素进行交互的环境中进行评价。活动还要划分成任务,并在以后对它们进一步分析。(2)语义分析和设计:对用户要求的每一个动作和机器产生的每一个动作的精确含义进行定义,并进行能够传递正确语义的对话设计。(3)语法和词法设计:标识与描述各个动作和命令的特定形式,然后设计每一动作或命令的硬件与软件实现。(4)用户环境设计:将硬件、软件和其他系统生成元素组合起来形成用户环境。环境包括物理设备以及人机对话界面。(5)原型:利用原型能够形式化的定义HCI,能够使用户积极的参与而不是被动的评价HCI。应当重复地使用原型化方法运行和评价所有的人机工程。3.1.2计算机系统工程第3章系统工程基础与可行性研究154.数据库与数据库工程数据库工程是一门技术学科,它的应用是在数据库的信息域定义完成之后。对于使用数据库的系统来说(例如几乎所有的商业软件),数据库往往作为信息仓库成为所有功能的核心。对于不使用数据库的系统中,也要进行数据分析和数据设计。数据库工程的目标:明确加工对象和输出结果的数据结构特征。3.1.2计算机系统工程第3章系统工程基础与可行性研究163.2系统需求识别3.2.1系统分析的目标系统需求分析是一组称为计算机系统工程的活动,它着眼于所有的系统生成元素,由硬件、软件、数据库方面的工程师共同参加。系统分析的目标包括:(1)识别出用户的需求。(2)评价系统的可行性。(3)进行经济分析和技术分析。(4)在明晰总体需求的前提下,将要实现的功能分配给硬件、软件、人、数据库和其他的系统元素。(5)预测成本、进行进度设计。(6)生成系统规格说明,用作所有后继工程的基础。第3章系统工程基础与可行性研究17识别用户的真正需求是系统分析的第一步。分析人员应当注意弄清楚下列问题:(1)用户所期望的功能和性能。(2)对于可靠性和质量提出的问题有哪些?(3)总的系统目标是什么?(4)成本、资源和进度有哪些限制和约束?(5)可能会有哪些扩充需求?(6)有哪些有效的技术可供使用?(7)制造的需求是什么?市场竞争情况如何?3.2.2系统分析过程第3章系统工程基础与可行性研究183.3可行性研究与分析就商业软件来说,只要不限定资源与时间,总是可行的。但这里要考虑的是:“在指定的目标和满足质量、时间、成本约束条件前提下,问题有没有可行解”。暂时不必考虑“如何解”的问题。主要从四个方面考虑可行性:1)经济可行性:进行投入/产出分析,确定系统有无经济价值。2)技术可行性:在预定的时间与成本限制下,对待开发系统进行功能、性能和限制条件的分析,确定在当前已经拥有的资源环境中,存在有多大的技术风险。3)法律可行性:确认待开发系统是否存在有涉及侵权、妨碍和责任问题。4)对不同的方案进行评估抉择。第3章系统工程基础与可行性研究19在进行技术风险分析时,要考虑:(1)开发风险:在预定的限制范围约束下,能否设计出系统并实现其功能与性能。(2)评价资源的有效性:人力、可复用构件、软/硬件环境三个层次的资源是否具备。(3)相关的技术发展能否支持这一系统。对于法律可行性进行评价时涉及的面也比较广,它包括合同、责任、侵权以及其他一些技术人员常常不了解的险境。必要时可以请法律顾问来参与评价。3.3可行性研究与分析第3章系统工程基础与可行性研究20可行性研究的结果是形成一个单独的“可行性报告”,其中最主要的内容是:(1)项目的背景:问题描述、实现环境和限制条件等。(2)管理概要与建议:重要的研究结果(结论)、说明、劝告和影响等。(3)推荐的方案(不止一个):候选系统的配置与选择最终方案的原则。(4)简略的系统范围描述:分配元素的可行性。(5)经济可行性分析结果:经费概算和预期的经济效益等。(6)技术可行性(技术风险评价):技术实力分析、已有的工作及技术基础和设备条件等等。(7)法律可行性分析结果描述。(8)可用性评价:汇报用户的工作制度和人员的素质,确定人机交互功能界面需求。(9)其他项目相关的问题:如可能会发生的变更等等。3.3可行性研究与分析第3章系统工程基础与可行性研究21经济可行性的结论通过投入/产出分析得出,同时重视“货币时间效果”影响。整个系统的经济效益有形效益:采用新系统后增加的收入再加上使用新系统后节约的运行费用。无形效益:包括用户满意度、更高的质量等等,很难直接度量。3.3.1效益度量方法第3章系统工程基础与可行性研究22度量经济效益时,一般从投入/产出比、成本回收时间和纯收入三个角度来考虑。在计算过程中,必须充分考虑到货币的时间价值问题。(1)货币的时间价值:由于利率的存在,货币的时间价值是能够准确估算的。假设年利率为i,现在投入P元,则n年后能够得到:F=P(1+i)n这就是P元钱在n年后的价值。反之,假设n年后能收入F元,则其当前价值是:P=F/(1+i)n例:假设购置一套应用软件投资20万元,预计可使用5年,每年直接经济效益9.6万元,年利率为5%,试计算投入/产出比。解:考虑到货币的时间价值,5年的总体收入应当逐年按照上式计算,并非为恒定的9.6万元。1~5年中,每年的收入折算到当前的数据如表3.1所示。3.3.1效益度量方法第3章系统工程基础与可行性研究23表3.1货币的时间价值年份将来收益/万元(1+i)n当前收益累计的当前收益19.61.059.14299.142929.61.10258.707517.851339.61.15768.292826.143249.61.21557.897934.041159.61.27637.521941.5630根据上表所列数据,本软件投入/产出比为:41.5630/20=2.07853.3.1效益度量方法第3章系统工程基础与可行性研究24(2)投资回收期:根据上例,两年后收入17.8513万元,尚欠2.15万元没有收回成本,在第三年还需要:2.15/8.2928=0.259(年),故投资回收期为2.259年。(3)纯收入:根据上面的计算结果,5年纯收入为41.5630-20=21.5630万元注:只有当纯收入大于0时,开发软件才有真正的效益。3.3.1效益度量方法第3章系统工程基础与可行性研究25有了正确的效益度量方法,就能够进行成本—效益分析。除经济