软件工程导论习题 - 问答题

问答题

A组

1.简述增量式开发的优缺点

增量过程模型的优点:

⑴在软件开发过程中,按照增量持续不断的发布软件新版本,可及时获得客户的反馈,用于调整后续的软件开发策略;
⑵由于软件需求是确定的,可先对软件体系结构进行设计,增量开发过程能保持良好的软件体系结构。
(3)早期投资可以得到明显的回报,而且容易维护
增量过程模型的缺点:

(1)增量规模不能大,否则会暴露瀑布模型的缺点;
⑵将客户需求分解成增量序列必须对系统需求十分了解,并有顶层设计的经验
⑶多数系统都需要基本服务,如何为基本服务定义增量,何时实现这些增量,处理起来比较困难。
(4)要求软件具有开放的结构,这是用该模型固有的困难


2.软件需求分为哪几种类型?请逐一说明。

功能需求:指利益相关方要求目标软件系统应该具有的功能,还包括软件系统在业务处理过程中完成这些功能时必须遵守的约定或限制。

质量需求:利益相关方对目标软件系统的质量要求。

约束性需求:利益相关方对目标软件系统在项目预算、完成时间、技术选型、遵循的标准与规范等方面提出的要求,以及由预期的开发、运行环境的特征而导致的针对目标软件系统的约束。


3、什么是模块内聚度?表现形式有哪些,请逐一说明。
内聚度表示一个模块内部各成分彼此关联的紧密程度。
内聚度的表现形式有以下7种:

  • ⑴偶然性内聚:模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。
  • ⑵逻辑性内聚:模块完成多项功能,这些功能在逻辑上具有某种相关性。
  • ⑶时间性内聚:模块完成的诸任务必须在同一时间段内执行。
  • ⑷过程性内聚:在逻辑性内聚的基础上,进一步要求模块内各功能必须按特定的次序执行。
  • ⑸通信性内聚:模块中各成份对数据结构的同一区域进行操作,以达到通信的目的。
  • ⑹顺序性内聚:模块内各处理成份均与同一功能相关,且这些处理必须依序执行。
  • ⑺功能性内聚:模块内各成份协同完成单一功能。

7、什么是软件危机?软件危机的表现是什么?其产生的原因是什么?
软件发展的第二阶段末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。一些复杂的,大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。在软件开发中遇到的问题找不到解决方法,使问题积累起来,形成了尖锐的矛盾,因此导致了软件危机。

软件危机表现在以下四个方面:(钱与时间,要求,维护性,可靠性)

(1)经费预算经常突破,完成时间一再拖延。
(2)开发的软件不能满足用户要求
(3)开发的软件维护性差
(4)开发的软件可靠性差
造成软件危机的原因:(规模和结构,管理,经费,技术,工具)

(1)软件的规模越来越大,结构越来越复杂
(2)软件开发管理困难而复杂
(3)软件开发的经费不断增加
(4)软件开发技术落后
(5)生产方式落后开发工具落后,生产率提高缓慢


8、软件生存周期包括哪些活动?
【答】:软件生存周期的活动包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动。


9、软件测试包括哪些类型的测试?这些测试之间的区别是什么?
【答】:软件测试包括单元测试、集成测试、系统测试和验收测试等。
单元测试集中于每一个独立的模块;
集成测试集中于模块的组装;
系统测试确保整个系统与系统的功能需求和非功能需求保持一致;
验收测试是用户根据验收标准(通常来自项目协议),在开发环境或模拟真实环境中执行的可用性、功能和性能测试。


12、“面向对象实现”的目标是什么?
【答】:“面向对象实现”的目标是:按照《详细设计说明书》中对数据结构、算法分析和模块实现等方面的设计说明,用面向对象的语言,将这些部件组装起来,分别实现各模块的功能,从而实现目标系统的功能、性能、接口、界面等要求。


B组

