导图社区 系统开发运行与配置
网络工程师第3章系统开发运行与配置,内容有系统的RAS特性、软件开发生命周期模型、软件设计、软件测试与维护、项目管理基础等。
编辑于2022-03-13 20:33:25系统开发运行与配置
系统的RAS特性
系统的RAS特性 RAS特性是可靠性(Reliability)、可用性(Availability) 、可维护性 (Serviceability)的统称
一、基本定义 1.系统的可靠性:是指从系统开始运行到某时刻t能够正常运行的 概率,通常用R(t)表示。 2.失效率:是指单位时间内失效的元件数与元件总数的比例。通 常用λ表示。 3.平均无故障时间(MTTF)也称修复前平均时间,是指某个元件预 计的可运作平均时间。 MTTF =1/ λ 4.平均故障修复时间(MTTR):是描述产品由故障状态转为工作状 态时修理时间的平均值。包括确认失效发生所需的时间,以及维 护所需要的时间。它用于表示计算机的可维修性。 5.平均故障间隔时间(MTBF):是指相邻两次故障之间的平均时间。 常与MTTF发生混淆。因为两次故障之间必然有修复行为,因此, MTBF中应包含MTTR。 MTBF= MTTR+ MTTF 实际应用中,一般MTTR很小,通常认为MTBF≈MTTF 6.可用性(A):是指计算机的使用效率,它以系统在执行任务的任 意时刻能够正常工作的概率来表示 A=MTTF/(MTTF+MTTR)。
(2)可靠性计算
1.串联系统 各个子系统的可靠性分别用R1,R2,…,Rn表示 系统的可靠性为: R=R1 X R2 …. X Rn 系统的失效率为: λ = λ1 + λ2+…+ λn
2.并联系统 假如一个系统由2个子系统组成,只要有一个子系统能够正常工 作,系统就能正常工作,设系统各个子系统的可靠性用R1,R2 ,…,Rn表示 则系统的可靠性为: R= 1- (1- R1) ×(1- R2)×…×(1- Rn) 则系统的失效率为:
3.模冗余系统 m模冗余系统由m个(m=2n+1为奇数)相同的子系统和一个 表决器组成,经过表决器表决后,m个子系统中占多数相同结果 的输出作为系统的输出。m模冗余系统的可靠性为:
例:如图中有任何2个或3个子系统输出相同,则选择该相同的 输出作为系统输出,设单个子系统的可靠性为0.8,整个系统可 靠性为( 0.896)
软件开发生命周期模型
一、软件危机与软件工程 1、软件危机 2、软件工程 软件工程是将系统化的、严格约束的、可量化的方法应用于软 件的开发、运行和维护,即将工程化应用于软件。 软件工程方法学包括三个要素:方法、工具和过程
二、软件生命周期 是指软件的产生直到报废的生命周期,包括:问题定义、可行 性分析、需求分析、总体设计、详细设计、编码、测试、运行 维护等阶段。
三、软件开发模型 常见的开发模型有:瀑布模型、增量模型、螺旋模型、喷泉模 型、智能模型、V模型、快速应用开发模型、构件组装模型、 敏捷方法和统一过程等。
1、瀑布模型 瀑布模型也称为生命周期法,是结构化方法中最常用的开发模型, 它把软件开发的过程分为软件计划、需求分析、软件设计、程序 编码、软件测试和运行维护6个阶段。
瀑布模型的优点: (1)为项目提供了按阶段划分的检查点。 (2)当前一阶段完成后,只需要去关注后续阶段。 (3)它提供了一个模板,这个模板使得分析、设计、编码、测试和 支持的方法可以在该模板下有一个共同的指导
瀑布模型的缺点: (1)各个阶段之间产生大量的文档,极大地增加了工作量。 (2)由于开发模型是线性的,用户只有等到整个过程的末期才能见 到开发成果,从而增加了开发风险。 (3)不适应用户需求的变化,并且在需求分析阶段不可能完全获取。 (4)在软件开发前期未发现的错误传到后面的开发活动中时,可能 会扩散,进而可能会导致整个软件项目开发失败。 所以,瀑布模型适用于需求明确或很少变更的项目
2、快速原型模型 快速原型是利用原型辅助软件开发的一种新思想。 经过简单快速分析,快速建造一个可以运行的软件原型 ,以便理 解和澄清问题,使开发人员与用户达成共识,最终在确定的客户 需求基础上开发客户满意的软件产品。
1、探索型原型 主要用于需求分析阶段,目的是要弄清用户的需求,并探索各种 方案的可行性。它主要针对开发目标模糊,用户与开发人员对项 目都缺乏经验的情况,通过对原型的开发来明确用户的需求。
2、实验型原型 主要用于设计阶段,考核实现方案是否合适,能否实现。对于大 型系统,若对设计方案心中没有把握时,可通过这种原型来证实 设计方案的正确性。
3、演化型原型 主要用于及早向用户提交一个原型系统,该原型系统或者包含 系统的框架,或者包含系统的主要功能,在得到用户的认可后, 将原型系统不断扩充演变为最终的软件系统。 它将原型的思想扩展到软件开发的全过程
3、演化模型 也称为变换模型,根据用户的基本需求,通过快速分析构造出一 个初始可运行版本(原型),然后根据用户在使用原型的过程中提 出的意见和建议对原型进行改进,获得原型的新版本。重复这一 过程,最终可得到令用户满意的软件产品。 快速原型模型是“抛弃式”的,演化模型是“渐进式”原型方法。 演化模型特别适用于对软件需求缺乏准确认识的情况
演化模型的优点: (1)很早就可以验证是否符合产品需求。 (2)风险管理可以在早期就获得项目进程数据,可据此对后续的开 发进度作出比较切实的估算。增加项目成功的机率。 (3)经验教训能反馈于本产品的下一个循环过程,提高质量效率。 (4)心理上,开发人员早日见到产品的雏型,是一种鼓舞。 (5)使用户可以在新的一批功能开发测试后,立即参加验证,以便 提供非常有价值的反馈。
演化模型的缺点 (1)产品需求在一开始并不完全弄清楚的话,会给总体设计带来困 难及削弱产品设计的完整性,并影响产品性能的优化。 (2)如果缺乏严格的过程管理,这个生命周期模型可能退化为一种 原始的无计划的“试-错-改”模式。 (3)用户接触开发中的尚未测试稳定的功能,可能对用户都产生负 面的影响。
4、增量模型 融合了瀑布模型的基本成分和原型实现的迭代特征,是第三种原 型化开发方法,但它不是“抛弃式”的,也不是“渐进式”的。 增量模型把软件产品划分为一系列的增量构件,第一个增量往往 是核心的产品,即第一个增量实现了基本的需求。客户对每一个 增量的使用和评估都作为下一个增量发布的新特征和功能,这个 过程在每一个增量发布后不断重复,直到产生了最终的完善产品。
增量模型优点 (1) 人员分配灵活,初期不用太大投入。 (2) 每隔一小段时间就提交用户部分功能,用户可以直观感受项 目进展,及时试用产品功能。 (3)有利于风险的把控。 增量模型将功能细化、分别开发的方法适应于需求经常改变的软 件开发过程。
5、螺旋模型 将瀑布模型和演化模型相结合,综合了两者的优点,并增加了风 险分析。它以原型为基础,沿着螺线自内向外旋转,每旋转一圈 都要经过制订计划、风险分析、实施工程及客户评价等活动,并 开发原型的一个新版本。经过若干次螺旋上升的过程,得到最终 的系统
螺旋模型的优点: (1)设计上灵活,可以在项目的各个阶段进行变更; (2)以小的分段来构建大型系统,使成本计算变得简单容易; (3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向; (4) 随着项目推进,客户始终掌握项目的最新信息 , 从而能够和管 理层有效地交互。
螺旋模型的缺点: (1) 需要具有相当丰富的风险评估经验和专门知识,如果未能够 及时标识风险,势必造成重大损失; (2)过多的迭代次数会增加开发成本,延迟提交时间。
6、喷泉模型 是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程,该模型认为软件开发过程自下而上的,各阶段是相互迭代和无间隙的。无间隙是指在开发活动中,分析、设计和编码之间不存在明显的边界
例:某开发小组欲为一公司开发一个产品控制软件,监控产品的 生产和销售过程,从购买各种材料开始,到产品的加工和销售进 行全程跟踪。购买材料的流程、产品的加工过程以及销售过程可 能会发生变化。该软件的开发最不适宜采用( )模型,主要 是因为这种模型( )。 A.瀑布 B.原型 C.增量 D.喷泉 A.不能解决风险 B.不能快速提交软件 C.难以适应变化的需求 D.不能理解用户的需求
软件设计
2019年下半年网络工程师考试上午 真题1在以下关于CMM的叙述中,不正确的是() A、CMM是指能力成熟度模型 B.CMM根据软件过程的不同成熟度划分了5个等级,其中,第1级被认为成熟度最高,第5级被认为成熟度最低 C. CMM的任务是将已有的几个CMM模型结合在一起,使之构造成“集成模型” D. 采用更成熟的CMM模型,一般来说可以提高最终产品的质量 试题答案:B试题解析:CMM为英语“Capability Maturity Model”(能力成熟度模型)的缩写,是由美国卡内基梅隆大学的软件工程研究所研究制定,并在美国随后又在全世界推广实施的一种软件评估标准,主要用于软件开发过程和软件开发能力的评估和改进。CMM 把软件开发过程的成熟度由低到高分为5级,即初始级、可重复级、已定义级、已管理级和优化级。随着等级的提高,逐步降低了软件开发风险,缩短了开发时间,减少了软件开发的人力、物力成本,降低了灾难性的错误发生率,提高了质量。)。
2017年下半年网络工程师考试上午 真题2在以下关于程序设计语言的叙述中,不正确的是() A. 脚本语言中不使用变量和函数 B. 标记语言常用于描述格式化和链接 C. 脚本语言采用解释方式实现 D. 编译型语言的执行效率更高试题答案:A试题解析:脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。脚本语言中使用变量和函数。)
2016年下半年网络工程师考试上午 真题3在敏捷过程的开发方法中,()一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。)使用了迭代的方法,其中,把每段时间(30天) C. 并列争球法A. 极限编程试题答案:C试题解析:并列争球法使用迭代的方法,把每30天一次的迭代称为一个冲刺,并按需求的优先级别来实现产品,多个自组织的小组并行地递增实现产品。协调通过简短的日常会议来进行。D. 自适应软件开发B. 水晶法
2016年上半年网络工程师考试上午真题4在结构化分析中,用数据流图描述(行分析时,()是一个外部实体。)。当采用数据流图对一个图书馆管理系统进 A. 数据对象之间的关系,用于对数据建模 B. 数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模 C. 系统对外部事件如何响应,如何动作,用于对行为建模( D. 数据流图中的各个组成部分A. 读者C. 借书证试题答案:B,A试题解析:数据流图(Data Flow Diagram)从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。B. 图书D. 借阅 外部实体指系统以外,又和系统有联系的人或事物,它说明了数据的外部来源和去处,属于系统的外部和系统的界面。外部实体支持系统数据输入的实体被称为源点,支持系统数据输出的实体被称为终点。当采用数据流图对一个图书馆管理系统进行分析时,读者是一个外部实体。
子主题
软件测试与维护
软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 软件的正确性证明尚未得到根本的解决,软件测试仍是发现软件错误和缺陷的主要手段。
一、软件测试基础 测试用例是由测试数据和预期结果构成的。为了发现程序中的错误,应竭力设计能暴露错误的测试用例好的测试用例是发现至今为止尚未发现的错误。 一次成功的测试是发现了至今尚未发现的错误的测试。
三、软件测试分类 从测试阶段分:单元测试、集成测试、确认测试和系统测试 从测试方法分:白盒测试、黑盒测试 回归测试是指修改了旧代码后,重新进行全部或部分以前的测 试用例,以确认修改没有引入新的错误或导致其他代码产生错 误
二、软件测试准则 ●应该尽早地、不断的进行测试,软件测试贯穿于开发过程的终。 ●所有测试都应该能追溯到用户需求。 ●应该从小规模测试开始,并逐步进行大规模测试。 ●应该远在测试之前就制定出测试计划。 ●80%的错误可能出现在20%的程序模块中。 ●应该由独立的第三方从事测试工作 ●对非法和非预期的输入数据也要像合法数据一样编写测试用例。 ●检查软件是否做了应该做的事仅是成功一半,另一半是看软件是否做了不该做的事。 ●在规划测试时不要设想程序中不会查出错误。 ●测试只能证明软件中有错误,不能证明软件中没有错误
四、测试的阶段 根据测试的目的、阶段的不同,测试分为: 单元测试 集成测试 确认测试 系统测试
1.单元测试 单元测试又称为模块测试,是针对软件设计的最小单位(模块) 进行正确性检验的测试工作。 目的在于检查每个程序单元能否正确实现详细设计说明中的模块 功能、性能、接口和设计约束等要求,以及发现各模块内部可能 存在的各种错误。
●单元测试通常由开发人员自己负责。 ●单元测试要借助驱动模块(相当于用于测试模拟的主程序)和桩模块(子模块)来完成。 ●单元测试的计划是在软件详细设计阶段完成的。 ●单元测试一般使用白盒测试方法。
模块并不是一个独立的程序,在考虑测试模块时,同时要考虑 它和外界的联系,用一些辅助模块去模拟与被测模块相联系的 其他模块。这些辅助模块分为两种: (1)驱动模块:相当于被测模块的主程序。它接收测试数据, 把这些数据传送给被测模块,最后输出实测结果。 (2)桩模块:用于代替被测模块调用的子模块。桩模块可以做 少量的数据操作,不需要把子模块所有功能都带进来,但不允 许什么事情也不做
2.集成测试 集成测试也称为组装测试、联合测试。它将已通过单元测试的模 块集成在一起,主要测试模块之间的协作性。 从组装策略而言,可以分为一次性组装和增量式组装(包括自顶 向下、自底向上及混合式)两种。 ●集成测试计划是在软件概要设计阶段完成的。 ●集成测试一般采用黑盒测试方法。 ●自顶向下进行组装,不需要驱动模块。 ●自底向上进行组装,不需要桩模块。 ●在每个版本提交时,都需要进行“冒烟”测试,即对程序主要功能进行验证。冒烟测试也称为版本验证测试或提交测试。
3.确认测试 确认测试也称为有效性测试,主要包括验证软件的功能、性 能及其他特性是否与用户要求(需求)一致。 确认测试计划是在需求分析阶段完成的。
根据用户的参与程度,包括以下3种类型: (1)内部确认测试:由软件开发组织内部按软件需求说明书进 行测试。 (2) Alpha测试:由用户在开发环境下进行测试。 (3) Beta测试:由用户在实际使用环境下进行测试。
4.系统测试 是将已经确认的软件、计算机硬件、外设、网络等其他元素结合 在一起,进行信息系统的各种组装测试和确认测试,系统测试是 针对整个产品系统进行的测试,目的是验证系统是否满足了需求 规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出 更加完善的方案。 系统测试计划在系统分析阶段(需求分析阶段)完成
五、 测试的类型 软件测试分为两大类:动态测试和静态测试。 1.动态测试 动态测试指通过运行程序发现错误,分为: ●黑盒测试法 ●白盒测试法 ●灰盒测试法
(1)黑盒法 黑盒测试又称为功能测试或数据驱动测试。把被测试对象看成 一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程 ,只在软件的接口处进行测试,依据需求规格说明书,检查程 序是否满足功能要求。 常用的黑盒测试用例的设计方法: ●等价类划分 ●边界值分析 ●错误推测 ●因果图
(2)白盒法 又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。 把测试对象看做一个打开的盒子,测试人员必须了解程序的内 部结构和处理过程,以检查处理过程的细节为基础,对程序中 尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构 是否有错,实际的运行状态与预期的状态是否一致。
常用的白盒测试用例设计方法有: 语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆 盖、路径覆盖等,发现错误的能力呈由弱至强的变化。 ●语句覆盖每条语句至少执行一次。 ●判定覆盖每个判定的每个分支至少执行一次。 ●条件覆盖每个判定的每个条件应取到各种可能的值。 ●判定/条件覆盖同时满足判定覆盖条件覆盖。 ●条件组合覆盖每个判定中各条件的每一种组合至少出现一次。 ●路径覆盖使程序中每一条可能的路径至少执行一次。
(3)灰盒法 灰盒测试是一种介于白盒测试与黑盒测试之间的测试,它关注输 出对于输入的正确性,同时也关注内部表现,但这种关注不像白 盒测试那样详细且完整,而只是通过一些表征性的现象、事件及 标志来判断程序内部的运行状态。 灰盒测试结合了白盒测试和黑盒测试的要素,考虑了用户端、特 定的系统知识和操作环境,在系统组件的协同性环境中评价应用 软件的设计
例1:以下关于软件测试的叙述中,不正确的是( )。 A.在设计测试用例时应考虑输入数据和预期输出结果 B.软件测试的目的是证明软件的正确性 C.在设计测试用例时,应该包括合理的输入条件 D.在设计测试用例时,应该包括不合理的输入条件
六、软件维护 软件可维护性是指维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进软件的难易程度。衡量程序可维护性的因素:可理解性、可测试性和可修改性等。
软件维护占整个软件生命周期的60%~80%,维护的类型有: (1)改正性维护 (2)适应性维护 (3)完善性维护 (4)预防性维护
(1)改正性维护 是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。 (2)适应性维护 是指使用软件适应信息技术变化和管理需求变化而进行的修改。
(3)完善性维护 是为扩充功能和改善性能而进行的修改,主要是指对已有的软件 系统增加一些在系统分析和设计阶段中没有规定的功能与性能特 征。 (4)预防性维护 为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件 环境的变化,应主动增加预防性的新的功能,以使应用系统适应 各类变化而不被淘汰。
例1:某搜索引擎在使用过程中,若要增加接受语音输入的功能, 使得用户可以通过 语音输入来进行搜索,此时应对系统进行(C) 维护。 A. 正确性 B. 适应性 C. 完善性 D. 预防性
例2:某软件系统进行升级,将某字段的长度由原先的32位增加 到64位,这属于软件系统的( )。 A. 适应性维护 B. 纠错性维护 C. 完善性维护 D. 预防性维护
项目管理基础
例:某软件项目的活动图如下图所示,其中顶点表示项目里程碑, 连接顶点的边表示包含的活动,边上的数字表示相应活动的持续 时间(天),则完成该项目的最少时间为( ) 天。活动BC和BF 最多可以晚开始( ) 天而不会影响整个项目的进度。 A.11 B.15 C.16 D.18 A.0和 7 B.0和11 C.2和7 D.2和11
1、通过正向计算(从第一个活动到最后一个活动)推算出最早 完工时间,步骤如下: ( 1 )从网络图始端向终端计算。 ( 2 )第一任务的开始为项目开始。 ( 3 )任务完成时间为开始时间加持续时间。 ( 4 )后续任务的开始时间根据前置任务的时间和搭接时间而定。 ( 5 ) 多个前置任务存在时,根据最迟任务时间来定
2、通过反向计算(从最后一个活动到第一个活动)推算出最晚 完工时间,步骤如下: ( 1 )从网络图终端向始端计算。 ( 2 )最后一个任务的完成时间为项目完成时间。 ( 3 )任务开始时间为完成时间减持续时间。 ( 4 )前置任务的完成时间根据后续任务的时间和搭接时间而定。 ( 5 ) 多个后续任务存在时,根据最早任务时间来定
总时差TF:不影响总工期的前提下,本工作可以利用的机动时间。 自由时差FF:不影响紧后工作最早开始时间的前提下,本工作可 以利用的机动时间。 ●总时差=该工作最晚结束时间-该工作最早结束时间 ●总时差=该工作最晚开始时间-该工作最早开始时间 ●自由时差=该工作的紧后工作最早开始时间-该工作最早结束时间 ●自由时差总是小于等于总时差。