北大计算机专业-软件工程期末串讲与例题分析2.ppt_第1页
北大计算机专业-软件工程期末串讲与例题分析2.ppt_第2页
北大计算机专业-软件工程期末串讲与例题分析2.ppt_第3页
北大计算机专业-软件工程期末串讲与例题分析2.ppt_第4页
北大计算机专业-软件工程期末串讲与例题分析2.ppt_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

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

文档简介

1、邢承杰 北京大学计算中心管理信息中心 E-mail: ,软件工程课程期末串讲与例题分析,说明,制作此文档目的是明确复习重点,解析复习提纲中的难点,减轻复习备考的负担;提供一些复习题供大家巩固基础知识和熟悉考试题型。 文档中给出的例题要会做并能够举一反三。,考试范围,1. 软件工程概论2. 可行性分析与软件计划 3. 软件需求分析 4. 软件结构设计 5. 数据驱动的软件设计方法 6. 面向对象的软件设计方法 7. 详细设计8. 编码设计 9. 软件测试10.软件维护 12.软件项目管理 其中第1章到第10章为教材内容,第12章为附加内容。本次考试重点是第1,3,6,9章。,考试形式,闭卷考试,

2、满分100分 时间:120分钟,试题分布,章节分数 17 24 36 412 52 6 21 712 85 921 104 12 6,考试题型,填空题(20%) 选择题(30%) 判断题(10%) 简答题(20%) 综合题(20%),第一章 软件工程概论 (重点),软件工程时代的特征 软件危机概念,软件危机的表现 软件工程概念 瀑布模型,软件工程时代的特征(70年代80年代),计算机硬件从集成电路发展到大规模集成电路,主机芯片的产生,将计算机的主要部件集中在一个小芯片上。计算机走出机房,有了个人电脑。 软件无论从数量到质量都无法满足发展的需要,早期的错误观念和做法严重的阻碍了软件的发展。196

3、8年,北大西洋公约组织的计算机专家提出并使用了“软件工程”这一术语,即按工程化的方法进行软件开发。诞生了软件工程这门新兴的科学。 这一阶段围绕软件工程的目标和内容,与之相应的理论、技术及方法相继建立,软件开发过程的规范化,工程化为软件的产业化奠定了坚实的基础。 软件=程序+数据文档,第一章 例1,简答题:什么是软件工程? 答:软件工程是研究如何将完善的科学与工程原理,先进高效的管理技术以及完整规范的设计方法应用于经济的开发既可靠、又能在实际计算机上有效运行的软件的一门工程学科。 本题考察最基本概念。,第一章 例2,瀑布模型将软件生命周期划分为计划、开发和运行三个时期。在下述工作中,属于软件计划

4、时期的内容是_。 (1)需求分析 (2)可行性分析 (3)结构设计 A 只有(2)B (1)和(2) C (1)和(3) D 都是 答案:A 生命周期每个时期完成什么工作都需要掌握。,第一章 相关例题,相关例题 什么是软件?它包括哪几部分? 什么是软件危机?危机的主要表现是什么? 瀑布模型包含哪几个时期,每个时期包含哪几个阶段?,第一章 相关例题,相关例题 什么是软件危机?危机的主要表现是什么? 就是软件在开发过程中存在的一系列严重问题的总称 .软件的复杂性不断提高,对软件开发的成本和进度难于估计。 .软件质量不高,潜在差错的危害。 .缺乏完整、正确的文档,维护极困难,难于移植以至于不得不重复

5、开发类似的软件。 .软件成本在计算机系统中总成本所占的比例逐年增高。 .软件生产率的提高远跟不上需求的增长。,瀑布模型对生命周期的划分,瀑布模型把软件生存周期划分为计划、开发、运行/维护三个时期,每个时期又划分为若干阶段。 如瀑布一样奔流不息,拾阶而下,故此得名。,第二章 可行性分析与软件计划,可行性分析的内容 经济、技术、操作、法律 软件计划的内容 范围定义、资源计划、成本估算、进度安排 软件成本估算 成本估算计量单位,代码行数,人年/月/日 成本估算方法,静态单变量,COCOMO,第二章 例1,简答题:可行性分析包含哪些内容,它们的含义是什么? 答: .经济上可行性:论证系统有没有经济效益