1.简述瀑布等各种模型的优缺点和适用范围
软件工程导论习题 - 问答题_第1张图片
软件工程导论习题 - 问答题_第2张图片


3.简述软件需求的组成,并说明每种组成的含义(4分)

业务需求:反映了组织机构或客户对系统、产品高层次的目标要求,他们在项目视图与范围文档中予以说明

用户需求:文档描述了用户使用产品必须要完成的任务,这在使用实例文档或文案脚本说明中予以说明

功能需求:定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求


C组

UML的“9种图”包括:类图、对象图、用例图、顺序图、协作图、状态图、活动图、构件图、实施图。


软件设计要遵守“抽象,分解,低藕合高内聚,封装,接口和实现分离”的设计原理


用例之间的关系主要有三种:包含(include)、扩展(extend)和继承。


内聚性有6种类型 偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚。


瀑布模型的优点规范的,文档驱动,历史悠久,广为人知,缺点逆转性差。
增量模型的优点可以分阶段提交,缺点有时用户不同意
迭代模型的优点克服瀑布模型的缺点,缺点对开发人员要求高
原型模型的优点开发速度快,缺点不利于创新


常用的软件开发方法有结构化方法、面向对象方法和形式化开发方法


在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、 判定树


测试阶段是在代码编写完成以后,先作单元测试,然后是集成测试、 系统测试、验收测试


D组

1.软件维护的类型

  • 软件维护的类型:
  • 改正性维护,又称为纠错性维护。
  • 完善性维护
  • 适应性维护
  • 预防性维护

2.软件测试的目的

  • 发现程序的错误。
  • 定位和纠正错误。

3.黑盒 白盒 别名
白盒测试:结构测试,路径测试(早期:逻辑覆盖测试)
黑盒测试:功能测试,数据驱动测试


4.软件危机:
名词解释:软件危机泛指在计算机软件开发过程中所遇到的一系列问题。

产生原因:

  • 在软件开发和维护的过程中存在的问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。

  • 软件专业人员对软件开发和维护还有不少错误观念,在实践过程中或多或少的采用了错误的方法和技术。

  • 对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发过程失败的主要原因之一。

主要表现:

  • 对软件开发成本和进度的估计常常很不准确。
  • 用户对“已完成的”软件系统不满意的现象经常发生。
  • 软件产品的指令往往靠不住。
  • 软件通常没有对应的文档资料。
  • 软件成本在计算机系统总成本中所占的比例逐年上升。
  • 软件开发生产效率提高的速度远远跟不上计算机应用迅速普及- 的趋势。

5.软件过程模型(4个模型的概念)


6.UML(可能名词解释)
uml:统一建模语言


7.耦合度相关
模型耦合度:对一个软件结构内部不同模块间联系紧密程度的度量指标。

模块间的联系越紧密,耦合度就越高,独立性越低。

  1. 数据耦合
    (两个模块之间仅通过模型参数交换信息,且交换的详细全部为简单数据)
  2. 公共偶合
    (分松散公共耦合、紧密公共耦合;公共耦合的复杂度随着耦合模块个数的追加而追加)
  3. 内容耦合
    (一模块对另一模块进行了直接的引用甚至修改,或通过非正常入口进入到另一个模块内部等)
  4. 控制耦合
    (通过传送开关、标志、名字等控制信息)

设计过程中应力求降低程序的耦合度
数据耦合的程度最低,其次是公共耦合,再是控制耦合,程序最高的是内容耦合。

设计原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。


8.内聚性
内聚性:标志一个模块内各个元素彼此结合的紧密程度。

  1. 偶然内聚
  2. 逻辑内聚
  3. 时间内聚
  4. 过程内聚
  5. 通信内聚
  6. 顺序内聚
  7. 功能内聚

9.程序语言的三种结构
顺序,循环,选择


10.生命周期
软件工程导论习题 - 问答题_第3张图片


11需求分析
基本任务:准确回答“系统必须做什么”这个问题。


12.快速原型法

你可能感兴趣的:(小杂砸)