软件工程导论第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.瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。

软件工程导论第11章

软件工程导论第11章
22
【还可以把适配接口再进一步细分为转换接口和扩充接口。转换接口, 是为了克服与表示方法、数据结构或硬件特点相关的操作给重用带来 的困难而设计的,这类接口是每个类构件在重用时都必须重新定义的 服务的集合。当使用C++语言编程时,应该在根类(或适当的基类)中, 把属于转换接口的服务定义为纯虚函数。如果某个服务有多种可能的 实现算法,则应该把它当作扩充接口。扩充接口与转换接口不同,并 不需要强迫用户在派生类中重新定义它们,相反,如果在派生类中没 有给出扩充接口的新算法,则将继承父类中的算法。当用C++语言实现 时,在基类中把这类服务定义为普通的虚函数。】
4. 弱耦合 耦合:指一个软件结构内不同模块之间互连的紧 密程度。 在面向对象方法中,对象是最基本的模块,因此, 耦合主要指不同对象之间相互关联的紧密程度。 弱耦合是优秀设计的一个重要标准。
5
对象之间的耦合分为两大类: (1) 交互耦合: 对象之间的耦合通过消息连接来实现。 使交互耦合尽可能松散,应遵守下述准则: 尽量降低消息连接的复杂程度。 应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合 与交互耦合相反,应该提高继承耦合程度。 通过继承关系结合起来的基类和派生类,构成系统中 粒度更大的模块。设计时应该使特殊类尽量多继承并 使用其一般化类的属性和服务,从而更紧密地耦合到 其一般化类。
13
2. 软件成分的重用级别 (1) 代码重用 源代码剪贴:最原始的重用形式。 复制或修改原有代码时可能出错,存在严重的配臵 管理问题,人们几乎无法跟踪原始代码块多次修改 重用的过程。 源代码包含:许多程序设计语言都提供包含库中 源代码的机制。配臵管理问题有所缓解,修改了库 中源代码之后,所有包含它的程序自然都必须重新 编译。 继承:利用继承机制重用类库中的类时,无须修 改已有的代码,就可以扩充或具体化在库中找出的 类,基本上不存在配臵管理问题。

软件工程导论复习笔记

软件工程导论复习笔记

软件工程导论复习笔记软件工程导论复习笔记简答题:1.什么是软件?答:软件是:(1)指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。

(2)数据结构,使得程序可以合理利用信息。

(3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用。

2.How do software characteristics differ from hardwarecharacteristics?软件的特性是如何不同硬件的特性?答:(1)软件是设计开发的,而不是传统意义上生产制造的(2)软件不会磨损,但会退化(3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的3.What do people mean by the expression "software crisis"?人们是怎样理解“软件危机”这个短语的?答:软件危机主要表现在两个方面:(1)无法满足日益增长的对软件的需求。

(2)难以满足对已有的软件系统的维护需求。

软件危机出现的原因:(1)由于软件生产本身存在着复杂性(2)与软件开发所使用的方法和技术有关“软件工程”的概念用工程化的思想来克服软件危机。

4.What myths about software still exist ?软件仍然存在着什么神话?答:管理者的神话;用户的神话;开发者的神话。

简答题:1.What are the three generic phases of software engineering?软件工程的三个一般的阶段是?答:定义阶段、开发阶段、维护阶段(软件生存周期的三个阶段:软件定义、软件开发、软件维护)2.What are the names of the five levels of the SEI CapabilityMaturity Model?CMM把企业控制软件过程的能力分为5级(5个级别的名字):①1级——initial or ad hoc level (初始级)②2级——repeatable level (可重复级)③3级——defined level (可定义级)④4级——managed level (可管理级)⑤5级——optimizing level (可优化级)3.Describe the phases of the prototyping model for software development.描述原型开发模型阶段对于软件开发?答:(1)开发人员和客户会面并且对于软件定义总体目标,确认需求(2)开发人员对原型进行快速的构造设计(3)用户对原型的评估从而改进需求(4)开发人员调整原型以满足客户的需求4.Why are evolutionary models considered by many to be thebest approach to software development?对于软件开发为什么演化模型被认为是最好的方法?答:由于现代软件开发的时间线越来越短,客户正变得越来越多样化,需求的变化也变得更加常见,我们需要一种方法来提供增量或进化的过程。

软件工程导论第11章

软件工程导论第11章
38
2、实现单向关联 1)用指针可以方便地实现单向关联。 2)如果关联的阶是一元的,则实现关联的指
针是一个简单指针;如果阶是多元的,则 需要用一个指针集合实现关联。
39
3、实现双向关联
实现双向关联有下列三种方法:
1. 只用属性实现一个方向的关联,当需要反向 遍历时就执行一次正向查找。
2. 两个方向的关联都用属性实现,这种方法能 实现快速访问。
2、提供一种简便可靠的软构件组合机制。 3、设计类时,应注意以下可能影响重用性的操作:
? 与表示方法有关的操作。例如,不同实例的比较、显 示、擦除等等。
? 与数据结构、数据大小等有关的操作。 ? 与外部设备有关的操作。例如,设备控制。 ? 实现算法在将来可能会改进(或改变)的核心操作 19
11.3.3 软件重用的效益
)、(
)和(
)。
2、软件重用是提高软件(
)和目标系统(
)的重要
途径,它基本上始于设计。其中软件成分重用可划分成以下 3个
级别即代码重用、设计成果重用和分析结果重用。
3、面向对象设计的 6个准则:( )、( )、( )、弱耦合 、( )和( )。
4、一般来说,对象之间的耦合分为两大类:( )和( )。
2. 一般—特殊结构的深度应适当 中等规模的系统中,类等级层次数应保持
为7±2。不是必要情况,不应该随意创建派生类;
3. 设计简单的类:设计小而简单的类,便于 开发和管理; 1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
4. 使用简单的协议:设计简单的类接口,发送 的消息中参数要少。
5. 使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构;