6、或社会效益?多长时间能回收成本? .技术上可行性:实现新系统需要哪些技术,现有技术能否解决,难点?建议采用的技术先进程度怎样?新技术的应用是否存在风险?是否能够找到胜任该系统的熟练的技术人员?等等 .操作上可行性:系统的操作方式在用户所在的组织内是否可行,特别是对原有系统扩展会不会引起矛盾。 .法律上可行性:会不会引起侵权、会不会引起其他的社会问题。,第二章 相关例题,相关例题 软件计划阶段包括的内容是什么? 范围定义、资源计划、成本估算、进度安排 成本估算计量单位包括哪些?成本估算方法有哪些? 成本估算计量单位,代码行数,人年/月/日 成本估算方法,静态单变量,COCOMO,2.3.2估算中

7、的计量单位,代码行数 软件是代码行的集合。 一个软件的代码行总数是软件成本估算中的基本数据。 开发工作量 开发工作量是指完成一项开发任务所需要的计量单位, 软件工程中用于计量开发工作量的单位主要有“人-月”,“人-年”,“人-日”。 如:某个项目需5人-月的工作量,它表示该项目的开发工作量实际为5每个程序员一个月应完成的“标准劳动量”。,常规的成本估算技术 代码行估算法(LOC) 功能点估算法(FP) 运用估算模型进行成本估算(完全经验) 静态单变量模型 COCOMO模型 动态多变量模型 使用自动估算工具进行估算 利用软件工具进行自动估算。须长期搜集大量的历史资料、数据和建立良好的数据库管理系

8、统。,2.3.3 成本估算方法(技术),第三章 需求分析(重点),需求分析的任务 结构化分析方法的三种描述手段 数据流图,掌握数据流图中的基本符号,要求给出一个需求能够画出多层数据流图 数据字典的定义,数据字典包括条目(数据元素,数据结构,数据流和数据文件) 加工说明,掌握描述加工说明的三种方法。 原型化方法的产生和概念,原型化方法的优缺点,第三章 例1,结构化分析方法的三种描述手段是_,_,加工说明;加工说明使用的三种描述工具是_,_, _。 答:数据流图,数据字典,加工说明;结构化语言,判定树和判定表来表示。 掌握数据流图的,数据字典和加工说明的基本概念。,(分层)数据流图(Data Fl

9、ow Diagram,简称DFD) 是一种描述数据在系统中流动的图形工具。它可用于描述系统功能的分解过程,即描述软件系统的功能组成部分及各部分之间的联系。 数据词典(Data Dictionary) 是对数据流图中所有的数据元素、数据结构、数据文件、数据流等的格式与内容进行定义的数据集合。 加工说明 加工说明的内容是描述系统中每一个基本处理的基本条件、数据来源及处理逻辑、优先级、执行频率、出错处理等所有细节。,掌握数据流图的,数据字典和加工说明的基本概念。,第三章 例2,综合题:给出一个简单的需求,要求大家使用结构化方法进行分析,只要求画出数据流图,不要求数据字典和加工说明。,用户需求: 某学

10、校需要开发一套基于Web的研究生招生管理系统,用户需求如下: 考生可以登录系统提交报名信息,报名信息经过格式确认存入数据库;信息提交成功后能够网上在线支付报名费并记录交费信息;交费成功的考生可以打印报名表。 各院系教务员能够查看和审核考生提交的报名信息,确定信息是否准确有效,最后给出审核是否通过的标志。教务员还能够打印报名考生清单。 招生办公室管理员能够查询有效的报名考生信息和打印统计报表;能够生成报名考生数据文件上报到上级单位(教育部)。 题目要求: 请用SA方法对它进行分析,画出分层数据流图。(只要求数据流图,不要求数据字典和加工说明),第三章 例2,SA方法的课堂练习网上招生系统,顶层数

