软件工程-习题-简答题 <编程 编程学习 IT料理>
软件工程习题 <编程 编程学习 IT料理>
- 软件工程的七条基本原理是什么?
答:软件工程的七条基本原理是:
(1) 用分阶段的是的生存周期计划严格管理;
(2) 坚持进行阶段评审;
(3) 严格实施的产品控制;
(4) 采用现代程序技术;
(5) 结果应能清楚地审查;
(6) 开发小组的成员应该少而精;
(7) 承认不断改进软件工程的必要性。
- 简述文档在软件工程中的作用。
答:
(1) 提高软件开发过程的能见度
(2) 提高开发效率
(3) 作为开发人员阶段工作成果和结束标志
(4) 记录开发过程的有关信息便于使用与维护;
(5) 提供软件运行、维护和培训有关资料;
(6) 便于用户了解软件功能、性能。
- 可行性研究包括哪几方面的内容?
答:
(1)经济可行性:是否有经济效益,多长时间可以收回成本;
(2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;
(3)运行可行性:系统操作在用户内部行得通吗?
(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
- 什么是模块化?模块设计的准则?
模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。
模块设计的准则:
(1) 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低耦合。
(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。
(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。
(4) 尽量降低模块接口的复杂程度;
(5) 设计单入口、单出口的模块。
(6) 模块的作用域应在控制域之内。
- 什么是模块独立性?用什么度量?
答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。独立性可以从两个方面来度量:即模块本身的内聚和模块之间的耦合。
- 什么是软件生存周期?把生存周期划分为阶段的目的是什么?
答:一个软件从开始计划起,到废弃不用止,成为软件的生存周期。把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理。
- 详细设计的任务是什么?
(1) 为每个模块确定采用的算法;
(2) 确定每一模块使用的数据结构;
(3) 确定模块接口的细节;
(4) 编写过程设计说明书;
(5) 设计每一模块的测试用例。
- 为什么说软件的维护是不可避免的?
因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。
- 软件的维护一般分为哪几类?
完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作
适应性维护:是软件适应新的运行环境而进行的工作
纠错性维护:纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程
预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。
- 分析软件危机产生的主要原因有哪些?
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加
- 什么是软件复用?简述软件复用和软件共享、软件移植的差别。
答:软件复用是指在构造新的软件系统的过程中,对已存在的软件人工制品的使用技术。如果是在一个系统中多次使用一个相同的软件成分,这叫软件共享;对一个软件进行修改,使它能运行于新的软、硬件平台这称作软件移植。
- 什么是软件再工程?软件再工程的主要活动有哪些?
答:软件再工程是运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合,并重新构建软件,用以提高软件的可理解性、可维护性、可复用性或演化性。主要活动:信息库分析、文档重构、逆向工程、代码重构、数据重构、正向工程。
- 模块的内聚性包括哪些类型?
(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚
- 可行性研究的目的?应该从哪些方面研究目标系统的可行性?
用最小的代价在尽可能短的时间内确定问题是否能够解决。(1)技术可行性(2)经济可行性(3)操作可行性(4)法律可行性
- 什么是类?类与对象间是什么关系?
类是对具有相同数据和相同操作的一组相似对象的定义。类是对具有相同属性和行为的一个或多个对象的描述,而对象是某个特定类所描述的一个具体对象。