软件工程复习笔记

1.面向数据流的设计方法把信息流映射成软件结构

2.模块的独立性很重要,独立性好的模块应该是低耦合,高内聚

3.模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚

4.两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合

5.软件危机的原因有哪些?(ABCD)

A.软件不同于硬件,管理和控制软件开发过程相当困难。

B.软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

C.只重视程序而忽视软件配置其余成分的糊涂观念。

D.软件开发人员在定义时期没有正确全面地理解用户需求。

6.常见的软件过程有哪些?(ABCD)

A.瀑布模型

B.增量模型

C.Rational统一过程

D.敏捷过程

7.需求分析的工具有哪些?(ABCD)

A.IPO图

B.实体联系图

C.状态转换图

D.Warnier图

8.与用户沟通获取需求的方法有哪些?(ABCD)

A.访谈

B.面向数据流自顶向下求精

C.简易的应用规格说明技术

D.建立软件原型

9.软件维护就是在软件已经交付使用之后,可能进行的哪些活动?(ABCD)

A.适应性维护

B.完善性维护

C.改正性维护

D.预防性维护

10.决定软件可维护性的因素主要有哪些?(ABCD)

A.可理解性B.可修改性C.可移植性D.可重用性

11.软件文档应该满足哪些要求?(ABD)

A.必须描述系统需求和设计。B.必须描述怎样安装和管理这个系统。

C.必须提供在线帮助功能。D.必须描述系统的实现和测试,以便使系统成为可维护的。

12.典型的软件再工程过程模型包含哪些环节?(ABC)

A.逆向工程B.文档重构C.代码重构D.需求重构

13.微软软件生命周期包括规划阶段、设计阶段、开发阶段、稳定阶段、发布阶段。

14.螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。

15.软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。

16.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试。

17.需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”。

18.数据流图是建立功能模型。

19.什么是面向数据流的设计方法中的变换流?

变换流是指信息沿输入通路进入系统,由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。

20.什么是面向数据流的设计方法中的事务流?

当数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流。

21.什么是模块?

模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件。

24.什么是信息隐藏和局部化?

信息隐藏:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。

局部化:指把一些关系密切的软件元素物理地放得彼此靠近.

---------------------------------------------------------------------------------------------------------------------

25.什么是面向对象方法学?

面向对象方法学是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。

面向对象方法把对象作为由数据集可以施加在这些数据上的操作所构成的统一体。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。必须发消息请求对象主动地执行它的某些操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作

26.什么是面向对象的软件技术中多态性?

多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。

27.什么是能力成熟模型?

能力成熟度模型(CMM),是用于评价软件机构的软件过程能力成熟度的模型。

CMM把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成5个逐层提高的等级。这5个成熟度等级定义了一个有序的尺度,用以测量软件机构的软件过程成熟度和评价其软件过程能力,这些等级还能帮助软件机构把应做的改进工作排出优先次序。

28.什么是软件工作量估算COCOMO2模型?

COCOMO是构造性成本模型的英文缩写。是原始的COCOMO模型的修订版,它反映了10多年来在成本估计方面所积累的经验。

29.COCOMO2给出了3个层次的软件开发工作量估算模型:

(1)应用系统组成模型。这个模型主要用于估算构建原型的工作量,模型名字暗示在构建原型时大量使用已有的构件。

(2)早期设计模型。这个模型适用于体系结构设计阶段。

(3)后体系结构模型。这个模型适用于完成体系结构设计之后的软件开发阶段。

29.在程序流程图中的每个结点都必须有一条从开始结点到该结点本身的路径,以及一条从该结点到结束结点的路径。为什么数据流图没有关于结点之间可达性的类似规则?

答:数据流图不描述控制,因此,在一个数据流图中两个“处理”之间可能没有路。如果每个处理都使用不同的输入数据,并生成不同的输出数据,而且一个处理的输出不用做为另一个处理的输入,那么,在它们之间就没有弧。

30.可行性研究过程有哪些步骤:

答:1)复查系统规模和目标

2)研究目前正在使用的系统

3)导出新系统的高层逻辑模型

4)进一步定义问题

5)导出和评价供选择的解法

6)推荐行动方针

7)草拟开发计划书

8)写文档提交审查用

31.自然语言书写的系统规格说明书的缺点有哪些?

答:用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。

32.采用形式化方法的优点有哪些?常见的形式化技术有哪些?

为了克服非形式化方法的缺点,人们把数学引入软件开发过程,创造了基于数学的形式化方法。数学能够简洁准确地描述物理现象、对象或动作的结果,因此是理想的建模工具二义性是指读者可以用不同方式理解的陈述。数学以在不同的软件工程活动之间平滑地过渡。数学提供了高层确认的手段。常见的形式化技术包括:有穷状态机、Petri网和Z语言

  1. 请简述典型的总体设计步骤。

答:总体设计步骤:(1)设想供选择的方案,(2)选取合理的方案(3)推荐最佳方案(4)功能分解(5)设计软件结构(6)设计数据库(7)制定测试文档(8)书写文档(9)审查和复查

34.总体设计的启发规则有哪些?

答:(1)改进软件结构提高模块独立性(2)模块规模应该适中(3)深度,宽度,扇出和扇入都应适当(4)模块的作用域应该在控制域之内(5)力争降低模块接口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测

35.什么是集成测试,集成测试的方法有哪些?

