【软件工程导论题型大总结】简答题总结 您所在的位置:网站首页 设计概论论述题题库有哪些内容 【软件工程导论题型大总结】简答题总结

【软件工程导论题型大总结】简答题总结

2024-07-08 04:40| 来源: 网络整理| 查看: 265

pdf下载:密码7281专栏目录首页:【专栏必读】软件工程导论第六版(张海藩)专栏学习笔记目录导航

文章目录 一:传统软件工程部分(1)非常重要(2)可以了解 二:面向对象设计部分(1)非常重要(2)了解

一:传统软件工程部分 (1)非常重要

1.在这里插入图片描述

【答案】

软件危机的定义:软件危机是在计算机开发和维护过程中所遇到的一系列的严重问题,主要包含两个方面

如何开发软件,以满足日益增长的软件需求如何维护软件数量不断膨胀的已有软件

软件危机的表现:

对软件开发成本和进度的估算不准确用户对软件不满意软件质量不可靠软件不可维护没有合适的文档资料软件成本在计算机系统中的成本逐年上升软件开发生产率低

软件危机的原因

①:主观方面

忽视需求分析轻视软件维护没有认识到程序只是软件的一部分没有认识到开发只是软件漫长生命周期中一个比较次要的阶段越到后期引入变动代价会越高

②:客观方面

软件是逻辑实体,具有不可见性,管理控制很困难软件不会磨碎,维护意味着需要原来的设计,维护困难软件规模庞大,程序的复杂性会随着软件规模增加而增加

如何解决

对计算机软件应该有正确的认识要吸取和借鉴人类长期从事各种工程项目积累的原理、概念、技术和方法积极开发和使用计算机辅助开发软件探索更好更有效的管理措施和手段对开发过程进行控制和管理

2.在这里插入图片描述

【答案】

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

软件工程的特征 在这里插入图片描述

软件工程的原理

在这里插入图片描述

3.软件生命周期阶段如何划分?

【答案】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

【答案】

软件过程的定义:是为了获得高质量软件所需要完成的一系列任务框架,它规定了完成任务的工作步骤,通常用软件生命周期模型来描述软件过程

软件工程方法学:把在软件生命周期全过程中所使用的一整套技术方法的集合称之为软件工程方法学。包含三个要素

方法:完成软件开发各项任务的技术方法工具:为了运用方法提高的自动或半自动软件工程支撑环境过程:是为了获得高质量软件所需要完成的一系列任务框架

因此软件过程是软件工程方法学的重要组成部分

5.在这里插入图片描述

【答案】

①瀑布模型

优点:

强迫开发人员使用规范的方法严格规定了每个阶段提交的文档要求每个阶段交出的产品都必须经过质量保证小组的验证对文档的约束,使得软件维护变得容易一些,且能降低软件预算

缺点

在软件开发初期就要求做出正确的,全面的,完整的需求分析对多数应用软件来说是很困难的在需求分析阶段,在需求确定后,无法及时验证需求是否正确,完整作为整体开发的瀑布模型,由于不支持产品演化,缺乏灵活性,对开发过程中很难发现的错误,只有在产品最终运行时才能发现

适用范围

用户的需求非常清晰全面,且在开发过程中没有或很少有变化开发人员对软件的应用领域很熟悉用户的使用环境非常稳定开发工作对用户的参与要求很低

②快速原型模型

优点:

开发的软件通常满足用户需求软件开发基本是线性过程

缺点

准确原型设计困难原型理解可能不同不利于开发人员创新

适用范围

对所开发的领域比较熟悉且与快速的原型开发工具项目招投标时,可以以原型模型作为软件的开发模型进行产品移植或升级时,或对已有产品原型进行客户化工作时

③:增量模型

优点

短时间内可提交部分功能逐渐增加产品功能,用户适应产品快

缺点

增量构件划分及集成困难容易退化成边做边改模型

④:螺旋模型

优点

利于把软件质量作为软件的开发目标减少测试维护和开发不分开

缺点

风险估计困难

⑤:喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性

在这里插入图片描述

6.在这里插入图片描述

【答案】

可行性研究的必要性:开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的实质是要进行一次大大压缩简化了 的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决

涉及方面

经济可行性:经济效益是否大于开发成本技术可行性:现有技术能够实现操作可行性:系统操作方式是否可行其它可行性:法律、社会效益

7.可行性研究的目的、本质、任务、过程(步骤)

【答案】

可行性研究的目的:用最小的代价在最小的时间内确定问题是否可以被解决

可行性研究的本质:系统分析和设计过程的大大压缩和简化,在较高层次上以较为抽象的方式进行系统的分析和设计过程

可行性研究的任务:

在这里插入图片描述

