第6章 系统实施(信息系统分析与设计).ppt
60页第6章 系统实施n系统实施阶段是目标系统开发工作的最后阶段这一阶段要把系统设计阶段得到的目标系统物理模型转换为实际可运行的应用软件系统,一个好的设计方案只有经过精心实施,才能带来实际的效益因此,系统实施阶段的工作对管理信息系统的质量有着十分直接的影响n系统实施阶段的任务是根据用户确认的设计方案,实现具体的应用系统,包括建立网络环境、安装系统软件、建立数据库文件、通过程序设计与系统测试实现设计报告中的各应用功能并装配成系统、培训用户等6 系统实施 6 61 1 系统实施系统实施 6 62 2 程序设计程序设计 6 63 3 系统测试系统测试6 64 4 系统转换系统转换 6. 5 6. 5 实施阶段文档实施阶段文档 61 系统实施n总体来讲,系统实施阶段的任务就是实现系统设计阶段提出的物理模型,按实施方案完成一个可以实际运行的信息系统、并交付用户使用n系统设计说明书是实施阶段的基础,它规定了管理信息系统各个模块的功能、输入和输出、数据库的物理结构等 系统实施阶段的具体任务包括1.购置和安装设备、建立网络环境;2.计算机程序设计;3.系统调试与测试;4.人员培训:主要是指用户的培训,包括管理人员和业务人员。
5.系统切换:包括进行基本数据的准备、数据的编码、系统的参数设置、初始数据的录入等多项工作612系统实施阶段的领导n目标系统实施领导工作应由目标系统开发领导小组承担,也可由专门成立的实施小组承担,但组长必须由用户单位的最高领导担任n领导小组、专家和有关部门领导共同编制目标系统实施计划n在计划实施过程中还要经常进行检查和调整,处理、解决实施过程中发生的一切重大问题该小组 还要负责验收各部分工作,组织目标系统的测试,以及现行系统向目标系统转换的一切重大问题和一切组织管理工作n具体工作包括以下几个方面:n1.进度的安排;n2.人员的组织;n3.任务的分解62 程序设计n程序设计的目的就是用计算机程序语言来实现系统设计中的每一个模块这是系统实施阶段的核心工作n但是,这部分工作与计算机的发展密切相关随着技术的发展,程序设计的评价指标、设计思想、方法技巧等都发生了一些根本性的变化621评价编程工作的标准n软件工程技术要求软件生产工程化、规范化,使软件设计从“艺术”变成了“技术” n从目前技术来看,评价编程工作的标准大致可以分为四个面:n1.可靠性(reliability);n2.可维护性(maintainability); n3.可读性(readability);n4.实用性(usability);n5.规范性(standard ability);n6.易移植性.622结构化程序设计方法(略)623程序设计风格n程序实际上也是一种供人阅读的文章,也有一个程序的风格问题。
n20世纪70年代初,有人提出在编写程序时,应该使之具有良好的风格n编写程序时注意程序设计的风格,能够大量减少人们读程序的时间,从整体上来看,提高了效率 1.源程序文档化n源程序文档化是指程序内部带有说明性材料,即程序的注释n在使用注释时要注意以下几点:1.注释必须与程序保持一致,否则就毫无价值特别是修改程序时要注意对注释也要进行相应的修改;2.注释是针对一段程序,而不是对每一条语句;3.注释不是重复说明程序语句,而应该提供从程序本身难以得到的信息;4.利用缩进和空行等组织形式使程序与注释区分开1.源程序文档化n源程序文档化是指程序内部带有说明性材料,即程序的注释n注释一般分为序言性注释和功能性注释n序言性注释通常置于每个程序模块的开头部分它给出程序的整体说明,引导阅读者理解程序 n功能性注释嵌在源程序体内,用于描述相对应的程序段或语句要做什么,或者是完成什么功能 2.简单、直接地反映意图 n程序的编写要简单,直截了当地说明程序员的用意,使人能一目了然地、准确地知道,不需要过多的分析和想象 3.程序书写格式缩排式书写n在编写程序时,一行只写一条语句,并采取适当的移行,可使程序的逻辑和功能变得清楚、明确。
4.标识符命名规范化 n标识符包括了文件名、模块名、变量名、常量名、子程序名、数据区名等n对标识符的理解是理解程序逻辑的关键n这些标识符的命名应能反映出它们所代表的实际内容好的标识符命名能使人见名知意 n应当选用精练的、意义明确的名字作为标识符的命名5.合理使用GOTO语句n一定要避免使用不必要的GOTO语句 63 系统测试n软件开发是人们智力劳动的过程在这个过程中,尽管人们利用许多方法去保证、提高系统分析、设计、实施等各个阶段的质量,但难免会在工作中存在这样、那样的错误因此,系统中会隐藏许多的错误和缺陷特别是在大规模、高复杂性项目的开发中更是如此随着信息技术在国民经济的一些重要领域的应用日益广泛,系统中的任何错误,都有可能造成财产以至生命的重要损失631测试的方法n1. 测试的方法n目前,检验程序的方法有三种:正确性验证、静态检查和动态检查n程序的正确性验证是利用数学方法证明程序的正确性静态检查n程序的静态检查是指人工评审软件文档和程序,发现程序代码中的语法、语意的错误这种方法最好由非编码人员进行,以获得更好的检测效果这种方法简单而且行之有效动态检查n程序的动态检查就是测试这是一种实验法,即有控制地运行程序,从各个方面观察程序运行的状况以求发现其中的错误。
也可以说,测试是为了发现错误而执行程序的过程在测试时,根据系统开发各个阶段的要求说明和程序的内部结构而精心设计一批测试用例,包括输入数据以及预期的输出结果,并用这些测试用例去运行程序,以发现程序中存在的错误n目前,系统开发中用于测试的费用一般占到研制费用的40而对一些特殊的实时控制系统,如核反应堆监控、飞行控制等一旦发生问题就会产生灾难性后果的软件,其测试费用甚至高达所有其他阶段费用总和的35倍 n2. 测试的类型n测试工作应该贯穿系统开发的各个阶段根据测试对象的不同,可以将测试分为模块测试、联合测试、验收测试以及系统测试等四种类型n模块测试n模块测试是在编写出一个模块之后就对它进行测试,所以也叫单元测试模块测试一般包括下列项目:模块界面、内部数据结构、独立路径、错误处理、边界条件等,根据模块说明,检查上述项目是否存在错误n联合测试n联合测试即是通常说的联调,是在每个模块都完成了模块测试之后进行的n各个模块单独执行可能没有错误,但组合起来由于相互之间的影响,可能会出现意想不到的错误,因此要将整个系统作为一个整体进行联合测试联合测试方法有两种,即根据模块结构图自顶向下或自底向上地进行测试 .n 联合测试查出的往往是模块间相互关系方面的错误和缺陷。
n验收测试n验收测试用于检验系统分析说明书的各项功能与性能是否都实现,系统是否满足要求n验收测试的方法一般是列出一张清单,左边是需求的功能,右边是验收测试过程中发现的错误或缺陷一般使用组织运行中的实际数据进行测试,使用用户界面输入测试数据,并分析测试的结果验收是以用户为主的测试n系统测试n系统测试是对整个系统的测试,将硬件、软件、操作员等看作一个整体,检验系统是否有不符合系统分析说明书的地方这种测试可以发现系统分析和设计中的错误例如,安全测试用来测试安全措施是否完善,能不能保证系统不受非法侵入系统测试需要在实际环境中进行632测试的目的和原则n测试是为了发现系统中的错误因此,选取测试用例时,应选择那些易于发现系统错误的数据Crenford JMyen就测试目的提出以下观点:n(1)测试是程序的执行过程,其目的在于发现错误;n(2)一个好的测试用例是指这个测试用例很有可能发现至今未发现的错误;n(3)一个成功的测试是指它发现了至今未发现的错误 n根据这样的测试目的,系统测试的原则应该是:n(1)应尽早地和不断地进行测试;n(2)测试用例应由测试输入数据和与之对应的预期输出结果组成;n测试之前应当根据测试的要求选择测试用例(test case)。
任何一个系统都包含有输入和输出部分,因此测试用例不但需要包含测试时的输入数据,而且还需要针对这些输入数据产生预期输出结果,作为检验测试结果的基准 n(3)在设计测试用例时,不仅应当包括合理的输入数据,而且也应当包括不合理的输入数据n(4)测试报告应长期保留,为维护提供方便633测试用例的设计n测试的目的在于尽可能多地发现错误那么,测试能否发现所有的错误?或者说能不能把所有可能做的测试无遗漏地一一做完,找出所有的错误呢?下面按两种常用的测试方法做出具体分析n两种常用的测试方法是“白盒测试”和“黑盒测试”633测试用例的设计n白盒测试是已知系统的内部控制结构,通过测试证明每种内部操作是否都符合设计规范,所有内部成分是否都已经过检查n黑盒测试是已知系统的功能设计规格,通过测试证明每个实现了的功能是否符合要求 白盒测试n白盒测试是对系统的过程细节作细致的检查它把测试对象看作一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致 图图6-2白盒测试例子白盒测试例子循循环环20次次白盒测试n如图6-2所示的某程序的流程图,共有5条不同的路径,需循环20次。
它所包含的不同执行路径数高达520(=1013)条若要对它进行穷举测试,即要设计测试用例,覆盖所有的路径假使对每一条路径进行测试需要1毫秒,而且一天工作24小时,一年工作365天,那么要想把如图6-2所示的小程序的所有路径测试完,则需要3710年年黑盒测试n黑盒测试意味着测试要完全根据系统的外部特性进行它将测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特征,只依据程序的说明书,检查程序的功能是否符合它的功能说明包括:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误?是否有外部信息(例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?等等所以,黑盒测试必须在所有可能的输入条件和输出条件中确定测试数据,检查程序是否都能产生正确的输出PABC图图6-3 6-3 黑盒测试例子黑盒测试例子黑盒测试n某程序P有两个输入量A和B,有一个输出量C,如图6所示假设程序P在字长为32位的计算机上运行如果A,B只取整数,考虑把所有的A,B值都作为测试数据,按黑盒方法进行穷举测试n这样可能出现的测试数据组(A,B)的不同测试数据组合的最大数目为n232*232=264n如果测试一组(A,B)数据需要1毫秒,而且同样假定一天工作24小时,一年工作365天,要完成264组这样的测试,需要n 5亿年亿年n我们可以看到,不可能通过遍历来全面地发现程序中的所有错误。
n在测试时既然穷举测试不可行,就必须精心设计测试用例,从数量极大的可用测试用例中精心挑选出有限的测试数据挑选的标准是采用这些测试数据能最有可能地发现隐藏的错误n同时,这也说明,测试有一个致命的缺陷,即测试的不完全、不彻底性由于任何程序只能进行少量的(相对穷举的巨大数量而言)有限的测试,在发现错误时能够说明程序中存在问题;但如果这些测试用例没有发现错误,不能说明程序中没有错误,因为这些测试用例只是巨大数量中的一小部分,还有许多其他的情形没有进行测试,错误可能潜藏在其他的情形中n几种测试用例的设计技术语句覆盖、判断覆盖、条件覆盖、条件组合覆盖、路径覆盖属于白盒测试,边界值分析属于黑盒测试 1.白盒测试n(1)语句覆盖法n一般说来,程序的某次运行并不一定执行其中的所有语句假如某个含有错误的语句在测试中没有被执行,那么这个错误便不能被发现为了提高发现错误的可能性,应当在测试中执行程序中的每一条可执行语句n所谓语句覆盖就是设计若干个测试用例,运行被测程序,使得每一个可执行语句至少执行一次 (A=2)(X1)X=X+1真真 假假bdX=X/A(A1)(B=0)真真 假假ac图图6-4 6-4。





