六、系统实施
试述系统实施的主要目标和活动?
目标:将系统规划、系统分析和设计阶段的工作成果以技术转化成为物理实现。活动:编码、系统测试、系统安装和新旧系统转换。
试述结构化程序设计方法和步骤?
方法:即以自顶向下的方式,按照模块化和逐步细化的思想,用一组单入口单出口的基本控制结构及反复嵌套来进行程序设计。步骤:自顶向下的模块化设计;逐步细化。
试述系统测试的对象与目的以及基本原则?
对象:软件。目的:发现错误。原则:测试工作应避免由原开发软件的个人或小组来承担;设计测试方案时,不仅要包括确定的输入数据,而且应包括从系统功能出发预期的测试结果;测试用例不仅要包括合理的、有效的输入数据,还要包括无效的或不合理的输入数据;不仅要检查程序是否做了该做的事,还要检查程序是否同时做了不该做的事;软件中仍存在成熟的概率和已经发现成熟的个数是成正比的。
试述程序设计的质量要求?
对程序设计基本的要求是程序的正确性,一方面正确地运用程序设计语言环境。另一方面,程序所描述的过程和算法要满足系统设计的功能要求。
从软件维护的角度出发,必须保证源程序的可读性,以便于维护。因此源程序的可读性是程序设计的一个重要的质量要求。保证源程序可读性的主要措施是进行结构化程序设计,并在编码风格上遵守一些标准和规则。
从系统开发和应用角度,程序的编写和运行效率也是程序设计质量的一个考虑方面。效率指程序的语句行数、对存储空间的要求,以及程序运行速度等。程序的可读性与效率存在矛盾。从软件工程出发。对于绝大多数的程序模块,编码时应把可读性放在第一位。系统运行的效率问题往往通过选用更高性能的硬件系统来解决,比通过软件来解决合算得多。
试述程序设计的步骤?
(1)了解计算机系统的性能和软硬件环境:包括计算机系统的运算速度与存取速度,内存和外存的大小、操作系统、程序设计语言以及开发工具,外设连接及通讯能力等主要性能指标。
(2)充分理解系统概要设计和详细设计的文档,准确把握系统的软件功能,模块间的逻辑关系,算法的详细方案以及输入输出要求。
(3)根据设计要求和硬软件环境条件,选定程序设计语言。
(4)编写程序代码。
(5)程序的检查、编译与调试。
试述程序设计语言的分类及各类语言的关系。
程序设计语言的发展可分为机器语言、汇编语言、高级语言和第四代语言四个时代。
其中高级语言按用途和特征划分为以下几类:
(1)基础语言。这是一类人们最熟悉且应用广泛的程序设计语言。主要的基础语言有下列几种:
BASIC语言:大众化交互式语言,其特点为简单易学,具人机对活功能,便于修改和调试。
FORTRAN语言:最早的高级语言,适合于工程与科学计算的程序设计语言。
COBOL语言:适用于商业及管理领域,面向事务和数据处理的程序设计语言。
(2)结构化程序语言。是随软件工程的结构化程序设计思想而导入的,具有很强的过程结构化特点和数据结构描述能力。主要代表有:
PASCAL语言:第一个系统体现结构化程序设计概念的程序设外语言。
PL/1语言:面向于取代FORTRAN和COBOL语言的,具有ALGOL、FORTRAN、COBOL的某些共同特征的一种语言。
C语言:有高级语言的特点,又具有汇编语言的功能。
Ada语言:一种相当完善的面向结构化的语言,多应用于系统软件的开发。
(3)专用语言。是为某一特定的应用而专门投计的程序设计语言,应用范围比较小。
第四代语言是直接面向知识处理的非过程化语言,直接面向应用。其特征是:
语言的使用者是一般用户;
能提供一组高效、非过程化的命令语句;
具有很强的数据管理能力;
是多功能、一体化的语言。
试述程序设计风格应达到的基本要求?
程序设计风格的要求是结构清晰、逻辑简明、易读易懂、便于修改和维护。良好风格包括以下几个方面:
(1)标志符的命名。标志将的命名应注意以下几点:
① 命名规则要在整个程序中前后一致;
② 命名时一定要避开程序设计语言的保留字;
③ 尽量逐免使用意义容易混淆的标识名。
(2)程序中的注释。包括:序言性注释和解释性注释。进行程序注释时应注意以下几点:
① 注释一定要在程序编制中书写,不要在程序完成之后进行补写;
② 解释型注释要说明程序段的动机和原因,提供的是从程序本身难以得到的信息。
③ 一定要保持程序与注释的一致性。
(3)程序的布局格式。可以充分利用空格、空行和右缩格等改善程序的布局,以获得较好的视觉效果。
(4)数据说明。数据说明要规范化,使说明的内容和次序固定。
(5)程序语句的结构。构造语句的一般原则是:语句写得简单、明了,直截了当地反映程序设计意图,避免程序语句的技巧性,不能为追求效率而忽视程序的简明、清晰性。
(6)输入和输出。在进行输入、输出设计时应注意以下几点:
① 应针对用户的不同对象、特点和要求设计人机交互方式;
② 程序在运行过程中应有标明当前状态的标注说明信息,以使用户对进程有了解。
③ 交互式输入的请求应有明确提示,输入格式应简洁,且与用户所习惯和熟悉的方式接近;对于要求输入的内容,应标明可用的选择和边界条件,可能的话辅之以在钱帮助功能,对用户的输入应进行有效性检验,以防无效数据的引入;
④ 对于输出的格式和方式,应允许用户进行选择和应答,对于所有输出都应有明确的标志和说明;
⑤ 应设计完备的错误检测和恢复功能,以防程序非正常运行式终止,使用户无所适从,又无从下手。
(7)程序的运行效率。要在保持程序可读性的前提下提高效率,应注意以下几点:
① 写程序之前,尽量简化算术和逻辑表达式;
② 尽量选用好的算法;
③ 仔细研究循环嵌套,确定是否有语句可以从内层移到循环体外;
④ 尽量避免使用多维数组;
⑤ 尽量避免使用指针和复杂的表;
⑥ 充分利用语言环境提供的函数;
⑦ 使用良好优化特性的编译程序,以产生高效的目标代码。
试述系统测试的作用和意义、对象和目的?
系统测试是管理信息系统开发周期中一个十分重要而漫长的阶段,其重要性体现在它是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查。同时,系统测试阶段占用的时间、花费的人力和成本占软件开发的很大比例。
系统测试的对象是软件。目的是发现软件的错误。
127. 试述系统测试的基本原则。
系统测试的基本原则:
(1)测试工作应避免由原开发软件的个人或小组来承担。
(2)设计测试方案时,不仅要包括确定的输入数据,而且应包括从系统功能出发预期的测试结果。
(3)测试用例不仅要包括合理、有效的输入数据,还要包括无效的或不合理的输入数据。
(4)不仅要检验程序是否做了该做的事,还要检查程序是否同时做了不该做的事。
(5)软件中仍存在错误的概率和已经发现错误的个数是成正比的。
(6)保留测试用例,作为软件文档的组成部分。
试述系统测试的方法?
对软件进行测试的主要方法为:一般源程序经过编译后,先进行人工测试,再进行机器测试。人工测试是采用人工方式进行,目的在于检查程序的静态结构,找出编译不能发现的错误。机器测试是运用事先设计好的测试用例,执行被测程序,对比运行结果与预期结果的差别以发现错误。对某些类型的错误,机器测试比人工测试有效,但对另一些类型的错误,人工测试的效率往往比机器测试更高。人工测试是机器测试的准备,是测试中必不可少的环节。
(l)人工测试。又称代码复审。主要有下列三种方法:①个人复查;②走查;③会审。
(2)机器测试。①黑盒测试,又称功能测试;②白盒测试,又称结构测试。
试述系统测试的步骤?
系统测试一般有四个步骤:单元测试、组装测试、确认测试、系统测试。每一步都是在前一步的基础上进行。
(l)单元测试,也称模块测试。单元是程序最小的独立编译单位。
先进行模块测试的原因是:程序分解成模块,减少测试的复杂程度;测试限制在模块内,易于确定错误的位置;可进行多模块的并行测试,缩短测试周期。
模块测试的目的是保证每个模块作为一个独立单元能正确运行。主要发现的是编码和详细设计的错误。
进行单元测试采用白盒测试的方法,根据详细设计的描述:从模块的内部结构出发设计测试用例,进行测试。
单元测试主要从五个方面检验模块:
① 模块接口:测试信息能否正确无误地流入、流出模块;
② 模块内部之数据结构:测试内部数据的完整性,包括内容、形式及相互关系;
③ 逻辑路径:测试应覆盖模块中关键的逻辑路径;
④ 出错处理:测试模块对错误及产生错误的条件的预见能力,并且检测出其错误处理是否适当;
⑤ 边界条件:软件往往容易在边界条件上发生问题,可利用边界值分析方法设计测试用例,以便检查这类错误。
单元测试中应设置若干辅助模块,作为周围联系模块的替身。辅助模块有两种:驱动模块,模拟被测模块的上级调用模块;桩模块,模拟被测模块的下级被调用模块。
(2)组装测试。完成单元测试后,需按设计时作出的层次模块图把它们连接起来,进行组装测试,也称为组合测试或综合测试。
模块能单独地正常工作,但不能保证联结起来能正常工作,可能存在接口和整体协调的问题,只有通过组装测试发现。
组装测试主要以系统详细设计和程序设计为依据,通常采用黑盒测试方法。
组装测试的策略分为非增式测试和增式测试两大类。增式测试又分为自顶向下、自底向上和混合方式三种。
① 非增式测试;在对所有模块分别进行了基于辅助模块的单元测试以后,按程序结构图,将所有模块连接起来,把连接后的程序作为一个整体进行测试;
② 增式测试:即是每次测试把下一个待测试的模块与已经测试过的那些模块结合起来进行测试。其优点是:测试软件少;错误容易找到;测试彻底。
大多数软件都采用增式测试方法,增式测试按其组装的顺序又分为自顶向下测试和自底向上测试两种。
(1)自顶向下测试是按照程序模块结构图,从顶层模块开始自上而下地组装,每次只增加一个新的模块,每当增加一个新的模块时,都要同时加上与之接口的桩模块,去掉上次测试中有模块的替身桩模块。分为“层次优先”和“分支优先”方式。其特点是:较早显现整个程序的轮廓;只有桩模块,无驱动模块;不易设计测试用例。
(2)自底向上测试的特点刚好与自顶向下相反,不能在测试早期显现程序轮廓,总体结构只有加上最后一个模块才能体现;辅助模块只有驱动模块,无需桩模块;较易设计测试用例。
(3)将两者结合起来的混合式测试方法,对上层模块采用自顶向下测试,较早显现程序总体轮廓;对关键分支采用自底向上测试,以便较易设计测试用例和减少模块重复次数。适合大型程序。
(3)确认测试以整个软件作为测试对象,且采用黑盒测试方法。确认测试是要进一步检查软件是否符合软件需求规格说明书的全部要求,因此又称为合格性测试或验收测试。
确认测试的内容包括:
① 功能测试。检测软件需求规格说明书内容是否实现。
② 性能测试。检查软件的可移植性、兼容性、错误恢复能力及可维护性。
③ 配置审查。检查软件的构成成分是否齐全。包括:用户资料、系统分析资料、系统设计资料、源程序和测试资料。
(4)系统测试。是将信息系统的所有组成部分包括软 件、硬件、用户以及环境等综合在一起进行测试,以保证系统的各 组成部分协调进行。
系统测试要在系统的实际运行环境现场、在用户的直接参与下进行,是面向集成整体系统的,包括下列内容:
① 集成功能测试;
② 可靠性与适应性测试;
③ 系统自我保护及恢复能力测试;
④ 安全性测试;
⑤ 强度测试。
试述排错的步骤?
排错的任务是:(1)确定错误的位置和性质;(2)将错误改正。排错是一种技巧性和经验性很强的寻找过程。步骤有:
(1)从错误的外部表现形式入手,确定出错的位置;
(2)研究相关部分的源程序,找出错误的内在原因;
(3)修改设计和编码;
(4)重复进行发现问题的原始测试和相关测试,确定错误是否排除及是否引入新的错误;
(5)如修改无效,则撤消修改,直到找到有效解决办法;
(6)按排错产生的变化,对系统开发文档相应部分进行修改。
试述排错的方法?
(1)试探法。效率低,对个人的经验要求高,适用于结构简单的程序。
(2)跟踪法。反向跟踪法:必须知道错误结果的语句位置,程序的分支和嵌套不复杂。正向跟踪法:沿程序的控制流跟踪。
(3)对分查找法。主要用于缩小错误的范围。
(4)归纳法。(1)收集有关程序正确和不正确的数据;(2)整理数据,找出规律;(3)提出关于错误的一个或多个假设;(4)用假设解释所有原始测试结果,直到发现错误原因。
(5)演绎法。按已有的测试,设想所有可能的错误原因,用已有数据和测试结果进行分析,排除不可能的,进一步分析。
许多语言系统提供自动测试和调试工具,可以支持设置断点、单步运行和各种跟踪技术。
试述系统转换的任务、方式和工作内容?
系统转换的任务是:保证新老系统进行平稳而可靠的交接,使新系统正式交付使用。转换的过程需开发人员、系统操作员、用户领导和业务部门的协作完成。
系统转换的方式包括:直接转换、并行转换、分段转换。
系统转换的工作内容:确定了系统转换的方式以后,除了做好组织准备、物质准备和人员培训等准备工作以外,最重要并且工作量最大的是数据准备和系统初始化工作。
(1)数据准备是从老系统中整理出新系统运行所需的基础数据和资料。
(2)系统的初始化包括:设置系统运行环境和资源、设定系统运行和控制参数、数据加载及调整系统与业务工作同步。
(3)数据加载中的错误有:原始数据错误、数据整理错误、输入错误、新系统可能的程序错误。
(4)在长时间的并行转换过程中用户发现系统的错误和功能的缺陷,此时应以系统分析中的系统目标衡量是否修改。
试述程序设计风格应达到的基本要求?
标识符的命名;程序中的注释;程序的布局格式;数据说明;输入和输出。
责任编辑:小草