软件工程导论重点内容

软件工程导论重点内容

第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件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作用域/控制域规则:作用域不要超出控制域的范围;软件系统的判定,其位置离受它控制的模块越近越好;六、详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设计的原则和详细设计的规格与评审。

软件工程导论第十一章

软件工程导论第十一章

数据 问题空间 客观世界的 对象和操作 客观世界算法空间 程序员对 问题的表达 程序设计语言 的对象和操作
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) 开发和使用更好的软件工具三、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。

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

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

第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 软件工程方法学软件工程包括技术和管理两方面的内容。

软件工程导论(第6版)

软件工程导论(第6版)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.软件经常变化。

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

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

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

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

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

2.坚持进行阶段评审。

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

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

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

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

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

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

软件工程导论课件之第11章 面向对象设计(第五版)(张海藩编著)

软件工程导论课件之第11章 面向对象设计(第五版)(张海藩编著)
重用基本上从设计阶段开始。
重用有两方面的含义:
一是尽量使用已有的类(包括开发环境提供的类库, 及以往开发类似系统时创建的类),
二是如果确实需要创建新类,则在设计这些新类的 协议时,应该考虑将来的可重复使用性。
11.2 启发规则
1. 设计结果应该清晰易懂 用词一致。 使用已有的协议。 减少消息模式的数目。 避免模糊的定义。 2. 一般-特殊结构的深度应适当 应该使类等级中包含的层次数适当。一般说来,
第11章 面向对象设计
11.1 面向对象设计的准则 11.2 启发规则 11.3 软件重用 11.4 系统分解 11.5 设计问题域子系统 11.6 设计人机交互子系统 11.7 设计任务管理子系统 11.8 设计数据管理子系统 11.9 设计类中的服务 11.10 设计关联 11.11 设计优化
分析是提取和整理用户需求,并建立问题域精 确模型的过程。
分析结果重用:重用某个系统的分析模型。这 种重用特别适用于用户需求未改变,但系统体 系结构发生了根本变化的场合。
3. 典型的可重用软件成分 项目计划 成本估计 体系结构 需求模型和规格说明 设计 源代码 用户文档和技术文档 用户界面 数据 测试用例
11.3.2 类构件






任务管理部分
11.1 面向对象设计的准则
所谓优秀设计,就是权衡了各种因素,从而使 得系统在其整个生命周期中的总开销最小的设 计。
对大多数软件系统而言,60%以上的软件费用 都用于软件维护,因此,优秀软件设计的一个 主要特点就是容易维护。
设计准则有6条。
1. 模块化
对象就是模块。它是把数据结构和操作这些数 据的方法紧密地结合在一起所构成的模块。

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

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

