五校联合软件工程专业软件工程概论

简介: 五校联合软件工程专业软件工程概论

c669670f4e3d1d7b6cf60c2c34606274.jpg

简答题汇总


1.简述软件危机发生的原因。

客观原因:

①软件与硬件产品不同,软件是“开发的”而非“制造的”。其开发过程

难以管理和控制,产品质量也不好把握。

②软件没有“磨损”,但是它会不断“退化”。软件系统无法适应不断变

化的环境和功能需求。

③软件都规模庞大,而程序的复杂性是随其规模的扩大呈指数增加。

主观原因:

①对用户要求没有完整和准确的认识就匆忙编写程序。

②对软件的开发过程的认识不准确。生命周期的每个阶段都有特定的工作

和特点,都是不可逾越的。只有上一阶段工作完成,才能开始下一阶段

的工作。

③对软件质量的重视不够是造成软件开发成本激增的主要原因。注意软件

开发过程中错误的“放大效应”。

④轻视软件维护将是一个重大的错误。软件开发时期各阶段的关键目标都

是提高软件的可维护性。


2.简述软件工程的基本原理。

(1)用分阶段的生命周期计划严格管理

应该将软件开发和维护的漫长生命周期划分成若干个阶段,并针对每个阶段制定切实可行的计划,然后严格按照计划对软件的开发和维护工作进行管理。

(2)坚持进行阶段评审

错误发现的越早,改正错误所付出的代价就越小。因此,开发人员应该坚持在每个阶段都进行严格的评审,以便更早地发现和改正错误。

(3)实行严格的产品控制

在软件开发的过程中不应随意修改需求,当改变需求时,必须实行严格的产品控制以保持软件各个配置成分的一致性。

(4)采用现代程序设计技术

采用先进的技术不仅可以提高软件开发和维护的效率,而且还能有效地提高软件产品的质量。

(5)结果可以清楚地审查

应规定每个开发阶段的产品标准和文档要求,使得到的结果可以清楚地审查。

(6)开发小组成员少而精

软件开发小组人员要求素质高,而人数不宜过多。随着人数的增加,通信路径也急剧增加。

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

软件开发和维护的过程也需要随之改进。要主动采用最新的软件技术,而且还要不断总

结经验和教训、收集历史数据帮助开发人员改进软件工程实践。


3.简述软件危机的几种常见表现形式。

(1)对软件开发成本和进度的估计常常很不准确。

实际成本往往大大超过估计成本,或开发进度比计划推迟几个月或一年以上。这种现象

极大地影响了软件开发组织的信誉,也会引起用户的强烈不满。

(2)软件产品质量较差,可靠性低。

软件开发过程中不能坚持严格的审查、复审和测试,使得软件可靠性差、质量问题多。

(3)用户对开发出来的软件产品不满意。

开发人员与用户之间的交流不充分,仅对用户需求有了一个模糊的认识就匆忙开始写程

序。这样的结果就是用户对于所谓已经完成的软件很不满意。

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

在实际项目中,很多程序的错误往往难以修改,而且不能适应软硬件环境的变化,也无法添加用户需要的一些新功能。

(5)软件产品缺少应有的文档资料。

软件=程序+数据+文档。开发人员对文档认识不足,不能保证在开发过程中文档的完整性和准确性。缺少文档资料会造成软件开发、管理、审查、用户交流、软件维护等方面的诸多问题。

(6)软件产品的供不应求。

软件开发的生产率远远低于计算机硬件发展速度和用户的需求,造成了软件产品的供不

应求。


4.可将软件生存周期划分为哪3个过程和哪8个阶段。

3个过程:

①软件定义时期:确定软件开发的总目标和工程的可行性;导出实现策略和系统必须完成的功能;进行成本效益的估算;制定开发计划等。

②软件开发时期:具体设计和实现前一个时期定义的软件。

③维护时期:使软件持久地满足用户的需要。

8个阶段:

1.问题定义

2.可行性研究

3.需求分析

4.总体设计

5.详细设计

6.编码和单元测试

7.综合测试:通过各类测试和调试来完善软件。

8.维护


5.试述瀑布模型的优点和缺点?/简述瀑布模型及其特点

瀑布模型的特点:

(1)各阶段之间有依赖性和严格的顺序性。

(2)推迟实现。

(3)严格的阶段质保。

(4)文档驱动。

瀑布模型的问题:

(1)实际的项目很少顺序严格

(2)用户往往难以给出具体、正确、完整的要求

(3)开发人员“阻塞状态”严重

(4)产品出现晚


c2a311415816cf274b2a543a7f694f7d.png


