1软件工程学概述(1).ppt
信息工程大学电子技术学院信息工程大学电子技术学院软件工程软件工程Software Engineering402402402402教研室教研室教研室教研室 费晓飞费晓飞费晓飞费晓飞办公室:办公室:办公室:办公室:1606160616061606电话:电话:电话:电话:13523512977135235129771352351297713523512977Email:Email:Email:Email:fei_fei_信息工程大学电子技术学院信息工程大学电子技术学院课程简介课程简介课程内容课程内容w从系统工程角度讲述软件开发的过程、从系统工程角度讲述软件开发的过程、步骤、方法与技术步骤、方法与技术 w软件开发与维护的原则、技术及方法软件开发与维护的原则、技术及方法w帮助建立良好的软件工程观念帮助建立良好的软件工程观念 思考:如果现在参加课题组,能胜任什么工作?如果现在负责项目,应该如何组织管理?信息工程大学电子技术学院信息工程大学电子技术学院课程知识结构课程知识结构Chp.1 软件工程学概述软件工程学概述Chp.2 可行性研究可行性研究Chp.5-6设计设计Chp.7 编码与测试编码与测试Chp.8 维护维护Chp.3需求分析需求分析Chp.9 面向对象方法引论面向对象方法引论Chp.13 软件项目管理软件项目管理Chp.10 面向对象分析面向对象分析Chp.11 面向对象设计面向对象设计Chp.12 面向对象实现面向对象实现补充补充CMMIPSP信息工程大学电子技术学院信息工程大学电子技术学院软件工程软件工程第第1 1章章 软件工程学概述软件工程学概述信息工程大学电子技术学院信息工程大学电子技术学院1.1软件危机1.21.2软件工程软件工程1.31.3软件生命周期软件生命周期1.41.4软件过程软件过程主要内容主要内容信息工程大学电子技术学院信息工程大学电子技术学院w计算机系统的发展历程计算机系统的发展历程w软件危机的内涵软件危机的内涵w产生软件危机的原因产生软件危机的原因w解决软件危机的途径解决软件危机的途径软件危机信息工程大学电子技术学院信息工程大学电子技术学院计算机系统的发展历程计算机系统的发展历程过程过程文档文档硬件硬件人人数据库数据库软件软件系统系统输入输入输出输出基于计算机系统的系统元素基于计算机系统的系统元素信息工程大学电子技术学院信息工程大学电子技术学院计算机系统的发展历程计算机系统的发展历程w早期早期(20(20世纪世纪6060年代中期以前年代中期以前)个体化的软件环境个体化的软件环境w第第2 2代代(2020世纪世纪6060年代中期到年代中期到7070年代中期)年代中期)软件作坊软件作坊w第第3 3代代(2020世纪世纪7070年代中期开始)年代中期开始)微处理器出现微处理器出现w第第4 4代代(2020世纪世纪7070年代后期至今)年代后期至今)更强大的硬件和软件更强大的硬件和软件信息工程大学电子技术学院信息工程大学电子技术学院软件危机的内涵软件危机的内涵w来源来源 19681968年,北大西洋公约组织年,北大西洋公约组织NATONATO的计算机科学家,在联邦德国召的计算机科学家,在联邦德国召开国际会议,正式提出并讨论开国际会议,正式提出并讨论软件危机软件危机问题。问题。w定义定义 软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。重问题。w两方面问题两方面问题 如何开发软件如何开发软件满足对软件日益增长的需求满足对软件日益增长的需求 如何维护软件如何维护软件维护数量不断膨胀的已有软件维护数量不断膨胀的已有软件w其它名称其它名称 软件萧条软件萧条(Software depression)(Software depression)、软件困扰、软件困扰(Software affliction)(Software affliction)信息工程大学电子技术学院信息工程大学电子技术学院例例:美国美国IBM公司在公司在1963年至年至1966年开发的年开发的IBM360机的操作系统。这一项目花了机的操作系统。这一项目花了5000人一人一年的工作量,最多时有年的工作量,最多时有1000人投入开发工作,人投入开发工作,写出了近写出了近100万行源程序。万行源程序。.据统计,这个据统计,这个操作系统每次发行的新版本都是从前一版本中操作系统每次发行的新版本都是从前一版本中找出找出1000个程序错误而修正的结果。个程序错误而修正的结果。.软件危机案例(软件危机案例(1)信息工程大学电子技术学院信息工程大学电子技术学院 这个项目的负责人这个项目的负责人这个项目的负责人这个项目的负责人F.D.BrooksF.D.BrooksF.D.BrooksF.D.Brooks事后总结了他在组织开事后总结了他在组织开事后总结了他在组织开事后总结了他在组织开发过程中的沉痛教训时说:发过程中的沉痛教训时说:发过程中的沉痛教训时说:发过程中的沉痛教训时说:“.正像一只逃亡的野兽落正像一只逃亡的野兽落正像一只逃亡的野兽落正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。脱灭顶的灾难。脱灭顶的灾难。脱灭顶的灾难。.程序设计工作正像这样一个泥潭,程序设计工作正像这样一个泥潭,程序设计工作正像这样一个泥潭,程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,一批批程序员被迫在泥潭中拼命挣扎,一批批程序员被迫在泥潭中拼命挣扎,一批批程序员被迫在泥潭中拼命挣扎,.谁也没谁也没谁也没谁也没有料到问题竟会陷入这样的困境有料到问题竟会陷入这样的困境有料到问题竟会陷入这样的困境有料到问题竟会陷入这样的困境.”。IBM360IBM360IBM360IBM360操作系统操作系统操作系统操作系统的历史教训成为软件开发项目的典型事例为人们所记取。的历史教训成为软件开发项目的典型事例为人们所记取。的历史教训成为软件开发项目的典型事例为人们所记取。的历史教训成为软件开发项目的典型事例为人们所记取。软件危机案例(软件危机案例(2)信息工程大学电子技术学院信息工程大学电子技术学院软件危机案例(软件危机案例(3)项目没有被很好地理解;计划不周,最终导致进度项目没有被很好地理解;计划不周,最终导致进度项目没有被很好地理解;计划不周,最终导致进度项目没有被很好地理解;计划不周,最终导致进度拖延。拖延。拖延。拖延。没有充分的文档资料没有充分的文档资料没有充分的文档资料没有充分的文档资料 软件可靠性软件可靠性软件可靠性软件可靠性缺少度量的标准,质量无法保证。而如缺少度量的标准,质量无法保证。而如缺少度量的标准,质量无法保证。而如缺少度量的标准,质量无法保证。而如何保证软件产品的质量,是非常复杂困难的问题。何保证软件产品的质量,是非常复杂困难的问题。何保证软件产品的质量,是非常复杂困难的问题。何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件。特别对于规模庞大的软件。特别对于规模庞大的软件。特别对于规模庞大的软件。软件难以维护软件难以维护软件难以维护软件难以维护 ,不易升级。不易升级。不易升级。不易升级。w问题出在哪里?问题出在哪里?信息工程大学电子技术学院信息工程大学电子技术学院软件危机的内涵软件危机的内涵w典型表现典型表现n软件开发成本和进度的估计常常很不准确软件开发成本和进度的估计常常很不准确n用户对用户对“已完成的已完成的”软件系统不满意的现象经常发生软件系统不满意的现象经常发生n软件产品的质量往往靠不住软件产品的质量往往靠不住n软件常常是不可维护的软件常常是不可维护的n软件通常没有适当的文档资料软件通常没有适当的文档资料n软件成本在计算机系统总成本中所占的比例逐年上升软件成本在计算机系统总成本中所占的比例逐年上升n软件开发生产率提高的速度远远跟不上计算机应用迅软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势速普及深入的趋势 信息工程大学电子技术学院信息工程大学电子技术学院产生软件危机的原因产生软件危机的原因w软件本身的客观特点软件本身的客观特点 软件是计算机系统中的逻辑部件,软件开发过软件是计算机系统中的逻辑部件,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价,程的进展情况较难衡量,软件开发的质量也较难评价,因此,管理和控制软件开发过程相当困难。同时,对因此,管理和控制软件开发过程相当困难。同时,对软件的维护通常要修改原来的设计,困难很大。软件的维护通常要修改原来的设计,困难很大。w软件人员的主观原因软件人员的主观原因 早期阶段软件开发个体化的特点,导致许多与软早期阶段软件开发个体化的特点,导致许多与软件开发和维护有关的错误认识和作法,主要表现为忽件开发和维护有关的错误认识和作法,主要表现为忽视软件需求分析的重要性,轻视维护。视软件需求分析的重要性,轻视维护。软件人员进行软件开发与维护的方法不正确。软件人员进行软件开发与维护的方法不正确。软件软件产品需要分阶段的定义、设计和开发,严格的产品质产品需要分阶段的定义、设计和开发,严格的产品质量控制,完整的文档记录。量控制,完整的文档记录。信息工程大学电子技术学院信息工程大学电子技术学院软件的特点(软件的特点(1)w软件是一种逻辑实体,而不是具体的物理实体。因而它软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。具有抽象性。可记录,但看不到。可记录,但看不到。w软件的生产与硬件不同,在它的开发过程中没有明显的软件的生产与硬件不同,在它的开发过程中没有明显的制造过程。制造过程。w在软件的运行和使用期间,没有硬件那样的机械磨损,在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。老化问题。磨合磨合调整调整磨损磨损用坏用坏t失失效效率率硬、软件产品失效率曲线硬、软件产品失效率曲线信息工程大学电子技术学院信息工程大学电子技术学院软件的特点(软件的特点(2)w软件的开发和运行常受到计算机系统的限制,对计算机软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性系统有着不同程度的依赖性w软件的开发至今尚未完全摆脱手工艺的开发方式。软件的开发至今尚未完全摆脱手工艺的开发方式。w软件本身是复杂的软件本身是复杂的w实际问题的复杂性实际问题的复杂性w程序逻辑结构的复杂性程序逻辑结构的复杂性 w软件成本相当昂贵。软件成本相当昂贵。w相当多的软件工作涉及到社会因素。相当多的软件工作涉及到社会因素。信息工程大学电子技术学院信息工程大学电子技术学院软件的特点(软件的特点(3)信息工程大学电子技术学院信息工程大学电子技术学院软件的正确认识(软件的正确认识(1)w软件软件 程序程序 软件开发不是纯粹的个人行为软件开发不是纯粹的个人行为w软件从定义、开发、使用和维护,直到最终被废软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,称为生命周期。弃,要经历一个漫长的时期,称为生命周期。(1 1 1 1)定义阶段)定义阶段)定义阶段)定义阶段问题定问题定问题定问题定义义义义可行性研究可行性研究可行性研究可行性研究需求分析需求分析需求分析需求分析(2 2 2 2)开发阶段)开发阶段)开发阶段)开发阶段(3 3 3 3)维护)维护)维护)维护编码编码编码编码总体设计总体设计总体设计总体设计详细设计详细设计详细设计详细设计测试测试测试测试信息工程大学电子技术学院信息工程大学电子技术学院软件的正确认识(软件的正确认识(2)0.050.050.050.05改改改改进进进进工工工工作作作作量量量量(人人人人.天天天天)需需需需求求求求分分分分析析析析详详详详细细细细设设设设计计计计编编编编码码码码集集集集成成成成测测测测试试试试系系系系统统统统测测测测试试试试现现现现场场场场结结结结构构构构设设设设计计计计 改正一个问题需要付出的代价改正一个问题需要付出的代价改正一个问题需要付出的代价改正一个问题需要付出的代价(越在早期代价越小)(越在早期代价越小)(越在早期代价越小)(越在早期代价越小)信息工程大学电子技术学院信息工程大学电子技术学院解决软件危机的途径解决软件危机的途径w正确认识计算机软件:程序、数据及相关文挡的完整集正确认识计算机软件:程序、数据及相关文挡的完整集合。合。w充分认识到:软件开发不是个体劳动的神秘技巧,而是充分认识到:软件开发不是个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。完成的工程项目。w推广使用在实践中总结出来的开发软件的成功的技术和推广使用在实践中总结出来的开发软件的成功的技术和方法,研究、探索更好、更有效的技术和方法。方法,研究、探索更好、更有效的技术和方法。w开发和使用更好的软件工具开发和使用更好的软件工具w有必要的组织管理措施有必要的组织管理措施 软件工程是从管理和技术两方面研究如何更软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的学科。好地开发和维护计算机软件的学科。信息工程大学电子技术学院信息工程大学电子技术学院1.1软件危机1.21.2软件工程软件工程1.31.3软件生命周期软件生命周期1.41.4软件过程软件过程主要内容主要内容信息工程大学电子技术学院信息工程大学电子技术学院基本概念基本概念w软件软件 软件由三部分组成:软件由三部分组成:程序:在运行时能提供所希望的功能和性能的指令集。程序:在运行时能提供所希望的功能和性能的指令集。数据:使程序能够正确运行的数据结构。数据:使程序能够正确运行的数据结构。文档:描述程序研制过程、方法及使用的文档资料。文档:描述程序研制过程、方法及使用的文档资料。“软件就是程序软件就是程序”的观念是错误的!的观念是错误的!信息工程大学电子技术学院信息工程大学电子技术学院基本概念基本概念计算机应用发展计算机应用发展软件数量多软件数量多 规模大规模大个体化软件开发方法个体化软件开发方法软件维护困难软件维护困难软件危机软件危机软件工程软件工程软件成本高软件成本高 质量低质量低软件工程学诞生了!软件工程学诞生了!(1968 NATO1968 NATO)复杂性高复杂性高生产率低生产率低两种典型定义两种典型定义(1968 NATO(1968 NATO、1993 IEEE1993 IEEE)信息工程大学电子技术学院信息工程大学电子技术学院基本概念基本概念人们普遍认为,软件工程具有下列本质特性:人们普遍认为,软件工程具有下列本质特性:n 软件工程关注大型程序的构造软件工程关注大型程序的构造n 软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性n 软件经常变化软件经常变化n 开发软件的效率非常重要开发软件的效率非常重要n 和谐地合作是开发软件的关键和谐地合作是开发软件的关键n 软件必须有效地支持它的用户软件必须有效地支持它的用户n 在软件工程领域中,是由具有一种文化背景的人替具有另一种文在软件工程领域中,是由具有一种文化背景的人替具有另一种文化背景的人创造产品化背景的人创造产品信息工程大学电子技术学院信息工程大学电子技术学院基本原理基本原理w著名软件工程专家著名软件工程专家B.W.BoehmB.W.Boehm在在19831983年提出年提出7 7条基本原理:条基本原理:n 用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理n 坚持进行阶段评审坚持进行阶段评审n 实行严格的产品控制实行严格的产品控制n 采用现代程序设计技术采用现代程序设计技术n 结果应能清楚地审查结果应能清楚地审查n 开发小组的人员应该少而精开发小组的人员应该少而精n 承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性信息工程大学电子技术学院信息工程大学电子技术学院软件工程的软件工程的7条基本原理条基本原理(1)w用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理 应该把软件生命周期划分成若干个阶段,并相应地制定出应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。行管理。(BoehmBoehm认为应该严格执行六类计划:项目概要计划;里程碑计认为应该严格执行六类计划:项目概要计划;里程碑计划;项目控制计划;产品控制计划;验证计划;运行维护计划。)划;项目控制计划;产品控制计划;验证计划;运行维护计划。)信息工程大学电子技术学院信息工程大学电子技术学院软件工程的软件工程的7条基本原理条基本原理(2)w坚持进行阶段评审坚持进行阶段评审 软件的质量保证工作不能等到编码阶段结束之后再进软件的质量保证工作不能等到编码阶段结束之后再进行。大部分错误是编码之前造成的:根据行。大部分错误是编码之前造成的:根据BoehmBoehm等的统计,等的统计,设计错误占软件错误的设计错误占软件错误的63%63%,编码错误仅占,编码错误仅占37%37%。错误发现与。错误发现与改正得越晚,所付出的代价也越高。改正得越晚,所付出的代价也越高。信息工程大学电子技术学院信息工程大学电子技术学院软件工程的软件工程的7条基本原理条基本原理(3)w实行严格的产品控制实行严格的产品控制 当需求改变时,必须实行严格的产品控制,其中主要是实当需求改变时,必须实行严格的产品控制,其中主要是实行基准配置管理(也称变动控制)。基准配置又称基线配置,是行基准配置管理(也称变动控制)。基准配置又称基线配置,是经阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)经阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。一切有关修改软件的建议,特别是涉及到基准配置的修改建议,。一切有关修改软件的建议,特别是涉及到基准配置的修改建议,都必须按照严格的规定进行评审,获得批准后才能实施修改。都必须按照严格的规定进行评审,获得批准后才能实施修改。信息工程大学电子技术学院信息工程大学电子技术学院软件工程的软件工程的7条基本原理条基本原理(4)w采用现代程序设计技术采用现代程序设计技术 应该把软件生命周期划分成若干个阶段,并相应地制定出应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。行管理。(BoehmBoehm认为应该严格执行六类计划:项目概要计划;里程认为应该严格执行六类计划:项目概要计划;里程碑计划;项目控制计划;产品控制计划;验证计划;运行维护计碑计划;项目控制计划;产品控制计划;验证计划;运行维护计划。)划。)信息工程大学电子技术学院信息工程大学电子技术学院软件工程的软件工程的7条基本原理条基本原理(5)w结果应能清楚地审查结果应能清楚地审查 软件开发人员工作进展情况可见性差,难以准确度量,难于软件开发人员工作进展情况可见性差,难以准确度量,难于评价和管理。应该根据软件开发项目的总目标及完成期限,规定评价和管理。应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得结果能够清楚地审查。开发组织的责任和产品标准,从而使得结果能够清楚地审查。信息工程大学电子技术学院信息工程大学电子技术学院软件工程的软件工程的7条基本原理条基本原理(6)w开发小组的人员应该少而精开发小组的人员应该少而精 开发小组人员的素质和数量是影响软件产品质量和开发效率开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。小组人员增加,交流情况和讨论问题而造成的通的重要因素。小组人员增加,交流情况和讨论问题而造成的通讯开销也急剧增加,人数为讯开销也急剧增加,人数为N N,可能的通讯路径有,可能的通讯路径有N(N-1)/2N(N-1)/2。信息工程大学电子技术学院信息工程大学电子技术学院软件工程的软件工程的7条基本原理条基本原理(7)w承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 仅有上述六条原理并不能保证软件开发与维护的过程赶仅有上述六条原理并不能保证软件开发与维护的过程赶上时代前进步伐,跟上技术的不断进步。上时代前进步伐,跟上技术的不断进步。不仅要积极主动的采纳新的软件技术,而且要不断总结不仅要积极主动的采纳新的软件技术,而且要不断总结经验。经验。信息工程大学电子技术学院信息工程大学电子技术学院软件工程方法学软件工程方法学 软件生命周期:软件生命周期:一个软件从定义、开发、使一个软件从定义、开发、使用和维护到最终废弃所经历的一个漫长的时期。用和维护到最终废弃所经历的一个漫长的时期。方法学三要素方法学三要素方法:完成软件开发的各项任务的技术方法方法:完成软件开发的各项任务的技术方法工具:为方法提供自动、半自动的软件支撑环境工具:为方法提供自动、半自动的软件支撑环境过程:获得高质量软件的任务框架、工作步骤过程:获得高质量软件的任务框架、工作步骤方法学分类方法学分类传统方法学传统方法学(生命周期方法学、结构化范型)(生命周期方法学、结构化范型)面向对象方法学面向对象方法学信息工程大学电子技术学院信息工程大学电子技术学院传统方法学传统方法学 问题定义问题定义 软件定义软件定义 可行性研究可行性研究 需求分析需求分析 总体设计总体设计 生命周期生命周期 软件开发软件开发 详细设计详细设计 编码和单元测试编码和单元测试 综合测试综合测试 软件维护软件维护 软件维护软件维护划分生命周期的基本原则:划分生命周期的基本原则:使各阶段的任务彼此间尽可能相使各阶段的任务彼此间尽可能相对独立;同一阶段各项任务的性质尽可能相同,有利于软件对独立;同一阶段各项任务的性质尽可能相同,有利于软件开发工程的组织管理。开发工程的组织管理。信息工程大学电子技术学院信息工程大学电子技术学院面向对象方法学面向对象方法学面向对象方法面向对象方法=对象对象+类类+继承继承+消息通信消息通信 面向对象方法学尽可能模拟人类的思维方式,面向对象方法学尽可能模拟人类的思维方式,符合人类认识客观世界解决实际问题的过程。降低符合人类认识客观世界解决实际问题的过程。降低了软件产品的复杂性,提高了可理解性,简化了软了软件产品的复杂性,提高了可理解性,简化了软件的开发和维护工作。提高了可重用性。件的开发和维护工作。提高了可重用性。信息工程大学电子技术学院信息工程大学电子技术学院1.1软件危机1.21.2软件工程软件工程1.31.3软件生命周期软件生命周期1.41.4软件过程软件过程主要内容主要内容信息工程大学电子技术学院信息工程大学电子技术学院软件生命周期软件生命周期 软件定义:确定开发总目标、工程可行性、采软件定义:确定开发总目标、工程可行性、采用的策略、系统的功能、所需资源及成本、工程用的策略、系统的功能、所需资源及成本、工程进度表。进度表。软件开发:具体设计、实现。软件开发:具体设计、实现。软件维护:使软件持久满足用户需要。软件维护:使软件持久满足用户需要。n软件生命周期软件生命周期(Software Life Cycle)(Software Life Cycle):信息工程大学电子技术学院信息工程大学电子技术学院软件生命周期软件生命周期n 可行性研究与计划可行性研究与计划n 需求分析需求分析n 总体设计总体设计n 详细设计详细设计n 实现实现n 集成测试集成测试n 确认测试确认测试n 使用和维护使用和维护 根据国标根据国标计算机软件开发规范计算机软件开发规范信息工程大学电子技术学院信息工程大学电子技术学院生命周期各阶段任务问题定义问题定义问题是什么?问题是什么?关于规模和目标的报告书关于规模和目标的报告书可行性研究可行性研究有可行解吗?有可行解吗?高层逻辑模型高层逻辑模型DFDDFD成本成本/效益分析效益分析需求分析需求分析必须作什么?必须作什么?逻辑模型:逻辑模型:DFD+DFD+数据字典数据字典算法描述算法描述规格说明书规格说明书概要设计概要设计如何解如何解系统流程图成本系统流程图成本/效益分析效益分析层析图或结构图层析图或结构图详细设计详细设计具体实现方法具体实现方法编码规格说明编码规格说明 HIPO/PDLHIPO/PDL模块设计模块设计编码与单元测试编码与单元测试正确的程序模块正确的程序模块Code+Code+测试方案和结果测试方案和结果综合测试综合测试符合要求的软件符合要求的软件方案和结果完整一致的方案和结果完整一致的软件配置软件配置软件维护软件维护持久地满足用户需要持久地满足用户需要完整准确的维护记录完整准确的维护记录改正性、适应性、完善性改正性、适应性、完善性和预防性。和预防性。信息工程大学电子技术学院信息工程大学电子技术学院1.1软件危机1.21.2软件工程软件工程1.31.3软件生命周期软件生命周期1.41.4软件过程软件过程主要内容主要内容信息工程大学电子技术学院信息工程大学电子技术学院四、软件过程四、软件过程n过程模型(过程模型(Process ModelProcess Model)软件开发全部过程、活动和任务的结构框软件开发全部过程、活动和任务的结构框架,规定了各项任务的工作步骤。架,规定了各项任务的工作步骤。瀑布模型瀑布模型快速原型模型快速原型模型增量模型增量模型螺旋模型螺旋模型其他模型其他模型信息工程大学电子技术学院信息工程大学电子技术学院、瀑布模型、瀑布模型可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试定义阶段定义阶段开开发发阶阶段段维护阶段维护阶段信息工程大学电子技术学院信息工程大学电子技术学院、瀑布模型、瀑布模型n阶段间具有顺序性和依赖性。阶段间具有顺序性和依赖性。n推迟实现的观点推迟实现的观点n文档驱动文档驱动每个阶段必须完成规定的文档每个阶段必须完成规定的文档;每个阶段每个阶段结束前完成文档审查结束前完成文档审查,及早改正错误及早改正错误。n问题:不适合需求模糊的系统问题:不适合需求模糊的系统瀑布模型瀑布模型+结构化分析设计结构化分析设计=传统软件开发方法传统软件开发方法信息工程大学电子技术学院信息工程大学电子技术学院验证定义验证定义系统需求系统需求生成生成原型原型系统系统设计设计程序程序设计设计编码编码测试测试运运 行行和维护和维护原型化原型化含原型化的含原型化的软件生存期软件生存期、快速原型模型、快速原型模型信息工程大学电子技术学院信息工程大学电子技术学院n种类种类渐进型:原型系统不断被开发和被修正,最终渐进型:原型系统不断被开发和被修正,最终它变为一个真正的系统。它变为一个真正的系统。抛弃型:用于试验某些概念,试验完系统将无抛弃型:用于试验某些概念,试验完系统将无用处。用处。n特点特点快速开发工具快速开发工具使部分已知的需求清晰化使部分已知的需求清晰化低成本低成本、快速原型模型、快速原型模型信息工程大学电子技术学院信息工程大学电子技术学院、快速原型模型、快速原型模型n 缺点缺点用户有时误解了原型的角色,例如他们可能误解原型应该用户有时误解了原型的角色,例如他们可能误解原型应该和真实系统一样可靠。和真实系统一样可靠。缺少项目标准,渐进原型法有点像编码修正。缺少项目标准,渐进原型法有点像编码修正。缺少控制,由于用户可能不断提出新要求,因而原型迭代缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制。的周期很难控制。额外的花费:研究结果表明构造一个原型可能需要额外的花费:研究结果表明构造一个原型可能需要10%额额外花费。外花费。运行效率可能会受影响。运行效率可能会受影响。原型法要求开发者与用户密切接触,有时这是不可能的。原型法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。例如外包软件。信息工程大学电子技术学院信息工程大学电子技术学院、增量模型、增量模型分析分析 设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 增量增量3 3增量增量n n 增量增量1 1交付客户交付客户 增量增量2 2交付客户交付客户 增量增量3 3交付客户交付客户增量增量2 2增量增量1 1时时 间间 增量增量n n交付客户交付客户信息工程大学电子技术学院信息工程大学电子技术学院、增量模型、增量模型n 先完成一个系统子集的开发,再按同样的先完成一个系统子集的开发,再按同样的开发步骤增加功能开发步骤增加功能 (系统子集系统子集),),如此递增下如此递增下去直至满足全部系统需求。去直至满足全部系统需求。n 系统的总体设计在初始子集设计阶段就应系统的总体设计在初始子集设计阶段就应作出设想。作出设想。信息工程大学电子技术学院信息工程大学电子技术学院、螺旋模型、螺旋模型信息工程大学电子技术学院信息工程大学电子技术学院、螺旋模型、螺旋模型n 以风险为导向的生命期模型以风险为导向的生命期模型:从一个小范围的关键中心从一个小范围的关键中心地带开始寻找风险因素,制定风险控制计划,并交付给下一步地带开始寻找风险因素,制定风险控制计划,并交付给下一步骤,如此迭代,每次迭代将项目扩展到一个更大的规模。骤,如此迭代,每次迭代将项目扩展到一个更大的规模。n 特点特点瀑布模型瀑布模型+快速原型快速原型+风险分析风险分析迭代过程迭代过程比较复杂,需要责任心,专注和管理方面的知识比较复杂,需要责任心,专注和管理方面的知识n 一个螺旋式周期(四个象限)一个螺旋式周期(四个象限)信息工程大学电子技术学院信息工程大学电子技术学院、其它模型、其它模型n瀑布模型变种瀑布模型变种V V型模型(加强了验证)型模型(加强了验证)生鱼片模型(过程重叠)生鱼片模型(过程重叠)n编码修正模型编码修正模型n构件集成模型(构件集成模型(OOOO方法)方法)n喷泉模型(喷泉模型(OOOO方法)方法)n转换模型转换模型信息工程大学电子技术学院信息工程大学电子技术学院6、新模型、新模型nRationalRational统一过程(统一过程(RUPRUP)n敏捷过程敏捷过程极限编程(极限编程(XPXP)nPSPPSPTSPTSPCMMCMMCMMI CMMI 信息工程大学电子技术学院信息工程大学电子技术学院7、微软的软件工程过程、微软的软件工程过程信息工程大学电子技术学院信息工程大学电子技术学院小结小结本章重点本章重点w 软件危机及产生的原因软件危机及产生的原因w 划分软件生命周期各阶段的原则划分软件生命周期各阶段的原则w 软件过程模型软件过程模型本章难点本章难点基本概念基本概念软件危机、软件工程、软件危机、软件工程、软件生命周期、面向对象方法软件生命周期、面向对象方法基本内容基本内容掌握理解开发软件与写程序的区别,深刻体会传统方法学掌握理解开发软件与写程序的区别,深刻体会传统方法学和面向对象方法学要点,了解软件过程模型的基本原理及和面向对象方法学要点,了解软件过程模型的基本原理及特点。特点。信息工程大学电子技术学院信息工程大学电子技术学院作业作业w习题1 2、4、12w预习 教材第教材第2 2、3 3章章