第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)。
2、可以用几个简单的对象作为类的成员,创 建出一个更复杂的类。
软件工程导论第11章
继承重用
1、为提高继承重用的效果,关键是设计一个合理的、 具有一定深度的类构件继承层次结构。
2、这样做有下述两个好处:
– 每个子类在继承父类的属性和服务的基础上,只加入 少量新属性和新服务。
• 降低了每个类构件的接口复杂度 • 表现出一个清晰的进化过程,提高了每个子类的可理解性 • 为软件开发人软员件提工供程了导更论多第可11重章用的类构件
软件工程导论第11章
2. 软件成分的重用级别: 1)代码重用 a. 源代码剪贴; b. 源代码包含; c. 继承; 2)设计结果重用 3)分析结果重软件用工程导论第11章
3. 典型的可重用软件成分
1)项目计划;
2)成本计划;
3)体系结构;
4)需求模型和规格说明;
5)设计;
6)源代码;
7)用户文档和技术文档;8)用户界面;
软件工程导论第11章
2. 一般—特殊结构的深度应适当 中等规模的系统中,类等级层次数应保持为
7±2。不是必要情况,不应该随意创建派生类;
软件工程导论第11章
Байду номын сангаас
3. 设计简单的类:设计小而简单的类,便于开发和 管理; 1)避免包含过多的属性; 2)有明确的定义; 3)尽量简化对象之间的合作关系; 4)不要提供太多服务。
软件工程导论第11章
1. 调整需求 2. 重用已有的类 3. 组合问题域的类 4. 增添基类以定义公共函数集合 5. 调整继承层次
1)使用多重继承机制 2)使用单继承软件机工程制导论第11章
软件工程导论第11章
软件工程导论第11章
6. ATM系统实例
软件工程导论第11章
11.6 设计人机交互子系统
多态重用
1、使对象的对外接口更加一般化,从而降低了消息 连接的复杂程度。
2、提供一种简便可靠的软构件组合机制。 3、设计类时,应注意以下可能影响重用性的操作:
– 与表示方法有关的操作。例如,不同实例的比较、显 示、擦除等等。
– 与数据结构、数据大小等有关的操作。 – 与外部设备有关软的件工操程作导。论第例11如章,设备控制。
软件工程导论第11章
4. 使用简单的协议:设计简单的类接口,发送的消 息中参数要少。
5. 使用简单的服务:编写实现每一个服务时,避免 复杂的语句和结构;
6. 把设计变动减至最小。
软件工程导论第11章
11.3 软件重用
11.3.1 概述
1. 重用
重用的三个层次: 1)知识重用; 2)方法和标准的重用; 3)软件成分的重用。
• 封闭式:每层子系统仅仅使用其直接下层提供服务 • 开放式:可以调用下层任何子系统
B. 块状组织:子系统相互独立,弱耦合
软件工程导论第11章
11.5 设计问题域子系统
在设计问题域部分时,仅需要从实现的角度对问 题域模型(对象模型、动态模型、功能模型)作一 些补充、修改,主要是增添、合并或分解类与对象、 属性和服务,调整继承关系等。
软件工程导论第11章
6. 可重用
使用已经存在的类(包括开发环境提供的 类库,及以往开发相似系统时创建的类), 可以提高软件重用性,提高软件生产率。
软件工程导论第11章
11.2 启发规则
人们在面向对象方法中也积累了一些经验,总结 出几条启发规则:
1. 设计结果应该清晰易懂; 1)用词一致; 2)使用已有的协议; 3)减少消息模式的数目; 4)避免模糊的定义。
A.交互耦合:对象间的耦合通过信息连接来实 现。应使交互耦合尽量松散。
B.继承偶合:与交互耦合相反,应该提高继承 耦合的程度。因为通过继承关系结合起来的 基类和派生类,结合得越紧密越好。
软件工程导论第11章
5. 强内聚
面向对象设计中存在三种内聚: A.服务内聚:一个服务应该完成一个且完成一个 功能。 B.类内聚:一个类应该只有一个用途,它的属性 和服务应该是高内聚的。 C.一般—特殊内聚:即基类—派生类的内聚。
软件工程导论第11章
3. 信息隐蔽
在面向对象方法中,信息隐蔽通过对象的封 装性实现:类结构分离了类的接口与类的实现, 从而支持了信息隐蔽。
软件工程导论第11章
4. 弱耦合
弱的耦合可以提高软件模块的独立性,避免某一 部分模块发生变化对其它模块有较大的影响。
软件工程导论第11章
一般来说,对象间的耦合有两大类:
第11章 面向对象设计
11.1 面向对象设计的准则
1. 模块化
面向对象的软件开发模式,支持了系统模块化的 原则:对象就是模块。它把数据结构和操作(方法) 紧密地结合在一起构成模块。
软件工程导论第11章
2. 抽象
类实际上是一种抽象数据类型,它对外开放的公共 接口构成了类的规格说明(协议),这种接口规定 了外界可以使用的合法操作符,利用这些操作符可 以对类的实例中包含的数据进行操作。
在面向对象分析中,已经对用户界面需求作了初 步分析,在面向对象设计过程中,要对系统人机交 互部分进行详细设计,其中包括指定窗口和报表的 形式、设计命令层次等等。
9)数据;
10)测试用例。
软件工程导论第11章
11.3.2 类构件
1. 可重用软构件应具备的特点 1)模块独立性强 2)具有高度可塑性 3)接口清晰、简明、可靠
软件工程导论第11章
2. 类构件的重用方式 1)实例重用 2)继承重用 3)多态重用
软件工程导论第11章
实例重用
1、可以使用适当的构造函数,按照需要创建 类的实例。然后向所创建的实例发送适当 的消息,启动相应的服务,完成需要完成 的工作。
11.3.3 软件重用的效益
1. 质量:每一次重用,都会发现错误并清除, 构件质量也随之改善。
2. 生产率:每一次重用,都会减少重用部分 的工作,软件生产率也随之提高。
3. 成本:重用所带来的净成本C=Cs-Cr-Cd(Cs
是项目从头开发时所需要的成本;Cr是与重用相 关联的成本;C软件d是工程交导付论第给11章客户的软件的实际成
11.4 系统分解
人机交 问题域 任务管 数据管 互部分 部分 理部分 理部分
主题层 类与对象层 结构层 属性层 服务层
图11.2 典型的面向对象设计模型
软件工程导论第11章
1、子系统之间的两种交互方式
A. 客户—供应商关系 B. 平等伙伴关系
2、组织系统的两种方案
A. 层次组织:下层为上层提供服务
相关文档
最新文档