版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目8程序设计与软件工程知识目标1)熟悉计算机算法与计算机建模的概念。2)熟悉软件工程的定义和软件模块化思想。3)了解软件开发过程。4)了解软件测试技术和软件质量定义。学习目标思政元素学习程序设计与软件工程时融入思政教育元素,旨在培养学生掌握编程技术和软件开发技能的同时,形成正确的价值观、道德观和社会责任感。(1)伦理与责任:讲解软件开发中的伦理问题,如用户隐私、数据保护、安全、版权尊重,培养法律意识,强调技术应用的道德责任,避免技术滥用。(2)团队合作与领导力:通过团队项目,强调协作、沟通、领导力,培养团队精神,理解软件开发中的角色互动,提升项目管理能力。学习目标(3)创新与持续学习:介绍技术发展史,鼓励创新思维,培养学生适应变化,形成终身学习习惯,理解技术进步的必然性,提升自我。(4)系统思维:在软件设计中,培养全局视角,理解系统化思考,平衡模块间关系,提升问题解决能力,形成系统性解决问题策略。(5)安全与法律遵守:讲解安全设计、加密技术,强调用户数据保护,培养学生对安全的重视,遵守法规,如《网络安全法》。理解软件自由与责任,避免非法复制,遵守法律规范。(6)社会责任:软件在社会中的应用,如教育、医疗,培养社会责任感,理解技术对社会的正面影响,利用技术服务社会。学习目标学习难点1)软件生存周期。2)软件测试技术。学习目标即使对于一个并不打算成为程序员的人来说,学习计算机程序设计和软件开发的一般知识也是很有意义的。首先,你在工作中可能会使用许多程序,你会发现,一个文字处理软件就可能包含了几十万条程序指令,因此,其中存在一些错误是在所难免的。同样,还会发现,一个人很难编写一个文字处理软件,这通常是由专业的编程小组共同完成的。虽然现在一般用户已经不需要去专门编写自己想用的程序了,但仍然有可能会通过修改一些程序(例如宏和二次开发)来满足某个特殊的要求,这时,你对计算机编程的了解将有助于拟订建设性的开发计划。项目8程序设计与软件工程计算机程序就是告诉计算机如何解决问题的一系列指令的有序集合。计算机编程非常强调结构性和严谨,首先从问题描述开始,它是算法的基础,而算法则是程序的基础。计算机编程的基本概念包括:问题描述、算法设计、编码、控制结构、测试和建立文档等。项目8程序设计与软件工程01算法02软件工程与软件生存周期03软件开发过程04软件测试与文档目录/CONTENTS05面向对象方法和UMLPART01算法作为一种通用的信息处理机器,电子计算机能执行可以详细描述的任何过程。用于描述解决特定问题的步骤序列称为算法,算法可以变成软件(程序)以确定硬件(物理机)能做什么。算法完全独立于计算机系统,并且接收一组输入数据和产生一组输出数据。8.1算法提出问题才能解决问题,问题描述就是要说明一些能用来解决问题的要素。一个表达清晰的问题描述应该具备以下三个特征。(1)能说明描述问题范畴的任何假设。(2)罗列出已知的所有条件。(3)具体说明需要解决什么问题。8.1.1问题描述在一个问题描述中,“假设”就是为了方便设计而假定为正确的陈述。问题描述中的已知信息就是要计算机帮助解决问题时提供给它的信息。已知信息在问题描述中经常用“已知”来给出。在说明已知条件后,应该说明问题解决后该如何做决定,也就是想让程序输出什么信息。8.1.1问题描述我们先来分析一个算法的简单例子。假设要开发一个从一组正整数中找到其中最大整数的算法,它需要从一组任意的整数中找出其中的最大值,并且这个算法必须具有通用性并独立于整数的个数。8.1.2算法的概念要完成从许多整数中找到最大值的任务,算法必须一个个地去测试每一个数。为此,可以用一种直接的方法,例如先对一组少量的数(如五个)进行分析,然后把解决方法扩大到任意多的整数。看到第一个整数时,它并不知道剩下的其他整数的值。等处理完第一个数,算法才开始处理第二个数,照此进行。
图8-1在5个整数中找出最大值8.1.2算法的概念我们称这个算法为取最大值,接收一组五个数(作为输入),然后输出其中的最大值。这个算法中,为找到最大值采取下面五个步骤。第一步:算法检查第一个整数(12)。因为还没有检查其他整数,所以当前的最大值就是第一个数。算法中定义了一个称为Largest的变量,并把第一个数的值(12)赋给它。第二步:算法把上一步得到的最大值Largest(即12)和第二个数(8)进行比较,发现目前的最大值大于第二个数,Largest中的数还是最大值,不需要改变。8.1.2算法的概念第三步:新的数(13)大于Largest,最大值应该由13代替,把13赋给Largest。第四步:当前Largest比第四个数(9)大,该步中最大值未改变。第五步:当前Largest比第五个数(11)大,该步中最大值未改变。最后,因为已经没有其他数需要处理,所以算法输出Largest的值(13)。8.1.2算法的概念现在有两个问题:首先,第一步中的动作与其他步骤中的不一样。其次,第二步到第五步的程序功能一样,但程序描述语言不一样。第一步不同于其他步是因为那时最大值Largest还没有初始化。如果一开始就把最大值Largest赋成0(没有正整数比0小),那么第一步就可写成和其他步一样了。于是,增加一个新的步骤(称为第0步,表明它要在处理任何其他数之前完成)。再把其余程序段都写成“如果当前的数大于最大值Largest,那么它就成为最大值”。8.1.2算法的概念这个算法可以泛化吗?假设要从N个正整数中找到最大值,N的值可能是l000或1000000,或者更多。当然,有一种更好的方法可以改进它,只要让计算机重复这个步骤N次,在算法图形表示中就包括了这个特性。图8-2最大值算法的泛化8.1.2算法的概念20世纪70年代,E.迪克斯特拉首先提出了结构化程序设计方法,主张只用顺序、选择和重复三种基本控制结构来嵌套连接成具有复杂层次的“结构化程序”,每种基本控制结构只有一个入口和一个出口,并完成单一的操作。有些问题只用顺序结构不能解决,需要检测条件是否满足。假如测试的结果为真,即条件满足,则可以继续顺序执行指令;假如结果为假,即条件不满足,程序将从另外一个指令序列继续执行。这就是所谓的选择(判断)结构。在有些问题中,相同的一系列顺序指令需要重复,可以用循环结构来解决,从指定的数据集中找出最大数的算法就是这种结构的例子。8.1.3三种基本结构已经证实仅仅使用这三种结构就可以使程序或算法容易理解、调试或修改。图8-3顺序、判断、循环结构8.1.3三种基本结构问题描述和算法通常写在程序说明书中,它们是程序设计必不可少的蓝图,完成程序说明书后就可以编写程序了。编程序,就是用某种程序设计语言把算法程序化,编写程序的人称为程序员。对于大部分程序设计语言来说,编程就是输入命令;有些程序设计语言只需要选择对象和属性或编写对象的脚本即可。8.1.3三种基本结构框图(又称“流程图”)是算法的图形表示方法之一,它使用图的形式只显示算法从开始到结束的整个流程。图8-4三种结构的框图表示8.1.4算法的定义下面,我们给出算法的正式定义:算法是一组明确步骤的有序集合,它产生结果并在有限的时间内终止。解释如下。(1)有序集合。算法是一组定义完好且排列有序的指令集合。(2)明确步骤。算法的每一步都有清晰明白的定义。(3)产生结果。算法必须产生结果,结果集可以是被调用算法返回的数据或效果(如打印)。(4)在有限的时间内终止。如果不能终止(例如,无限循环),说明不是算法。8.1.4算法的定义采用三种基本结构可以为任何可解的问题创建算法。结构化编程的原则要求把算法分成几个单元,我们称之为子算法(又称子程序、子例程、过程、函数、方法和模块等)。每个子算法又分为更小的子算法。这个过程持续到子算法变为最本质的(可被立即理解)。一些最常用的基本算法包括:求和、乘积、最大和最小、排序(选择排序、冒泡排序、插入排序等)和查找(顺序查找和折半查找)等。8.1.4算法的定义计算机科学家常常会谈及建立某个过程或物体的模型。“模型”是一个数学术语,意思是写出事件运作的所有方程式并进行计算,这样就可以在没有真实模型的情况下完成实验测试。由于计算机运行十分迅速,因此,与真正的实验操作相比,计算机建模能更快得出答案。在某些情况下,进行实验可能是不实际的,如气候变化,没有第二个地球或是时间可供人们进行实验。计算机模型可以非常简单也可以非常复杂,取决于人们想要探索的信息是什么。建立人脑般的计算机模型是人工智能最根本也最宏伟的目标之一。完美模型固然最好,但精确性稍逊的模型同样十分有效。8.1.5计算机建模PART02软件工程与软件生存周期软件工程和硬件工程都可以看成是计算机系统工程的一部分。用于计算机硬件的工程技术是由电子设计技术发展起来的,而且在几十年的时间里已经达到了比较成熟的水平,虽然制造方法仍在不断地改进,但硬件的可靠性已经是一种可以期待的现实而不再是一种愿望了。8.2软件工程与软件生存周期但是,软件工程还处于某种困境之中。在以计算机为基础的系统中,软件已经取代硬件,成为系统中设计最困难、最不容易成功(即不能按时完成和容易超出预计的开发成本,且最不易管理)的部分。另一方面,随着以计算机为基础的系统在数量、复杂程度和应用范围上的不断增长,对软件的需求却有增无减。软件工程就是建立在这样的基础之上。8.2软件工程与软件生存周期软件生存周期是软件工程中的一个基础概念。国家标准《软件工程术语》(GB/T11457)定义了软件生存周期,即:从设计软件产品开始到产品不能再使用时为止的时间周期。亦即:一个计算机软件,从出现一个构思之日起,经过开发成功投入使用,在使用中不断增补修订,直到最后决定停止使用,并被另一项软件代替之时止,被认为是该软件的一个生存周期。8.2软件工程与软件生存周期一个软件产品的生存周期可以划分成若干个互相区别而又有联系的阶段,每个阶段中的工作均以上一阶段工作的结果为依据,并为下一阶段的工作提供了前提。经验表明,失误造成的差错越是发生在生存周期的前期,在系统交付使用时造成的影响和损失就越大,要纠正它所花费的代价也越高。因而在前一阶段工作没有做好之前,决不要草率地进入下一阶段。8.2.1软件生存周期国家标准《计算机软件开发规范》(GB/T8566)将软件生存周期划分为8个阶段,即:可行性研究与计划、需求分析、概要设计(即结构设计)、详细设计、实现(包括单元测试)、组装测试(即集成测试)、确认测试、使用和维护。软件生存周期是对软件的一种长远发展的看法,这种看法把软件开发之前和软件交付使用之后的一些活动都包括在软件生存周期之内。应当注意的是,软件系统的实际开发工作不可能直线地通过分析、设计、编程和测试等阶段,出现各阶段间的回复是不可避免的。软件生存周期的每个阶段都要产生一定规格的软件文件(文档)移交给下一阶段,使下一阶段在此基础上继续开展工作。8.2.1软件生存周期《软件生存周期过程》(GB/T8566)根据软件工程的实践和软件工程学科的发展,进一步完善了软件生存周期的定义,即:从概念形成直到退役,并且由获取和供应软件产品及服务的各个过程组成。该标准把软件生存周期中开展的活动分为5个基本过程(获取过程、供应过程、开发过程、运作过程、维护过程)、8个支持过程(文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审核过程、问题解决过程)和4个组织过程(管理过程、基础设施过程、改进过程、培训过程)。8.2.2软件生存周期过程软件生存周期过程中阶段的划分,有助于软件研制管理人员借用传统工程的管理方法(重视工程性文件的编制,采用专业化分工方法,在不同阶段使用不同的人员等),从而有利于明显提高软件质量、降低成本、合理使用人才、进而提高软件开发的劳动生产率。8.2.2软件生存周期过程软件生存周期模型(又称软件开发模型)是软件工程的一个重要概念,它可以定义为:一个框架,它含有遍历系统从确定需求到终止使用这一生存周期的软件产品的开发、运行和维护中需实施的过程、活动和任务。8.2.3软件生存周期模型软件生存周期模型能清晰、直观地表达软件开发全过程,明确规定了开发工作各阶段所要完成的主要活动和任务,以作为软件项目开发工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。软件生存周期模型是稳定有效和普遍适用的。8.2.3软件生存周期模型在软件生存周期过程中,软件生存周期模型仅对软件的开发、运作和维护过程有意义,在ISO12207和ISO9000-3中都提到软件生存周期模型,它包括:瀑布模型、渐增模型、演化模型、螺旋模型、喷泉模型和智能模型等。8.2.3软件生存周期模型例如:瀑布模型是1970年W·罗伊斯提出的最早的软件开发模型,它将软件开发过程中的各项活动规定为依固定顺序连接的若干阶段工作,形如瀑布流水(图8-5),最终得到软件系统或软件产品。换句话说,它将软件开发过程划分成若干个互相区别而又彼此联系的阶段,每个阶段中的工作都以上一个阶段工作的结果为依据,同时为下一个阶段的工作提供了前提。8.2.3软件生存周期模型
图8-5软件生存周期的瀑布模型8.2.3软件生存周期模型发展至今,软件工程已经是一门交叉性学科,它是解决软件问题的工程,对它的理解不应是静止的和孤立的。软件工程是应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法来创建软件,从而达到提高质量、降低成本的目的。其中,计算机科学和数学用于构造模型、分析算法,工程科学用于制定规范、明确风格、评估成本、确定权衡,管理科学用于进度、资源、质量、成本等的管理。8.2.4软件工程定义软件工程的目标是明确的,就是研制开发与生产出具有良好质量和费用合算的软件产品。费用合算是指软件开发运行的整个开销能满足用户的要求,软件质量是指该软件能满足明确的和隐含的需求能力的有关特征和特性的总和。软件工程的基础是一些指导性的原则,例如以下几点。(1)必须认识软件需求的变动性,并采取适当措施来保证结果产品能忠实地满足用户要求。软件设计中,通常要考虑模块化、抽象与信息隐蔽、局部化、一致性等原则。8.2.4软件工程定义(2)稳妥的设计方法大大地方便软件开发,为达到软件工程的目标,软件工具与环境对软件设计的支持来说,颇为重要。(3)软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用。(4)有效的软件工程只有在对软件过程进行有效管理的情况下才能实现。8.2.4软件工程定义模块化意味着将大项目分解成较小的部分,以便能够容易理解和处理。换言之,模块化意味着将大程序分解成能互相通讯的小程序。有两种工具可以用于在程序设计中实现模块化,即模块结构图或类图。模块结构图用于过程化编程以显示过程或函数之间的关系;类图用于面向对象编程以显示类之间的关系,统一建模语言(UML)作为一个标准,包括了有助于这方面的工具和图。8.2.5软件模块化1.耦合度耦合是对两个模块互相绑定紧密程度的度量。越紧耦合的模块,它们的独立性越差。耦合的类型主要有如下几种。(1)数据耦合。只从调用函数向被调用函数传递最少的需求数据。所有需求数据作为参数传递,没有额外的数据传递。这是耦合的最佳形式,应该尽可能地使用。8.2.5软件模块化(2)控制耦合。传递的是标记,它可用于指示函数的逻辑流程,它与数据耦合极为相似,不同之处仅在于前者传递的是标记,后者传递的是数据。如果使用得当,控制耦合是两个函数之间通讯所必需的和有效的方法,它传递状态,如到达文件尾部、找到查询的值等。糟糕的标记使用通常是糟糕的程序设计的一种标志,比如一个处理过程在两个或更多的独立函数之间分开等。8.2.5软件模块化(3)公共耦合。又称全局耦合,是用全局变量来进行两个或更多函数之间的通讯,这不是一个好的耦合技术。实际上,应该避免使用它。例如,全局耦合实际上不可能决定哪些模块正在互相通讯。当一个程序需要改动时,它无法评估和隔离这种变化造成的影响。这常常导致没改动的函数突然失效。其次,全局耦合紧密地把函数绑定在程序上,这意味着它很难移植到另一个程序中。8.2.5软件模块化(4)内容耦合。是在一个函数直接引用另一个函数的数据或语句时产生的耦合。显然,这种观念打破了结构化编程的宗旨,引用另一个函数的数据要求该数据在函数的外部可见。8.2.5软件模块化2.内聚度模块化的另一个问题是内聚,内聚是程序中处理过程相关紧密程度的度量。内聚的级别有多种。(1)功能内聚。带有功能内聚的模块仅仅包含一个处理过程,这是最高级别的内聚,并且这是应该尽力实现的级别。只做一件事:每个函数应该只做一件事,而且函数中的所有语句应该仅为这件事服务。8.2.5软件模块化在一个位置:一个函数应该只在一个地方做一件事。如果一个处理过程的代码散落在程序中多个不同的无关的部分,那么它将很难改动。所以,一个任务的所有处理过程应该放在一个函数中,如果需要也可以放在其子函数中。8.2.5软件模块化(2)顺序内聚。带有顺序内聚的模块包含两个或更多紧密联系在一起的相关任务,通常一个流程的输出作为另一个的输入。8.2.5软件模块化(3)通信内聚。将使用同一数据的处理过程合并。在程序的较高级别模块中使用通信内聚是很自然的,但是基本的级别中将不会发现通信内聚。例如,考虑一个读入库存文件的函数,它打印当前零部件的状态,接着检查是否有需要订购的零部件。前三个级别的内聚被认为是良好的结构化编程原则。一旦逾越这个观点,易于理解和实现、可维修性及准确性就开始急剧滑落。下几个级别的内聚仅被用于结构图中的更高级别。8.2.5软件模块化(4)过程内聚。合并由控制流程连接的不相关的处理过程(它不同于顺序内聚,顺序内聚是数据流从一个过程到另一个过程)。(5)时间内聚。仅仅在超过处理过程的限定范围时才被接受。它合并了那些总是一起发生但并不相关的处理过程。两个瞬时内聚的函数是工作的初始化和结尾。因为它们在程序中仅仅使用一次且不可移植。但是,无论何时使用,它仍然应该包含对功能内聚的原始函数的调用。8.2.5软件模块化(6)逻辑内聚和偶然内聚。这在如今的程序中是少见的。逻辑内聚合并了由控制它们的实体所关联的处理过程。一个函数基于作为参数传递的标记,有条件地打开不同的文件集,这可能就是逻辑内聚。最后,偶然内聚合并了无关的处理过程,一般仅在理论上存在。8.2.5软件模块化PART03软件开发过程在软件生存周期中,开发阶段可以概括为四个阶段,即分析、设计、实现和测试。8.3软件开发过程整个开发过程始于分析阶段(包括可行性研究与计划、需求分析)。在这个阶段,系统分析员定义需求,指出系统所要实现的目标。这些需求通常用用户能理解的术语来表述。在分析阶段有四个步骤:(1)定义用户。软件可以为一般用户或特殊用户而设计,必须很清楚地划分软件的使用者。(2)定义要求。确定用户以后,系统分析员开始定义要求。在这个阶段,最好的答案来自于用户,用户或用户代表清楚地定义了他们对软件的期望。8.3.1分析阶段(3)定义需求。在用户要求的基础上,系统分析员能够准确地定义系统的需求。例如:假设一个软件在月底给每个雇员打印账单,则需要说明实现怎样的安全和精度的等级。(4)定义方法。在清晰定义好需求之后,系统分析员应选择适当的方法来满足这些需求。8.3.1分析阶段设计阶段定义系统怎样完成在分析阶段所定义的需求。在设计阶段,将确定系统,完成文件和(或)数据库的设计。(1)模块化。设计阶段遵循模块化原则。整个程序包划分成许多小的模块。每个模块经过设计、测试并通过主程序与其他模块进行链接。(2)工具。在设计阶段使用许多工具,其中最常用是模块结构图(SC)。模块结构图显示了如何将软件包分解成逻辑步骤,每个步骤就是一个独立的模块。模块结构图也显示了各部分(模块)之间的相互作用。8.3.2设计阶段在实现阶段,完成实际程序代码的编写。(1)工具。在这个阶段,在实际代码编写之前使用了许多工具来显示程序的逻辑流程。程序流程图(框图)是流行的主要工具之一。程序流程图使用标准的图形符号来表示贯穿模块的数据逻辑流程。第二个被程序员使用的工具是伪代码。伪代码部分是英文,部分是用精确的算法细节来描述程序将完成什么的程序逻辑。而这需要用足够的细节定义步骤,以便能够容易地转换成计算机程序。8.3.3实现阶段(2)编码。在完成程序流程图、伪代码、或两者都完成之后,程序员真正开始用指定的程序设计语言编写代码。8.3.3实现阶段一旦程序设计完成,必须进行测试。测试阶段是在程序开发中非常单调且很花费时间的部分。程序员负责测试他们编写的程序(单元测试)。在大型开发项目中,通常有专家担任测试工程师,负责测试整个系统(组装测试),这种测试将确保所有的程序都能在一起工作。8.3.4测试阶段测试的主要类型有两种:黑盒测试和白盒测试。(1)黑盒测试。即在不知道程序内部构造也不知道程序是怎样工作的情况下测试程序。换言之,程序就像看不见内部的黑盒。简单地说,黑盒测试计划是从需求说明发展起来的。这就是为什么有一组好的需求如此重要的原因之一。测试工程师通过利用这些需求和他的系统开发知识以及用户的工作环境来产生测试计划。这个计划主要用于系统的整体测试。编写程序之前,应当查看和了解这些测试计划。8.3.4测试阶段(2)白盒测试。与黑盒测试假设对程序代码的一无所知相反,白盒测试假定你知道有关程序的一切。在这种情况下,程序就像玻璃房子,其中的一切都是可见的。白盒测试主要是程序员的责任,他们准确地知道程序内部发生了什么。必须确保每一条指令和每一种可能情况都已经被测试过。这不是一个简单的工作。经验将帮助程序员设计好的测试数据,但是,程序员一开始就能做的事是养成撰写测试计划的习惯,还在设计阶段时就应该开始编制测试计划。8.3.4测试阶段PART04软件测试与文档在编制程序的同时应当编写文档,以记录和解释程序的工作过程。编程完成后,必须测试代码的每一段来确定其可以正确地工作。作为保证软件质量和可靠性的关键技术手段,软件测试正日益受到广泛的重视。但如何进行测试,如何提高测试的质量和效率,从而确保软件产品的质量和可靠性,仍是令人深感困扰的问题。8.4软件测试与文档软件质量是“软件产品具有满足规定或隐含要求的与能力要求有关的特性与特性总和”。软件质量的评估通常从对软件质量框架的分析开始。软件质量是计算机软件的所有内在属性的组合,它历来是软件开发中的关键问题,也是软件生产中的核心问题。并且,软件质量包括程序、数据和文件等多个方面。随着计算机日益广泛地应用于各行各业,软件质量将直接影响到计算机应用的深度和广度。因此,如何科学地对软件进行评价、测试和鉴定,对促进软件质量的提高,加速软件产业化、商品化进程具有重要的意义。8.4.1软件质量在关于软件质量的讨论过程中,应该遵循以下三条原则。(1)应强调软件的总体质量,不应该片面强调软件的正确性,而忽略其可维护性与可靠性,或忽略其易用性与效率等。(2)应在软件生产的整个过程中都注意软件的质量,而不能只注意软件最终成品的质量。(3)应定量地测量软件的质量,而不能仅仅定性地评价软件的质量,软件产品评价应逐步走上评测结合、以测试为主的科学轨道。8.4.1软件质量软件质量能够划分成三个广义的度量:可操作性、可维护性和可移植性。
图8-6软件质量因素8.4.1软件质量(1)可操作性。涉及到系统的基本操作。用户对系统的第一印象通常是该系统看上去和感觉上怎样。特别是对在线的交互式系统,这意味着使用起来有多容易和多直观?它是否很好地适应其运行所依赖的操作系统?例如,如果运行在Windows环境中,它的下拉和弹出菜单应该与其操作系统的菜单工作方式一致。组成可操作性的因素主要有:准确性、效率、可靠性、安全性、及时和适用性等。8.4.1软件质量(2)可维护性。以保持系统正常运行并及时更新为参照。很多系统经常需要改变,这不是因为它们实现得不好而是因为外部因素的改变。可维护性包括:可变性、可修正性、灵活性和可测试性等。(3)可迁移性。是指把数据和/或系统从一个平台迁移到另一个平台并重用代码的能力。在很多情况下,这不是一个重要的因素。但如果你编写的是具用通用性的软件,那么可迁移性就很关键了。可迁移性包括:代码可重用性、互操作性和可移植性等。8.4.1软件质量严格的测试过程是保证新系统正常工作的唯一方法。在新系统投入正常运行之前,不同的测试方法可以帮助定位和解决问题。应用程序测试一般由单元测试、组装测试和确认(验收)测试等环节组成。8.4.2测试应用程序当每个应用程序模块完成时,可以进行单元测试,以确保它能可靠正确地工作。当所有模块都完成和测试后,就需要进行组装测试以保证模块之间可以正确操作。单元测试和组装测试通常在测试域中完成。测试域是可以进行软件测试,而不会影响组织正常信息系统的区域。测试域可以是运行组织机构信息系统的计算机系统上某独立的存储空间,或者可能就位于完全独立的计算机系统上。在进行单元测试或者组装测试出现问题时,项目小组必须跟踪问题源,并解决之(调试和排错)。单元测试和组装测试可以重复进行以确保问题已经正确解决,并且没有引入新的问题。8.4.2测试应用程序在单元测试和组装测试完成后,确认测试可以保证所有的硬件和软件组件能一起正常工作。如果修改了某个已经存在的信息系统后,就需要进行确认测试。在—个全新的信息系统中,确认测试用来模拟日常的工作负载,以确保系统处理速度和精确性能满足说明文档的需求。在理想情况下,确认测试应该在测试域中进行。如果某组织机构没有足够的硬件资源来为测试目的复制现有信息系统,则确认测试必须“现场”进行,即在工作环境下进行测试,这时有可能会造成组织机构中部分日常功能受到影响。8.4.2测试应用程序有时,也组织单独的验收测试阶段作为系统的最后测试。验收测试用来让新系统的购买者或使用者确信,系统能完成预期工作。验收测试过程通常由用户和系统分析员来设计,并且经常包括使用真实数据来确信新系统在数据加载的尖峰和平常情况下都能正常工作。8.4.2测试应用程序软件测试自动化是一项让计算机代替测试人员进行软件测试的技术,它可以让测试人员从烦琐和重复的测试活动中解脱出来,专心从事有意义的测试设计等活动。如果采用自动比较技术,还可以自动完成测试用例执行结果的判断,从而避免人工比对存在的疏漏问题。在大多数情况下,软件测试自动化可以减少开支,增加有限时间内可执行的测试,在执行相同数量测试时节约测试时间。8.4.3软件测试自动化软件测试自动化通常借助测试工具进行。测试工具可以进行部分的测试设计、实现、执行和比较的工作。通过运用测试工具,可以达到提高测试效率的目的。所以,测试工具的选择和推广使用应该给予重视。部分的测试工具可以实现测试用例的自动生成,但通常的工作方式为人工设计测试用例,使用工具进行用例的执行和比较。软件测试自动化的设计通常必须由测试人员进行手工设计,但是在设计时却必须考虑自动化的特殊要求,否则无法实现利用工具进行用例的自动执行。为此,就必须在测试的设计和内容的组织方面采取一些特殊的方法。8.4.3软件测试自动化一个计算机程序不可避免地要修改。如果程序文档编制得好,修改程序就比较容易。程序文档解释了程序的工作过程及使用方法。创建的文档应当能为其他程序员用来修改程序或者为其他人使用程序提供帮助。程序文档一般有两种形式:插入到程序代码中的注释和专门制作的文档。注释是插入到程序代码行中的解释性注解。改写一个程序时,程序员需要阅读原来程序以理解程序如何工作,然后修订适当的代码段。如果一个程序员在原先的程序中加了注释,那么程序就比较容易理解。计算机执行程序时会略过这些注释,但注释对需要修改程序的程序员来说是很方便的。8.4.4软件文档专门制作的文档不属于程序,它包含的是一些对程序员和用户都有用的关于程序的信息。通常软件文档包括用户文档和系统文档。(1)用户文档。为了正确运行软件,用户手册对用户是必不可少的,它告诉用户如何使用该软件,通常包含一个指导用户熟悉该软件各项特性的教程。好的用户手册能够成为功能强大的营销工具。手册应该面向新手和专业用户。8.4.4软件文档(2)系统文档。定义软件本身。撰写系统文档的目的是为了让原始开发人员之外的人能够维护和修改软件。系统开发的各个阶段都应该有文档。8.4.4软件文档国家标准《计算机软件产品开发文件编制指南》(GB/T8567)建议在软件的开发过程中编制下述14种文件,即:可行性研究报告、项目开发计划、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、用户手册、操作手册、模块开发卷宗、测试计划、测试分析报告、开发进度月报以及项目开发总结报告。而《计算机软件需求说明编制指南》(GB/T9385)、《计算机软件测试文件编制规范》(GB/T9386)等有关软件工程的国家标准对软件文件的编制提出了更为详尽的要求,《软件文档管理指南》
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抹灰工施工安全技术交底
- 2026年建筑工地消防临时设施建设工作情况的自查报告
- 某化工厂设备检修管理细则
- 陕西省省属事业单位2025年下半年公开招聘工作人员(355人)笔试历年典型考题及考点剖析附带答案详解
- 【银川】2025年中共宁夏银川市委党校第一批自主公开招聘博士研究生7人笔试历年典型考题及考点剖析附带答案详解
- 【衡水】2025年河北衡水市园林中心公开选聘工作人员2人笔试历年典型考题及考点剖析附带答案详解
- 施工现场灭火与应急疏散预案(消防)
- 2025版儿童过敏性疾病诊断及治疗专家共识课件
- 2024年急性心房颤动中国急诊管理指南课件
- 废品回收站要防切割爆炸安全防范措施
- JGJT251-2011建筑钢结构防腐蚀技术规程
- 中药贴敷疗法
- 2023年5月软考高级信息系统项目管理师真题及解析(综合知识+案例分析+论文)
- 2022室外排水设施设计与施工-钢筋混凝土化粪池22S702
- 桥梁工程2-2桥面构造课件
- 诺瓦星云SHL测评题库
- 语文教育与学生心理健康
- 抖音违禁语考试试题及答案
- 计算机应用基础项目教程(Windows 10+Office 2016)课件全套 第1-6单元 计算机基础知识-互联网应用(Internet)
- 科技论文写作 第五讲课件
- 2023南方区域AGC发电单元调频指标计算规范2019版
评论
0/150
提交评论