目录
1.1 软件危机
1、软件危机
在计算机软件的开发和维护过程中所遇到的一系列严重问题。几乎所有的软件,都不同程度地存在着这些问题。
2、软件危机主要包括如下两方面的问题:
①如何开发软件,以满足对软件日益增长的需求;
②如何维护数量不断膨胀的已有软件;
3、解决软件软件危机的途径
解决软件危机的途径是软件工程,按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出路。
4、产生软件危机的原因: 1. 只重视程序,忽视软件配置其余成分 2. 轻视软件维护
5、软件的实际配置: 程序、数据及文档的完整集合。
程序是能够完成预定功能和性能的可执行的指令序列。
数据是使程序能够适当地处理信息的数据结构。
文档是开发、使用和维护程序的图文资料。
6、软件工程学的目标: 提高软件可维护性,减少软件维护代价
1.2 软件工程
1、软件工程
软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,从而经济地开发出高质量的软件并有效地维护它。
2、软件工程的本质(主要)特征:
1)软件工程关注于大型程序的构造
2)软件工程的中心课题是控制复杂性
3)软件经常变化
4)开发软件的效率非常重要
5)和谐地合作是开发软件的关键
6)软件必须有效地支持它的用户
7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
3、软件工程的基本原理:
1)用分阶段的生命周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5)结果应能清楚地审查
6)开发小组的人员应该少而精
7)承认不断改进软件工程实践的必要性
4、软件工程方法学
在软件生命周期全过程中使用的一整套技术方法的集合称为软件工程方法学。
软件工程方法学包含3个要素:方法、工具和过程。
方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题。
工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境。
过程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
5、传统方法学、面向对象方法学
1)传统方法学(生命周期方法学或结构化范型)——强调自顶向下;
2)面向对象方法学——强调主动地多次反复迭代:
3)面向对象方法学4个要点:对象;类;继承;用消息通信
1.3 软件生命周期
软件生命周期各阶段基本任务:
1)问题定义:必须回答的关键问题是:要解决的问题是什么?
2)可行性研究:阶段回答的关键问题是:对于上一个阶段所确定的问题有行得通的解决办法吗?
3)需求分析:确定目标系统必须做什么,确定目标系统必须具备哪些功能。
4)总体设计:必须回答的关键问题是:概括地说,应该怎样实现目标系统?总体设计又称为概要设计。
5)详细设计:关键问题是:应该怎样具体地实现这个系统呢?
6)编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块。
7)综合测试:关键任务是通过各种类型的测试使软件达到预定的要求。
8)软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。
1.4 软件过程
1、软件过程的定义: 为了获得高质量软件所需要的一系列任务的框架,规定了完成各项任务的工作步骤,是软件工程三要素之一的过程。
2、软件生命周期模型:软件过程通常用软件生命周期模型来描述,它规定了把生命周期划分成哪些阶段以及各个阶段执行的顺序,也称为过程模型。
3、典型的生命周期模型
1)瀑布模型:1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.质量保证的观点。
它的优势在于它是规范的、文档驱动的方法,这种模型的问题是最终开发出的软件产品可能并不是用户真正需要的。
2)快速原型模型:正是为了克服瀑布模型的缺点而提出来的。它通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。是它所能完成的功能往往是最终产品能完成功能的一个子集。优点是软件产品的开发基本上是线性顺序进行的。
3)增量模型:它分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件一个构件地向用户提交产品。优点是能在较短时间内向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一全新的软件可能给客户组织带来的冲击。增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是要求软件具有开放的结构是使用这种模型时固有的困难。
4)螺旋模型:基本思想是使用原型及其他方法来尽量降低风险理解这种模型的一个简单方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。(使用于内部开发的大规模软件项目,但是只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。)
5)喷泉模型:强调的是“迭代(求精)”和“无缝“的特性,是典型的面向对象的软件过程模型之一。喷泉模型较好地体现了面向对象软件开发过程无缝迭代的特性。
6)1998年首次推出的Rational统一过程(RUP)是一个具有突出优点的软件过程模型。它提供了理想开发环境下软件过程的一种完整而且完美的模式,可以作为对一个项目进行软件开发的良好开端。
近年来推出的以极限编程(XP)为杰出代表的敏捷过程,具有对变化和不确定性的更快速、更敏捷的反应特性,因此能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束,可以作为对RUP的补充和完善,但是,作为一种软件过程模式,敏捷过程远不如RUP全面和完整。
多年的实践经验证明,微软过程是非常成功和行之有效的。一方面,可以把微软过程看作RUP的一个精简配置版本,整个过程包含若干个生命周期的持续递进循环,每个生命周期由5个阶段组成,每个阶段精简为由一次迭代完成,另一方面,可以把微软过程看作敏捷过程的一个扩充版本,它扩充了每个生命周期内的各个阶段的具体工作流程。