11、据流图,数据源点/目的点,数据文件,数据加工,名词,动词、动名词,数据流出/入,SA方法的课堂练习网上招生系统,一层数据流图,SA方法的课堂练习网上招生系统,二层数据流图(考生),SA方法的课堂练习网上招生系统,二层数据流图(教务员),SA方法的课堂练习网上招生系统,二层数据流图(管理员),SA方法的课堂练习网上招生系统,软件结构图(上层),SA方法的课堂练习网上招生系统,软件结构图(学生),学生功能 控制,格式确认,存入数据库,读取用户 登录信息,打印报名表,交报名费,读取报名费,第三章 相关例题,相关例题 简答题:原型化方法的基本原理是什么?为什么会产生原型化方法,什么类型的系统适合使用原

12、型化方法? 简答题:需求分析的任务是什么?,3.3.1原型方法的产生,传统瀑布模型的核心内容是,将软件生存期划分为软件计划、需求分析、软件设计、编码、测试和运行维护等阶段,并强调了必须在软件的设计、编码之前对需求信息实施严格的定义,还要编写完整、正确的需求分析规格说明书。 但是,实践表明,对一些软件系统来说,尤其是大型数据处理系统,在系统开发的早期,要想得到一个完整、准确的需求信息不是一件容易的事。 一方面,用户在开发早期往往只对系统有一个模糊的想法,很难完全、准确地表达对系统的需求,而软件开发人员对问题领域的了解也还不够。虽然经过一段时间的分析和讨论,双方也许能形成一份较好的需求规格说明。但

13、很难期望这份说明能将系统方方面面的需求描述得完整、准确、有效,与最终开发的系统相符,并由此达到各方人员对系统的相同理解。 另一方面,随着开发工作的深入进行,开发者可能会遇到一些实际困难,需要改变需求来摆脱困境;用户也可能会产生新的需求,或者环境变化了,要求系统也能随之变化。虽然传统的软件生存期管理可以通过加强评审和确认、全面测试,甚至通过维护阶段来缓解上述问题,但还不能从根本上解决这些问题。 为了解决这些问题,近年来形成了所谓快速原型开发方法。,3.3.2原型的定义,在软件开发活动中,原型是软件的一个早期可运行的版本,它实现了最终系统的部分重要特性(而不是所有特性)。特别是与硬件生产相比较,我

14、们需要的原型必须成本低、时间短,因此,把这种原型开发叫做快速原型开发。 在需求分析的早期,在获得了有关系统的一些基本需求信息后,使用原型方法快速构造一个系统原型,它满足了用户的基本要求。用户在使用原型系统的过程中得到亲身感受和受到启发,然后能够进一步确定需求的细节,不断适应需求的改变,从而提高了最终产品的质量。,对原型化分析方法的理解,原型化方法虽然是在分析阶段的方法和技术中提出的,但是我们更多的将其看作是帮助分析人员更完整、更精确的获取用户的需求信息的工具。它并不是真正意义上的需求分析方法。 需求信息进行分析与综合的时候,结构化的分析方法是最适合的。因此,原型化分析方法与结构化分析方法并不是

15、并列的。原型化分析只是一种辅助手段。,3.1.1需求分析的任务,1、对问题的识别和理解需求获取 是一个调查研究的过程 分析人员需要具有较高的技能 2、对需求信息的分析和综合需求规约 充分理解需求,包括功能、性能和数据需求 采用需求分析方法 3、编制“需求规格说明书” 需求规格说明书使用的语言 书写要求 4、需求分析的复审,第四章 软件结构设计,结构设计的任务 模块独立性概念 耦合与内聚的概念,耦合与内聚的种类,耦合内聚与模块独立性的关系 变换型结构与事务型结构的组成特点 结构化设计方法 描述工具SC软件结构图 变换型结构的数据流图转化为软件结构图,第四章 例1,面向数据流的软件设计方法,一般将

16、数据流图分成两种类型,一种称为_,另一种称为_。 答:变换型,事务型 理解变换型数据流图的特点和事务型数据流图的特点。,变换型结构,变换型结构的特点是:在系统的数据流图中,呈现出明确的输入、变换处理和输出三个部分的结构特征。 数据流图中可明确划分的这三个部分分别称为逻辑输入、变换处理和逻辑输出。 绝大多数的软件系统均表现出变换型结构的特征。,事务型结构,什么叫事务?事务就是触发或启动一串动作的任何数据,控制信号等。事务也是由信息组成,亦看作数据流。 事务型结构的数据流图呈现如下的结构特征:有一个加工,它将数据流分离成若干个不同的输出流,从而形成若干种不同事务处理活动的路径,并允许系统择一处理。