可行性研究的过程(步骤):

在这里插入图片描述

8.数据流图的概念、特点、符号、用途(目的)

【答案】

DFD的概念:描述信息流和数据从输入到输出所经受的变换。没有任何具体物理部件,只是描绘数据在软件中流动和被处理的逻辑过程

DFD的特点:

在这里插入图片描述 DFD的符号:

在这里插入图片描述

DFD的用途(目的):

在这里插入图片描述

9.数据字典相关的概念、符号、用途

【答案】

数据字典的概念:

在这里插入图片描述

数据字典的符号:

在这里插入图片描述

数据字典的用途:

在这里插入图片描述

10.在这里插入图片描述

【答案】

需求分析的定义:需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题,目标系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析员应该写出软件需求规明书,以书面形式准确地描述软件需求

需求分析的必要性:为了开发出真正满足用户需求的软件产品,首先必须要知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的必要前提,不论人们把设计和编码工作做得如何出色,不能满足用户需求的程序只会让用户失望

软件系统需求

功能要求性能要求可靠性和可用性要求出错处理需求接口需求约束逆向需求将来可能提出需求

11.需求分析的准则是什么

在这里插入图片描述

12.需求分析的任务

在这里插入图片描述

13.在这里插入图片描述

【答案】

在这里插入图片描述

14.实体联系图作用、优点

【答案】

E-R模型比较接近人的思维习惯方式E-R模型使用简单的图形符号表达,便于用户理解

15.验证需求的四个方面和方法

【答案】

四个方面

在这里插入图片描述

方法 在这里插入图片描述

16.总体设计的相关概念

【答案】

总体设计的定义:总体设计的基本目的就是回答“系统应该如何实现”这个问题,又称为概要设计或初步设计

总体设计的任务:确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系

总体设计的概括:

在这里插入图片描述

总体设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统

17.总体设计的步骤

【答案】

在这里插入图片描述

18.简述设计原理(这一部分中的内容基本会分散在名词解释和填空题中记忆) 询问点1:模块独立性重要性 询问点2:请简述耦合方式 询问点3:请简述内聚方式

【答案】

在这里插入图片描述

19.请简述启发式规则

【答案】

改进软件结构以提高模块独立性模块的规模应该适当深度、宽度、扇入、扇出数目应该适当模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单入口单出口的模块模块的功能应该可以预测但要防止过分局限

20.程序流图的符号

【答案】

在这里插入图片描述

21.程序流程图的优缺点

【答案】

在这里插入图片描述

22.盒图的符号

【答案】

在这里插入图片描述

23.盒图的优点

【答案】

功能域明确,可以从盒图上一眼就看出来不可能任意转移控制很容易确定局部和全程数据的作用域很容易表现嵌套关系,也可以表示模块的层次结构

24.问题分析图(PAD图)的符号

【答案】

在这里插入图片描述

25.问题分析图(PAD图)的优点

【答案】

在这里插入图片描述

26.判定表的组成

【答案】

在这里插入图片描述

27.判定表的优缺点

【答案】

在这里插入图片描述

28.程序复杂度的价值、作用

【答案】

在这里插入图片描述

29.环形复杂度计算方法

【答案】

在这里插入图片描述

30.程序设计语言如何选择

【答案】 在这里插入图片描述

31.简述编码风格

【答案】

在这里插入图片描述

32.软件测试的目标

【答案】

在这里插入图片描述

33.软件测试的准则

【答案】

在这里插入图片描述

34.简述软件测试步骤

【答案】

在这里插入图片描述

35.简述单元测试的测试重点

【答案】

在这里插入图片描述

36.简述自顶向下集成

【答案】

在这里插入图片描述

37.简述自底向上集成

【答案】

在这里插入图片描述

38.简述白盒测试中的语句覆盖、判定覆盖等逻辑覆盖过程

【答案】

在这里插入图片描述

39.简述黑盒测试中测试用例的设计标准

【答案】

能够减少为达到合理测试所需要设计的测试用例的总数能够告诉人们,是否存在某些类型的错误,而不是仅仅指出与特定测试相关的错误是否存在

40.简述等价类划分法(了解,特别注意规则)

【答案】

在这里插入图片描述

41.请简述软件维护的分类

【答案】

在这里插入图片描述

42.请简述软件维护的特点

【答案】

在这里插入图片描述

在这里插入图片描述

【答案】

在这里插入图片描述

44.在这里插入图片描述

【答案】

