软件工程书为第三版
以下是整理的一些定义和问题,这本书主要要会画用例图、类图、顺序图、数据流图,懂了这些基本OK的
软件工程的定义: 将系统的,规范的,可量化的方法应用于软件的开发、运行和维护的过程;
软件的定义: 在计算机支持下,能完成特定的功能和性能的程序、数据和相关文档;
软件生命周期: 需求-----设计-----编码-----运行维护-----退役;
软件开发的主要方法: 结构化方法、面向对象方法、形式化方法;
软件过程模型: 瀑布模型、增量过程模型、原型建造模型、螺旋模型;
面向对象 = 对象 + 类 + 继承 + 聚合 + 多态 + 消息;
黑盒测试又称 功能测试,白盒测试又称为 结构测试;
用例图、类图、顺序图、数据流图的画法;
一、耦合性和内聚性有几种类型? 其耦合度、内聚强度的顺序如何?
内聚度表示一个模块内部各成分彼此关联的紧密程度。
耦合度是指软件结构中多个模块之间的关联程度。
答:低:非直接耦合®数据耦合®标记耦合®控制耦合®外部耦合®公共耦合®内容耦合:高
强:功能内聚®信息内聚®通信内聚®过程内聚®时间内聚®逻辑内聚®巧合内聚:弱
二、为什么要追求高内聚,低耦合?
1.高内聚低耦合有利于促进软件系统的结构简单化、清晰化。
2.强内聚有利于软件模块的可复用性;
3.低耦合有利于软件系统的可修改性、可维护性;
4.能够更好的支持模块的并行开发
三、什么是软件工程?
软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
书上的定义:将系统的、规范的、可量化的方法应用于软件的开发、运行和维护的过程,及以上方法的研究。
四、简述你对模块独立性的理解。
模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。模块独立性的重要性:具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化;独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够"插入"模块。总之,模块独立是优秀设计的关键,而设计又是决定软件质量的关键环节。
五、简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则?
答:需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图。
六、什么是黑盒测试法?
答:黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据,产生正确地输出信息。
软件生命期各阶段的任务是什么? 软件定义、软件开发、软件运行 答:软件生命期分为7个阶段: 1、问题定义:要解决的问题是什么2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运行维护:保证软件正常运行。
书上的:需求、设计、编码调试、软件测试、运行维护、退役
七、采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?
1、等价类划分。等价类划分是将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值的测试。
2、界值分析。该方法是将测试边界情况作为重点目标,选取正好等于,刚刚大于或刚刚小于边界值的情况,根据这些情况选择测试用例。
3、错误推测。错误推测法没有确定的步骤,凭检验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。
八、对象模型有哪5个层次?建立对象模型有哪几个步骤?
答:主题层、类&对象层、结构层、属性层、服务层。(1分)
1、确定类与对象:
第1步:列出所有候选对象第2步:去粗取精
2、确定关联 ( 结构层
第1步:收集 第2步:筛选删除 第3步:完善3、划分主题4、确立属性5、识别继承关系及其它修改
2、软件重用的效益是什么? 答:1、软件重用可以显著地改善软件的质量和可靠性。2、软件重用可以极大地提高软件开发的效率。
3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。
九、 自顶而下渐增测试与自底而上渐增测试各有何优、缺点?
答:① 自顶而下渐增测试。优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。 缺点:需要存根程序,底层错误发现较晚。②自底而上渐增测试。优点与缺点和自顶而下渐增测试相反。
十 、 提高可维护性的方法有哪些?
答:(1)在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。(2)在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。(3)在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。(4)在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。(5)在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。(6) 在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。(7)在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。 (8) 为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术。
十一、简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。
测试过程按 4 个步骤进行,即单元测试、集成测试、确认测试和系统测试。
单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。
集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。与其相关的文档是集成测试计划和软件需求说明书。
确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。与其相关的文档是确认测试计划和软件需求说明书。
系统测试把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。与其相关的文档:用户指南、使用手册等。