17、 事务型结构由至少一条接收路径,一个事务中心和若干条动作路径组成。其示意图如下:,第四章 例2,如何理解模块独立性,用什么标准来衡量模块独立性。 答:所谓模块独立性是指模块完成它自身规定的功能而与系统中其它的模块保持一定的相对独立。模块的独立性可以使用内聚和耦合这两个定性的指标来度量。,第四章 例3,给出数据流图,转化为软件结构图,上层模块的说明,软件结构最顶层的主控模块Cm 作用是协调控制下属模块的工作。 输入控制模块Ca 作用是协调物理输入数据的接收及转换为逻辑输入的过程。 变换中心控制模块Ct 作用是协调内部数据的处理流程并产生逻辑输出。 输出控制模块Ce 协调逻辑输出信息转换为物理输出

18、信息的产生过程。,例3(续),Ct,例3(续2),第四章 相关例题,相关例题: 什么叫做耦合,耦合有哪几种类型,几种类型间的耦合强弱关系? 什么叫做内聚,内聚有哪几种类型,类型间的内聚强弱关系? 耦合、内聚与模块独立性的关系?,1、耦合,耦合是度量一个软件结构中模块之间联系程度强弱的一个指标。模块之间的联系实质上就是接口信息的复杂程度。 模块间的耦合类型可分为如下 6 种: 软件设计追求的目标之一就是构造耦合程度较低的系统结构。 结构设计中应该遵循的原则是:优先使用数据耦合,尽量少用控制耦合,限制公共实体耦合的范围,禁用内容耦合。,2、内聚,指模块内部各软件元素之间结合的紧密程度。 紧密程度高

19、的模块,内聚就高,模块的独立性就好。内聚是信息隐藏和局部化概念运用的自然结果。 模块的内聚分为七种类型: 一个模块的内聚程度越高,说明模块内功能的集中度更好,模块划分合理。 如果出现一个模块同时满足几种内聚的定义,此时应取较低内聚度作为模块的内聚。 结构设计中应该遵循的原则是:软件设计时应该力求构造高内聚的模块,适当构造中等程度的内聚模块,最好不要出现低内聚的模块。,3、内聚、耦合和模块独立性的关系,模块内的内聚性强,模块的独立性越强;模块间的耦合性强,模块的独立性越弱。因此,选择的原则是高内聚,低耦合。 内聚和耦合是一个问题的两种不同度量。耦合弱,模块间的关联度小,对于每个模块而言,其内聚性

20、能就好,反之亦然。 由于软件的复杂性,使得模块间不可能没有关联,全部单一功能的模块也是不可能的。 例如:“初始化”是时间内聚,属低内聚,为方便经常做。“访问公共区”是公共耦合,属强耦合,但使用公共语句也会给程序带来方便,所以有时也用。,第五章 数据驱动的软件设计方法,数据驱动的软件设计方法的核心思想 其核心思想是以输入/输出数据结构以及内部存储信息的结构作为设计的出发点,按照特定的变换规则,逐步将数据结构的描述变换为对软件结构的描述。 Jackson方法 虽然程序中实际使用的数据结构繁多,但是它们的基本数据元素之间的逻辑关系却只有顺序、选择和重复三类。Jackson方法中把这三类基本逻辑关系表

21、示成三种基本的层次结构,并用Jackson图给出表示。,第六章 面向对象的软件开发技术(重点),面向对象的基本概念,包括,面向对象,对象,类,封装,继承,消息,多态。重点掌握对象、类和继承的概念 面向对象方法的特点。比结构化方法好在哪里 UML统一建模语言 能够使用用例图对系统进行需求建模 能够使用类图构造系统的分析类类图,第六章 例1,简答题:什么是对象,什么是面向对象? 答: 对象是各种客观实体的抽象,是由一组属性和对这组属性进行操作的一组服务结合在一起所构成的独立实体。 面向对象就是运用对象、类、继承、封装、消息、结构与连接等面向对象的概念对问题进行分析、求解的系统开发技术 面向对象对象

