软件工程导论第11章

合集下载

张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】

张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】

第11章面向对象设计一、选择题1.()是不需要接收消息就能主动执行的服务。

A.内部服务B.外部服务C.内嵌服务D.上层服务【答案】B【解析】主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,而外部服务属于主动服务,所以答案选B项。

2.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是()关系。

A.组装B.整体与部分C.has aD.一般与具体【答案】D【解析】火车是一种陆上交通工具,而陆上交通工具不一定是火车,还可以是汽车、自行车等,说明火车是陆上交通工具的具体化,而陆上交通工具是火车的一般化,所以它们之间的关系是一般与具体的关系。

3.()只供对象内部的其他服务使用,不对外提供。

A.外部服务B.内部服务C.内嵌服务D.上层服务【答案】B【解析】对象的服务分为外部服务和内部服务两种,其中,内部服务只供内部的其它服务使用,不对外提供,外部服务只供对象外部的其它服务使用,不对内提供。

4.对象标识是分配给每个对象的永久性标识(又称作“柄”),它不符合下述条件()。

A.在一定的范围或领域(例如一个应用系统)中是唯一的B.与对象实例的特征、状态及分类(可能是动态的)无关C.在对象存在期间保持一致D.在对象存在之后保持一致【答案】D【解析】对象标识符合如下几个条件:①在一定的范围或领域中是唯一的;②与对象实例的特征、状态及分类无关;③在对象期间保持一致。

5.对象或者类的整体行为(例如响应消息)的某些规则所不能适应的(对象或类的)()。

A.状况B.情态C.条件D.问题【答案】D【解析】对象或者类的整体行为(例如响应消息)的某些规则所能适应的(对象或类的)状况、情况、条件、形式或生存周期阶段。

二、填空题1.对象的服务可分为_____、_____。

【答案】外部服务;内部服务2._____不同取值所构成的组合都可看作对象的一种新的状态。

【答案】对象的每个属性3.如果在一个服务中包括了多项可独立定义的功能,则它是_____,应尝试把它分解为多个服务。

软件工程导论复习重点总结很全第六版

软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。

软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。

软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。

1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。

应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。

应当开发和使用更好旳软件工具。

总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。

1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。

采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。