6.研究软件工程项目可行性应从哪几个方面分析?/简述可行性研究的

步骤。

答:

1.技术可行性

对要开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件

下,技术风险有多大,项目能否实现。

2.经济可行性

经济可行性研究的内容是进行开发成本的估算以及进行效益的评估确定要开发的项目是否值得投资开发。

3.操作可行性

在这个应用范围内,系统的操作方式是否行得通

4.社会可行性

社会可行性主要研究开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行。


7.需求分析中对系统的综合要求包括哪些方面?/简述软件工程中需求分析的基本任务。

(1)确定对系统的综合要求

a.功能性需求b.非功能性需求c.出错处理需求,说明出错时对系统对环境时如何响应。d.逆向需求系统不应该做什么。e.将来可能提出的需求

(2)分析系统的数据要求:是软件需求分析的一个重要任务,复杂数据由许多基本数据元素组成,数据结构表示数据元素之间的逻辑关系。

(3)建立软件的逻辑模型,修正系统开发计划。

对系统的综合要求+对数据的要求=系统逻辑模型

描述方法:数据流图、数据字典、实体-联系图、和主要的处理算法。

(4)编写软件需求规格说明书

(5)需求分析评审:验证一致性、完整性、现实性、有效性


8.简述总体设计过程应该遵循的基本原理。

应遵循的基本原理有:

1)模块化,为解决一个复杂问题时,自顶向下逐层把软件系统规划分成若干模块的过程;

2)抽象,抽出事物质特征而不考虑其他细节;

3)逐步求精,为了能集中精力解决主要问题而尽力推迟对问题细节的考虑;

4)信息隐蔽,在设计中确定模块时,使得一个模块内部包含的信息,对于不需要这些信息的其他模块来说,是不能访问的;

5)局部化,把一些关系密切的软件元素,物理的改得彼此靠近;

6)模块独立性,指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单。


9.什么是模块化?模块化的根据是什么?采用模块化原理的优点是什

么?

模块化:是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有模块按某种方法组装起来,成为一个整体,完成整个系统要求的功能。

依据:不但可以降低复杂性,还可以减少开发工作量,从而降低开发成本,提高软件效率。

优点:采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。模块化也有助于提高软件的可靠性。


10.简述采用信息隐藏原理指导模块设计优点。

a.通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。

b.信息隐蔽为软件系统的修改、测试及以后的维护都带来好处。

c.防止错误的扩大传播。

11.用SD方法将数据流图转换为软件结构,简述其过程。

1.复查并精化数据流图

2.确定数据流图类型

3.确定数据流的边界

4.完成“第一级分解”

5.完成“第二级分解”

6.优化


12.简述软件结构设计启发式规则。

1.模块独立性准则:通过模块分解或合并,力求做到降低耦合提高内聚,

保持模块相对独立性。

2.模块的作用域应该在控制域内

3.软件结构的形态特征准则

软件结构从形态上看,应是顶层扇出数较高一些,中间层扇出数较低一些,底层扇入数较高一些。

4.模块大小准则

在考虑模块的独立性时,为了增加可理解性,模块的大小最好在50-150条语句左右,可以用1-2页纸打印,便于人们阅读与研究。

5.模块的接口准则

(1)模块接口设计要简单,以降低复杂程度和冗余度。

(2)设计功能可预测并能得到验证的模块。

(3)适当划分模块规模,以保持其独立性。


13.试用程序流程图举例描述结构化程序设计中的三种基本控制结构。

答案:P54


14.简述软件维护的困难主要体现在哪几个方面?

①理解别人的程序非常困难

②开发文档不合格、缺少或与程序不一致

③等待开发人员对软件说明

④设计时没考虑未来的修改维护

⑤维护经常受挫


15.已知某学校教务管理系统中规定:每个教师(教工号,姓名,性别,职称,职务)可以教多门不同的课程(课程号,课名,学时,学分),每门课程只能由一个老师来教,每个学生(学号,姓名,性别,系,年级)可以学习多门课程并取得成绩。每门课程可以有多个学生学习,试根据已知条件,画出对应的实体—联系图(E-R图)


9d26cc6e67c76f6720c1e57d851dd237.jpg


16.试述软件测试过程。

单元测试保证模块正确工作,多采用白盒测试;

综合测试保证模块集成到一起后正常工作,多为黑盒测试,并铺以白盒技术;系统测试保证软件与其他系统元素合成后达到系统各项性能要求;

确认测试保证软件需求的满足,采用黑盒测试。


17.黑盒测试完全不考虑程序内部结构和处理过程,测试仅在程序界面上进行。因此黑盒测试设计测试用例旨在说明什么?