22、类继承消息结构与连接,第六章 例2,什么是UML? 答:UML是Unified Modeling Language统一建模语言的缩写,统一建模语言是软件系统建模的表示工具。 本题考核UML基本概念。UML和C语言、Java语言等不同,它不是程序设计语言,而是用面向对象方法对系统进行分析设计的表示工具,类似与数据流图和软件结构图。,第六章 相关例题,相关例题 简答题:简述继承的概念? 简答题:什么叫做封装? 什么是泛化关系?什么是聚集关系?,2. 类,类是一组具有相同数据结构和相同操作的对象的集合。 类的定义包括一组数据属性和在数据上的一组合法操作。 实例:类中的每个对象都称为该类的一个实例。

23、对象的数量和种类很多,但它们之间却存在着某种共性的东西。我们把共性的东西抽象出来定义成类。在一个类中,每个对象都是类的实例,它们都可使用类中提供的函数。 类与对象的关系,就如同程序设计语言中类型与该类型的变量的关系一样。,3. 封装,封装是一种数据组织的方式。在面向对象的概念中,封装是一条重要的原则,其含义是为了实现信息隐藏而把对象的全部属性和服务的实现过程结合成一个独立的实体(对象),即:尽量隐藏对象的内部细节。 封装的特点: 有一个清楚的边界,封装的基本单位是对象。 有一个接口。这个接口描述该对象与其他对象的相互作用。 受保护的内部的实现。对象的外部不能直接存取对象的属性。,4. 继承Ge

24、neralization,继承是使用已存在的定义做为基础建立新定义的技术。 新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存类的定义,而不要求修改既存类。即:在已定义类(称为父类)的基础上,创建一个新类,新类除了定义自己新的属性和服务以外,它还从父类继承了其全部属性和服务。 既存类可当做基类(父类)来引用,则新类相应地可当做派生类(子类)来引用。 只有一个父类 单继承 有多个父类 多继承,对象类之间的泛化关系,泛化关系是对象之间,因继承而组成的分类层次结构,又称为对象的分类结构。泛化关系体现一般与特殊的关系。 基类(一般类)描述了对象的一般属性,而派生类则描述了对象的特

25、殊属性。派生类对象继承了在基类中定义的全部属性和服务。 下图是表示分类关系的图形符号。图中上部是一个基类,下面是若干个具体的派生类。,泛化关系的图示,对象之间的聚集关系,一个对象是另一个对象的组成部分,并且对象间不存在有传递性继承关系,对象间的这种关系称为聚集关系。如飞机是由机头、机身和机翼组成。 聚集关系体现的时整体与部分的关系。 下图是表示组成关系的图形符号。图中上方是一个整体对象,下方是构成该整体对象的若干个部分对象,它们之间用箭头指向标记连接,箭头方向表示组成关系的方向。,聚集关系图示,第六章 例3,综合题:给出一个简单的需求,要求大家使用UML建立需求模型和分析模型 注意:此题用于区

26、分同学的能力,因此不提供具体的例题,请参考第六章可见PPT,第72页的酒店预定系统的例子。考试只要求第一步需求获取和第二步需求分析。,面向对象分析设计实例旅店预订系统,业务背景陈述 1. 研究对象 某旅店 2. 业务现状 1)该旅店可对外开放50个双人间和20个单人间,房间费用视情况按季节调整,但周一到周五提供半价(周末全价)折扣 2)旅客可以直接入住房间(如果有空房),也可提前预订;入住和预订都需要登记个人信息 3)旅客提前预订房间时,需提交一定的订金;入住时间24小时之外的旅客可以取消预订,并退回所有订金,24小时以内不退还订金 4)退房时缴纳全部的住宿费用 5)服务员每月为经理提供房间的