(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。

《软件工程导论》考试重点

《软件工程导论》考试重点

第一章1.软件危机的概念:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。

2.产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。

造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。

(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。

(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

3.软件配置的主要包括程序、文文件和数据等成分。

配置管理工具:commit,分支,合并。

4.软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

(ppt上定义)、、、、、//6.通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型//7.软件工程方法学包含三个要素:方法、工具和过程。

//8.目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学//9.传统方法学也称为生命周期方法学或结构化范型//10.面向对象方法学的四个要点://1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件//2.把所有对象都划分成类//3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。

//4.对象彼此间仅能通过发送消息互相联系。

11.软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要)12.最基本的测试是集成测试和验收测试。

13.瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。

(完整word版)软件工程导论(第6版)(word文档良心出品)

(完整word版)软件工程导论(第6版)(word文档良心出品)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。

2.如何维护数量不断膨胀的已有软件。

具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。

2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。

4.软件常常是不可维护的。

5.软件通常没有适当的文档材料。

6.软件成本在计算机系统总成本中所占的比例逐年上升。

7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。

软件配置:程序、文档和数据。

软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。

软件:是程序、数据及相关文档的集合。

程序:是能够完成预定功能和性能的可执行的指令序列。

数据:是使程序能够适当地处理信息的数据结构。

文档:是开发、使用和维护程序所需要的图文资料。

软件工程:指导计算机软件开发和维护的一门工程学科。

软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。

2.软件工程的中心课题是控制复杂性。

3.软件经常变化。

4.开发软件的效率非常重要。

5.和谐地合作是开发软件的关键。

6.软件必须有效地支持它的用户。

7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。

2.坚持进行阶段评审。

3.实行严格的产品控制4.采用现代程序设计技术。

5.结构应能清楚的审查。

6.开发小组的人员应该少而精。

7.承认不断改进软件工程实践的必要性。

软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。

通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。

软件工程导论重点内容

软件工程导论重点内容

第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵;二.软件危机以及产生软件危机的原因1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势;软件产品“供不应求”;2.软件成本在计算机系统总成本中所占的比例逐年上升;3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生;4.软件产品的质量不容易保证;5.软件产品常常是不可维护的;6.软件产品的重用性差,同样的软件多次重复开发;7.软件通常没有适当的文档资料;产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术;三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题;2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;3、软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程;软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学,三要素:方法、工具和过程4、软件生命周期概念、三时期,八阶段软件生命周期由软件定义、软件开发和运行维护也称为软件维护3个时期组成;软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析;软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试五、软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护实施的全部工作和任务的结构框架;1瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开;特点阶段的顺序性和依赖性规范化推迟实现的观点系统化质量保证阶段评审存在问题不适合需求模糊的系统需求的迷糊性和不确定性适用于操作系统、编译系统、数据库管理系统等系统软件的开发快速原型模型:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌3增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物;这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量;4喷泉模型5微软过程六、思考:你认为“软件就是程序”这一个观点正确吗如果不正确,请批驳之;1.请从以下几个方面结合自己的经验实例加以论述;软件就是程序的观点是不正确的,因为软件等于程序加文档加数据;1文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用;2在软件开发的每一个阶段都应有相应的文档;它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介3文档是软件在不同阶段的表现形式;4程序与文档必须一致,文档才有价值;5文档质量直接决定软件质量的高低;6文档也是软件测试和维护的依据;在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情;7文档是软件可重用的依据;2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大;对否请解释你的回答;答:对,第二章可行性研究重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:1、可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决;一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决;或就是用最小代价在尽可能短的时间内确定问题是否能够解决;2、可行性研究过程:1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁;系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件程序、文件、数据库、表格、人工过程等;系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程;在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型;4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性;抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况;概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件;它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节;因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型;6、数据流程图的组成:外部实体外部实体是指系统之外的人或单位,它们和本系统有信息传递关系数据流,处理、数据存储;如何绘制数据流程图1识别系统的输入和输出,画出顶层图2画系统内部的数据流、加工与文件,画出一级细化图3加工的进一步分解,画出二级细化图4其它注意事项7、数据流程图的注意点1每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的;数据守恒2每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了;3、数据流只能在处理与处理、数据存储或者外部实体之间流动;、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的;4、一个处理可以细分成多个子处理,分成若干个层次均匀分解5、良好命名系统流程图与数据流程图有什么区别答:1系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;2系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;3数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况;三、数据流图:1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”;3、一套分层的的数据流图由顶层、底层、和中间层组成;4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精;b.保持父图与子图的平衡;也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同;c.保持数据守恒;也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据;d.加工细节隐藏;根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节;e.简化加工间关系;在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目;f.均匀分解;应该使一个数据流中的各个加工分解层次大致相同;g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字;h.忽略枝节;应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题;i.表现的是数据流而不是控制流;j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读;小结:一个软件系统,其数据流图往往有多层;如果父图有N个加工Process,则父图允许有0~N张子图,但是每张子图只能对应一张父图;在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同;DFD信息流大致可分为两类:交换流和事务流;9、数据字典1.数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用;2.数据字典的内容包括:数据流、数据流分量即数据元素、数据存贮、处理逻辑和外部实体;3.数据字典的作用是什么对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型;数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定;几种度量效益的方法:货币的时间价值、投资回收期、纯收入第三章需求分析一、重点掌握的内容那:需求分析的方法和面向数据流的分析方法二、一般掌握的内容:需求分析的任务和原则三知识点:1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析;2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型;3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么”这个问题;需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求;需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;其实现步骤如下图所示:一般说来需求分析阶段的任务包括下述几方面:1)确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、错处理需求、接口需求、约束、逆向需求、将来可能提出的需求:2)分析系统的数据需求就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型;具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图一般为数据流图及对象图进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型;通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型;3)导出系统的逻辑模型4)修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正;5开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求;4、需求分析的步骤:1调查研究2分析与综合3书写文档4需求分析评审5、需求分析的原则:1、必须能够表达和理解问题的数据域和功能域2、按自顶向下、逐层分解问题3、要给出系统的逻辑视图和物理视图6、软件需求的验证:需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求;为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性;一般说来,应该从下述4个方面进行验证:1一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾;2完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;3现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的;对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性;4有效性必须证明需求是正确有效的,确实能解决用户面对的问题;7、状态转换图:指明了作为外部事件结果的系统行为;为此,状态转换图描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;状态转换图是行为建模的基础;思考:利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的工具有A;供选择的答案:A.数据流图B.数据词典C.结构化英语D.判定表与判定树在结构化分析方法中用状态―迁移图表达系统或对象的行为;在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有A个;供选择的答案:多个D.不确定五、总体设计概要设计重点掌握的内容:概要设计的过程和方法一般掌握的内容:概要设计的文档和评审考核知识点:一、总体设计:1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计;1、面向结构设计SD2、面向对象设计OOD2、总体设计的任务:1系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计2去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块;确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具;选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;4、典型的总体设计过程包括下述9个步骤:1、设想功选择的方案2、选取合理的方案3、推荐最佳方案4、功能分解5、设计软件6、设计数据库7制定测试计划8、书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;9、审查和复审二、设计原理分析模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系:模块具有输入和输出参数传递、功能、内部数据结构局部变量和程序代码四个特性1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了. 模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,,使得系统的开发成本最小.3、模块设计的准则:1改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合;2模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中;3软件结构图的深度、宽度、扇入和扇出要适当;一般模块的调用个数不要超过5个;4尽量降低模块接口的复杂程度;5设计单入口、单出口的模块;6模块的作用域应在控制域之内;4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.5、信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近6、什么是模块独立性答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准;7、模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的其它的模块接口是简单的;模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果;8、为什么模块的独立性很重要答:1有效的模块化的软件比较容易开发出来2独立的模块比较容易测试和维护;总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节;9、衡量模块独立的两个标准是什么它们各表示什么含义10、答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性;1耦合性;也称块间联系;指软件系统结构中各模块间相互联系紧密程度的一种度量;模块之间联系越紧密,其耦合性就越强,模块的独立性则越差;模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息;2内聚性;又称块内联系;指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量;若一个模块内各元素语句之间、程序段之间联系得越紧密,则它的内聚性就越高;耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则;10、启发规则:1)改进软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出、、和扇入都应适当深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度;宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出;一个模块的扇入是指直接调用该模块的上级模块的个数;一个模块的扇出是指该模块直接调用的下级模块的个数;设计原则:低扇出、高扇入;4)模块的作用域应该在控制域内5)力争降低模块接口的复杂程度6)设计单入口和单出口的模块7)模块功能应该可以预测三、概要设计的方法:1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法;面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构;2、数据流图的类型:交换型结构和事务型结构交换型结构:由3部分组成,传入路径,变换中心,输出路径系统的传入流经过变换中心的处理,变换为系统的传出流;事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成;当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作;四、结构化设计1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口;2、结构化方法的步骤:1复审DFD图,必要时刻再次进行修改或细化:2鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;3按照SD方法规定的一组规则,吧DFD图转换为初始的SC图;变换型DFD图初始SC图事务型DFD图初始SC图3、结构设计的优化规则:1对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小;2保持高扇/入低扇出原则3作用域/控制域规则:作用域不要超出控制域的范围;软件系统的判定,其位置离受它控制的模块越近越好;六、详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设计的原则和详细设计的规格与评审。

