软件工程简答题

1简述软件设计的过程

软件设计是把许多事物和问题抽象起来,并且抽象它们不同层次和角度,是将需求转变为软件陈述的过程,是迭代的过程。
软件设计,要根据需求规格说明书,对整个设计过程进行计划,然后实施具体的设计过程,即“先整体,再局部”,也是不断迭代和精化的过程。
然后需要对生成的设计规格说明书进行评审,启动 质量评价的标准,若未通过评审,需重新修改设计,直至评审通过,确定最后定型的过程本身。进入后续阶段,完成软件设计过程。
**

2.简述结构化程序设计方法的基本特点

**。
1)尽可能少用goto语句的程序设计方法。
2)每个代码块都单入单出。
3)使用控制结构:顺序、选择和循环。
4) 自顶向下逐步求精。

3.衡量模块独立性的两个定性标准是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独立性我们追求的目标是什么?

1)衡量模块独立性的两个定性标准是内聚和耦合(2分)。
2)耦合是指对一个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元素彼此结合的紧密程度(2分)。
3)在我们的软件设计中,关于模块独立性我们追求的目标是紧密内聚松散耦合(1分)。

4.什么是黑盒测试法?

1)黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程(2分)。
2)它只检查程序功能是否能照规格说明书的规定正常使用(1分),
3)程序是否能适当地接收输入数据,产生正确地输出信息(1分)。

5如何选择程序设计语言的工程特性

1.)系统用户的要求
2.)可以使用的编译程序
3).可以得到的软件工具
4).工程规模
5.)程序员的知识
6).软件可移植性的要求
7).软件的应用领域

6.简述面向对象的4个要点的含义。

面向对象的4个要点是:对象分解、数据专有、继承、封装性。(1分)
1)对象分解:认为客观世界是由各种对象组成的。  (1分)
2)数据专有,方法共享:把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。 (1分)
3)继承:按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。(1分)
4)封装性:对象彼此之间仅能通过传递消息互相联系。(1分)

7.软件维护的过程

在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。 软件维护的过程:
(1) 确认维护要求。(1分)
(2) 对于改正性维护申请,评价错误的严重性。对于严重的错误,立即安排人员,分析问题原因,进行"救火"性的紧急维护;对于不严重的错误,根据任务情况和轻重缓急进行统一安排。(2分)
(3) 对于适应性和完善性维护申请,需要确定申请的优先级,然后安排维护工作。并不是所有的完善性维护申请都必须承担,需要考虑商业需要、现有资源、未来发展方向等进行决定。(2分)

8.软件维护的目的和主要任务是什么?维护的类型有哪些?

软件维护是软件生命周期中最后一个、持续时间最长的阶段。
主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件。
目的是提高软件的可靠性、可用性,延长软件的寿命。
维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)

9.什么是耦合?模块的耦合包括哪些类型?

耦合是对一个软件结构内不同模块之间互连程度的度量。
模块的耦合包括以下几种类型:
数据耦合,
控制耦合,
特征耦合,
公共环境耦合,
内容耦合,
标记耦合,
无耦合/非直接耦合

10什么是内聚?模块的内聚包括哪些类型?

内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展

模块的内聚包括以下几种类型:低内聚 — 偶然内聚,逻辑内聚,时间内聚  中内聚 — 过程内聚,通信内聚; 高内聚 — 顺序内聚,功能内聚

11.什么是编码风格?为什么要强调编码风格?

编码风格包括以下内容:程序内部良好的文档(注释)、数据说明、语句构造、输入输出和效率保障等。
因为编码风格对软件的可读性、可维护性、可靠性、可用性很重要,所以要强调编码风格。

12什么是软件危机?软件危机的表现是什么?其产生的原因是什么?

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

13请说明 “三个模型” 的定义,以及三者之间的关系。

功能模型是描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。
业务模型是描述系统在何时、何地、由何角色、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。
数据模型是描述系统工作前的数据来自何处,工作中的数据存什么地方,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。
功能模型和业务模型是在需求分析时建模,是两个基本点。数据模型是一个中心,在设计时建模。功能模型和业务模型给数据模型提供数据与维护数据,数据模型支持功能模型和业务模型的正常运行。通常,数据模型建模用 Power Designer,ER win 或 Oracle Designer 工具实现;功能模型用功能点列表(或用况图)表示;业务模型用自然语言加上流程图(或顺序图)表示。

14面向对象实现” 的目标是什么?

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

15.面向对象的三个特性及解释

封装、寄存、多态
封装因为对象都对自己负责,所以,对象的很多东西都不需要或不可以暴露给其他对象。
比如:a不需要将所有的信息告诉别人;手机不能不封装而把CPU、内存卡等等都暴露给用户。封装解决了数据的安全性,内在也体现了‘每个对象都对自己负责’。
继承主要是实现了代码的复用。实现代码的复用,一种是组合、一种是继承,
多态定义对于多态,我们先下一个定义:同一个操作,作用于不同的对象,会产生不同的结果。说白了,就是一个相同的指令发出,不同的对象会对这个指令有不同的反应,所以称为多态。

16瀑布模型的优缺点:

优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。

缺点:1)开发过程一般不能逆转,否则代价太大;

2)实际的项目开发很难严格按该模型进行;

3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。

4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。

17.快速原型模型优缺点

优点

解决需求不明确带来的风险,适用于不能提前确定项目需求的项目

缺点

不利于开发人员对产品进行扩展

18.迭代模型

优点

1、第一个可交付版本的软件所需的成本与时间较小

2、能够适应客户的需求变更,当需求变化时,只需要修改某一个组件即可。

缺点

1、如果对用户需求的变更没有整体的规划,可能会变化为"边做边开发"的模式。

2、最终集成各个组件时,可能会出现集成失败的风险。

19喷泉模型

该模型主要采用面向对象技术。当客户需求基本类似时,在开发过程中可以采用面向对象的开发方式,将相同的模块全部封装起来,以便于下次功能开发时使用。模型如图所示:

优点

支持软件重用,并且开发过程无间隙性,分析、设计编码无明显边界,可交叉迭代进行。使软件在无法排除重大风险时有机会停止,以减小损失。

缺点

1、由于喷泉模型在各个阶段是重叠的,即每个对象都有分析、设计和编码阶段,所以需要大量开发人员。

2、大量开发人员不利于项目的管理。

3、该模型需要严格管理文档,会增加审核的难度增大。

20.螺旋模型

优点

螺旋模型强调风险分析,对每个演化层出现的风险都所了解,继而做出应有反应。因此特别适合用于庞大、复杂并且具有高风险的系统。螺旋模型支持用户需求的动态变化有助于提高产品的适应能力。

缺点

过多的迭代次数会增加开发成本,延迟提交时间。

21敏捷模型

优点

1、用户很快可以看到一个基线架构版的产品

2、敏捷注重市场快速反应能力,客户前期满意度高。

缺点

1、注重人员的沟通

2、忽略文档的重要性

3、如果项目人员流动大太,会增加项目维护难度

4、软件之前版本的可重现性、可回溯性较低

5、对于较大的项目,人员越多,面对面的有效沟通越困难。因此,该模型适用于小型项目的开发。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值