27、预订情况和入住情况的详细信息 开发一套旅店预订系统,1-需求获取用例建模,用例描述预定房间,用例描述取消预定,下一步?,需求,用例,面向对象 分析设计,结构化 分析设计,其它方法,自己的 土方法,系统,分析,分析 为了满足需求模型中所描述的功能,系统内部应该有什么样的业务核心机制(做什么?) 分析的目标开发一系列模型,以描述机软件核心成分,从而满足客户定义的需求:分析模型 包括两个层次:构架分析和用例分析 包括两类图:静态结构(包图、类图)和动态交互图(顺序图、协作图) 模型元素按照构架来组织,各类视图按照用例实现来组织,分析阶段主要工件,从需求到分析,Analysis workflow,An

28、alysis Class,分析与需求的关系,分析是建立在需求收集的基础上 分析模型建立在用例模型的基础上 用例模型确定了分析模型的结构(通过用例实现来组织分析模型) 用户视角理解用户问题过渡到开发团队视角分析用户问题 与需求一样,它还是在问题域中 从用户视角跨入开发团队视角 分析与需求获取在很大程度上重叠,这两个活动常常相辅相成,为了澄清和找出任何遗漏或歪曲的需求,常常需要在需求之上作一些分析,2-需求分析确定第一次迭代用例图,选取“预定房间”和“取消房间”两个用例作为第一次迭代用例,2-需求分析构架分析,定义备选构架,构架分析的过程就是定义系统高层组织结构和核心构架机制的过程 1.定义系统高

29、层组织结构备选构架 2.确定系统通用构架机制分析机制,经典的三层构架,数据库,记录销售信息,支付授权,表示层,应用逻辑层,存储层,模型视图控制器构架MVC,模型,即相关的数据,它是对象的内在属性 视图是模型的外在表现形式,一个模型可以对应一个或者多个视图,视图还具有与外界交互的功能 控制器是模型与视图的联系纽带,控制器提取通过视图传输进来的外部信息转化成相应事件,然后由对应的控制器对模型进行更新; 相应的,模型的更新与修改将通过控制器通知视图,保持视图与模型的一致性,MVC备选构架示意图B-C-E,2-需求分析用例分析,用例分析流程 1.完善用例规约 2.对每一个用例实现 2.1从用例行为中查

30、找类 2.2将用例行为分配给类 2.3构造该用例的参与类类图 3.对每一个得到的分析类 3.1说明职责 3.2说明属性和关联 3.3限定分析机制 4.统一分析类,预定房间用例分析结果职责分配,利用顺序图进行职责分配,预定房间用例分析结果参与类类图,从分析到设计,Design workflow,Analysis Class,软件设计的定义,IEEE 1990:设计是体系结构、构件、接口、以及系统其它特征定义的过程,软件设计(的结果)必须 描述系统的体系结构(architecture) 系统如何分解(decompose)和组织(organize)构件 描述构件间的接口(interface) 描述构

31、件(component):必须详细到可进一步构造的程度,3-设计系统构架设计,3-设计系统构件设计(设计类图),3-设计系统构件设计(预定房间用例的顺序图),3-设计构件图与部署图,类图、对象图、包图元语,类,包,对象,接口,链接(对象间),依赖关系,关联关系,聚合关系,组合关系,泛化关系,实现关系,返回静态结构图,第七章 详细设计,程序的三种基本控制结构 顺序、选择和循环三种基本控制结构 详细设计工具(程序流程图与盒图,PAD图之间的转化),第七章 例,综合题:求一组数的最大数的算法。请为上述算法画程序流程图,并分别转换成NS图和PAD图,最后计算环域复杂度。,求一组数的最大数,盒图,结构流

32、程图(盒图)的图形符号,结构流程图(盒图)的扩展符号,从图中可见,图形符号中没有箭头,也就不允许控制流随意的转移。使用结构化流程图作为详细设计的表达工具,不仅可以保证程序是结构化的,还能在程序思维方面培养程序员用结构化的思维方式、分析问题、解决问题的能力。 优点:无论如何细化总在一个框框之中,没有控制流线的问题。可以培养按结构化方法进行设计。 缺点:当算法特别复杂时,尤其是嵌套的层数较多时,内层方框越来越小,不仅增加了画图的难度,还会影响图形的清晰度。另外算法的修改不太方便,即使是局部性的变动,也需要重新画图。,求一组数的最大数,环域复杂度121013 等于程序图中弧所封闭的区域数。,PAD图