软件工程导论(第11章)

软件工程导论(第11章)

3. 信息隐蔽
在面向对象方法中,信息隐蔽通过对象的封
装性实现:类结构分离了类的接口与类的实
现,从而支持了信息隐蔽。
4. 弱耦合
弱的耦合可以提高软件模块的独立性,避免 某一部分模块发生变化对其它模块有较大的影 响。
一般来说,对象间的耦合有两大类:
A.交互耦合:对象间的耦合通过信息连接来
实现。应使交互耦合尽量松散。
2. 一般—特殊结构的深度应适当
中等规模的系统中,类等级层次数应保持 为7±2。不是必要情况,不应该随意创建派生类;
3. 设计简单的类:设计小而简单的类,便于
开发和管理;
1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
4. 使用简单的协议:设计简单的类接口,发送 的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构; 6. 把设计变动减至最小。
2.
两个方向的关联都用属性实现,这种方法能 实现快速访问。
3.
用独立的关联对象实现双向关联。关联对象 不属于相互关联的任何一个类,它是独立的 关联类的实例 。
40
41
4、关联对象的实现
关联对象的实现方法取决于关联的阶数:

一对一关联:
• 关联对象可以与参与关联的任一个对象合并。

一对多关联:
• 关联对象可以与“多”端对象合并。
11.9 设计类中的服务 11.9.1 确定类中应有的服务 11.9.2 设计实现服务的方法
1. 设计实现服务的算法
1)算法复杂度;
2)容易理解、容易实现;
3)容易修改;
2. 选择数据结构 3. 定义内部类和内部操作

软件工程导论

软件工程导论

第一章1.什么是软件危机?产生软件危机的原因?消除软件危机的途径?1)软件危机是指在计算机的开发和维护中所遇到的一系列严重问题。

2)原因,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。

3)途径:1)将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。

2)、研究和推广成功的软件开发技术和方法。

3)、开发和使用好的软件工具。

1.软件工程是:①把系统的规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。

2.软件工程的基本原理1)用分阶段的生命周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用现代程序设计技术5)结果应能清楚的审查6)开发小组的人员应该少而精7)承认不断改进软件工程实践的必要性3.软件工程方法学包含三个要素,方法、工具和过程。

4.软件生命周期的八个阶段1)问题定义2)可行性研究3)需求分析4)总体设计5)详细设计6)编码和单元测试7)综合测试8)软件维护5.什么是软件过程?几种模型的优缺点及适用项目?软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤。

软件开发模型有瀑布型、渐增型和变换型。

瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。

