《软件工程学教程》由会员分享,可在线阅读,更多相关《软件工程学教程(46页珍藏版)》请在金锄头文库上搜索。
1、橇桅待蒙扳娜阁钉城眨脐逐叼惰捷返乔刺识冲新负惶子凌逛秒徐亏怨袖衬软件工程学教程软件工程学教程软件工程学教程软件工程学教程罚枪淑悲腾黄朝邱讫艾玄驱侣容搅冰嗓辟井挚绕香腥怀探细蛛映邻芯登忻软件工程学教程软件工程学教程软件工程课程说明n实际上课时间:去除长假实际上课时间:去除长假1周,共周,共12周,第周,第13周复习周复习/考试考试n教学要求及考试范围覆盖软件工程学教程全书各章教学要求及考试范围覆盖软件工程学教程全书各章n教材中的教材中的“习题习题”按教师要求完成并计入本课程的按教师要求完成并计入本课程的“平时成平时成绩绩”n本课程上机实验的主要内容是本课程上机实验的主要内容是n以指定或自选开发项
2、目为基础以指定或自选开发项目为基础n依据国家标准的有关规定依据国家标准的有关规定n编制软件生存周期各阶段的软件文档编制软件生存周期各阶段的软件文档n主要文档作为期中考核内容主要文档作为期中考核内容n初步了解初步了解 Sybase PowerDesigner 和和 Microsoft Projectn期末进行闭卷考试期末进行闭卷考试翅滔当琉检济末寅溶缎盆要粉限静启寥侮信颇木酷垣灿顶婆镭缚汹佳块卢软件工程学教程软件工程学教程软件工程教材与教参n教教 材材n n软件工程学教程软件工程学教程软件工程学教程软件工程学教程( (第二版第二版第二版第二版) ),周苏等编著,科学出版社,周苏等编著,科学出版社
3、,周苏等编著,科学出版社,周苏等编著,科学出版社,20042004n n教学参考书教学参考书教学参考书教学参考书n n软件工程软件工程软件工程软件工程 美美美美 ,黄柏素等译,机械工业出版社,黄柏素等译,机械工业出版社,黄柏素等译,机械工业出版社,黄柏素等译,机械工业出版社,19991999n nGB/T8566-2001GB/T8566-2001信息技术信息技术信息技术信息技术 软件生存周期过程软件生存周期过程软件生存周期过程软件生存周期过程n nGB/T8567-1988GB/T8567-1988计算机软件产品开发文件编制指南计算机软件产品开发文件编制指南计算机软件产品开发文件编制指南计算
4、机软件产品开发文件编制指南n n周课时:周课时:周课时:周课时:5 5课时课时课时课时/ /周周周周 * 12 * 12募鸯吴狂即覆漆凄屹甲劳完蔷虫碱元吼牺炔戌棵亢芹光痉慷姥郑僻甘容畔软件工程学教程软件工程学教程第1章 传统软件工程概述n n计算机系统的发展计算机系统的发展计算机系统的发展计算机系统的发展n n软件、软件生存周期和软件生存周期过程软件、软件生存周期和软件生存周期过程软件、软件生存周期和软件生存周期过程软件、软件生存周期和软件生存周期过程n n软件生存周期模型软件生存周期模型软件生存周期模型软件生存周期模型n n软件工程定义软件工程定义软件工程定义软件工程定义谷诈绩捣碴椎静阀乒美
5、杀蔑甘执长版押廖符辅跃价三周婪斋寒忙诈芋戴叮软件工程学教程软件工程学教程第1章 传统软件工程概述n进入进入6060年代,人们开始逐渐认识到了确实存在着年代,人们开始逐渐认识到了确实存在着年代,人们开始逐渐认识到了确实存在着年代,人们开始逐渐认识到了确实存在着“ “软软软软件危机件危机件危机件危机” ” 这样一个事实。例如:这样一个事实。例如:这样一个事实。例如:这样一个事实。例如:n n软件生产不能满足日益增长的需要软件生产不能满足日益增长的需要软件生产不能满足日益增长的需要软件生产不能满足日益增长的需要n n软件开发成本和开发进度估计往往不准确软件开发成本和开发进度估计往往不准确软件开发成本
6、和开发进度估计往往不准确软件开发成本和开发进度估计往往不准确n n软件开发人员和用户之间信息交流不充分,用户对完成的软软件开发人员和用户之间信息交流不充分,用户对完成的软软件开发人员和用户之间信息交流不充分,用户对完成的软软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很低件满意度很低件满意度很低件满意度很低n n软件价格昂贵,软件成本在整个计算机系统中所占的比例急软件价格昂贵,软件成本在整个计算机系统中所占的比例急软件价格昂贵,软件成本在整个计算机系统中所占的比例急软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软件已成为许多计算机系统中花钱最多的项目剧上升,软件已成
7、为许多计算机系统中花钱最多的项目剧上升,软件已成为许多计算机系统中花钱最多的项目剧上升,软件已成为许多计算机系统中花钱最多的项目n n软件质量难以保证软件质量难以保证软件质量难以保证软件质量难以保证n n软件可维护性差,程序中的错误很难改正,适应性或完善性软件可维护性差,程序中的错误很难改正,适应性或完善性软件可维护性差,程序中的错误很难改正,适应性或完善性软件可维护性差,程序中的错误很难改正,适应性或完善性维护都极其困难维护都极其困难维护都极其困难维护都极其困难吉糟灾册现伐惩伏才咖拎髓渔猎琢垫絮窒逃侮蜂琉荐炸佣慷和曹腊斜敌躺软件工程学教程软件工程学教程第1章 传统软件工程概述n导致危机问题的
8、一个重要原因,是由于软件研制和导致危机问题的一个重要原因,是由于软件研制和维护本身是工程性的任务,但软件人员采取的方式维护本身是工程性的任务,但软件人员采取的方式却未能工程化却未能工程化n为克服软件危机,人们开始考虑采用工程化方法和为克服软件危机,人们开始考虑采用工程化方法和工程途径来研制和维护软件工程途径来研制和维护软件临葡匿总饱感脱解煤惩摘斩缺椒敲蘸啼闷炽绥粳浙皆躇哟墓歼伊士涌挎尺软件工程学教程软件工程学教程第1章 传统软件工程概述n60年代末至年代末至年代末至年代末至7070年代初开始,逐渐发展起一组总称为年代初开始,逐渐发展起一组总称为年代初开始,逐渐发展起一组总称为年代初开始,逐渐发
9、展起一组总称为“ “软件工程软件工程软件工程软件工程” ”的技术的技术的技术的技术n n这些技术把软件作为一个工程产品来处理:它需要计划、这些技术把软件作为一个工程产品来处理:它需要计划、这些技术把软件作为一个工程产品来处理:它需要计划、这些技术把软件作为一个工程产品来处理:它需要计划、分析、设计、实现、测试以及维护分析、设计、实现、测试以及维护分析、设计、实现、测试以及维护分析、设计、实现、测试以及维护n n软件工程学主要研究软件结构、软件设计方法论、软件工软件工程学主要研究软件结构、软件设计方法论、软件工软件工程学主要研究软件结构、软件设计方法论、软件工软件工程学主要研究软件结构、软件设计
10、方法论、软件工具、软件工程标准和规范,以及与软件工程有关的理论等具、软件工程标准和规范,以及与软件工程有关的理论等具、软件工程标准和规范,以及与软件工程有关的理论等具、软件工程标准和规范,以及与软件工程有关的理论等n n软件产业的逐步建立,也带动了软件工程这门学科的发展。软件产业的逐步建立,也带动了软件工程这门学科的发展。软件产业的逐步建立,也带动了软件工程这门学科的发展。软件产业的逐步建立,也带动了软件工程这门学科的发展。同时,软件生产的系列化、产品化、工程化和标准化形成同时,软件生产的系列化、产品化、工程化和标准化形成同时,软件生产的系列化、产品化、工程化和标准化形成同时,软件生产的系列化
11、、产品化、工程化和标准化形成了软件产业的标志了软件产业的标志了软件产业的标志了软件产业的标志细咯弯于比揽荫沟美橡臭骡夏弄擦帧都崖求鱼玖柴桶辅疫筷淳蒸厢悸蛾陪软件工程学教程软件工程学教程1.1 计算机系统的发展计算机系统的发展n软件工程和硬件工程都可以看成是一门更广义的学科软件工程和硬件工程都可以看成是一门更广义的学科计算机系统工程的一部分计算机系统工程的一部分n n用于计算机硬件的工程技术是由电子设计技术发展起来的,用于计算机硬件的工程技术是由电子设计技术发展起来的,用于计算机硬件的工程技术是由电子设计技术发展起来的,用于计算机硬件的工程技术是由电子设计技术发展起来的,已经达到了比较成熟的水平
12、,可靠性已是一种可以期待的现已经达到了比较成熟的水平,可靠性已是一种可以期待的现已经达到了比较成熟的水平,可靠性已是一种可以期待的现已经达到了比较成熟的水平,可靠性已是一种可以期待的现实而不再是一种愿望实而不再是一种愿望实而不再是一种愿望实而不再是一种愿望n n但是,软件已经取代硬件成为系统中设计起来最困难、最不但是,软件已经取代硬件成为系统中设计起来最困难、最不但是,软件已经取代硬件成为系统中设计起来最困难、最不但是,软件已经取代硬件成为系统中设计起来最困难、最不容易成功容易成功容易成功容易成功 ( (按时完成和不超过预计的成本按时完成和不超过预计的成本按时完成和不超过预计的成本按时完成和不
13、超过预计的成本) ) ,而且是最不易,而且是最不易,而且是最不易,而且是最不易管理的部分管理的部分管理的部分管理的部分n n另一方面,随着以计算机为基础的系统在数量、复杂程度和另一方面,随着以计算机为基础的系统在数量、复杂程度和另一方面,随着以计算机为基础的系统在数量、复杂程度和另一方面,随着以计算机为基础的系统在数量、复杂程度和应用范围上的不断增长,对软件的需求却仍然有增无减应用范围上的不断增长,对软件的需求却仍然有增无减应用范围上的不断增长,对软件的需求却仍然有增无减应用范围上的不断增长,对软件的需求却仍然有增无减撂覆拟阂融愉桂笼厦疏遵昧芽灿唾梳剥礼碎撇竹容橇孔皖胯样乱最讲儒希软件工程学教
14、程软件工程学教程1.1.1 计算机系统及其软件的发展计算机系统及其软件的发展n软件发展的历史与计算机系统发展紧密相关软件发展的历史与计算机系统发展紧密相关n n计算机系统发展的初期计算机系统发展的初期计算机系统发展的初期计算机系统发展的初期 (50 (506060年代年代年代年代) ) ,程序设计时期程序设计时期程序设计时期程序设计时期n n计算机系统发展的第二个时期(从计算机系统发展的第二个时期(从计算机系统发展的第二个时期(从计算机系统发展的第二个时期(从6060年代中期到年代中期到年代中期到年代中期到7070年代年代年代年代中期),中期),中期),中期),程序系统时期程序系统时期程序系统
15、时期程序系统时期n n计算机系统发展的第三个时期从计算机系统发展的第三个时期从计算机系统发展的第三个时期从计算机系统发展的第三个时期从7070年代初期开始,年代初期开始,年代初期开始,年代初期开始,软件软件软件软件工程时期工程时期工程时期工程时期n n如今,计算机系统的发展正在向第四个时期过渡,即从如今,计算机系统的发展正在向第四个时期过渡,即从如今,计算机系统的发展正在向第四个时期过渡,即从如今,计算机系统的发展正在向第四个时期过渡,即从技术性应用向消费性市场过渡技术性应用向消费性市场过渡技术性应用向消费性市场过渡技术性应用向消费性市场过渡戴贫塔坐乓焕缎氖镀孽净驴解轮焰斥线办挛咎笋砒踪赋侣宵
16、卧诧碌轧湃奠软件工程学教程软件工程学教程1.1.2 计算机系统工程计算机系统工程n计算机系统工程的主要内容是对系统所要求的功能加以揭计算机系统工程的主要内容是对系统所要求的功能加以揭示、分析,并把它们分配给系统的各个部分示、分析,并把它们分配给系统的各个部分n在大多数新系统创建时,对系统所要求的功能往往只有模在大多数新系统创建时,对系统所要求的功能往往只有模糊的概念。系统分析和系统定义的目的在于揭示摆在面前糊的概念。系统分析和系统定义的目的在于揭示摆在面前的项目的范围的项目的范围n n要对需要进行处理的信息、所要求的功能、所期望的性能以及设计要对需要进行处理的信息、所要求的功能、所期望的性能以
17、及设计要对需要进行处理的信息、所要求的功能、所期望的性能以及设计要对需要进行处理的信息、所要求的功能、所期望的性能以及设计的约束和检验的标准等进行系统、详细的分析的约束和检验的标准等进行系统、详细的分析的约束和检验的标准等进行系统、详细的分析的约束和检验的标准等进行系统、详细的分析n n范围确定之后,系统工程师必须考虑多种能潜在地满足项目范围的、范围确定之后,系统工程师必须考虑多种能潜在地满足项目范围的、范围确定之后,系统工程师必须考虑多种能潜在地满足项目范围的、范围确定之后,系统工程师必须考虑多种能潜在地满足项目范围的、可供选择的配置。在综合考虑了各项因素之后,选择其中的一种配可供选择的配置
18、。在综合考虑了各项因素之后,选择其中的一种配可供选择的配置。在综合考虑了各项因素之后,选择其中的一种配可供选择的配置。在综合考虑了各项因素之后,选择其中的一种配置,并将系统的功能分配给系统的各个部分置,并将系统的功能分配给系统的各个部分置,并将系统的功能分配给系统的各个部分置,并将系统的功能分配给系统的各个部分执谭磷迹型协伙蜗障絮铬学朋屿滥贫沧伺僧弹怕置悼巩瘩含怎笑据嗽讼热软件工程学教程软件工程学教程系统分析和定义概 念综合考虑软 件硬 件硬件工程软件工程图图图图1-1 1-1 计算机系统工程计算机系统工程计算机系统工程计算机系统工程带希兵汝屏错抖鹰称侥疫栅耶顽忻拒被乔桅扎清它匹飞琉过裤兴卒孵
19、夫执软件工程学教程软件工程学教程1.2 软件和软件生存周期软件和软件生存周期n中国大百科全书给软件下的定义是:中国大百科全书给软件下的定义是:软件是软件是软件是软件是计算机系统中的程序和有关文件计算机系统中的程序和有关文件计算机系统中的程序和有关文件计算机系统中的程序和有关文件n n也就是说,也就是说,也就是说,也就是说,“ “软件软件软件软件” ”不仅仅是指程序,在软件研不仅仅是指程序,在软件研不仅仅是指程序,在软件研不仅仅是指程序,在软件研制过程中按一定规格产生的各种文件也是软件不制过程中按一定规格产生的各种文件也是软件不制过程中按一定规格产生的各种文件也是软件不制过程中按一定规格产生的各
20、种文件也是软件不可缺少的组成部分可缺少的组成部分可缺少的组成部分可缺少的组成部分宰蹭得谊具框瘴斩舒酥邓及陷炳沦拢陀轮貉扮疤胃涅大掏愈肖惶忽障今界软件工程学教程软件工程学教程1.2 软件和软件生存周期软件和软件生存周期n一个计算机软件,从出现一个构思之日起,经过开发成功一个计算机软件,从出现一个构思之日起,经过开发成功投入使用,在使用中不断增补修订,直到最后决定停止使投入使用,在使用中不断增补修订,直到最后决定停止使用,并被另一项软件代替之时止,被认为是该软件的一个用,并被另一项软件代替之时止,被认为是该软件的一个生存周期生存周期 ( (或称生命周期、生存期,或称生命周期、生存期,或称生命周期、
21、生存期,或称生命周期、生存期,life cycle)life cycle)n n一个软件产品的生存周期可以划分成若干个互相区别而又一个软件产品的生存周期可以划分成若干个互相区别而又一个软件产品的生存周期可以划分成若干个互相区别而又一个软件产品的生存周期可以划分成若干个互相区别而又有联系的阶段,每个阶段中的工作均以上一阶段工作的结有联系的阶段,每个阶段中的工作均以上一阶段工作的结有联系的阶段,每个阶段中的工作均以上一阶段工作的结有联系的阶段,每个阶段中的工作均以上一阶段工作的结果为依据,并为下一阶段的工作提供了前提果为依据,并为下一阶段的工作提供了前提果为依据,并为下一阶段的工作提供了前提果为依
22、据,并为下一阶段的工作提供了前提n n经验表明,失误造成的差错越是发生在生存周期的前期,经验表明,失误造成的差错越是发生在生存周期的前期,经验表明,失误造成的差错越是发生在生存周期的前期,经验表明,失误造成的差错越是发生在生存周期的前期,在系统交付使用时造成的影响和损失就越大,要纠正它所在系统交付使用时造成的影响和损失就越大,要纠正它所在系统交付使用时造成的影响和损失就越大,要纠正它所在系统交付使用时造成的影响和损失就越大,要纠正它所花费的代价也越高。因而在前一阶段工作没有做好之前,花费的代价也越高。因而在前一阶段工作没有做好之前,花费的代价也越高。因而在前一阶段工作没有做好之前,花费的代价也
23、越高。因而在前一阶段工作没有做好之前,决不要草率地进入下一阶段决不要草率地进入下一阶段决不要草率地进入下一阶段决不要草率地进入下一阶段姿向晌唬门檄作渺站键蹬估卯馈英武挝癌豪嚣糯谩赃垄荒烛掐藏顾课布段软件工程学教程软件工程学教程1.2 软件和软件生存周期软件和软件生存周期n国家标准国家标准 GB/T8566-2001 GB/T8566-2001信息技术信息技术信息技术信息技术 软件生存周软件生存周软件生存周软件生存周期过程将软件生存周期划分为以下期过程将软件生存周期划分为以下期过程将软件生存周期划分为以下期过程将软件生存周期划分为以下8 8个阶段个阶段个阶段个阶段n n可行性研究与计划可行性研究
24、与计划可行性研究与计划可行性研究与计划n n需求分析需求分析需求分析需求分析n n概要设计概要设计概要设计概要设计n n详细设计详细设计详细设计详细设计n n实现实现实现实现 ( (包括单元测试包括单元测试包括单元测试包括单元测试) )n n组装测试组装测试组装测试组装测试 ( (即集成测试即集成测试即集成测试即集成测试) )n n确认测试确认测试确认测试确认测试n n使用和维护使用和维护使用和维护使用和维护颧啃峙炮拍柳佣李饲绦蝉惰廊秧纸痈并匡畸濒蚜奖飘恕闭修戚冷咱吃配实软件工程学教程软件工程学教程1.2 软件和软件生存周期软件和软件生存周期nGB/T8567-88计算机软件产品开发文件编制指
25、南计算机软件产品开发文件编制指南计算机软件产品开发文件编制指南计算机软件产品开发文件编制指南建议在软件的开发过程中编制下述建议在软件的开发过程中编制下述建议在软件的开发过程中编制下述建议在软件的开发过程中编制下述1414种文件种文件种文件种文件n n可行性研究报告可行性研究报告可行性研究报告可行性研究报告n n项目开发计划项目开发计划项目开发计划项目开发计划n n软件需求说明书软件需求说明书软件需求说明书软件需求说明书n n数据要求说明书数据要求说明书数据要求说明书数据要求说明书n n概要设计说明书概要设计说明书概要设计说明书概要设计说明书n n详细设计说明书详细设计说明书详细设计说明书详细设
26、计说明书n n数据库设计说明书数据库设计说明书数据库设计说明书数据库设计说明书n n用户手册用户手册用户手册用户手册n n操作手册操作手册操作手册操作手册n n模块开发卷宗模块开发卷宗模块开发卷宗模块开发卷宗n n测试计划测试计划测试计划测试计划n n测试分析报告测试分析报告测试分析报告测试分析报告n n开发进度月报开发进度月报开发进度月报开发进度月报n n项目开发总结报告项目开发总结报告项目开发总结报告项目开发总结报告帽音炎陪撅输掐饭惋掀玫饲沁者酉浆爽似弘端豹绘帚恩令秀展毯锰徊沈洋软件工程学教程软件工程学教程可行性研究可行性研究可行性研究可行性研究与计划与计划与计划与计划需求分析需求分析需求
27、分析需求分析设设设设 计计计计实实实实 现现现现测测测测 试试试试使用和维护使用和维护使用和维护使用和维护维护阶段开发阶段计划阶段图图图图1-2 1-2 软件生存周期的瀑布模型软件生存周期的瀑布模型软件生存周期的瀑布模型软件生存周期的瀑布模型迷鄙缄佐士酒怔留芒攻瘦啡壳皂谬携喝喝隋绒阳壁涌接扒僳申革举滨冶菱软件工程学教程软件工程学教程图图图图1-3 1-3 1-3 1-3 软件生存周期工作量分配软件生存周期工作量分配软件生存周期工作量分配软件生存周期工作量分配牡敌蹋搁乐戈戎脓材烯徊奈盖抱算限吕赤凤瑶各抚迫鸽阐盐苛揽剔患汁测软件工程学教程软件工程学教程图图图图1-4 1-4 1-4 1-4 开发期
28、工作量分配开发期工作量分配开发期工作量分配开发期工作量分配险交民佣澎幽质噪犯板咏韩臻衷旁唉蜒虎躇嫉迟兆拢竟拖翠道邢坏姐涌恕软件工程学教程软件工程学教程1.3 软件生存周期模型软件生存周期模型n在软件工程中,重要的概念是软件生存周期模型在软件工程中,重要的概念是软件生存周期模型( (又称软件又称软件又称软件又称软件开发模型开发模型开发模型开发模型) )以及软件生存周期过程以及软件生存周期过程以及软件生存周期过程以及软件生存周期过程n n软件生存周期模型可以定义为:软件生存周期模型可以定义为:软件生存周期模型可以定义为:软件生存周期模型可以定义为:是软件开发全部过程、活是软件开发全部过程、活是软件
29、开发全部过程、活是软件开发全部过程、活动和任务的结构框架动和任务的结构框架动和任务的结构框架动和任务的结构框架n n软件生存周期模型能清晰、直观地表达软件开发全过程,软件生存周期模型能清晰、直观地表达软件开发全过程,软件生存周期模型能清晰、直观地表达软件开发全过程,软件生存周期模型能清晰、直观地表达软件开发全过程,明确规定了开发工作各阶段所要完成的主要活动和任务,明确规定了开发工作各阶段所要完成的主要活动和任务,明确规定了开发工作各阶段所要完成的主要活动和任务,明确规定了开发工作各阶段所要完成的主要活动和任务,以作为软件项目开发工作的基础以作为软件项目开发工作的基础以作为软件项目开发工作的基础
30、以作为软件项目开发工作的基础n n对于不同的软件系统,可以采用不同的开发方法、使用不对于不同的软件系统,可以采用不同的开发方法、使用不对于不同的软件系统,可以采用不同的开发方法、使用不对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运同的程序设计语言以及各种不同技能的人员参与工作、运同的程序设计语言以及各种不同技能的人员参与工作、运同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工用不同的管理方法和手段等,以及允许采用不同的软件工用不同的管理方法和手段等,以及允许采用不同的软件工用不同的管理方法
31、和手段等,以及允许采用不同的软件工具和不同的软件工程环境具和不同的软件工程环境具和不同的软件工程环境具和不同的软件工程环境n n软件生存周期模型是稳定有效和普遍适用的软件生存周期模型是稳定有效和普遍适用的软件生存周期模型是稳定有效和普遍适用的软件生存周期模型是稳定有效和普遍适用的项盘鄂烁贞苫踞述楞啸两昭穗腕勤借曾熊敏达像下嗽地剖话妮仆英蚊俄示软件工程学教程软件工程学教程1.3 软件生存周期模型软件生存周期模型n软件生存周期过程可分为软件生存周期过程可分为n n基本生存周期过程基本生存周期过程基本生存周期过程基本生存周期过程n n获取过程、供应过程、开发过程、运作过程和维护过程等获取过程、供应过
32、程、开发过程、运作过程和维护过程等获取过程、供应过程、开发过程、运作过程和维护过程等获取过程、供应过程、开发过程、运作过程和维护过程等n n支持生存周期过程支持生存周期过程支持生存周期过程支持生存周期过程n n组织生存周期过程组织生存周期过程组织生存周期过程组织生存周期过程n n软件生存周期模型仅对软件的开发、运作、维护过软件生存周期模型仅对软件的开发、运作、维护过软件生存周期模型仅对软件的开发、运作、维护过软件生存周期模型仅对软件的开发、运作、维护过程有意义,在程有意义,在程有意义,在程有意义,在ISO12207ISO12207和和和和ISO9000-3ISO9000-3中都提到软件中都提到
33、软件中都提到软件中都提到软件生存周期模型,它包括:瀑布模型、渐增模型、演生存周期模型,它包括:瀑布模型、渐增模型、演生存周期模型,它包括:瀑布模型、渐增模型、演生存周期模型,它包括:瀑布模型、渐增模型、演化模型、螺旋模型、喷泉模型和智能模型等化模型、螺旋模型、喷泉模型和智能模型等化模型、螺旋模型、喷泉模型和智能模型等化模型、螺旋模型、喷泉模型和智能模型等噶辞奥篆往七甩娠暖积绦广哈祭切喇耽脖雁衣描蛤萝洗韩植屏扁辞叮曹贫软件工程学教程软件工程学教程1.3.1 瀑布模型瀑布模型n瀑布模型是瀑布模型是19701970年年年年W. RoyceW. Royce提出的最早的软件开发模型提出的最早的软件开发模
34、型提出的最早的软件开发模型提出的最早的软件开发模型n n软件维护构成了生存周期的循环表示软件维护构成了生存周期的循环表示软件维护构成了生存周期的循环表示软件维护构成了生存周期的循环表示n n如果把软件维护看作是软件的二次开发,便有了软件生存如果把软件维护看作是软件的二次开发,便有了软件生存如果把软件维护看作是软件的二次开发,便有了软件生存如果把软件维护看作是软件的二次开发,便有了软件生存周期的周期的周期的周期的b b形表示形表示形表示形表示n n在评价瀑布模型时,应考虑以下的相关风险在评价瀑布模型时,应考虑以下的相关风险在评价瀑布模型时,应考虑以下的相关风险在评价瀑布模型时,应考虑以下的相关风
35、险n n需求未被充分理解需求未被充分理解需求未被充分理解需求未被充分理解n n系统太大而一次不能做完所有的事系统太大而一次不能做完所有的事系统太大而一次不能做完所有的事系统太大而一次不能做完所有的事n n事先打算采用的技术迅速发生变化事先打算采用的技术迅速发生变化事先打算采用的技术迅速发生变化事先打算采用的技术迅速发生变化n n需求迅速发生变化需求迅速发生变化需求迅速发生变化需求迅速发生变化n n有限的资源有限的资源有限的资源有限的资源n n无法利用某一中间产品无法利用某一中间产品无法利用某一中间产品无法利用某一中间产品娜呸疤绊圾鸣宦官俯餐哦顷致踩蓬获服溅船胳疮榆要黎分宣譬思焰宿镭和软件工程学
36、教程软件工程学教程需求分析测 试计 划运 行评 价设 计编 码图图图图1-5 1-5 软件生存周期循环软件生存周期循环软件生存周期循环软件生存周期循环留旧樱酪赛关闹挟虱集奖购纠臀存数吠造封逃辫朴奎挚奋踏眯赘瑟苍击莉软件工程学教程软件工程学教程图图图图1-6 1-6 具有维护循环的软件生存周期具有维护循环的软件生存周期具有维护循环的软件生存周期具有维护循环的软件生存周期测试测试测试测试运行运行运行运行计划计划计划计划编码编码编码编码设计设计设计设计编码编码编码编码设计设计设计设计需求分析需求分析需求分析需求分析计划计划计划计划需求分析需求分析需求分析需求分析评价评价评价评价软件开发软件开发软件开
37、发软件开发维护循环维护循环维护循环维护循环脊郡剩贮岭醋肉遗厩枷臂冕棉定砂躬解弓区拾叔肉科竖灌肤洒厌毋拧音焦软件工程学教程软件工程学教程1.3.2 渐增模型渐增模型n是指从一组给定的需求开始,通过构造一系列可执行的是指从一组给定的需求开始,通过构造一系列可执行的中间版本来实施开发活动中间版本来实施开发活动n n第一个中间版本纳入一部分需求,下一个中间版本纳入更多的需第一个中间版本纳入一部分需求,下一个中间版本纳入更多的需第一个中间版本纳入一部分需求,下一个中间版本纳入更多的需第一个中间版本纳入一部分需求,下一个中间版本纳入更多的需求,依此类推,直到系统完成求,依此类推,直到系统完成求,依此类推,
38、直到系统完成求,依此类推,直到系统完成n n每个中间版本都要执行必要的过程、活动和任务,如:需求分析每个中间版本都要执行必要的过程、活动和任务,如:需求分析每个中间版本都要执行必要的过程、活动和任务,如:需求分析每个中间版本都要执行必要的过程、活动和任务,如:需求分析和体系结构设计需要执行一次,而详细设计、编码和测试、软件和体系结构设计需要执行一次,而详细设计、编码和测试、软件和体系结构设计需要执行一次,而详细设计、编码和测试、软件和体系结构设计需要执行一次,而详细设计、编码和测试、软件组装和验收测试在每个中间版本构造过程中都执行组装和验收测试在每个中间版本构造过程中都执行组装和验收测试在每个
39、中间版本构造过程中都执行组装和验收测试在每个中间版本构造过程中都执行n n在评价该模型时,需要考虑的风险因素是在评价该模型时,需要考虑的风险因素是在评价该模型时,需要考虑的风险因素是在评价该模型时,需要考虑的风险因素是n n需求未被很好地理解需求未被很好地理解需求未被很好地理解需求未被很好地理解n n突然提出一些功能突然提出一些功能突然提出一些功能突然提出一些功能n n事先打算采用的技术迅速发生变化事先打算采用的技术迅速发生变化事先打算采用的技术迅速发生变化事先打算采用的技术迅速发生变化n n需求迅速发生变化需求迅速发生变化需求迅速发生变化需求迅速发生变化n n长时期内仅有有限的资源保证长时期
40、内仅有有限的资源保证长时期内仅有有限的资源保证长时期内仅有有限的资源保证 ( (工作人员工作人员工作人员工作人员/ /资金资金资金资金) )绍图氨茅雍九靳镇占裹袄猾讥该猎垦尤岸粳汀冲布探拄蓄太浇录捷作脂闪软件工程学教程软件工程学教程图图图图1-7 1-7 渐增模型示意渐增模型示意渐增模型示意渐增模型示意R R:需求:需求 C/T C/T:编码:编码/ /测试测试 D D:设计:设计 I/AS I/AS:安装和验收支持:安装和验收支持D DC/TC/TI/ASI/AS中间版本nD DC/TC/TI/ASI/AS中间版本1中间版本2D DC/TC/TI/ASI/ASR可能的信息流脾棍骆惺铜呀半缉壮
41、漾卓蒙矣倔哭缄苛得跺孟义滴骋庶克稗迸捍烹缠绝博软件工程学教程软件工程学教程1.3.3 演化模型演化模型n主要针对事先不能完整定义需求的软件项目开发主要针对事先不能完整定义需求的软件项目开发n n对需要开发的软件给出基本需求,作第一次试验开发,其目标仅在对需要开发的软件给出基本需求,作第一次试验开发,其目标仅在对需要开发的软件给出基本需求,作第一次试验开发,其目标仅在对需要开发的软件给出基本需求,作第一次试验开发,其目标仅在于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最
42、于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最终设计和实现终设计和实现终设计和实现终设计和实现n n通常把第一次试验性开发出来的软件称为原型。这种开发模型可以通常把第一次试验性开发出来的软件称为原型。这种开发模型可以通常把第一次试验性开发出来的软件称为原型。这种开发模型可以通常把第一次试验性开发出来的软件称为原型。这种开发模型可以减少由于需求不明给开发工作带来的风险减少由于需求不明给开发工作带来的风险减少由于需求不明给开发工作带来的风险减少由于需求不明给开发工作带来的风险n n与渐增模型的区别是:演化模型承认需求不能被完全了解,且不能与渐增模型的区别是:演化模型承认需求不能被完全了
43、解,且不能与渐增模型的区别是:演化模型承认需求不能被完全了解,且不能与渐增模型的区别是:演化模型承认需求不能被完全了解,且不能在初始时就确定。在该模型中,需求一部分被预先定义,然后在每在初始时就确定。在该模型中,需求一部分被预先定义,然后在每在初始时就确定。在该模型中,需求一部分被预先定义,然后在每在初始时就确定。在该模型中,需求一部分被预先定义,然后在每个相继的中间版本中逐步完善个相继的中间版本中逐步完善个相继的中间版本中逐步完善个相继的中间版本中逐步完善n n对所有的中间版本,开发过程中的活动和任务通常接同一顺序被重对所有的中间版本,开发过程中的活动和任务通常接同一顺序被重对所有的中间版本
44、,开发过程中的活动和任务通常接同一顺序被重对所有的中间版本,开发过程中的活动和任务通常接同一顺序被重复使用。维护过程和运作过程可以与开发过程平行地使用。获取过复使用。维护过程和运作过程可以与开发过程平行地使用。获取过复使用。维护过程和运作过程可以与开发过程平行地使用。获取过复使用。维护过程和运作过程可以与开发过程平行地使用。获取过程、供应过程、支持过程和组织过程通常与开发过程平行地使用程、供应过程、支持过程和组织过程通常与开发过程平行地使用程、供应过程、支持过程和组织过程通常与开发过程平行地使用程、供应过程、支持过程和组织过程通常与开发过程平行地使用羽镊浙捻品蛹骸俊晨欺押蹲帚愉甸柄蹭荔悉斋减偏
45、腊袄糊榆皮内锁址须岁软件工程学教程软件工程学教程图图图图1-8 1-8 演化模型示意演化模型示意演化模型示意演化模型示意RnRnD DC/TC/TI/ASI/AS工作版本nD DC/TC/TI/ASI/AS工作版本2R2R2D DC/TC/TI/ASI/AS工作版本1R1R1信息流 (细化)R R:需求:需求 C/T C/T:编码:编码/ /测试测试 D D:设计:设计 I/AS I/AS:安装和验收支持:安装和验收支持幅刚切甫渴鉴苔缝嗽庐忧郡缝否炽谎戈运仗顽晤涵藤盂萎乒接雨票娟济诌软件工程学教程软件工程学教程1.3.4 螺旋模型螺旋模型n该模型是该模型是B. BoehmB. Boehm于于于
46、于19881988年提出的,它将瀑布模型与演化年提出的,它将瀑布模型与演化年提出的,它将瀑布模型与演化年提出的,它将瀑布模型与演化模型相结合,并增加了两者所忽略的风险分析模型相结合,并增加了两者所忽略的风险分析模型相结合,并增加了两者所忽略的风险分析模型相结合,并增加了两者所忽略的风险分析n n该模型通常用来指导大型软件项目的开发。该模型通常用来指导大型软件项目的开发。该模型通常用来指导大型软件项目的开发。该模型通常用来指导大型软件项目的开发。n n它将开发划分为制订计划、风险分析、实施开发和客户评它将开发划分为制订计划、风险分析、实施开发和客户评它将开发划分为制订计划、风险分析、实施开发和客
47、户评它将开发划分为制订计划、风险分析、实施开发和客户评估四类活动。沿着螺旋线每转一圈,表示开发出一个更完估四类活动。沿着螺旋线每转一圈,表示开发出一个更完估四类活动。沿着螺旋线每转一圈,表示开发出一个更完估四类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本善的新的软件版本善的新的软件版本善的新的软件版本n n如果开发风险过大,开发机构和客户无法接受,项目有可如果开发风险过大,开发机构和客户无法接受,项目有可如果开发风险过大,开发机构和客户无法接受,项目有可如果开发风险过大,开发机构和客户无法接受,项目有可能就此终止;多数情况下,会沿着螺旋线继续下去,自内能就此终止;多数情况下,会
48、沿着螺旋线继续下去,自内能就此终止;多数情况下,会沿着螺旋线继续下去,自内能就此终止;多数情况下,会沿着螺旋线继续下去,自内向外逐步延伸,最终得到满意的软件产品向外逐步延伸,最终得到满意的软件产品向外逐步延伸,最终得到满意的软件产品向外逐步延伸,最终得到满意的软件产品n n沿着螺旋线旋转,在笛卡儿坐标的四个象限上分别表达了沿着螺旋线旋转,在笛卡儿坐标的四个象限上分别表达了沿着螺旋线旋转,在笛卡儿坐标的四个象限上分别表达了沿着螺旋线旋转,在笛卡儿坐标的四个象限上分别表达了四类活动四类活动四类活动四类活动n n制定计划、风险分析、实施开发、客户评估制定计划、风险分析、实施开发、客户评估制定计划、风
49、险分析、实施开发、客户评估制定计划、风险分析、实施开发、客户评估惦眺典业秀喀陡钾宰躇钉粪迎娱雏疗邑左狱盲焕萝额删议义海墨趣薄血达软件工程学教程软件工程学教程图图图图1-9 1-9 螺旋模型螺旋模型螺旋模型螺旋模型原型1原型2原型3可运行原型详细设计编码实现单元测试集成与测试验收测试需求确认软件需求软件产品设计需求计划设计确认与验证生存期计划开发计划集成与测试风险分析风险分析风 险分析累计成本提交线评 审制定计划决定目标方案与限制风险分析评价方案、识别风险、消除风险客户评估实施开发开发、验证下一产品糊刚号跳肠暑朴抹淖钥充碉丑拣瘴覆港勘颧餐铲傻距浓批酶缝驮夷媚瞅鬃软件工程学教程软件工程学教程1.3
50、.5 喷泉模型喷泉模型n是由是由B. H. So11ersB. H. So11ers和和和和J. M. EdwardsJ. M. Edwards于于于于19901990年提出的年提出的年提出的年提出的一种开发模型,主要用于采用面向对象技术的软件一种开发模型,主要用于采用面向对象技术的软件一种开发模型,主要用于采用面向对象技术的软件一种开发模型,主要用于采用面向对象技术的软件开发项目开发项目开发项目开发项目n n“ “喷泉喷泉喷泉喷泉” ”一词本身就体现了迭代和无间隙的特性一词本身就体现了迭代和无间隙的特性一词本身就体现了迭代和无间隙的特性一词本身就体现了迭代和无间隙的特性n n软件的某个部分常
51、常被重复工作多次,相关对象在每次软件的某个部分常常被重复工作多次,相关对象在每次软件的某个部分常常被重复工作多次,相关对象在每次软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分迭代中随之加入渐进的软件成分迭代中随之加入渐进的软件成分迭代中随之加入渐进的软件成分n n无间隙是指在各项活动之间无明显边界,如分析和设计无间隙是指在各项活动之间无明显边界,如分析和设计无间隙是指在各项活动之间无明显边界,如分析和设计无间隙是指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限。由于对象概念的引入,表达活动之间没有明显的界限。由于对象概念的引入,表达活动之间没有明显的
52、界限。由于对象概念的引入,表达活动之间没有明显的界限。由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以分析、设计、实现等活动只用对象类和关系,从而可以分析、设计、实现等活动只用对象类和关系,从而可以分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的选代和无间隙,使其开发自然地较为容易地实现活动的选代和无间隙,使其开发自然地较为容易地实现活动的选代和无间隙,使其开发自然地较为容易地实现活动的选代和无间隙,使其开发自然地包括复用包括复用包括复用包括复用淹鳃独律氖函出缕椒件做啄语椒青看症爵藏猿忙顽刨蛮鸳憋讫婶玫怖按佯软件工程学教程软件工程学教程图图图图1-1
53、01-10喷泉模型喷泉模型喷泉模型喷泉模型演演演演 化化化化分分分分 析析析析设设设设 计计计计实实实实 现现现现确确确确 认认认认维维维维 护护护护靴赃渗院吐彻服嚼遗鸣奢威铲涯嗽爹甩圣取教沛蔗饥坝洛昌莲脸击倾秤遣软件工程学教程软件工程学教程1.3.6 智能模型智能模型n n也称为基于知识的软件开发模型,它是知识工程与软件工也称为基于知识的软件开发模型,它是知识工程与软件工也称为基于知识的软件开发模型,它是知识工程与软件工也称为基于知识的软件开发模型,它是知识工程与软件工程在开发模型上结合的产物程在开发模型上结合的产物程在开发模型上结合的产物程在开发模型上结合的产物n n它的维护不在程序一级上
54、进行,把问题的复杂性大为降低,它的维护不在程序一级上进行,把问题的复杂性大为降低,它的维护不在程序一级上进行,把问题的复杂性大为降低,它的维护不在程序一级上进行,把问题的复杂性大为降低,从而可以把精力更加集中于具体描述的表达上,即维护在从而可以把精力更加集中于具体描述的表达上,即维护在从而可以把精力更加集中于具体描述的表达上,即维护在从而可以把精力更加集中于具体描述的表达上,即维护在功能规约一级进行功能规约一级进行功能规约一级进行功能规约一级进行n n具体描述可以使用形式功能规约,也可以使用知识处理语具体描述可以使用形式功能规约,也可以使用知识处理语具体描述可以使用形式功能规约,也可以使用知识
55、处理语具体描述可以使用形式功能规约,也可以使用知识处理语言描述等等,因而必须将规则和推理机制应用到开发模型言描述等等,因而必须将规则和推理机制应用到开发模型言描述等等,因而必须将规则和推理机制应用到开发模型言描述等等,因而必须将规则和推理机制应用到开发模型中,所以必须建立知识库,将模型本身、软件工程知识和中,所以必须建立知识库,将模型本身、软件工程知识和中,所以必须建立知识库,将模型本身、软件工程知识和中,所以必须建立知识库,将模型本身、软件工程知识和特定领域的知识分别存入知识库,由此构成某一领域的软特定领域的知识分别存入知识库,由此构成某一领域的软特定领域的知识分别存入知识库,由此构成某一领
56、域的软特定领域的知识分别存入知识库,由此构成某一领域的软件开发系统件开发系统件开发系统件开发系统宝阀胖界将镍垢一九揭烧甥课鲤淖坊阁讼科苛徒氖免史倦舟泳赶蓝帅缎圭软件工程学教程软件工程学教程获取需求获取需求需求分析需求分析具体描述具体描述优优 化化程程 序序验验 证证维维 护护调调 整整知识库知识库/专家系统专家系统图图图图1-11 1-11 智能模型智能模型智能模型智能模型弓钱郊恬并栗苔甩战扎卯闹忍外累君舵卤硫矾暗丈嗽梅褂想容泰伞捏脾辽软件工程学教程软件工程学教程1.4 软件工程定义软件工程定义n定义一定义一:科学知识在设计和构造计算机程序,以及开发、:科学知识在设计和构造计算机程序,以及开发
57、、:科学知识在设计和构造计算机程序,以及开发、:科学知识在设计和构造计算机程序,以及开发、运作和维护这些程序所要求的有关文档编制中的实际应用运作和维护这些程序所要求的有关文档编制中的实际应用运作和维护这些程序所要求的有关文档编制中的实际应用运作和维护这些程序所要求的有关文档编制中的实际应用n n定义二定义二定义二定义二:为了经济地获得软件,这个软件是可靠的并且能:为了经济地获得软件,这个软件是可靠的并且能:为了经济地获得软件,这个软件是可靠的并且能:为了经济地获得软件,这个软件是可靠的并且能在实在的计算机上工作,所需要的健全的工程原理在实在的计算机上工作,所需要的健全的工程原理在实在的计算机上
58、工作,所需要的健全的工程原理在实在的计算机上工作,所需要的健全的工程原理 ( (方法方法方法方法) ) 的确立和使用的确立和使用的确立和使用的确立和使用n n定义三定义三定义三定义三:19831983年年年年IEEE (IEEE (国际电气与电子工程师协会国际电气与电子工程师协会国际电气与电子工程师协会国际电气与电子工程师协会) ) 的软的软的软的软件工程术语汇编中,将软件工程定义为:对软件开发、件工程术语汇编中,将软件工程定义为:对软件开发、件工程术语汇编中,将软件工程定义为:对软件开发、件工程术语汇编中,将软件工程定义为:对软件开发、运作、维护、退役的系统研究方法运作、维护、退役的系统研究
59、方法运作、维护、退役的系统研究方法运作、维护、退役的系统研究方法n定义四定义四:19901990年新版的年新版的年新版的年新版的IEEEIEEE软件工程术语汇编又将定软件工程术语汇编又将定软件工程术语汇编又将定软件工程术语汇编又将定义更改为:对软件开发、运作、维护的系统化的、有纪律义更改为:对软件开发、运作、维护的系统化的、有纪律义更改为:对软件开发、运作、维护的系统化的、有纪律义更改为:对软件开发、运作、维护的系统化的、有纪律的、可定量的方法之应用,即是对软件的工程化应用的、可定量的方法之应用,即是对软件的工程化应用的、可定量的方法之应用,即是对软件的工程化应用的、可定量的方法之应用,即是对
60、软件的工程化应用儿勉悔和渔汁有胸谬剪乐麓藻钢婆午尊惕职谎啡俄人墩懒妄绎控没显棱韵软件工程学教程软件工程学教程1.4 软件工程定义软件工程定义n软件工程已经是一门交叉性学科,它是解决软件问题的工软件工程已经是一门交叉性学科,它是解决软件问题的工程,对它的理解不应是静止的和孤立的程,对它的理解不应是静止的和孤立的n软件工程是应用计算机科学、数学及管理科学等原理,借软件工程是应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法来创建软件,从而达到提高质量、鉴传统工程的原则、方法来创建软件,从而达到提高质量、降低成本的目的降低成本的目的n n计算机科学和数学用于构造模型、分析算法计算机科学和
61、数学用于构造模型、分析算法计算机科学和数学用于构造模型、分析算法计算机科学和数学用于构造模型、分析算法n n工程科学用于制定规范、明确风格、评估成本、确定权衡工程科学用于制定规范、明确风格、评估成本、确定权衡工程科学用于制定规范、明确风格、评估成本、确定权衡工程科学用于制定规范、明确风格、评估成本、确定权衡n n管理科学用于进度、资源、质量、成本等的管理管理科学用于进度、资源、质量、成本等的管理管理科学用于进度、资源、质量、成本等的管理管理科学用于进度、资源、质量、成本等的管理缘搪泼狱坐峡贝冕斜缅茸丽蚀嘲汤返崇殴准恕札甚孽脸妄哈毕道徐肆恒恨软件工程学教程软件工程学教程1.4 软件工程定义软件工
62、程定义n软件工程的目标是明确的,就是研制开发与生产软件工程的目标是明确的,就是研制开发与生产出具有良好的软件质量和费用合算的产品出具有良好的软件质量和费用合算的产品n n费用合算是指软件开发运行的整个开销能满足用户要费用合算是指软件开发运行的整个开销能满足用户要费用合算是指软件开发运行的整个开销能满足用户要费用合算是指软件开发运行的整个开销能满足用户要求的程度求的程度求的程度求的程度n n软件质量是指该软件能满足明确的和隐含的需求能力软件质量是指该软件能满足明确的和隐含的需求能力软件质量是指该软件能满足明确的和隐含的需求能力软件质量是指该软件能满足明确的和隐含的需求能力的有关特征和特性的总和的
63、有关特征和特性的总和的有关特征和特性的总和的有关特征和特性的总和值怠笑煽穗她儡韧戚抖呻影墨亨挎聪倪遗集温倘户灯否示卒培野禁拟宵怔软件工程学教程软件工程学教程1.4 软件工程定义软件工程定义n软件工程的基础是一些指导性的原则软件工程的基础是一些指导性的原则n n必须认识软件需求的变动性,并采取适当措施来保证结果必须认识软件需求的变动性,并采取适当措施来保证结果必须认识软件需求的变动性,并采取适当措施来保证结果必须认识软件需求的变动性,并采取适当措施来保证结果产品能忠实地满足用户要求。在软件设计中,通常要考虑产品能忠实地满足用户要求。在软件设计中,通常要考虑产品能忠实地满足用户要求。在软件设计中,
64、通常要考虑产品能忠实地满足用户要求。在软件设计中,通常要考虑模块化、抽象与信息隐蔽、局部化、一致性等原则模块化、抽象与信息隐蔽、局部化、一致性等原则模块化、抽象与信息隐蔽、局部化、一致性等原则模块化、抽象与信息隐蔽、局部化、一致性等原则n n稳妥的设计方法大大地方便软件开发,为达到软件工程的稳妥的设计方法大大地方便软件开发,为达到软件工程的稳妥的设计方法大大地方便软件开发,为达到软件工程的稳妥的设计方法大大地方便软件开发,为达到软件工程的目标,软件工具与环境对软件设计的支持来说,颇为重要目标,软件工具与环境对软件设计的支持来说,颇为重要目标,软件工具与环境对软件设计的支持来说,颇为重要目标,软
65、件工具与环境对软件设计的支持来说,颇为重要n n软件工程项目的质量与经济开销直接取决于对它所提供的软件工程项目的质量与经济开销直接取决于对它所提供的软件工程项目的质量与经济开销直接取决于对它所提供的软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用支撑的质量与效用支撑的质量与效用支撑的质量与效用n n有效的软件工程只有在对软件过程进行有效管理的情况下有效的软件工程只有在对软件过程进行有效管理的情况下有效的软件工程只有在对软件过程进行有效管理的情况下有效的软件工程只有在对软件过程进行有效管理的情况下才能实现才能实现才能实现才能实现顺骆系肚与诺捻豹涨爪温逐嗅擦师奇吕岿帐菜蹲溢弟恃掌
66、文拄咐观摘俄物软件工程学教程软件工程学教程1.4.1 软件工程学的内容软件工程学的内容n从软件的生产管理技术来分从软件的生产管理技术来分n n软件的需求定义和分析技术软件的需求定义和分析技术软件的需求定义和分析技术软件的需求定义和分析技术n n软件设计技术和设计审查技术软件设计技术和设计审查技术软件设计技术和设计审查技术软件设计技术和设计审查技术n n软件设计表现技术软件设计表现技术软件设计表现技术软件设计表现技术n n软件测试技术软件测试技术软件测试技术软件测试技术n n软件可靠性的理论及其评价方法软件可靠性的理论及其评价方法软件可靠性的理论及其评价方法软件可靠性的理论及其评价方法n n软件
67、扩充和维护软件扩充和维护软件扩充和维护软件扩充和维护n n软件成本估算等软件成本估算等软件成本估算等软件成本估算等凶杭说搜猛雄招胯昔厘巢纷瘸敛壤痛忘躇莎囊诲脑搜烤砾悄灰欺苦宋涎辕软件工程学教程软件工程学教程1.4.1 软件工程学的内容软件工程学的内容n从内容上可分为理论、结构、方法、工具等部分从内容上可分为理论、结构、方法、工具等部分n n理论与结构是方法论与工具的基础及前提理论与结构是方法论与工具的基础及前提理论与结构是方法论与工具的基础及前提理论与结构是方法论与工具的基础及前提n n在方法论与工具方面存在着这样的关系:为了找出行之有效的方法在方法论与工具方面存在着这样的关系:为了找出行之有
68、效的方法在方法论与工具方面存在着这样的关系:为了找出行之有效的方法在方法论与工具方面存在着这样的关系:为了找出行之有效的方法就应该具备合适的工具;反之,为了制造、改进软件工具,也应先就应该具备合适的工具;反之,为了制造、改进软件工具,也应先就应该具备合适的工具;反之,为了制造、改进软件工具,也应先就应该具备合适的工具;反之,为了制造、改进软件工具,也应先有合适的方法有合适的方法有合适的方法有合适的方法n n要达到如何以较少的代价获得高质量的软件这个目的,就要达到如何以较少的代价获得高质量的软件这个目的,就要达到如何以较少的代价获得高质量的软件这个目的,就要达到如何以较少的代价获得高质量的软件这
69、个目的,就必须研究软件开发方法和软件开发工具必须研究软件开发方法和软件开发工具必须研究软件开发方法和软件开发工具必须研究软件开发方法和软件开发工具n n软件开发方法就是开发软件的规范化方法软件开发方法就是开发软件的规范化方法软件开发方法就是开发软件的规范化方法软件开发方法就是开发软件的规范化方法n n工作步骤,即明确软件系统的基本开发步骤及每一步的条件、目的、工作步骤,即明确软件系统的基本开发步骤及每一步的条件、目的、工作步骤,即明确软件系统的基本开发步骤及每一步的条件、目的、工作步骤,即明确软件系统的基本开发步骤及每一步的条件、目的、结果等结果等结果等结果等n n软件文件格式软件文件格式软件
70、文件格式软件文件格式n n评价标准,即确定对各种不同的软件开发方案的评价标准评价标准,即确定对各种不同的软件开发方案的评价标准评价标准,即确定对各种不同的软件开发方案的评价标准评价标准,即确定对各种不同的软件开发方案的评价标准鸽捅俩肺接员么吮庇拦徊巫单探狞涣眩怕游绸富鄙祝绚早槽老牛卑蹦框帜软件工程学教程软件工程学教程1.4.2 软件工程过程软件工程过程n是指为获得软件产品,在软件工具的支持下,由软件工程师是指为获得软件产品,在软件工具的支持下,由软件工程师完成的一系列软件工程活动,通常包含完成的一系列软件工程活动,通常包含4 4种基本的过程活动种基本的过程活动种基本的过程活动种基本的过程活动n
71、 nP (Plan) P (Plan) :软件规格说明,规定软件的功能及其运行的限制:软件规格说明,规定软件的功能及其运行的限制:软件规格说明,规定软件的功能及其运行的限制:软件规格说明,规定软件的功能及其运行的限制n nD (Do) D (Do) :软件开发,产生满足规格说明的软件:软件开发,产生满足规格说明的软件:软件开发,产生满足规格说明的软件:软件开发,产生满足规格说明的软件n nC (Check) C (Check) :软件确认,确认软件能够完成客户提出的要求:软件确认,确认软件能够完成客户提出的要求:软件确认,确认软件能够完成客户提出的要求:软件确认,确认软件能够完成客户提出的要求
72、n nA (Action) A (Action) :软件演进,为满足客户的变更要求,软件必须在使用的:软件演进,为满足客户的变更要求,软件必须在使用的:软件演进,为满足客户的变更要求,软件必须在使用的:软件演进,为满足客户的变更要求,软件必须在使用的过程中演进过程中演进过程中演进过程中演进n n事实上,软件工程过程是一个软件开发机构针对某一类软件事实上,软件工程过程是一个软件开发机构针对某一类软件事实上,软件工程过程是一个软件开发机构针对某一类软件事实上,软件工程过程是一个软件开发机构针对某一类软件产品为自己规定的工作步骤产品为自己规定的工作步骤产品为自己规定的工作步骤产品为自己规定的工作步骤
73、挖狱浪蹿觉谅溯营鞋梧瘟源捞泣陇烷蚜熄热欲悬芭车真献宿投科酸汽赢道软件工程学教程软件工程学教程1.4.3 软件工程学的基本目标和原则软件工程学的基本目标和原则n软件工程项目的成功,是指达到以下几个主要目标软件工程项目的成功,是指达到以下几个主要目标n n付出较低的开发成本付出较低的开发成本付出较低的开发成本付出较低的开发成本n n达到要求的软件功能达到要求的软件功能达到要求的软件功能达到要求的软件功能n n取得较好的软件性能取得较好的软件性能取得较好的软件性能取得较好的软件性能n n开发的软件易于移植开发的软件易于移植开发的软件易于移植开发的软件易于移植n n需要较低的维护费用需要较低的维护费用
74、需要较低的维护费用需要较低的维护费用n n能按时完成开发工作,及时交付使用能按时完成开发工作,及时交付使用能按时完成开发工作,及时交付使用能按时完成开发工作,及时交付使用n n上述目标有些很可能是互相冲突的上述目标有些很可能是互相冲突的上述目标有些很可能是互相冲突的上述目标有些很可能是互相冲突的n n若只顾降低开发成本,很可能同时也降低了软件的可靠性若只顾降低开发成本,很可能同时也降低了软件的可靠性若只顾降低开发成本,很可能同时也降低了软件的可靠性若只顾降低开发成本,很可能同时也降低了软件的可靠性n n如果过于追求提高软件的性能,可能造成所开发软件对硬件有较大如果过于追求提高软件的性能,可能造
75、成所开发软件对硬件有较大如果过于追求提高软件的性能,可能造成所开发软件对硬件有较大如果过于追求提高软件的性能,可能造成所开发软件对硬件有较大的依赖,从而直接影响到软件的可移植性等等的依赖,从而直接影响到软件的可移植性等等的依赖,从而直接影响到软件的可移植性等等的依赖,从而直接影响到软件的可移植性等等颠睦鸯屡轨译揭床蓬肤惊辟制盔银侧燕骨藤育醇励沮舶婆璃指芝肾克烙偶软件工程学教程软件工程学教程低开发成本易于维护高可靠性高性能按时交付互斥关系互斥关系互补关系互补关系图图图图1-12 1-12 软件工程目标之间的关系软件工程目标之间的关系软件工程目标之间的关系软件工程目标之间的关系缮忘刃圈磋展抚缨孜麦
76、炎狙泵攀骄叁涡虾行慑凿笋耸又堤婴耪铅捕辗直屉软件工程学教程软件工程学教程1.4.3 软件工程学的基本目标和原则软件工程学的基本目标和原则n各种软件工程技术所遵循的基本原则是各种软件工程技术所遵循的基本原则是n n分解分解分解分解 n n抽象和信息隐蔽抽象和信息隐蔽抽象和信息隐蔽抽象和信息隐蔽n n一致性一致性一致性一致性n n确定性确定性确定性确定性捅粥汇螟粘惜霜沽蕉咎摹讨坛想干浦维烦膳玉韵佃迈居摔床锭襄屡吱蔗绦软件工程学教程软件工程学教程1.4.4 软件工程与一般工程的差异软件工程与一般工程的差异n软件是逻辑产品而不是实物产品,其功能只能依赖于硬件软件是逻辑产品而不是实物产品,其功能只能依赖
77、于硬件和软件的运行环境以及人们对它的操作才能得以体现。软和软件的运行环境以及人们对它的操作才能得以体现。软件与硬件的密切相关件与硬件的密切相关n对软件产品的要求比一般有形产品来得复杂对软件产品的要求比一般有形产品来得复杂n n软件产品要完成的多种多样功能,用户难以清晰、准确地表达软件产品要完成的多种多样功能,用户难以清晰、准确地表达软件产品要完成的多种多样功能,用户难以清晰、准确地表达软件产品要完成的多种多样功能,用户难以清晰、准确地表达n n对软件产品的要求,如可靠性、易移植性、易使用性等等是隐含的,对软件产品的要求,如可靠性、易移植性、易使用性等等是隐含的,对软件产品的要求,如可靠性、易移
78、植性、易使用性等等是隐含的,对软件产品的要求,如可靠性、易移植性、易使用性等等是隐含的,也是难以表达的,而且也缺少度量的具体标准也是难以表达的,而且也缺少度量的具体标准也是难以表达的,而且也缺少度量的具体标准也是难以表达的,而且也缺少度量的具体标准n n软件设计不仅仅涉及到技术复杂性,也还涉及到管理复杂性软件设计不仅仅涉及到技术复杂性,也还涉及到管理复杂性软件设计不仅仅涉及到技术复杂性,也还涉及到管理复杂性软件设计不仅仅涉及到技术复杂性,也还涉及到管理复杂性n n软件工程是智力密集型产业,知识产权保护极为重要软件工程是智力密集型产业,知识产权保护极为重要软件工程是智力密集型产业,知识产权保护极
79、为重要软件工程是智力密集型产业,知识产权保护极为重要纱颊预塌窖啤寅踌逊幢寄泪教凸漓缘宪倒琼奢蒋艳年倚话贯窃犯熊故簧庞软件工程学教程软件工程学教程1.4.4 软件工程与一般工程的差异软件工程与一般工程的差异n软件特征包括四个方面软件特征包括四个方面n n功能的多样性功能的多样性功能的多样性功能的多样性。使用软件产品往往还会伴随培训任务,。使用软件产品往往还会伴随培训任务,。使用软件产品往往还会伴随培训任务,。使用软件产品往往还会伴随培训任务,软件产品的用户手册还不一定能全面描述其功能软件产品的用户手册还不一定能全面描述其功能软件产品的用户手册还不一定能全面描述其功能软件产品的用户手册还不一定能全
80、面描述其功能n n实现的多样性实现的多样性实现的多样性实现的多样性。对软件产品的要求不仅包括功能和性能。对软件产品的要求不仅包括功能和性能。对软件产品的要求不仅包括功能和性能。对软件产品的要求不仅包括功能和性能要求,还必须包括在符合功能和性能要求的各种实现中要求,还必须包括在符合功能和性能要求的各种实现中要求,还必须包括在符合功能和性能要求的各种实现中要求,还必须包括在符合功能和性能要求的各种实现中做出选择,更有实现算法上的优化带来的不同,所以实做出选择,更有实现算法上的优化带来的不同,所以实做出选择,更有实现算法上的优化带来的不同,所以实做出选择,更有实现算法上的优化带来的不同,所以实现上的
81、差异会带来使用上的差异现上的差异会带来使用上的差异现上的差异会带来使用上的差异现上的差异会带来使用上的差异n n能见度低能见度低能见度低能见度低。要看到软件进度涉及到如何使用文档表示的。要看到软件进度涉及到如何使用文档表示的。要看到软件进度涉及到如何使用文档表示的。要看到软件进度涉及到如何使用文档表示的概念能见度,这为软件管理复杂性增加了难度概念能见度,这为软件管理复杂性增加了难度概念能见度,这为软件管理复杂性增加了难度概念能见度,这为软件管理复杂性增加了难度n n软件结构的合理性差软件结构的合理性差软件结构的合理性差软件结构的合理性差。软件管理复杂性随着软件规模增。软件管理复杂性随着软件规模
82、增。软件管理复杂性随着软件规模增。软件管理复杂性随着软件规模增大而呈指数地增长,管理复杂性成了软件设计的难题大而呈指数地增长,管理复杂性成了软件设计的难题大而呈指数地增长,管理复杂性成了软件设计的难题大而呈指数地增长,管理复杂性成了软件设计的难题拐酵柿挥抡雹独泉膏胯余湛眯藉零侣歼啡嗣咀掠恶乱逾迄躲么弥龋装爸崇软件工程学教程软件工程学教程1.5 小结小结n软件危机的根本原因是软件系统高度复杂、难于驾驭和早期软软件危机的根本原因是软件系统高度复杂、难于驾驭和早期软件开发所带有的个人色彩件开发所带有的个人色彩n要解决软件危机,必须应用严格的技术,使用帮助管理复杂性要解决软件危机,必须应用严格的技术,
83、使用帮助管理复杂性的工具。在广泛的意义上,我们称这个学科为软件工程的工具。在广泛的意义上,我们称这个学科为软件工程n n一项计算机软件,从出现一个构思之日起,经过开发并投入使一项计算机软件,从出现一个构思之日起,经过开发并投入使一项计算机软件,从出现一个构思之日起,经过开发并投入使一项计算机软件,从出现一个构思之日起,经过开发并投入使用,到停止使用止,被认为是该软件的一个生存周期。软件产用,到停止使用止,被认为是该软件的一个生存周期。软件产用,到停止使用止,被认为是该软件的一个生存周期。软件产用,到停止使用止,被认为是该软件的一个生存周期。软件产品的生存周期又划分成若干个互相区别而又有联系的阶
84、段品的生存周期又划分成若干个互相区别而又有联系的阶段品的生存周期又划分成若干个互相区别而又有联系的阶段品的生存周期又划分成若干个互相区别而又有联系的阶段n n软件工程方法学的目标是,把一种系统化的方法学用于系统开软件工程方法学的目标是,把一种系统化的方法学用于系统开软件工程方法学的目标是,把一种系统化的方法学用于系统开软件工程方法学的目标是,把一种系统化的方法学用于系统开发上,为系统的开发提供一组可加以复审的任务,改善系统的发上,为系统的开发提供一组可加以复审的任务,改善系统的发上,为系统的开发提供一组可加以复审的任务,改善系统的发上,为系统的开发提供一组可加以复审的任务,改善系统的质量和可维护性,以及加强对系统开发的管理和控制质量和可维护性,以及加强对系统开发的管理和控制质量和可维护性,以及加强对系统开发的管理和控制质量和可维护性,以及加强对系统开发的管理和控制抢狗酗福忍寻喷对榷追贫煞馏蔓浅仅冉脖欺怂值超獭苔箩学录琢烃销抗寥软件工程学教程软件工程学教程