33、的基本符号,一个复杂的例子,流程图如右图所示,分别画出N-S图和PAD图,N-S图,NS图,PAD图,7.3.1 程序流程图,程序流程图又称为框图,是一种用于表达问题求解过程控制流的有效方法,也是早期使用最广泛的算法描述方法,也是最容易引起误解和受到争议的方法。 优点:直观,初学者很容易掌握。 缺点:用箭头表示控制流向,程序员可以随意发挥,不受任何约束,因此可读性差。 随着软件工程规范的形成,人们主张废弃这种方法,但由于它历史悠久,为最广泛的人所熟悉。至今在许多程序语言的教科书中仍在使用。,程序流程图的描述符号,表示流程的开始和终止,表示顺序执行的过程处理,表示分支选择,表示多分支选择,表示控

34、制流向,表示数据,第七章 相关例题,相关例题 程序的三种控制结构是_, _和_。 顺序、选择和循环三种基本控制结构,三种基本控制结构,两种扩充结构,第八章 程序编码,程序设计语言的特性 选择程序设计语言的标准,第八章 例,程序设计语言的三个特性分别是_,_,_。 答:工程特性,技术特性,心理特性。 理解每种特性的含义,尤其是心理特性。 相关例题 选择程序设计语言的最关键因素是_。,工程特性:语言是程序设计的工具,而程序设计又是软件工程中的一项工程活动。因此必须用软件工程的观点考察一个程序设计语言,并希望语言能够具备若干工程特性,以满足软件开发项目的需要。 可移植性:支持重用 开发工具的可利用性

35、:减少源代码的开发时间和提高质量 软件的可重用性:加快开发速度,提高软件生产率和软件质量。 可维护性:应便于将设计翻译成代码,语言本身的自说明性可促进软件的可维护性,程序设计语言特性,技术特性:就是语言所提供的技术支持的能力。语言的技术特性影响到编码的质量。 数据结构的表达能力 执行性能和实时处理能力 输入输出的功能与性能的支持能力 支持程序的结构化,并具备良好的可移植性及容易翻译的能力 支持可视化,自动生成、对象链接、程序复用的能力,程序设计语言特性(续),心理特性:语言影响人的思维这一特性,称为语言的心理特性。这些心理特性虽然不能用定量的方法来度量,但还是可以认识到它们在程序设计语言中的表

36、现形式。 二义性:x=x1/x2*x3,引起程序员对程序理解的混乱 简洁性:程序员需要记忆的信息的总量 局部性:一种联想机制,直接支持结构化构件 一致性:表示一种语言所使用符号的兼容程度 线性:线性是程序语言的顺序性,它表明了人们习惯于按逻辑上的线性序列去理解程序,程序设计语言特性(续),程序设计语言的选择,选择语言的准则 项目的应用领域 科学、工程计算:FORTRAN,Pascal,PL1,C 商业性数据处理:COBOL,FOXPRO,SQL,ORACLE 实时软件:汇编语言,Ada(军事部门) 系统软件:汇编语言,Ada,C+ Web程序:Java,C# 软件开发方法 软件开发运行环境 算

37、法和数据结构的复杂性 软件开发人员的知识 (6)用户关于性能的需求,第九章 软件测试(重点),测试的有关概念 Myers测试的目的(3点) 1.测试是程序的执行过程,目的在于发现错误; 2.一个好的测试用例在于能发现至今未发现的错误; 3.一个成功的测试是发现了至今未发现的错误的测试。 测试的对象 白盒测试的概念 白盒测试方法(逻辑覆盖发,基本路径测试法) 黑盒测试的概念 黑盒测试的方法(等价分类法、边界值分析法、错误猜测法) 软件测试的步骤,软件测试的5个阶段。,第九章 例1,白盒测试技术的基本原理是什么?构造白盒测试的测试用例有哪几种方法? 答:允许测试人员利用程序内部的逻辑结构及有关信息