它的特点:(1)各个阶段的顺序性和依赖性;(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。

渐增型开发方法及特点:(1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。

如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。

(2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。

(3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。

软件工程导论课件(第六版)(张海潘编著)(1-13章)

软件工程导论课件(第六版)(张海潘编著)(1-13章)

第1章 软件工程学概述
1.2.3
软件工程方法学
1.2 软件工程
四个要点
把对象(object)作为融合了数据及在数据 上的操作行为的统一的软件构件。
把所有对象都划分成类(class)。 按照父类与子类的关系,把若干个相关类 组成一个层次结构的系统。
24
对象彼此间仅能通过发送消息互相联系。
第1章 软件工程学概述
软件工程导论(第6版)
第1 章 软件工程学概述
第1章 软件工程学概述
迄今为止,计算机系统已经经历了4个不同的发展阶 段,但是,人们仍然没有彻底摆脱“软件危机”的困扰, 软件已经成为限制计算机系统发展的瓶颈。 为了更有效地开发与维护软件,软件工作者在20世纪 60年代后期开始认真研究消除软件危机的途径,从而逐 渐形成了一门新兴的工程学科——计算机软件工程学。
1.4 软件过程
第1章 软件工程学概述
1.3 软件生命周期
1.3 软件生命周期
软件生命周期由软件定义、软件开发和运行维护(也称为 软件维护)3个时期组成,每个时期又进一步划分成若干个阶 段。 软件定义时期的任务是: 确定软件开发工程必须完成的 总目标;确定工程的可行性;导出实现工程目标应该采用的 策略及系统必须完成的功能;估计完成该项工程需要的资源 和成本,并且制定工程进度表。这个时期的工作通常又称为 系统分析,由系统分析员负责完成。
28
第1章 软件工程学概述
1.3 软件生命周期
1.3 软件生命周期
29
软件定义时期通常进一步划分成3个阶段,即问题定义、 可行性研究和需求分析。开发时期具体设计和实现在前一个 时期定义的软件,它通常由下述4个阶段组成:总体设计, 详细设计,编码和单元测试,综合测试。其中前两个阶段又 称为系统设计,后两个阶段又称为系统实现。维护时期的主 要任务是使软件持久地满足用户的需要。

软件工程导论第十一章

软件工程导论第十一章

数据 问题空间 客观世界的 对象和操作 客观世界算法空间 程序员对 问题的表达 程序设计语言 的对象和操作
2010-11-11
结果 客观世界 的对象
计算机算法 解空间
输出数据
2
liang@
OOD概述
尽管分析和设计的定义有明显区别, 尽管分析和设计的定义有明显区别,但是在实际的 软件开发过程中二者的界限是模糊 界限是模糊的 软件开发过程中二者的界限是模糊的。
重用某个软件系统的设计模型 软件移植
(3)分析结果重用
重用某个系统的分析模型 软件体系结构再工程
2010-11-11 liang@ 21
11.3 软件重用
3.典型的可重用软件成分 3.典型的可重用软件成分
(1)项目计划 • 减少计划制定时间 (2)成本估计 • 类似功能的成本估计可重用 (3)体系结构 • 领域体系结构的重用 (4)需求模型和规格说明 • 类和对象模型的重用 (5)设计 • 系统和对象设计都可被重用 (6)源代码 • 经过验证和测试的程序构件 (7)用户文档和设计文档 (8)用户界面 • 最广泛被重用的部分 (9)数据 • 表、记录结构、文件及DB等 记录结构、文件及DB等 DB (10)测试用例 10) • 设计和代码构件所附带的测试用 例
软件工程导论
梁文新 办公室:综合楼108 电 话: 87571625 liang@
OOD概述
分析: 目标系统精确模型(正确、完整、无二义性) 分析:用户需求 目标系统精确模型(正确、完整、无二义性) 设计: 系统设计模型(抽象的系统实现方案/软件构造的蓝图 软件构造的蓝图) 设计:分析模型 系统设计模型(抽象的系统实现方案 软件构造的蓝图) 面向对象设计OOD就是用面向对象观点建立解空间模型的过程 面向对象设计 就是用面向对象观点建立解空间模型的过程

软件工程导论课后习题答案.

软件工程导论课后习题答案.

第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。

它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。

常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。

而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。

这些都降低了开发商的信誉,引起用户不满。

(2) 用户对已完成的软件不满意的现象时有发生。

(3) 软件产品的质量往往是靠不住的。

(4) 软件常常是不可维护的。

(5) 软件通常没有适当的文档资料。

文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。

(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。

软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。

(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。

(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

二、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。

软件工程的本质特征:(1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化(4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具(5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户(7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径:(1) 对计算机软件有一个正确的认识(软件≠程序)(2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目(3) 推广使用在实践中总结出来的开发软件的成功技术和方法(4) 开发和使用更好的软件工具三、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。

软件工程导论_11

软件工程导论_11

主程序员组

现代程序员组

质量保证

软件质量就是“软件与明确地和隐含地定义的需求 相一致的程度”。
影响软件质量的主要因素,是从管理角度对软件质
量的度量。分别反映用户在使用软件产品时的三种 不同倾向或观点。
软件质量因素与产品活动的关系
质量保证

软件质量保证的措施
基于非执行的测试(也称为复审)
本节课内容

第十三章 软件项目管理
13.1、估算软件规模
13.2、工作量估算
13.3、进度计划 13.4、人员组织 13.5、质量保证 13.6、软件配臵管理
13.7、能力成熟度模型
软件项目管理

软件工程包括技术和管理两方面的内容,是管理 与技术紧密结合的产物。
所谓管理就是通过计划、组织和控制等一系列活动,
作 业
计算测试前的平均无故障时间:
24000 / 40 * ( 80 – 0 ) = 7.5 (小时) 假设MTTF与测试时间ι之间存在线性关系,即: MTTF = a+bι a + b * 1 = 10 有: 则:a = 7.5 b = 2.5
MTTF =
a + b * 0 = 7.5
软件成熟度模型有助于软件开发机构建立一个有规
律的、成熟的软件过程。
改进后的软件过程将在预计的项目开发时间和费用
内生产出质量更好的软件。
能力成熟度模型

五个等级从低到高是:初始级、可重复级、已定 义级、已管理级和优化级。
1.

初始级
软件过程的特征是无序的,有时甚至是混乱的。几 乎没有什么过程是经过定义的,项目能否成功完全 取决于个人能力。 处于这个最低成熟度等级的组织,基本上没有健全 的软件工程管理制度,管理是反应式(消防式)。

软件工程导论复习重点总结--很全(第六版)

软件工程导论复习重点总结--很全(第六版)

第1章第2章第11章软件工程学概述1.1 软件危机1.1.1 软件危机的介绍软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

1.1.2 产生软件危机的原因(1)与软件本身的特点有关(2)与软件开发与维护的方法不正确有关1.1.3 消除软件危机的途径对计算机软件有正确的认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

1.21.2.1 软件工程的介绍软件工程:是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

(期中考)软件工程的本质特性:软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品1.2.2 软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性1.2.3 软件工程方法学软件工程包括技术和管理两方面的内容。

软件工程导论第五版第十一章

软件工程导论第五版第十一章

第11章面向对象设计11.1面向对象设计的准则1. 模块化2. 抽象3. 信息隐藏4. 弱耦合5. 强内聚6. 可重用11.2启发规则1. 设计结果应该清晰易懂2. 一般\|特殊结构的深度应适当3. 设计简单的类4. 使用简单的协议5. 使用简单的服务6. 把设计变动减至最小图11.1理想的设计变动情况11.3软件重用11.3.1概述1. 重用2. 软件成分的重用级别3. 典型的可重用软件成分11.3.2类构件1.可重用软构件应具备的特点2. 类构件的重用方式11.3.3软件重用的效益1. 质量2. 生产率3. 成本11.4系统分解图11.2典型的面向对象设计模型1. 子系统之间的两种交互方式2. 组织系统的两种方案图11.3典型应用系统的组织结构3. 设计系统的拓扑结构11.5设计问题域子系统1. 调整需求2. 重用已有的类3. 把问题域类组合在一起4. 增添一般化类以建立协议图11.4窄菱形模式5. 调整继承层次图11.5阔菱形模式图11.6把多重继承简化为单一层次的单继承6. ATM系统实例图11.7ATM系统问题域子系统的结构11.6设计人机交互子系统1. 分类用户2. 描述用户3. 设计命令层次4. 设计人机交互类11.7设计任务管理子系统1. 分析并发性2. 设计任务管理子系统11.8设计数据管理子系统11.8.1选择数据存储管理模式1. 文件管理系统2. 关系数据库管理系统3. 面向对象数据库管理系统11.8.2设计数据管理子系统1. 设计数据格式2. 设计相应的服务11.8.3例子11.9设计类中的服务11.9.1确定类中应有的服务11.9.2设计实现服务的方法1. 设计实现服务的算法2. 选择数据结构3. 定义内部类和内部操作11.10设计关联1. 关联的遍历2. 实现单向关联图11.8用指针实现单向关联图11.9用指针实现双向关联3. 实现双向关联图11.10用对象实现关联4. 关联对象的实现11.11设计优化11.11.1确定优先级11.11.2提高效率的几项技术1. 增加冗余关联以提高访问效率图11.11公司、雇员及技能之间的关联链图11.12为雇员技能数据库建立索引2. 调整查询次序3. 保留派生属性11.11.3调整继承关系1. 抽象与具体2. 为提高继承程度而修改类定义图11.13设计类继承的例子3. 利用委托实现行为共享图11.14用表实现栈的两种方法11.12小结习题111. 面向对象设计应该遵循哪些准则?简述每条准则的内容,并说明遵循这条准则的必要性。

张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】

张海藩《软件工程导论》(第6版)(课后习题 第11章 面向对象设计)【圣才出品】
3.为什么说类构件是目前比较理想的可重用软构件?它有哪些重用方式? 答:(1)可重用的软构件应具备的特点: ①模块独立性强。 ②具有高度可塑性。 ③接口清晰、简明、可靠。 (2)类构件的重用方式: ①实例重用。 ②继承重用。 ③多态重用。
4.试用面向对象方法,设计本书第 2 章中给出的订货系统的例子。 答:略。
break; }
int main(){ FILE *fi; int i,inQuote; fi=fopen(“xxx.c”, “r”) if(fi==NULL) return 1; i=inQuote=0;
2/8
圣才电子书 十万种考研考证电子书、题库视频学习平台

b.有明确的定义。为使类的定义明确,分配给每个类的任务应该简单。 c.简化对象之间的合作关系。 d.不要提供太多的服务。 ④使用简单的协议 ⑤使用简单的服务 ⑥把设计变动减至最小 (2)启发规则的必要性 人们使用面向对象方法学开发软件的历史虽然不长,但也积累了一些经验。总结这些经 验得出了几条启发规则,它们往往能帮助软件开发人员提高面向对象设计的质量。

char input[Len_Max+2]; int n=sizeof(input); void CheckKeyWord(){ int i,result; for(i=0;i<n;i++) {
result=strcmp(input,Key[i]); if(result==0){ count[i]++; break; } if(result<0)
3/8
圣才电子书 十万种考研考证电子书、题库视频学习平台

5.试用面向对象方法,设计本书习题 2 第 2 题中描述的储蓄系统。 答:使用面向对象方法设计出的储蓄系统的对象模型如图 11-7 所示:

软件工程导论class11实现7_6

软件工程导论class11实现7_6

BRO example
C1 : B1 & B2 B1 B2 是布尔变量,C1的约束形式是(D1 D2
) 约束集是:{(t,t),(f,t),(t,f)} C2 : B1 & (E3 = E4) 通过修改C1的约束集得到C2的约束集,t相
当于=,f相当于< > 约束集是:{(t,=),(f,=),(t,<),(t,>)} ,
(7) 如果程序的处理对象是表格,则应该使用 空表,以及含一项或多项的表.
确立测试用例
在确立了等价类之后,建立等价类表, 列出所有划分出的等价类。
再从划分出的等价类中按以下步骤 选择测试用例:
(1) 为每一个等价类规定一个唯一编号;
(2) 设计一个新的测试用例,使其尽可能 多地覆盖尚未被覆盖的有效等价类,重 复这一步,直到所有的有效等价类都被 覆盖为止; (3)设计一个新的测试用例,使其仅覆 盖一个尚未被覆盖的无效等价类,重复 这一步,直到所有的无效等价类都被覆
程序图中有环,则要求每个环至少经过一次)
7.6.2 控制结构测试
根据程序的控制结构设计测试数据的技术 1 基本路径测试 是Tom McCabe提出的一种白盒测试技术。
它是在程序控制流图的基础上,分析控制 构造的环路复杂性,导出基本可执行路径 集合,设计测试用例的方法。设计出的测 试用例要保证在测试中,程序的每一个可 执行语句至少要执行一次。
(3) 串接循环
如果各个循环互相独立,则可以用与简单 循环相同的方法进行测试。但如果几个循 环不是互相独立的,则需要使用测试嵌套 循环的办法来处理。
7.7 黑盒测试技术
着重测试软件功能 发现错误种类 (1)功能不正确或遗漏了功能; (2)界面错误; (3)数据结构错误或外部数据库访问错误; (4)性能错误; (5)初始化和终止错误。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22
【还可以把适配接口再进一步细分为转换接口和扩充接口。转换接口, 是为了克服与表示方法、数据结构或硬件特点相关的操作给重用带来 的困难而设计的,这类接口是每个类构件在重用时都必须重新定义的 服务的集合。当使用C++语言编程时,应该在根类(或适当的基类)中, 把属于转换接口的服务定义为纯虚函数。如果某个服务有多种可能的 实现算法,则应该把它当作扩充接口。扩充接口与转换接口不同,并 不需要强迫用户在派生类中重新定义它们,相反,如果在派生类中没 有给出扩充接口的新算法,则将继承父类中的算法。当用C++语言实现 时,在基类中把这类服务定义为普通的虚函数。】
4. 弱耦合 耦合:指一个软件结构内不同模块之间互连的紧 密程度。 在面向对象方法中,对象是最基本的模块,因此, 耦合主要指不同对象之间相互关联的紧密程度。 弱耦合是优秀设计的一个重要标准。
5
对象之间的耦合分为两大类: (1) 交互耦合: 对象之间的耦合通过消息连接来实现。 使交互耦合尽可能松散,应遵守下述准则: 尽量降低消息连接的复杂程度。 应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 与交互耦合相反,应该提高继承耦合程度。 通过继承关系结合起来的基类和派生类,构成系统中 粒度更大的模块。设计时应该使特殊类尽量多继承并 使用其一般化类的属性和服务,从而更紧密地耦合到 其一般化类。
13
2. 软件成分的重用级别 (1) 代码重用 源代码剪贴:最原始的重用形式。 复制或修改原有代码时可能出错,存在严重的配臵 管理问题,人们几乎无法跟踪原始代码块多次修改 重用的过程。 源代码包含:许多程序设计语言都提供包含库中 源代码的机制。配臵管理问题有所缓解,修改了库 中源代码之后,所有包含它的程序自然都必须重新 编译。 继承:利用继承机制重用类库中的类时,无须修 改已有的代码,就可以扩充或具体化在库中找出的 类,基本上不存在配臵管理问题。
图11.1 理想的设计变动情况
12
11.3 软件重用
11.3.1 概述
1. 重用/再用/复用: 同一事物不作修改或稍加改动就多次重复使用。 广义地说,软件重用分为3个层次: (1) 知识重用(如,软件工程知识的重用)。 (2) 方法和标准的重用(如,面向对象方法或国家制 定的软件开发规范的重用)。 (3) 软件成分的重用。 (1) (2)属于知识工程研究的范畴。
25
面向对象分析模型(即问题域的对象模型)
11.4 系统分解
设计复杂的应用系统时首先把系统分解成若干个比 较小的部分,然后再分别设计每个部分。有利于降 低设计的难度,有利于分工协作,也有利于维护人 员对系统理解和维护。
26
面向对象设计模型(即求解域的对象模型) 水平:主题、类与对象、结构、属性、服务5个 层次。 垂直:问题域子系统、人机交互子系统、任务管 理子系统和数据管理子系统4大组成部分。
29
层次结构进一步划分成两种模式: 封闭式:每层子系统仅使用其直接下层提供的服 务。更容易理解和修改。 开放式:某层子系统可以使用其下面任何一层子 系统所提供的服务。 优点:减少了在每层重新定义的服务数目,整个 系统更高效更紧凑。 缺点:不符合信息隐藏原则,对任何一个子系统 的修改都会影响更高层次的那些子系统。
16
11.3.2 类构件
“类”是比较理想的可重用软构件,称之为类构件。 1. 可重用软构件应具备的特点 (1) 模块独立性强。 (2) 具有高度可塑性。 (3) 接口清晰、简明、可靠。 精心设计的“类”基本上满足上述要求。
17
2. 类构件的重用方式 (1) 实例重用:最基本的重用方式。 由于类的封装性,使用者无须了解实现细节就可 以使用适当的构造函数,按照需要创建类的实例。 然后向所创建的实例发送适当的消息,启动相应的 服务,完成需要完成的工作。 还可以用几个简单的对象作为类的成员创建出一 个更复杂的类。
10
4. 使用简单的协议 消息中的参数不要超过3个。经验表明,通过复杂 消息相互关联的对象是紧耦合的,对一个对象的修 改往往导致其他对象的修改。 5. 使用简单的服务 一般只有3~5行源程序语句,可以用仅含一个动词 和一个宾语的简单句子描述它的功能。
11
6. 把设计变动减至最小 设计早期变动较大,随着时间推移,设计方案日 趋成熟,改动越来越小。峰值越高,设计质量越差, 可重用性越差。
第11章 面向对象设计
11.1 面向对象设计的准则 11.2 启发规则 11.3 软件重用 11.4 系统分解 11.5 设计问题域子系统 11.6 设计人机交互子系统 11.7 设计任务管理子系统 11.8 设计数据管理子系统 11.9 设计类中的服务 11.10 设计关联 11.11 设计优化
1
6
5. 强内聚 内聚衡量一个模块内各个元素彼此结合的紧密程度。 力求做到高内聚。3种内聚: (1) 服务内聚。一个服务应该完成一个且仅完成 一个功能。 (2) 类内聚。一个类应该只有一个用途,它的属 性和服务应该是高内聚的,都是完成该类对象的任 务所必需的。 (3) 一般-特殊内聚。应该符合多数人的概念,是 对相应领域知识的正确抽取。
7
6. 可重用 软件重用是提高软件开发生产率和目标系统质量的 重要途径。两方面的含义: 一、尽量使用已有的类; 二、如果确实需要创建新类,应该考虑将来的可重 复使用性。
8
11.2 启发规则:经验
1.设计结果应该清晰易懂 (1) 用词一致。 (2) 使用已有的协议。 (3) 减少消息模式的数目。 如果确需自己建立消息协议,则应该尽量减 少消息模式的数目。 (4) 避免模糊的定义。 2. 一般-特殊结构的深度应适当 一个中等规模(大约包含100个类)的系统中,类等级 层次数应保持为7〒2。应该使一般-特殊结构与 领域知识或常识保持一致。
14
(2) 设计结果重用 指重用某个软件系统的设计模型(即求解域模型)。 有助于把一个应用系统移植到完全不同的软硬件平 台上。 (3) 分析结果重用 一种更高级别的重用,即重用某个系统的分析模型。 特别适用于用户需求未改变,但系统体系结构发生 根本变化的场合。
15
3. 典型的可重用软件成分(10种): (1) 项目计划。 (2) 成本估计。 (3) 体系结构。 (4) 需求模型和规格说明。 (5) 设计。 (6) 源代码。 (7) 用户文档和技术文档。 (8) 用户界面。 (9) 数据。 (10) 测试用例。
从实现角度对面向对象分析得出的问题域模型做一 些补充或修改: 1. 调整需求 一:用户需求或外部环境发生了变化; 二:分析员对问题域理解不透彻或缺乏领域专家帮 助,以致面向对象分析模型不能完整、准确地反映 用户的真实需求。
33
2. 重用已有的类 典型过程: (1) 选择有可能被重用的已有类,标出这些候选类 中对本问题无用的属性和服务,尽量重用那些能使 无用的属性和服务降到最低程度的类。 (2) 在被重用的已有类和问题域类之间添加泛化关 系(即从被重用的已有类派生出问题域类)。 (3) 标出问题域类中从已有类继承来的属性和服务, 现在已经无须在问题域类内定义它们了。 (4) 修改与问题域类相关的关联,必要时改为与被 重用的已有类相关的关联。
24
3. 成本 软件重用带来的净成本节省估算:C=Cs-Cr-Cd Cs:项目从头开发(没有重用)所需要的成本; Cr:与重用相关联的成本; Cd:交付给客户的软件的实际成本。 (见第13章技术估算Cs),Cr主要包括下述成本: 领域分析与建模的成本; 设计领域体系结构的成本; 为便于重用而增加的文档的成本; 维护和完善可重用的软件成分的成本; 为从外部获取构件所付出的版税和许可证费; 创建(或购买)及运行重用库的费用; 对设计和实现可重用构件的人员的培训费用。
18
• 继承:子类自动共享基类中定义的数据和方法的机 制。
电话 拨号 讲话 听音
电话 传真机 发传真
移动 电话 移动
公用投 币电话 投币
19
(2) 继承重用 提供了一种安全地修改已有类构件,以便在当前系 统中重用的手段。好处: 每个子类在继承父类的属性和服务的基础上,只加 入少量新属性和新服务,不仅降低了每个类构件的 接口复杂度,表现出一个清晰的进化过程,提高了 每个子类的可理解性;而且为软件开发人员提供了 更多可重用的类构件。
面向对象设计: 用面向对象观点建立求解域模型的过程。 分为: 系统设计:确定实现系统的策略和目标系统 的高层结构。 对象设计:确定解空间中的类、关联、接口 形式及实现服务的算法。
2
11.1 面向对象设计的准则
本书第5章讲述的指导软件设计的基本原理在面 向对象设计时仍然成立,但是增加了一些与面向 对象方法密切相关的新特点,具体化为下织系统的两种方案 (1)水平层次组织 把软件系统组织成一个层次系统,每层是一个子系 统。上层在下层的基础上建立,下层为实现上层功 能提供必要的服务。每一层内所包含的对象彼此间 相互独立,不同层次上的对象彼此间有关联。 上、下层之间存在客户-供应商关系。
图11.3 典型应用系统的组织结构
9
3. 设计简单的类 便于开发和管理。经验表明,如果一个类的定义不 超过一页纸(或两屏),使用这个类是比较容易的。 为使类保持简单,应该注意以下几点。 (1) 避免包含过多的属性。 (2) 有明确的定义。 (3) 尽量简化对象之间的合作关系。 (4) 不要提供太多服务。不超过7个。
在开发大型软件系统时,遵循上述启发规则也会带来另一个问题:设 计出大量较小的类,同样会带来一定复杂性。解决这个问题的办法, 是把系统中的类按逻辑分组,也就是划分“主题”。
图11.2 典型的面向对象设计模型
27
1. 子系统之间的两种交互方式 (1) 客户-供应商关系 作为“客户”的子系统调用作为“供应商”的子系 统,后者完成某些服务工作并返回结果。客户子系 统必须了解供应商子系统的接口,而后者无须了解 前者的接口,任何交互行为都由前者驱动。 (2) 平等伙伴关系 每个子系统都可能调用其他子系统,每个子系统都 必须了解其他子系统的接口。子系统之间的交互更 复杂,容易发生不易察觉的设计错误。 *尽量使用客户-供应商关系。
相关文档
最新文档