通常,对一个已有的软件做重大修改意味着对软件功能做较大变更或增加较多新功能,这往往需要修改软件的体系结构。因此,了解原有软件的总体情况是很重要的。程序的规格说明书准确地描述了对软件系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求及将来可能提出的需求,对了解已有软件的总体情况有很大帮助。在对已有软件做重大修改之前仔细阅读、认真研究这份文档, 可以避免许多修改错误。因此,应该选取这份文档有经验的软件工程师通过阅读含有适当数量注解的源程序,不难搞清程序的实现算法,没有描述详细设计结果的文档并不会给维护工作带来太大困难。此外,为了修改程序代码,原有程序的清单是必不可少的。因此,为了对这个软件做重大修改应该选取的第二份文档是源程序清单

45.简述代码行技术方法

【答案】

在这里插入图片描述

46.简述代码行技术的优缺点

【答案】

在这里插入图片描述

47.简述功能点技术信息域特性

【答案】

在这里插入图片描述

48.简述功能点FP的计算方法

【答案】

在这里插入图片描述

49.简述软件指令保证措施

【答案】

在这里插入图片描述

50.简述软件管理配置的目的

【答案】

在这里插入图片描述

51.简述CMM

【答案】

在这里插入图片描述

(以下部分为拓展)

1.什么 是软件生存期?有何重要性?国家标准计算机软件开发规范中,把软件生存周期划分为哪几个阶段

【答案】

软件生命周期是指一个软件从立项开始,经过开发、测试、使用和维护知道软件下线的整个时期

在这里插入图片描述

2.结构化设计与面向对象设计的区别

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

简述提高软件质量的主要措施

在这里插入图片描述

UML 里面有哪些图

在这里插入图片描述

常用的黑盒测试方法有哪些?

等价划分,边界值分析,错误推测

常用的白盒测试方法有哪些?

逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖), 控制结构测试(基本路径测试、条件测试、循环测试)

耦合强度的衡量因素有哪些

在这里插入图片描述

有哪些常用的设计模式

在这里插入图片描述

CMM共有多少个等级,每个等级分别代表什么

在这里插入图片描述

(2)可以了解

1.什么是软件?软件的特点是什么?

【答案】

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

【答案】 在软件开发的不同阶段进行修改所付出的代价是不相同的。在早期引入变动,由于设计的面较少,因而代价也比较低;在开发的中后期,软件配置相关工作已经完成,引入一个变动时常常会引起所有与之有关的成分发生变化,所以代价较高。一个人编码错误是不可避免的,但是修改的成本是很小的,因为这不是整体架构的错误,只要不断进行阶段评审,不要让错误留到后期,在早期就尽可能解决

3.在这里插入图片描述

【答案】

结构化范型

采用结构化技术完成软件开发的各项任务把软件生命周期划分不同阶段每个阶段开始和结束都有严格标准每个阶段结束后要有严格审查

面向对象范型

把对象作为融合了数据及在数据上的操作行为的统一软件构件把所有对象划分为类按照父类与子类的关系,把若干类组成层次结构的系统对象彼此间仅通过消息互相联系

4。 在这里插入图片描述

【答案】

因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号, 因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性

在这里插入图片描述

【答案】

优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性

缺点:缺点: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性

Raitional统一过程主要适用于何种项目? 说明敏捷过程适用范围 说明微软过程的适用范围

【答案】

大型的需求不断变化的复杂软件系统项目 适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束 适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式

7.数据模型定义、作用