集成测试是测试和组装软件的系统化技术。集成测试是软件测试中的一个阶段,用于验证各个模块或组件在组合后是否能够协同工作。集成测试的主要目标是检查模块之间的接口和交互,以确保它们在集成后能够正常运行并满足预期需求。

集成测试得方法有非渐增式测试、渐增式测试、回归测试

目前在进行集成测试时普遍采用渐增式测试方法。当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。

36.什么是确认测试?确认测试包含哪些主要内容?

确认测试也称为验收测试,它的目标是验证软件的有效性、确保最终产品满足业务需求和客户的期望。

确认测试包含的主要内容:确认测试必须有用户积极参与。确认测试通常使用黑盒测试法。通过测试和调试要保证软件能满足所有功能要求,能达到每个性能要求,文档资料是准确而完整的,此外,还应该保证软件能满足其他预定的要求。软件配置复查是确认测试的一个重要内容。复查的目的是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好目录。分为Alpha测试和Beta测试。

37.关键路径为什么对工程项目的管理人员具有重要意义?

关键路径上的事件(关键事件)必须准时发生,组成关键路径的作业(关键作业)的实际持续时间不能超过估计的持续时间,否则工程就不能准时结束。工程项目的管理人员应该密切注视关键作业的进展情况,如果关键事件出现的时间比预计的时间晚,则会使最终完成项目的时间拖后;如果希望缩短工期,只有往关键作业中增加资源才会有效果。

38.什么是甘特Gantt图?有何缺点?

Gantt(甘特)图是历史悠久、应用广泛的制定进度计划的工具

Gantt图能很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间,因此是进度计划和进度管理的有力工具。它具有直观简明和容易掌握、容易绘制的优点,但是Gantt图也有3个主要缺点。(1)不能显式地描绘各项作业彼此间的依赖关系。(2)进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象。(3)计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。

39.面向对象分析的基本过程是什么?

面向对象分析大体上按照下列顺序进行:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。但是,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。

40.需求陈述的书写要点有哪些?

应该描述用户的需求而不是提出解决问题的方法。

应该指出哪些是系统必要的性质,哪些是任选的性质。

应该避免对设计策略施加过多的约束,也不要描述系统的内部结构,因为这样做将限制实现的灵活性。

对系统性能及系统与外界环境交互协议进行描述。

对采用的软件工程标准、模块构造准则、将来可能做的扩充以及可维护性要求等方面进行描述。

41.什么是软件重用,类构件是什么是否属于可重用软件成分?

重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。广义地说,软件重用可分为以下3个层次:知识重用,方法和标准的重用和软件成分的重用。类构件是指面向对象技术中的“类”,是比较理想的可重用软构件。

42.简述几项能够提高效率的设计优化技术?

1)增加冗余关联以提高访问效率在面向对象分析过程中,应该避免在对象模型中存在冗余的关联,因为冗余关联不仅没有增添任何信息,反而会降低模型的清晰程度。但是,在面向对象设计过程中,当考虑用户的访问模式,及不同类型的访问彼此间的依赖关系时,就会发现,分析阶段确定的关联可能并没有构成效率最高的访问路径。

2)调整查询次序,尽量缩小查找范围实现算法优化。

3)保留派生属性

通过某种运算而从其他数据派生出来的数据,是一种冗余数据。通常把这类数据“存储”(或称为“隐藏”)在计算它的表达式中。如果希望避免重复计算复杂表达式所带来的开销,可以把这类冗余数据作为派生属性保存起来。

43.面向对象语言的优点有哪些?

一致的表示方法:面向对象开发基于不随时间变化的、一致的表示方法。这种表示方法应该从问题域到OOA,从OOA到OOD,最后从OOD到面向对象编程(OOP),始终稳定不变。

可重用性:软件开发组织既可能重用它在某个问题域内的OOA结果,也可能重用相应的OOD和OOP结果。

可维护性:程序内部表达问题域语义清晰易懂,便于维护人员理解。

44.什么是基于故障的测试?

基于故障的测试(faultbasedtesting)与传统的错误推测法类似,也是首先推测软件中可能有的错误,然后设计出最可能发现这些错误的测试用例。为了推测出软件中可能有的错误,应该仔细研究分析模型和设计模型,而且在很大程度上要依靠测试人员的经验和直觉。如果推测得比较准确,则使用基于故障的测试方法能够用相当低的工作量发现大量错误;反之,如果推测不准,则这种方法的效果并不比随机测试技术的效果好

45.什么是面向对象的确认测试?

在确认测试或系统测试层次,不再考虑类之间相互连接的细节。和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出。为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本,以确定最可能发现用户交互需求错误的情景。当然,传统的黑盒测试方法(见本书第7章)也可用于设计确认测试用例,但是,对于面向对象的软件来说,主要还是根据动态模型和描述系统行为的脚本来设计确认测试用例。

46.在面向对象实现的过程中,为了提高程序的重用性、扩充性以及健壮性,应是所有程序开发人员相互配合,这一点如何办到?

在面向对象实现过程中,为提升程序的重用性、扩充性和健壮性,需所有程序开发人员紧密配合。可通过制定统一的编码规范、采用设计模式、进行代码审查及持续集成等方式,确保代码风格一致、逻辑清晰。同时,利用版本控制系统管理代码,促进团队协作。此外,定期的技术分享和讨论也有助于统一思想,共同提升程序质量,实现高效开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Far away..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值