软件技术(第5、6、7章:算法程序语言软件工程).ppt_第1页
软件技术(第5、6、7章:算法程序语言软件工程).ppt_第2页
软件技术(第5、6、7章:算法程序语言软件工程).ppt_第3页
软件技术(第5、6、7章:算法程序语言软件工程).ppt_第4页
软件技术(第5、6、7章:算法程序语言软件工程).ppt_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件技术基础 ( 算法 Algorithm 程序设计语言 Programming language 软件工程 Software Engineering ),教学团队:阳小华 刘志明 楚燕婷等 University of South China School of Computer Science&Software (/jsjxy/),学习内容,1 概述 2 算法 3 程序设计 4 软件工程,1 概 述,什么是计算机软件?,操作系统、QQ、360,计算机系统=硬件+软件,程序以及相关的文档的集合。,什么是文档?,文档:记录软件开发活动和阶段性成果,理解软件所必需的阐述性资料。 需求分析文档 软件设计文挡等 编写文档目的 促进对软件的开发、管理和维护; 便于各种人员(用户、开发人员)的交流,什么是程序?,程序一词源于生活。做任何一件事情,都是有程序的。 例如,下面是某一个学校颁奖大会的程序: 宣布大会开始 校长讲话 宣布获奖名单 颁奖 获奖代表发言 宣布大会结束 按顺序实施这些步骤就完成了该事情。,用计算机完成某事情,就把事先设计好的计算机处理信息的步骤,用计算机能够识别的指令编写出来,送入计算机。计算机按照指令执行,就能完成指定的工作。,算法,程序设计语言,可以说程序就是用计算机语言表述的算法。,为解决一个问题而采取的方法和步骤,就称为算法。,什么是算法?,一个农夫带着一只狼、一只羊和一棵白菜,身处河南岸,要把东西全部运到北岸。约束条件是只有一条能容下他和一件物品的小船,只有农夫能撑船。不能单独留下羊和白菜,也不能单独留下羊和狼。,例如:,农夫过河算法,带羊到对岸 空手回本岸 带菜到对岸 带羊回本岸 带狼到对岸 空手回本岸 带羊到对岸,带羊到对岸 空手回本岸 带狼到对岸 带羊回本岸 带菜到对岸 空手回本岸 带羊到对岸,或,在使用计算机解题前,需要将解题方法转换成一系列具体的在计算机上可执行的步骤,这些步骤能够清楚的反映解题方法一步步“怎么做”的过程,这个过程就是通常所说的算法。 算法:解题过程的准确、完整的描述称作解该问题的算法。,什么是计算机语言?,人们想和计算机交流,用符号来表达。计算机通过事先约定好的符号与意义的对应关系,把人用符号表达的内容读懂,再按照这些符号的意思去执行。,怎样维护交通秩序? 音乐是怎样表示的?,用来表达这种关系的符号系统就是计算机语言,也叫“程序设计语言”。人与计算机交流使用的是“程序设计语言”。同人类语言一样,程序设计语言也是由字、词和语法规则构成的一个系统。,软件的分类,系统软件 操作系统 语言编译和解释系统 网络软件 数据库管理系统(DBMS) 各种服务程序,应用软件 业务软件 科技计算软件 个人计算机软件 人工智能软件 ,软件开发过程?,有一个工程:建一座桥梁。我们会怎么做? 了解桥梁的要求、用途设计维护 开发大型软件: 定义开发维护,2 算 法,算法的表示 算法的要素 算法的特点 算法的复杂度 常用算法,主要内容,算法的表示,算法一般可以使用下面几种类型的工具描述算法: 1.自然语言 自然语言描述算法通俗易懂,但它有着难以克服的缺陷: (1)易产生歧义性 武松打死老虎 (2)语句繁琐冗长,很难清楚地表达算法的逻辑流程 (3)不便于直接转换成程序,例:求12345。 最原始方法: 步骤1:先求12,得到结果2。 步骤2:将步骤1得到的乘积2乘以3,得到结果6。 步骤3:将6再乘以4,得24。 步骤4:将24再乘以5,得120。 这样的算法虽然正确,但太繁。,改进的算法: S1: 使t=1 S2: 使i=2 S3: 使ti, 乘积仍然放在在变量t中,可表示为tit S4: 使i的值+1,即i+1i S5: 如果i5, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。 如果计算100!只需将S5:若i5改成i100即可。,2.专用图形工具 常用的有流程图、PAD图和N-S图等,流程图描述,3.伪代码 为了便于转换成某种编程语言,一般采用 准程序设计语言作算法描述语言。,伪代码描述:,BEGIN(算法开始) 1=t 2=i while i t i+1=i print t END(算法结束),算法两要素,算法的两要素 算法由操作与控制结构两要素组成。 1.操作 (1)逻辑运算:“与”、“或”、“非”; (2)算术运算:加、减、乘、除; (3)数据比较:大于、小于、等于、不等于; (4)数据传送:输入、输出、赋值。,2.控制结构,1)算法的控制结构,决定了各操作的执行次序。用流程图可以形象地表示出算法的控制结构。 2)任何复杂的算法都可以用顺序、选择、循环三种控制结构组合而成。,我们在构造一个算法的时候,也仅以这三种基本结构作为“建筑单元”,遵守三种基本结构的规范。基本结构之间可以并列、可以相互包含,但不允许交叉。 正因为整个算法都由这三种基本结构构成,所以结构清晰,易于验证,易于纠错。这种方法就是结构化方法。,算法的特征,有穷性 一个算法必须总是在执行有穷步后结束,且每一步都可在有穷时间内完成; 确定性 算法中的每一个指令必须有明确的含义,不能有二义性; 例:武松打死老虎 歧义 手举过头顶 单手?双手?举多高? 可行性(有效性) 算法中描述的操作都是可通过已经实现的基本运算、执行有限次实现的; 例:a/b 若b=0则无效,输入 一个算法应有0个或多个输入; 输出 一个算法应有1个或多个输出。,算法的复杂度,求解一个问题可能有多种不同的算法,评价算法的标准主要有: 执行算法所耗费的时间,即时间复杂度; 执行算法所耗费的存贮空间,主要是辅助空间,即空间复杂度。,思考:给出一组数12、13、26、27、38、49、55、60、67、86,查找某一个数x是否在这组数中的算法?,的时间复杂度?,常 用 算 法,枚举法是一种比较笨但却很有效的算法,他针对问题所有的可能一一查看是不是符合条件, 一种情况他都不想落下,有宁可错杀一千,不可放过一个的作风。,先依据题目的部分条件确定答案的大致范围,在此范围内对所有可能的情况逐一验证,直到全部情况验证完。 若某个情况使验证符合题目的条件,则为本题的一个答案;若全部情况验证完后均不符合题目的条件,则问题无解。,1.枚举法,例:公鸡每只五元,母鸡每只三元,小鸡三只一元,问百元买百鸡有几种买法?,假设公鸡数为x,母鸡数为y,则小鸡数是100-x-y,也就有了下面的方程式: 3*x+5*y+(100-x-y)/3=100 从方程式中看出:公鸡最多有33只,最少是没有,即x的范围是0-33;母鸡,即y的范围是0-20;有了公鸡母鸡,小鸡数自然就是100-x-y只。,可能的方案一共有34*21种,这些方案中,可能有一种或几种正好符合相等的条件。我们就将上述34*21种方案全部过滤一遍,找出符合百钱买百鸡条件的(也即上式),只要符合,这就是我们要的输出结果。,2.递推法,递推法,就是找出和时间先后相联系或和数的大小相联系的步骤,上一步和下一步和数字的增大或减小有一定的联系。我们要么从前向后(或从小到大)推导,也可从后向前(或从大到小)推导。由此得出两种推导方法:顺推法和倒推法。,例:猴子分食桃子 一天,一只猴子采得一堆桃子,当天它吃掉一半多一个,第二天又吃了一半多一个一直到第七天,它就剩一个桃子了。那么那天它共采了多少个桃子呢?,找一下天数和桃子数的关系。如果从第1天开始往第7天找,不好找,但如果从第7天到第1天去找,可得出下面的推导式: 第N天 桃子数目 7 s7=1 6 s6=(s7+1)*2 5 s5=(s6+1)*2 1 s1=(s2+1)*2,算法: S1: 使s=1 S2: 使t=7 S3: 使(s+1)2, 结果仍然放在变量s中,可表示为(s+1)2 s S4: 使t的值-1,即t-1t S5: 如果t=1, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。,3.递归法,如果一个过程直接或间接地调用它自身,则 称该过程是递归的。,递归就象我们讲的那个故事:山上有座庙,庙里有个老和尚,老和尚在讲故事,它讲的故事是:山上有座庙,庙里有个老和尚,老和尚在讲故事也就是直接或间接地调用了其自身。 例:求阶乘。,算法:,S1: 如果n=1,返回结果1,结束。 s2: 保存当前阶数n。 S2: n-1 n ,递归调用自己, S3: 取出当前阶数,计算n*(n-1)! S4: 返回计算结果,结束,例:有一个nm的棋盘(2=n=50,2=m=50),在棋盘上有一个马,马走的规则为:马走日字且只能向右走。当n,m给出之后,同时给出马起始的位置和终点的位置,找出从起点到终点的所有路径的数目。 分析:为了解决这个问题,我们将棋盘的横坐标规定为x,纵坐标规定为y,x的值从1到m,y的值从1到n。棋盘上的每一个点,可以表示为:(x坐标值,y坐标值),比如(3,5)表示第3列和第5行相交的点。,4.回溯法,回溯算法:从一条路往前走,能进则进,不能进则退回来,换一条路再试。,以一个44的棋盘为例: 首先将起点(1,1)作为当前位 置,按照象棋马的移动规则,可以 移动到(2,3)和(3,2)。 假如移动到(2,3),以(2,3)作 为新的当前位置,又可以移动到(4,4)、(4,2)和(3,1)。继 续移动,假如移动到(4,4)。 从当前位置(4,4)回溯到(2,3),(2,3)再次成为当前位 置。从(2,3)开始,换另外一个相邻位置移动,移动到(4,2) 然后是(3,1)。 (2,3)的所有相邻位置都已经搜索过。从(2,3)回溯到 (1,1),(1,1)再次成为当前位置。从(1,1)开始,还可以移 动到(3,2),从(3,2)继续移动,可以移动到(4,4),这时, 所有可能的路径都已经试探完毕,搜索过程结束。,Separating the Chain Using Only Three Cuts,一位拿着由7个金环组成的链子的旅行者必须在一个酒店里住7也,每一夜的 租金是金链中的一环,应该怎样对链子进行最少次数的切割,旅行者才能每天早 上支付饭店的一环而不用提前支付住宿费?,Solving the Problem with Only One Cut,说明什么问题?,3 程序设计基础,计算机程序是用计算机程序设计语言按照一定的规范书写出来的一系列动作,表达了程序设计者要求计算机执行的操作。 对于计算机来说,一组机器指令就是程序。,一个程序应包括: 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 对操作的描述。即操作步骤,也就是算法(algorithm)。 Nikiklaus Wirth提出的公式: 数据结构+算法 = 程序,例:开会的程序:发言+步骤 做菜的程序:原料+步骤,改进: 程序=算法+数据结构+程序设计方法 +语言工具和环境 这4个方面是一个程序涉及人员所应具备的知识。,程序设计语言,1.发展的过程 程序设计语言分类:机器语言、汇编语言、高级语言,Evolution of Programming Paradigms (程序设计范型或软件开发范型),计算机能理解的就是0和1。在计算机诞生后的很长一段时间以来,程序员写程序,不过是拿着一卷长长的纸条,然后再拿支笔在纸条上画圈圈画完以后,程序员有专门的“秘书”,负责在纸上有圈圈的地方打个孔,然后将长长的纸卷塞入当时的计算机,计算机就开始“读”程序了。它是如何理解的?无非就是用光束照射纸卷,有孔的地方透光,是,没孔的不透光,是,或者是相反。,机器语言 机器语言是一种CPU指令系统,是该CPU可以识别的一组组由0和1序列组成的指令码。 最初的语言是机器语言,二进制编码,机器可直接执行。 例:,00000001000000001000 数据装入寄存器0 00000001000100001010 数据装入寄存器1 00000101000000000001 寄存器0与1的数据乘 00000001000100001001 数据装入寄存器1 00000100000000000001 寄存器0与1的数据加 00000010000000001110 保存寄存器0里的数 难写难读,使用不便,程序开发效率极低。,汇编语言 用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等。 例:load 0,a 将单元a的数据装入寄存器0 load 1,b 将单元b的数据装入寄存器1 mult 0,1 寄存器0与1的数据乘 load 1,c 将单元c的数据装入寄存器1 add 0,1 寄存器0与1的数据加 save 0,d 将寄存器0里的数存入单元d,计算机无法直接执行汇编语言程序,执行前需要翻译为机器指令。 最早是人自己翻译,后来人们开发出“汇编系统”,让计算机去完成这项工作。 汇编语言细节太多,程序无结构,缺乏组织手段,写程序仍然很困难。,高级语言 具有类似文字的表现形式; 用类似数学的表达式形式描述基本计算; 用变量等概念取代低级的存储概念,人们摆脱了繁琐的存储安排工作; 提供高级流程控制手段和程序组织手段。 例:d=a*b+c 高级语言程序必须经过翻译变成机器语言程序。翻译有两种做法:编译和解释,相应的翻译工具分别叫做编译器和解释器。,汇编语言VS高级语言,DATA SEGMENT XX DB X YY DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS: DATA START:MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 JGE BLGR MOV AL 0FFHAL, MOV YY,AL HLT BLGR:JE EQUT MOV AL 01HAL, MOV YY,AL HLT EQUT:MOVE YY,AL HLT CODE ENDS ENDSTART,If x0 then y=1 elseif x=0 then y=0 else y=-1 endif Print x,y,几种高级程序语言,FORTRAN(Formula Translator)1954 BASIC(Beginner All purpose Symbolic In struction Code) Pascal PROLO G(Programming in Logic) C语言,70年代初期 C+语言,80年代 Java语言,1995年5月,Eclipse C#,C#3.0,云计算时代最具潜力的12种编程语言,DART、Ceylon、GO、F#、OPA、Fantom、Zimbu、X10、Haxe、Chapel,2.常见的结构化程序控制,程序设计方法,面向过程(Process-oriented)的程序设计,面向过程的程序设计强调模块化和结构化。采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序。遵循这种方法的程序设计就是面向过程的程序设计。,面向过程的程序设计,在数据处理过程中,采用自顶向下、分而治之的方法,将整个程序按功能划分为几个可独立编程的子过程模块,每一子模块完成指定的子任务,并且提供一个清晰、严格的调用界面,主过程通过调用各子过程完来成全部处理工作。 常用软件:C,FORTRAN,PASCAL等。,程序分解实例:,面向对象(Object-oriented)的程序设计,什么是对象?,现实世界中,比如书、人、车都是对象。我们怎么区分它们呢?从组成以及他们的动作行为。 比如:人 组成:一个脑袋,两条腿,两个胳臂 动作行为:说话,吃饭,跑步,流泪,对象,对象是存在的具体实体,具有明确定义的状态和行为。,类(Class),“类是具有相同属性和行为的一组对象的集合”,在面向对象编程中,程序被看作是相互协作的对象集合,通过消息来实现对象间的通讯。,每个对象都是某个类的实例,所有的类构成一个通过继承关系相联系的层次结构。,常用语言:Java、c+、VB.Net等。,在结构化程序设计中可以用下面的式子表示程序: 程序=数据结构+算法+程序设计语言+语言环境 在面向对象程序设计中可以用下面的式子表示程序: 程序=对象+对象+对象 对象=算法+数据结构+程序设计语言+语言环境,面向过程:分析出解决问题所需要的步骤,用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。 面向对象:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在解决问题中的行为。,例1:有一台如下流程的演出:主持人开场演员1表演演员2表演主持人总结。 用面向过程的思想来分析,就是先完成主持人开场,再完成演员1的表演,再完成演员2的表演,最后完成主持人的总结。 如果用面向对象的思想来分析,就是:这个演出由两大部分组成:主持人、演员。与主持人相关的:开场、总结。与演员相关的:演员编号、所演的节目。然后这台演出就可以这样策划:需要一个主持人a,需要两个演员b、c。演出的事情可以表示为:a的开场 b、c的编号和节目 a的总结。,例2:下五子棋 面向过程的设计思路就是首先分析问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。,面向对象的设计思路是,整个五子棋可以分为: 1、黑白双方,这两方的行为是一模一样的, 2、棋盘系统,负责绘制画面, 3、规则系统,负责判定诸如犯规、输赢等。 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 可以明显地看出,面向对象是以功能来划分问题,而不是步骤。,功能上的统一保证了面向对象设计的可扩展性。 比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的顺序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。,再比如:把五子棋游戏改为围棋游戏,如果是面向对象的,只需要改写规则对象就可以刻;如果是面向过程的,五子棋的规则分布在程序的每个角落,要改动还不如重写。,面向过程方法的特点,优点: 这种程序设计方法算法描述准确。 对每一子过程模块容易进行程序正确性证明。 缺点: 程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 维护程序的一致性困难。前一步修改了导致以后步骤的修改。,OOP方法的特点,OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 引入了“类”的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量。,面向对象的程序设计方法与 面向过程的程序设计方法的比较,(1)以过程为中心构造应用程序,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。 (2)面向对象程序设计方法中,对象所具有的封装性和继承性使得代码重用成为可能,并大大减少了程序出错的可能性。 (3)面向对象方法吸收了结构化程序设计方法的优点,同时引入了新概念、新机制并建立了比传统方法更高层次的抽象。,4 软件工程,软件工程是分析、设计、实现、与维护软件系统的一组规范,它指导着软件开发人员以工程化的手段规范地开发高质量的软件。 软件工程源于软件危机。,软件危机-软件危机的表现,成本高 美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85。 美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元。 软件和硬件费用比不断增加 我国某军舰计算机CPU运行850小时,故障120多次,其中软件占70%。,软件质量得不到保证 软件越来越多的应用于安全犹关(safety critical)的系统,对软件质量提出更高的要求 80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误 美国阿托拉斯火箭的发射失败,原因是软件故障 我国某型号导弹,由于软件问题致使打靶失败,进度难以控制 项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成 维护非常困难 软件维护的多样性 软件维护的复杂性 软件维护的副作用,产生软件危机的根源,复杂性高 逻辑产品,逻辑复杂性远高于硬件复杂性 软件的复杂性随规模呈指数级上升 规模大 应用扩大,代码量,1000万行,仍在不断膨胀影响软件生产率和质量的因素比较复杂 人员的能力和水平 团队合作 缺乏有效、系统原理、原则、方法和工具的指导和辅助,Software Engineering vs. Other Engineering Fields传统工程,Building blocks(构件,组件) Role of tolerances(误差:传统工程允许误差范围,软件只有正确与不正确之分) Metrics(度量:传统工程度量可通过故障的平均时间,而软件不存在磨损),对软件开发的深层次认识,开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样。 正如建设狗窝和高楼大厦 大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系列软件过程和活动。,软件工程的目标,软件工程目标:生产具有正确性、可用性以及开销合宜的产品。 正确性指软件产品达到预期功能的程度。 可用性指软件基本结构、实现及文档为用户可用的程度。 开销合宜是指软件开发、运行的整个开销满足用户要求的程度。,软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。,软件工程方法,在完成生存周期每个阶段的任务时,应该采用适合该阶段任务特点的系统化的技术方法结构分析或结构设计技术。,生存周期方法学就指从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。,在每个阶段结束之前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。 总之,采用软件工程方法论可以大大提高软件开发的成功率,软件开发的生产率也能明显提高。,软件生命周期,某一软件从被提出并着手开始实现,直到软件完成其使命为止的全过程被划分为一些阶段,并称这一全过程为软件生命周期。 通常,软件生命周期分三个阶段:软件定义、软件开发、运行维护。,(1) 可行性研究与计划制定:确定开发目标和总的要求,给出功能、可靠性等可能方案,制定实施计划。 (2) 需求分析:对软件需求进行分析并给出详细定义,编写软件规格说明书及初步的用户手册,提交评审。,1 软件定义-软件要“做什么”,(3) 系统设计:概要设计和详细设计,给出软件的结构、模块和功能的划分等。编写概要设计、详细设计说明书和测试计划初稿。 (4) 详细设计:源程序编码,把软件设计转换成计算机可以接受的程序代码。编写用户手册、操作手册和单元测试计划。 (5)编码: (6)测试:设计测试用例,检验软件各个组成部分。编写测试分析报告。,2 软件开发软件要“怎么做”,3 软件运行和维护 (7) 软件投入运行,维护(进行扩充和删改)。,Traditional Development Phase 传统开发阶段,软件生命周期的开发步骤,Analysis分析,A major goal of analysis is to identify what the proposed system should accomplish Requirements(需求) The needs of the potential users Stated in terms of the application rather than in the technical terminology Specifications(说明书) Technical descriptions of the requirements,Design设计,Design concentrates on how the system will accomplish the goals set in analysis System structure is established in design The best structure is a modular one Modularity(模块化) Division of a software into manageable units, each performs only part of the overall task Modular decomposition Makes the implementation of large systems possible Allows changes to be made on a modular basis,Implementation and Testing 实现和测试,Implementation involves the actual writing of programs, creation of data files, and development of database Each module is normally tested as it is implemented Stubs(桩模块) Simplified versions of modules used to test a certain module Feature(功能) test and load test Reliability growth test and certification test,软件Development Models开发模型 Recent Trends 趋势,Waterfall(瀑布模型) Performs analysis, design, implementation, and testing in a strictly manner Incremental(迭代模型) Software system is constructed in increments Prototyping(原型法) Incomplete versions of the proposed system (prototypes) are built and evaluated Evolutionary prototyping(演化式原型) Early prototyping and throwaway prototyping(抛弃式原型),Testing Methodology Based on Pareto Principle(基于Pareto法则的测试方法),Pareto principle The results can often be increased more rapidly by applying efforts in a concentrated area Thus a small number of modules within a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论