类别参加人数研制期限产品规模(源代码行数)微型11-4周约500行1小型1-6周约2000行2-5中型1-2年5000-50000行5-202-3年大型5万-10万行45年甚大型100-1000100万行5-10年极大型2000-50001000万行3,按软件工作方式划分:实时处理软件、分时软件、交互式软件、批处理软件4.按软件服务对象的范围划分:项目软件、产品软件5,按软件使用的频度划分:一次使用、频繁使用6.按软件失效的影响划分:高可靠性软件、一般可靠性软件1.2软件危机指的是软件开发和维护过程中所遇到的一系列严重问题。1.2.1软件危机的主要表现1实际投入常常要比预算成本超出很多(成本、进度)。2.产品不符合用户的实际需要。软件开发人员与用户之间信息交流往往很不充分,造成软件人员对用户要求理解上有差异和遗漏,甚至对要解决的问题还是模糊不清的情况下,就仓促着手编程序,最终导致软件产品不符合用户的实际需要。3.软件产品的质量难以保证(常出错、总有错)。4.软件常常是不可维护的(很难改动、重复开发浪费大)。5.软件通常没有相应的完整的文档资料。6.软件成本在计算机系统总成本中所占的比例逐年上升。53%7.软件开发的生产率低,供不应求。差退光成,超出孩童和成特性就失软件开发项目结果统计:1.2.23软件危机的突出事例2004年完成的9000多个项目的结果统计1.IBM公司在19631966开发的OS(用于IBM360机)
3.按软件工作方式划分:实时处理软件、分时软件、交互式软件、批处理软件 4.按软件服务对象的范围划分:项目软件、产品软件 5.按软件使用的频度划分:一次使用、频繁使用 6.按软件失效的影响划分:高可靠性软件、一般可靠性软件 1.2 软件危机 指的是软件开发和维护过程中所遇到的一系列严重问题。 1.2.1 软件危机的主要表现 1.实际投入常常要比预算成本超出很多(成本、进度)。 2.产品不符合用户的实际需要。软件开发人员与用户之间信息交流往往很不充 分,造成软件人员对用户要求理解上有差异和遗漏,甚至对要解决的问题还是模糊不 清的情况下,就仓促着手编程序,最终导致软件产品不符合用户的实际需要。 3.软件产品的质量难以保证(常出错、总有错)。 4.软件常常是不可维护的(很难改动、重复开发浪费大)。 5.软件通常没有相应的完整的文档资料。 6.软件成本在计算机系统总成本中所占的比例逐年上 升。 7.软件开发的生产率低,供不应求。 软件开发项目结果统计: 1.2.2 软件危机的突出事例 1.IBM 公司在 1963—1966 开发的 OS(用于 IBM360 机)
项目工作量:5000人年项目规模:近100万行源程序最多同时有1000人投入开发工作结果却非常糟糕:每次发行新版本,都要更正前一版本中的大约1000个程序错误。Brooks在1972年沉痛地总结说:“正像一只逃亡的野兽掉入泥潭,越是挣扎,陷入得越深,最后无法逃脱灭顶的灾难..程序设计工作就像这样的泥潭..一批批程序员被迫在泥潭中挣扎..谁也没有料到问题竞如此棘手”2.1993年距伦敦90英里的塞兹韦尔核电站正式投入运行,但是,工作人员很快发现核电站的反应堆内温度控制失灵。事后查明,在反应堆的主要保护系统中,有一个10万行代码的控制软件几乎有一半未能通过测试。3.80年代中期,加拿大一家原子能公司生产的、由微处理机控制的癌症治疗仪,在美国和加拿大的多家医院使用,致使6个病人因超剂量辐射而受到严重伤害甚至死亡。4.海湾战争中,一个软件故障打乱了“爱国者”导弹雷达跟踪系统,使导弹发射后未能迎击对方的“飞毛腿”导弹,反而轰击了自已的军营,造成28名士兵丧生,98人死伤。事后查明是由于二个时间累计错误引起的。但是以前每次只运行几小时就重启,所起从来没发现过。5.1996年欧洲航天局发射的阿丽亚娜5型火箭,在发射40秒钟后爆炸,发射场上2名法国士兵当场死亡。这个耗资10亿美元、历时9年的航天计划严重受挫,引起了国际宇航界的震惊。事故发生后,专家组成的调查分析报告指明,爆炸的原因在于惯性导弹导航系统软件中技术要求和设计的错误。6.德国曾由于电话计费系统的软件问题而发生用户需多交付不合理电话费的事件,引起了公众的抗议。1.2.3软件危机带来经济上的影响1.78%的信息技术组织卷入到纠纷当中并最终以诉讼方式中止。2.67%的交付软件产品性能或功能没有达到软件开发者所声称程度
项目工作量:5000 人年 项目规模: 近 100 万行源程序 最多同时有 1000 人投入开发工作 结果却非常糟糕:每次发行新版本,都要更正前一版本中的大约 1000 个程序错 误。 Brooks 在 1972 年沉痛地总结说:“正像一只逃亡的野兽掉入泥潭,越是挣扎,陷 入得越深,最后无法逃脱灭顶的灾难.程序设计工作就像这样的泥潭.一批批程 序员被迫在泥潭中挣扎.谁也没有料到问题竟如此棘手.” 2.1993 年距伦敦 90 英里的塞兹韦尔核电站正式投入运行,但是,工作人员很快 发现核电站的反应堆内温度控制失灵。事后查明,在反应堆的主要保护系统中,有一 个 10 万行代码的控制软件几乎有一半未能通过测试。 3.80 年代中期,加拿大一家原子能公司生产的、由微处理机控制的癌症治疗仪, 在美国和加拿大的多家医院使用,致使 6 个病人因超剂量辐射而受到严重伤害甚至死 亡。 4.海湾战争中,一个软件故障打乱了“爱国者”导弹雷达跟踪系统,使导弹发 射后未能迎击对方的“飞毛腿”导弹,反而轰击了自己的军营,造成 28 名士兵丧生, 98 人死伤。事后查明是由于一个时间累计错误引起的。但是以前每次只运行几小时就 重启,所起从来没发现过。 5.1996 年欧洲航天局发射的阿丽亚娜 5 型火箭,在发射 40 秒钟后爆炸,发射场 上 2 名法国士兵当场死亡。这个耗资 10 亿美元、历时 9 年的航天计划严重受挫,引 起了国际宇航界的震惊。事故发生后,专家组成的调查分析报告指明,爆炸的原因在 于惯性导弹导航系统软件中技术要求和设计的错误。 6.德国曾由于电话计费系统的软件问题而发生用户需多交付不合理电话费的事 件,引起了公众的抗议。 1.2.3 软件危机带来经济上的影响 1.78%的信息技术组织卷入到纠纷当中并最终以诉讼方式中止。 2.67%的交付软件产品性能或功能没有达到软件开发者所声称程度
3.56%的项目承诺交付日期几次推迟。4.45%的软件差错非常严重,以致软件产品无法使用。(据CutterConsortium【2002】调查统计)1.2.4软件危机产生的原因软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运行之前,很难检验开发的正确性,而且软件开发的质量也较难评价。软件不同于一般程序,它的一个显著特点是规模庞大。虽然软件本身独有的特点确实给开发和维护带来一些客观困难,但是人们在开发和使用计算机系统的长期实践中,也确实积累和总结出了许多成功的经验。开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。在软件的开发与维护关系问题上存在错误的概念。1.产生根源:与软件本身的特点有关与参加软件开发人员的智力有关与开发软件产品的管理水平有关2.软件的特点:硬件一一物理部件计划、需求分析、设计、试制、测试、生产、使用与维护坏了可用备件替换软件——逻辑部件计划、需求分析、设计、实现、测试、使用与维护维护意味修改、但是可拷贝逻辑产品、不会用坏,不存在磨损、消耗问题主要是研制、是脑力劳动,大部分应用软件“定做
3.56%的项目承诺交付日期几次推迟。 4.45%的软件差错非常严重,以致软件产品无法使用。 (据 Cutter Consortium【2002】调查统计) 1.2.4 软件危机产生的原因 软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。在写出程序代 码并在计算机上试运行之前,很难检验开发的正确性,而且软件开发的质量也较难评 价。 软件不同于一般程序,它的一个显著特点是规模庞大。 虽然软件本身独有的特点确实给开发和维护带来一些客观困难,但是人们在开发 和使用计算机系统的长期实践中,也确实积累和总结出了许多成功的经验。 开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需 求。 软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。 在软件的开发与维护关系问题上存在错误的概念。 1.产生根源: 与软件本身的特点有关 与参加软件开发人员的智力有关 与开发软件产品的管理水平有关 2.软件的特点: 硬件──物理部件 计划、需求分析、设计、试制、测试、生产、使用与维护 坏了可用备件替换 软件──逻辑部件 计划、需求分析、设计、实现、测试、使用与维护 维护意味修改、但是 可拷贝 逻辑产品、不会用坏,不存在磨损、消耗问题 主要是研制、是脑力劳动,大部分应用软件“定做
成本昂贵,费用不断增加,其发展远落后于硬件!“瓶颈”3.软件开发人员的智力:软件开发一一人的思维活动软件质量一一开发人员的文化素质、逻辑抽象思维能力、表达能力以及人体素质错误观念:对用户要求没有完整准确的认识就勿忙着手编写程序。即,只要描述的问题域.有一个初步的概括,就足以着手编写程序了,许多细节可以在以后再补充。·所谓软件开发就是编写程序,只要设法使程序能运行起来就行了。·开发软件的工作应由计算机软件专业人员独立完成,用户不必参与。4.管理技术:成本估计和控制进度计划人员组织文档技术审查与复审1.2.55软件危机解决办法消除软件危机的途径:彻底清除“软件就是程序”的错误观念:充分认识到软件开发不是某种个体劳动的神秘技巧:应该推广使用在实践中总结出来的开发软件的成功的技术和方法:应该开发和使用更好的软件工具。先进的技术措施(方法和工具)科学的组织管理措施软件工程
成本昂贵,费用不断增加,其发展远落后于硬件!“瓶颈” 3.软件开发人员的智力: 软件开发──人的思维活动 软件质量——开发人员的文化素质、逻辑抽象思维能力、表达能力以及人体 素质 错误观念: • 对用户要求没有完整准确的认识就匆忙着手编写程序。即,只要描述的问题域 有一个初步的概括,就足以着手编写程序了,许多细节可以在以后再补充。 • 所谓软件开发就是编写程序,只要设法使程序能运行起来就行了。 • 开发软件的工作应由计算机软件专业人员独立完成,用户不必参与。 4.管理技术: 成本估计和控制 进度计划 人员组织 文档 技术审查与复审 1.2.5 软件危机解决办法 消除软件危机的途径: 彻底清除“软件就是程序”的错误观念; 充分认识到软件开发不是某种个体劳动的神秘技巧; 应该推广使用在实践中总结出来的开发软件的成功的技术和方法 ; 应该开发和使用更好的软件工具。 先进的技术措施(方法和工具) 科学的组织管理措施 ————软件工程
1.3软件工程13.1什么是软件工程1.软件工程SoftwareEngineering于1968年NATO组织在德国召开的一次会议上提出。是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。2.定义:是指导计算机软件开发和维护的工程学科。3.软件工程项目的基本目标一一保证项目成功付出较低成本,达到要求功能,取得较好性能,按时完工,易移植,易维护,运行可靠。(低开发成本)4.软件工程学:(易于维护)(按时交付)软件开发方法学软件工具软件开发技术软件工程环境(高可靠性)高性能软件工程学一互斥关系一一互补关系软件工程管理学软件工程管理软件经济学软件工程学的范畴微软企业文化宗部分内容:Wake up every day with a feeling of passion for the different technology will make inpeople'sLife.每天醒来的时候,要对技术给生活造成的改变始终拥有一份激情。1.3.23软件工程的基本原理1. 用分阶段的生命周期计划严格管理。建立完善的计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划和运行维护计划2.坚持进行阶段评审。3.实行严格的产品控制。基准配置管理4.采用现代程序设计技术
1.3 软件工程 1.3.1 什么是软件工程 1.软件工程 Software Engineering 于 1968 年 NATO 组织在德国召开的一次会议上提出。是把软件当作一种工业产 品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。 2.定义:是指导计算机软件开发和维护的工程学科。 3.软件工程项目的基本目标——保证项目成功 付出较低成本,达到要求功能,取得较好性能,按时完工,易移植,易维护, 运行可靠。 4.软件工程学: 微软企业文化宗旨部分内容: Wake up every day with a feeling of passion for the different technology will make in people’s Life. 每天醒来的时候,要对技术给生活造成的改变始终拥有一份激情。 1.3.2 软件工程的基本原理 1. 用分阶段的生命周期计划严格管理。 建立完善的计划:项目概要计划、里程碑计划、项目控制计划、产品控制计 划、验证计划和运行维护计划 2. 坚持进行阶段评审。 3. 实行严格的产品控制。 基准配置管理 4. 采用现代程序设计技术