软件生产随规模增大而复杂度增大 ●以美国宇航局的软件系统为例 1963年水星计划系统 200万条指令 1967年双子星座计划系统400万条指令 1973年阿波罗计划系统 1000万条指令 1979年哥伦比亚航天飞机系统4000万条指令 假设1个人一年生产一万条有效指令,那么是否4000 人生产一年,或400人生产10年就能完成任务吗?答 上一页 案是否定的。一万条指令的复杂度决不仅仅是100条 停止放映 指令复杂度的100倍 下一页 第26页
下一页 上一页 停止放映 第26页 软件生产随规模增大而复杂度增大 ⚫ 以美国宇航局的软件系统为例: –1963年 水星计划系统 200万条指令 –1967年 双子星座计划系统 400万条指令 –1973年 阿波罗计划系统 1000万条指令 –1979年 哥伦比亚航天飞机系统 4000万条指令 ⚫ 假设1个人一年生产一万条有效指令,那么是否4000 人生产一年,或400人生产10年就能完成任务吗?答 案是否定的。一万条指令的复杂度决不仅仅是100条 指令复杂度的100倍
典型失败系统的例子 ●IBM公司开发0S/360系统,共有4000多 个模块,约100万条指令,投入5000人 年,耗资数亿美元,结果还是延期交付。 在交付使用后的系统中仍发现大量 (2000个以上)的错误。 上一页 停止放映 下一页 第27页
下一页 上一页 停止放映 第27页 典型失败系统的例子 ⚫ IBM公司开发OS/360系统,共有4000多 个模块,约100万条指令,投入5000人 年,耗资数亿美元,结果还是延期交付。 在交付使用 后的系统中仍发现大 量 (2000个以上)的错误
软件危机产生的原因 ●产生软件危机有两个方面的原因 内部因素。与软件本身的特点有关。 内在因素是客观的存在,只能因势利 导加以解决。 外部因素。与软件开发和维护的技术 方法有关。外部因素是可以完善、提 高的。 上一页 停止放映 下一页 第28页
下一页 上一页 停止放映 第28页 软件危机产生的原因 ⚫ 产生软件危机有两个方面的原因: –内部因素。与软件本身的特点有关。 内在因素是客观的存在,只能因势利 导加以解决。 –外部因素。与软件开发和维护的技术 方法有关。外部因素是可以完善、提 高的
软件特点的因素 ●软件是逻辑产品,是代码化了的人的思维 活动。在总体构思时,别人无法管理和干 预。在写出程序、并在机器上运行之前, 进展情况难以掌握,开发质量也无法评估。 这些都给管理和控制带来不便。 ●软件是特定问题在计算机上的运行描述。 实际问题的复杂性决定了一个实用软件系 上一页 统规模往往十分庞大。程序规模越大,控 停止放映制、管理难度也就越大。 下一页 第29页
下一页 上一页 停止放映 第29页 软件特点的因素 ⚫ 软件是逻辑产品,是代码化了的人的思维 活动。在总体构思时,别人无法管理和干 预。在写出程序、并在机器上运行之前, 进展情况难以掌握,开发质量也无法评估。 这些都给管理和控制带来不便。 ⚫ 软件是特定问题在计算机上的运行描述。 实际问题的复杂性决定了一个实用软件系 统规模往往十分庞大。程序规模越大,控 制、管理难度也就越大
软件开发维护技术方法的因素 ●开发人员和用户之间的矛盾。许多软件系统开发失 败的主要原因是开发人员在没有准确、完整地了解 用户的需求后就急于编程;用户对需求也往往不 能准确、完整地提出。 软件产品有其生命周期。在周期的各个阶段有其具 体的任务,如何完成任务,各个阶段有不同的技术 方法和操作步骤。只有科学的按生命周期各阶段的 任务去组织实施,才能保证质量,降低成本;急于 求成,不按科学规律、方法实施,只能“事倍功 半”,事与愿违。 上一页 硬件的更新换代,都要对软件进行必要的修改。据 停止放映 统计数据表明,软件维护的费用占总费用的55%~70%。 下一页 软件工程的一个重要目标就是提高软件的可维护性 减少软件维护的代价。 第30页
下一页 上一页 停止放映 第30页 软件开发维护技术方法的因素 ⚫ 开发人员和用户之间的矛盾。许多软件系统开发失 败的主要原因是开发人员在没有准确、完整地了解 了用户的需求后就急于编程;用户对需求也往往不 能准确、完整地提出。 ⚫ 软件产品有其生命周期。在周期的各个阶段有其具 体的任务,如何完成任务,各个阶段有不同的技术 方法和操作步骤。只有科学的按生命周期各阶段的 任务去组织实施,才能保证质量,降低成本;急于 求成,不按科学规律、方法实施,只能“事倍功 半” ,事与愿违。 ⚫ 软件产品的使用寿命很长。在这期间因功能的增加、 硬件的更新换代,都要对软件进行必要的修改。据 统计数据表明,软件维护的费用占总费用的55%~70%。 软件工程的一个重要目标就是提高软件的可维护性, 减少软件维护的代价