软件工程知识点
PS:本文所对应教材为 Ian Sommerville 所著机械工业出版社出版的软件工程原书第九版。
一、软件工程概述
-
什么是软件工程?
软件工程是指一门指导软件开发与维护的工程科学,它把经过时间证明的有效管理技术和当前最好的软件开发技术方法结合起来,强调采用工程的概念、原理、技术和方法来开发与维护软件。
-
软件产品分为哪两类?
- 通用软件产品
- 定制软件产品
-
软件产品应该具有哪四个重要属性?
可维护性、可依赖和安全性、有效性、可用性。
-
软件工程方法学三要素:方法、工具和过程。
二、软件过程
-
软件过程有哪四个基本活动?请列举并给出解释。
- 软件描述 – 必须定义软件的功能以及软件操作上的约束。
- 软件设计和实现 – 必须生产符合描述的软件。
- 软件有效性验证 – 软件必须得到有效性验证。
- 软件进化 – 软件必须进化以满足不断变化的客户需要。
-
指出3种常见的软件过程模型,并说明应用场景,优缺点。
- 瀑布模型:在开发时间内需求不变化或变化较少的项目;分析设计人员对应用领域较熟悉的项目;低风险的项目;用户使用环境相对稳定的项目。优点:开发阶段清晰。 缺点:不可逆或很难可逆
- 增量式开发:在整个开发过程中,需求都可能发生变化,客户接受分阶段交付产品的项目;分析设计人员对应用领域不熟悉的项目;中高等风险项目;用户可参与到整个开发过程中的项目;使用面向对象语言或第四代语言开发的项目;大型软件系统。开发周期较长(超过1年);分批投资的项目。 优点:降低适应用户需求变更的成本;更好的与用户对接完成用户需求;更早使用软件并创造商业价值。缺点:程序与迭代,敏捷过程不匹配。
- 面向复用的软件工程:该方法是基于已存在的大量可复用的组件。系统开发过程着重于集成这些组件到新系统中,而非从头开发。优点:减少需要开发的软件数量,降低了成本,风险。 缺点:组件更新不可控,对系统进化的控制失效。
-
增量模型的优点?
- 项目可以分解为多个子系统,子系统之间边界清楚;
- 任务或功能模块驱动,可分阶段提交产品;
- 系统本身具有良好的模块化特征,模块内部高内聚,模块之间低耦合,模块本身信息隐蔽;
-
增量模型的缺点?
- 不适合各部分联系紧密的项目;
- 系统整体