38、,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。 构造测试用例有逻辑覆盖法和基本路径测试法。,第九章 例2,简答题:软件测试的步骤有哪些?其中哪一步是和系统其它元素联合测试,哪一步需要用户参与? 答:单元测试,集成测试,确认测试,系统测试,验收测试 系统测试,验收测试 了解各个测试阶段要完成的内容。,9.1.5 测试与软件开发各阶段的关系,第九章 例3,黑盒测试等价分类法构造测试用例 有一信用卡,其密码号为五位,首位规定A或B,其他4位规定为数字位,请列出二个有效等价密码和四个无效等价密

39、码作为一组测试用例,以便测试密码识别程序。 有效测试用例: _,_。 无效测试用例: _,_,_,_。,第九章 例3(续),有效等价类 首位为A或B,A1234 25位为数字,B8888 无效等价类 首位非字母,12345 首位字母不是A或B,C5700 25位有非数字,A23F4 密码长度不等于5位,B12345 此类例题还包括第九章171页的例子。,第九章 相关例题,相关例题 黑盒测试技术的基本原理是什么?构造黑盒测试的测试用例有哪几种方法? 白盒测试技术属于静态测试还是动态测试?黑盒测试技术属于静态测试还是动态测试? 软件测试的对象是什么? 程序和各个软件配置项共同组成软件测试的对象。

40、软件配置:需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序等,统称为软件配置。 什么样的测试是一次成功的测试? 一个成功的测试是发现了至今未发现的错误的测试,9.3.2 黑盒测试技术的测试实例构造方法,黑盒测试技术是以程序的功能作为测试依据并按功能要求输入执行参数,然后程序执行输出结果。 黑盒测试技术的实例构造方法介绍三种: 1. 等价分类法 2. 边界值分析法 3. 错误猜测法,静态测试方法,静态测试方法是程序员普遍采用的一种方法,其内容是,通过人工模拟软件系统的执行方式,以代码会审、走查、办公室检查的形式分析或核查

41、系统的功能实现、编码过程的正确性。 a)代码会审: 错误检验表包括:数据引用错、说明错、计算错、接口错,这些都是经验的积累。 b)走查:将人当作机器,沿程序路径在“人脑”走一遍。,动态测试方法,动态测试方法是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程,也称为机器测试。 动态测试分为结构测试与功能测试。分别对应的是白盒测试和黑盒测试。,第十章 软件维护,软件维护的4种类型,理解4种类型的概念 可维护性的定义,第十章 例,软件维护的内容非常广泛,可以分为_, _, _和_。 答:改正性维护,适应性维护,完善性维护,预防性维护 理解每种维护工作需要完成的

42、内容。,10.2.1 改正性维护,改正性维护是在软件运行中发生异常或故障时进行的维护。 究其故障产生的原因,可能是开发过程中某个环节上的隐蔽错误造成的。由于开发过程中实施的软件测试工作不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来。这种错误或障碍常常是由于遇到了从未用过的输入数据组合的情况或发生在与其他软件的接口、与硬件的接口处出现的问题。,10.2.2 适应性维护,适应性维护是指,为使软件系统适应不断变化的运行环境而进行的修改过程。 随着计算机的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化

43、,而去修改软件的过程叫做适应性维护。,10.2.3完善性维护,完善性维护是指在软件的使用过程中,根据用户提出的新增系统功能和改善性能的要求而对软件进行修改或再开发,以扩充软件功能、增强软件性能、改进加工效率、提高软件质量的工作。 它是软件维护工作最主要的部分。无论应用软件还是系统软件都要在使用期间不断改善和加强产品的功能和性能,推出新版本。,10.2.4 预防性维护,维护人员不要单纯等待用户提出维护的请求,而应该选择那些还能使用数年、目前虽能运行,但不久就须作重大修改或加强的软件,进行预先的维护。预防性维护可以改善软件的可维护性,减少今后对它们维护时所需要的工作量。 早期开发的软件时预防性维护的重要对象。这类软件有一部分仍在使用,但开发方法陈旧、文档不齐全。 把今天的方法用于昨天开发的系统,支持明天的需求。,第十章 相关例题,相关例题 什么是可维护性,评介可维护性的三个最重要的指标是什么?

温馨提示

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

最新文档

评论

0/150

提交评论