软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。
(一)计算机软件
计算机软件是指计算机系统中的程序及其文档。
程序是计算任务的处理对象和处理规则的描述。
文档是为了便于了解程序所需的阐述性资料。
1.系统软件
系统软件是一整套服务于其他程序的程序。
系统软件的特点:
- 和计算机硬件大量交互;
- 多用户大量使用;
- 需要调度、资源共享和复杂进程管理的同步操作;
- 复杂的数据结构及多种外部接口。
2.应用软件
应用软件是解决特定业务需要的独立应用程序。
3.工程/科学软件
这类软件通常带有“数值计算”算法的特征。
4.嵌入式软件
嵌入式软件存在于某个产品或系统中,可实现和控制面向最终使用者和系统本身的特性和功能。
5.产品线软件
产品线软件关注有限的特定专业市场(如库存控制产品)或大众消费市场(如文字处理、多媒体、数据库管理等)。
6.Web应用
Web
应用是一类以网络为中心的软件,其概念涵盖了宽泛的应用程序产品。
7.人工智能软件
人工智能软件利用非数值算法解决计算和直接分析无法解决的复杂问题。包括:机器人、专家系统、模式识别等。
8.开放计算
无线网络的快速发展将促成真正的普适计算、分布式计算的实现。
9.网络资源
万维网已经快速发展为一个计算引擎和内容提供平台。
10.开源软件
开源软件就是开发系统应用程序的代码,使得很多人能够为软件开发做贡献。
(二)软件工程基本原理
1.用分阶段的生命周期计划严格管理
应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。
六类计划:
- 项目概要计划
- 里程碑计划
- 项目控制计划
- 产品控制计划
- 验证计划
- 运行维护计划
2.坚持进行阶段评审
在每个阶段都应进行严格的评审,以便尽早发现在软件开发过程中所犯的错误。
3.实现严格的产品控制
在改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。
一切有关修改软件的建议,特别是涉及基准配置的修改建议,都必须按照严格的规程进行评审,在获得批准后才能实施修改。
4.采用现代程序设计技术
采用先进的技术既可以提高软件开发的效率,又可以降低软件维护的成本。
5.结果应能清楚地审查
为了更好地进行管理,应根据软件开发的总目标及完成期限尽量明确地规定开发小组的责任和产品标准,从而使所得到的结果能够清楚地审查。
6.开放小组的人员应少而精
开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。
7.承认不断改进软件工程实践的必要性
用户不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计。
(三)软件生存周期
1.可行性分析与项目开放计划
这个阶段主要确定软件的开发目标及其可行性。
可行性分析与项目计划阶段的参加人员有用户、项目负责人和系统分析师。
产生的主要文档有可行性分析报告和项目开发计划。
2.需求分析
确定软件系统必须做什么,确定软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型。
参加的人员有用户、项目负责人和系统分析师。
产生的主要文档有软件需求说明书。
3.概要设计
在这个阶段,开发人员要把确定的各项功能需求转换成需要的体系结构。每个成分都是意义明确的模块,即每个模块都和某些功能需求相对应。
参加人员有系统分析师和软件设计师。
产生的主要文档有概要设计说明书。
4.详细设计
在这个阶段主要任务是对每个模块完成的功能进行具体描述,要把功能描述转变为精确的、结构化的过程描述。
参加人员有软件设计师和程序员。
产生的主要文档有详细设计文档。
5.编码
这个阶段是把每个模块的控件结构转换成计算机可接收的程序代码,即写成某种特定程序设计语言表示的源程序清单。
6.测试
测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检查软件的各个组成部分。
产生的主要文档有软件测试计划、测试用例和软件测试报告。
7.维护
是软件生存周期中时间最长的阶段。
在软件运行过程中可能由于各方面的原因需要对它进行修改。
(四)软件过程
1.能力成熟度模型(CMM)
CMM
是对软件组织进行阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。
CMM
将软件过程改进分为以下五个成熟度级别:
- 初始级
- 可重复级
- 已定义级
- 已管理级
- 优化级
2.能力成熟度模型集成(CMMI)
CMMI
提供了两种表示法:
- 阶段式模型
五个成熟度:- 初始的
- 已管理的
- 已定义的
- 定量管理的
- 优化的
- 连续式模型
六个过程域:-
CL0
(未完成的) -
CL1
(已执行的) -
CL2
(已管理的) -
CL3
(已定义级的) -
CL4
(定量管理的) -
CL5
(优化的)
-