黑盒测试设计测试用例旨在说明:

①软件的功能是否可操作

②程序能否适应当地接收输入数据并产生正确的输出结果;

③能否保持外部信息(如数据文件)的完整性。


18.简述在测试中采用自顶向下继承和自底向上集成的优缺点。

1.自顶向下集成:优点在于能尽早地对程序的主要控制和决策机制进行检验,因此较早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真行情况,重要数据不能及时回到上层模块,因此测试并不充分。

2.自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一个模块加入时才具有整体形象。它与自顶向下综合测试方法的优缺点正好

相反。


19.单元测试的测试重点主要有哪些?

1.模块间的接口:

  • 调用本模块的输入参数是否正确;
  • 本模块调用子模块时输入给子模块的参数是否正确;
  • 全局/局部变量的定义和用法是否一致;

2.局部数据结构

  • 不正确或不一致的数据类型说明
  • 使用尚未赋值或尚未初始化的变量
  • 错误的初始值或错误的缺省值
  • 变量名拼写错误或书写错误
  • 不一致的数据类型

3.重要的执行通路(选择、循环等)

  • 程序中是否存在死代码;
  • 误解或错误的计算优先级;
  • 精度错误;
  • 表达式符号表示错误;
  • 循环变量的使用错误;

4.出错处理通路

  • 出错的描述是否难以理解
  • 出错的描述是否能够对错误定位
  • 显示的错误与实际的错误是否相符
  • 对错误条件的处理正确与否
  • 在对错误进行处理之前,错误条件是否已经引起系统的干预等

5.边界条件

  • 普通合法数据是否正确处理;
  • 普通非法数据是否正确处理;
  • 边界内最接近边界的(合法)数据是否正确处理;
  • 边界外最接近边界的(非法)数据是否正确处理等。


20.试比较黑盒测试法与白盒测试法。

(1)白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试。

(2)测试规划

白盒测试是根据程序的内部结构,如语句的控制结构、模块间控制结构,以及内部数据结构等进行测试;

黑盒测试时根据用户规格说明,以及体现它们的输入与输出之间的对应关系,特别是针对功能进行测试。

(3)特点

白盒测试的优点是对程序内部逻辑进行覆盖测试,而黑盒测试的优点是能站在用户立场,针对软件功能进行测试;

白盒测试的缺点是无法检验程序的外部功能特性,无法对程序内部欠缺部分进行测试,而黑盒测试的缺点是无法测试程序内部逻辑。

(4)常用方法

白盒测试的常用方法有:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、基本路径覆盖等;

黑盒测试的常用方法有:等价类划分、边界值分析、错误推测、因果图法等。


21.一般而言,衡量某种程序语言是否适合于特定的项目,应考虑哪些因素?

①待开发软件的应用领域

②用户的要求

③软件的运行环境

④软件开发人员的知识

⑤软件的可移植要求

目录
相关文章
|
9月前
|
架构师 Java 测试技术
【软件工程】为什么要选择软件工程专业?
【软件工程】为什么要选择软件工程专业?
191 0
|
10月前
|
数据处理 云计算 对象存储
大家好,我是来自普通本科软件工程专业的学生。
大家好,我是来自普通本科软件工程专业的学生。我最近开发了一个小游戏,并希望与其他人分享。为此,我想拥有一台自己的云服务器,以便让玩家们能够随时随地玩我的游戏。通过身边的同学,我了解到了阿里云的飞天计划并登陆了阿里云官网了解了这个活动。
|
Java 程序员 测试技术
软件工程导论—软件与软件工程(上)
软件工程导论—软件与软件工程(上)
软件工程导论—软件与软件工程(上)
|
算法 IDE 测试技术
软件工程导论—软件与软件工程(下)
软件工程导论—软件与软件工程(下)
软件工程导论—软件与软件工程(下)
|
存储 NoSQL 数据库
软件工程导论—可行性研究(上)
软件工程导论—可行性研究(上)
软件工程导论—可行性研究(上)
|
机器学习/深度学习 存储 传感器
软件工程导论—可行性研究(下)
软件工程导论—可行性研究(下)
软件工程导论—可行性研究(下)
|
存储 测试技术 开发者
五校联合软件工程专业软件工程概论
五校联合软件工程专业软件工程概论
96 0
五校联合软件工程专业软件工程概论
|
测试技术
【软件工程基础】需求工程
【软件工程基础】需求工程
115 0
|
SQL 监控 程序员
软件工程之美
  最近在阅读《软件工程之美》,特在此做点记录。
软件工程之美
|
存储 算法 测试技术
软件工程学习之道
软件工程学习之道