为了把用户的数据要求清楚、准确地描述出来,通常建立一个概念性的数据模型(信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,而且与在软件系统中的实现方法无关

8.简述层次图和HIPO图

【答案】

层次图:层次图用于描绘软件的层次结构,其中一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系层次图很适于在自顶向下设计软件的过程中使用。通常用层次图作为描绘软件结构的文档HIPO图:HIPO图本质就是层次图加编号。也即HIPO图=层次图+输入/处理/输出图

9.简述结构图

【答案】

在这里插入图片描述

10.简述一般的抽象过程和软件工程抽象工程

【答案】

在这里插入图片描述

11.什么是流图

【答案】

流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据具体操作以及分支或循环的具体条件,流图通常被用来突出表示程序的控制流

12.流图的符号

【答案】

结点:用圆表示,一个圆代表一条或多条语句。一个顺序结构可以合并一个结点边:箭头线称为边,代表控制流。在流图中一条边必须终止于-一个结点,即使这个结点并不代表任何语句区域:由边和结点围成的面积称为区域,计算区域时包括图外部未被围起来的区域

13.映射为流图的方法

【答案】

①:对于顺序结构,一个顺序处理和下一个选择可以映射为一个结点

在这里插入图片描述

②:对于选择语句,开始/结束语句映射为一个结点,两条分支至少各映射成一个结点

在这里插入图片描述 ③:开始语句和结束语句各映射成一个结点

在这里插入图片描述

14.简述确认测试的范围

【答案】

在这里插入图片描述

(以下部分是拓展)

1.如何实现容错技术?通常采用哪些方法?

【答案】

实现容错技术主要手段是冗余,有以下四类

结构冗余信息冗余时间冗余冗余附加技术

2.为什么要进行软件评审

【答案】

因为软件生存期每个阶段的工作都有可能引入人为错误,如果某一阶段的错误不及时纠正,就会传播到开发的后续阶段,引出更多错误,因此,进行软件评审是必要的,评审可以揭露软件中的缺陷然后加以改正

3.谈谈你对软件工程学科的认识和看法

所谓软件工程就是和建造房子一样的图纸,为开发软件提供一种策略,方法,可以设计出更加实用的软件,通过软件工程的学习,我们得到一种策略,来沟通软件过程、实践、模式等等。对一款软件从开始到结束的管理,从宏观到微观的把控,我们需要做好每个阶段,

软件工程,是应对软件危机提出的,为生产可复用,易读,易懂,好测试,好维护的软件而形成的编程规范。 是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程。涉及邻域包括但不限于:软件需求分析,软件设计,软件构件 ,软件测试和维护等方面。而且涉及学科较多,计算机科学,计算机 工程,管理学,数学,项目管理学。质量管理,系统工程,用户体验设计等。 总之,学好软件工程这门理论课,还是首先要有大局意识和整体把握。因为整体的把握就是为进一步的开发提供了方向

4.你认为一名合格的软件工程师应具备哪些素质

【答案】

扎实的编码、编程能力规范意识和团队精神认识和运用数据库的能力较强的英语阅读和写作能力具有软件工程的概念求知欲和进取心

5.你认为软件开发和软件管理的关系是什么”

软件项目管理是软件工程的普适性活动,它先于任何技术活动之前开始,持续贯穿于整个软件开发的建模,构造和部署之中。优秀的软件项目管理是开发优秀软件的必要前提,也是软件开发必不可少的组成部分。它将人员,产品,过程和项目统筹规划,能够有效预防和解决软件开发中的协调与沟通问题。

二:面向对象设计部分 (1)非常重要

1.什么是面向对象方法学?它有哪些优点?

【答案】

①定义 在这里插入图片描述 ②:优点

与人类思维习惯一致稳定性好可重用性好较易开发大型软件产品可维护性好

2.什么是“对象”?它与传统的数据有何异同?

【答案】

对象是从客观世界中的实体抽象而来的,面向对象的软件系统是由对象组成的,其任何要素都是对象相对于传统数据结构的静态被处理,对象既有静态的属性,也有动态的行为,是进行处理的主体

3.什么是类

【答案】

“类”是对具有相同数据和相同操作的一组相似对象的定义,即类是对具有相同属性和行为的一个或多个对象的描述,包括对怎样创建该类的新对象的说明。类是支持继承的抽象数据类型,而对象就是类的实例

4.什么是“继承”?

广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享父类中定义的数据和方法的机制

5.什么是模型?开发软件为何要建模?

【答案】

在这里插入图片描述

6.什么是对象模型?建立对象模型时主要使用哪些图形符号?这些符号的含义是什么?

【答案】

在这里插入图片描述

在这里插入图片描述

7.什么是动态模型?建立动态模型时主要使用哪些图形符号?这些符号的含义是什么?

【答案】

在这里插入图片描述

8.什么是功能模型?建立功能模型时主要使用哪些图形符号?

【答案】

在这里插入图片描述

9.试对三种模型进行比较

在这里插入图片描述

10.简述面向对分析的3个模型和5个层次

在这里插入图片描述

11.简述建立对象模型、动态模型、功能模型的基本步骤(★★★★★)

建立对象模型

确定类与对象确定关联划分主题确定属性识别继承关系反复修改

建立动态码模型

编写脚本设想用户界面画出事件跟踪图画出状态图审查动态模型

12.面向对象分析与面向对象设计有什么关系

在这里插入图片描述

13.面向对象设计基本准则

在这里插入图片描述

14.简述面向对象设计的启发规则

在这里插入图片描述

15.简述软件重用(★★★★★)

在这里插入图片描述

16.简述类构件

在这里插入图片描述

17.关于面向对象程序设计语言的特点(★★★★★)

在这里插入图片描述

18.简述面向对象测试

在这里插入图片描述

(2)了解

1.建立对象模型相关概念

在这里插入图片描述

2.建立对象模型如何确定类与对象

在这里插入图片描述

3.建立对象模型如何确定关联

在这里插入图片描述

4.建立对象模型如何划分主题

在这里插入图片描述

5.建立对象模型如何确定主题 在这里插入图片描述

6.建立对象模型如何识别继承关系

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有