一、软件的定义
百科: 是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。
1983年IEEE: 计算机程序,文档,运行程序必须的数据,方法,规则。方法和规则在文档中说明,在程序中实现。
简化: 软件=程序+数据+文档
二、软件的分类
-
功能划分
划分基础:按应用范围划分,一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。
-
授权类别
划分基础:不同的软件一般都有对应的软件授权,软件的用户必须在同意所使用软件的许可证的情况下才能够合法的使用软件。从另一方面来讲,特定软件的许可条款也不能够与法律相违背。
三、软件危机
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。
-
软件危机包含
如何开发软件,以满足对软件日益增长的需求;
如何维护数量不断膨胀的已有软件。
-
典型表现
- 对软件开发成本和进度的估计常常很不准确。
- 用户对“已完成的”软件系统不满意的现象经常发生。
- 软件产品的质量往往靠不住。
- 软件常常是不可维护的。
- 软件通常没有适当的文档资料。
- 软件成本在计算机系统总成本中所占的比例逐年上升。
- 由于软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深人的趋势。
-
软件危机的原因
在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
-
消除软件危机的方法
为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施
四、软件工程概述
-
软件工程的定义
一般: 软件工程是指导计算机开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来了,以经济地开发出高质量的软件并有效维护他,这就是软件工程。
1993年IEEE的定义: 软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①的种提到的途径如何维护数量不断膨胀的已有软件。
-
软件工程的本质
- 软件工程关注大型程序的构造
- 软件工程的中心课题是控制复杂性
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地合作是开发软件的关键
- 软件必须有效地支持它的用户
- 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
-
软件工程的基本原理
1983年软件工程专家B.W.Boehm提出7条基本原理:
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 开发小组人员应该少而精
- 承认不断改进软件工程实践地必要性
-
软件工程方法学
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)
包含三个要素:
使用最广泛:
五、软件生命周期
软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步分为若干个阶段
-
软件定义时期
- 问题定义
- 可行性研究
- 需求分析
-
软件开发时期
- 总体设计
- 详细设计
- 编码和单元测试
- 综合测试
-
运行维护时期
- 软件维护
六、软件过程
-
软件过程的概念
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤
概括地说,软件过程描述为了开发出客户需要的软件,什么人(who)、在什么时候(when)、做什么事(what)以及怎样(how)做这些事以实现某一个特定的具体目标。
通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分为哪些阶段及各个阶段地执行顺序,因此,也称为过程模型
-
软件过程模型
- 瀑布模型
- 快速原型模型
- 增量模型
- 螺旋模型
- 喷泉模型
- IBM-Rational统一过程(迭代模型)
- 最佳实践(历史经验)
- 迭代式开发
- 管理需求
- 使用基于构件的体系结构
- 可视化建模
- 验证软件质量
- 控制软件变更
- RUP软件开发生命周期
- 核心工作流(工作流(WorkFlow)就是工作流程的计算模型)
- 工作阶段
- 迭代式开发
- 最佳实践(历史经验)
- 敏捷过程与极限编程
- 敏捷过程价值观声明
①个体交互胜过过程和工具
②可以工作的软件胜过面面俱到的文档
③客户合作胜过合同谈判
④响应变化胜过遵循计划 - 极限编程
①极限编程的有效实践
②极限编程的整体开发过程
③极限编程的迭代过程
- 敏捷过程价值观声明
- 微软过程
- 微软过程准则
- 微软软件生命周期
- 微软过程模型
- 微软过程准则
PS:传统方法学和面向对象方法学
在面对软件规模庞大或对软件地需求模糊易变时,采用生命周期方法学开发往往不成功,近年来许多应用领域面向对象方法学已经迅速取代了生命周期方法学,面对方法学有4个要点,概括如下
面向对象方法=对象+类+继承+用消息通讯