软件工程

42 阅读6分钟

一、软件危机是什么及产生原因:

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

a) 软件不同与硬件,是逻辑部件;

b)     软件规模庞大,逻辑结构复杂;

c)     软件开发人员和管理人员只重视设计程序而轻视用户的需求分析,导致最后研制出的软件产品无法满足用户的需求;

d)     软件设计技术和管理技术落后,没有统一的软件质量管理规范;

e)     在软件的开发与维护关系问题上存在错误的概念,重视开发,而轻视维护。

二、软件的生命周期:

软件的生存周期包括:计划阶段、开发阶段、维护阶段

(1、问题定义:要解决的问题是什么

(2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性

(3、需求分析:系统必须做什么

(4、总体设计:系统如何实现,包括系统设计和结构设计

(5、详细设计:具体实现设计的系统

(6、实现:编码和测试

(7、运行维护:保证软件正常运行。

三、软件工程的定义:

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。

  ①早期定义:软件工程就是为了经济地获得可靠的且能在实际机器上有效运行的软件,而建立和使用完善的工程原理。

  ②把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件,以及研究以上提到的途径。

软件工程的本质特性:

  1. 软件工程关注于大型程序的构造
  2. 软件工程的中心课题是控制复杂性
  3. 软件经常变化
  4. 开发软件的效率非常重要
  5. 和谐的合作是开发软件的关键
  6. 软件必须有效地支持它的用户

软件工程的基本原理:

  1. 用分阶段的生命周期计划严格管理
  2. 坚持进行阶段评审
  3. 实行严格的产品控制
  4. 采用现代程序设计技术
  5. 结果应能清楚地审查
  6. 开发小组的人员应该少而精
  7. 承认不断改进软件工程实践的必要性

软件工程学方法的三要素:工具、方法和过程

目前使用广泛的软件工程学方法,分别是传统方法学和面向对象方法学。

四、什么是白盒测试?什么是黑盒测试?

白盒测试又称为结构测试,它的前提条件是可以看成将程序放在一个透明的白盒子中,也就是完全了解了软件系统的结构和整个处理过程。

黑盒测试又称为功能测试,它把程序看成是一个不透明的黑盒子,完全不去考虑程序的内部结构和处理过程。

五、简述软件质量三要素及其具体包括的内容。

答:软件质量要素可以分为三类,

第一类要素表现软件的运行特征,包括正确性、可靠性、有效性、安全性和可用性;

第二类要素表现软件承受修改的能力,包括可维护性、灵活性和可测试性;

第三类要素表现软件对新环境的适应程度,包括可移植性、可重用性和可互操作性。

六、什么是扇出?

扇出是一个模块直接调用的模块数目,一般推荐的扇出为3或4。

扇出是一个模块调用其他模块的数目,如果扇出过大,说明该模块的业务逻辑复杂,一般增加调用层数来降低扇出。

七、耦合性和内聚性有几种类型 其耦合度,内聚强度的顺序如何

低:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合:高
强:功能内聚,信息内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚:弱

  • 高内聚:顺序内聚、功能内聚
  • 中内聚:过程内聚、通信内聚
  • 低内聚:偶然内聚、逻辑内聚、时间内聚

 

八、典型的软件工程模型?

瀑布流模型,快速原型模型、螺旋模型,统一过程模型,敏捷模型。

瀑布模型

  1. 特点:①阶段间具有顺序性和依赖性 ②推迟实现的特点 ③质量保证的特点
  2. 优点:可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细检查。
  3. 缺点:不能应对需求的变化,由文档驱动

快速原型模型:

  • 特点:快速建立一个能反映客户主要需求的原型系统,让用户试用然后提出修改意见进行修改
  • 定义:是在开发真实系统之前构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作
Rational统一过程由RUP公司提出

      ***实践:

  1. 迭代式开发
  2. 管理需求
  3. 使用基于构件的体系结构
  4. 可视化建模
  5. 验证软件质量
  6. 控制软件变更

九、需求调研方法

竞品分析、观察、访谈、开会、原型和问卷调查。

结构化需求分析方法、数据流图、状态图和ER图

面向对象编程的几大原则: 抽象、分解、泛化、多态、分层和复用。

UML类图分析方法

1、通常对软件系统有下述几个方面的综合要求:

通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。

2、与用户沟通获取需求的方法访谈

  1. 访谈。有两种基本形式,分别是正式的和非正式的访谈。
  2. 面向数据流自顶向下求精。结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级。
  3. 简易的应用规格说明技术
  4. 快速建立软件原型

3、尽管目前有许多不同的用于需求分析的结构化分析方法,但是,所有这些分析方法都遵守下述准则:

  1. 必须理解并描述问题的信息域,根据这条准则应该建立数据模型。
  2. 必须定义软件应完成的功能,这条准则要求建立功能模型。
  3. 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型
  4. 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。