《软件工程讲义34226.pptx》由会员分享,可在线阅读,更多相关《软件工程讲义34226.pptx(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 软件工程软件工程(第二版)(第二版)齐治昌、谭庆平、宁洪齐治昌、谭庆平、宁洪齐治昌、谭庆平、宁洪齐治昌、谭庆平、宁洪 编著编著编著编著 高等教育出版社高等教育出版社高等教育出版社高等教育出版社 主讲:陈明锐主讲:陈明锐 教授教授省级精品课程省级精品课程老师联系方式老师联系方式陈明锐,信息学院副院长办公室(陈明锐,信息学院副院长办公室(309房)房)办公电话:办公电话:66279275,手机:,手机:13307561369 提交作业全部用附件,文件名为:学号提交作业全部用附件,文件名为:学号+姓名姓名+加章次加章次例如文件名:例如文件名:20060724133陈好五陈好五.DOC表示陈好的第五
2、章作业!表示陈好的第五章作业!课后有问题最好用电子邮件。课后有问题最好用电子邮件。电子邮件:电子邮件: 课程进度安排分析与设计课堂演讲竞赛,请同学们在第分析与设计课堂演讲竞赛,请同学们在第4周前分好组并把分组名单发给老师。分组要求周前分好组并把分组名单发给老师。分组要求57人人一组,能力强弱结合,分工合作,发扬团队合作精神。最终形成课程设计提交!一组,能力强弱结合,分工合作,发扬团队合作精神。最终形成课程设计提交!周周序序日期日期讲授主要内容讲授主要内容实践教学内容实践教学内容备注备注12.27第一章第一章 绪论:软件与软件危机,软件工程学的范畴;传统软件工程和面向对象软件工绪论:软件与软件危
3、机,软件工程学的范畴;传统软件工程和面向对象软件工程,软件工程的应用程,软件工程的应用23.05第二章第二章 软件开发模型:软件生存周期,传统软件开发模型,软件演化模型软件开发模型:软件生存周期,传统软件开发模型,软件演化模型3.06第二章第二章 软件开发模型:面向对象开发模型,形式化方法模型,开发模型选用实例软件开发模型:面向对象开发模型,形式化方法模型,开发模型选用实例33.13第三章第三章 软件需求分析:需求分析的任务与步骤,需求获取的常用方法;分析建模,软软件需求分析:需求分析的任务与步骤,需求获取的常用方法;分析建模,软件需求说明件需求说明43.19第三章第三章 软件需求分析:结构化
4、分析方法软件需求分析:结构化分析方法实验实验1:选题(:选题(1学学时)时)3.20第三章第三章 软件需求分析:面向对象分析方法软件需求分析:面向对象分析方法53.27第四章第四章 软件设计概述:软件设计的任务,软件设计的基本概念;模块化设计,其他设软件设计概述:软件设计的任务,软件设计的基本概念;模块化设计,其他设计问题的处理,设计文档及其复审计问题的处理,设计文档及其复审实验实验2:可行性分析:可行性分析64.02第五章第五章 传统的设计方法:传统的设计方法:概述,结构化设计方法、过程设计概述,结构化设计方法、过程设计实验实验3:需求分析:需求分析4.03第六章第六章 面向对象设计方法:面
5、向对象设计概述,系统设计面向对象设计方法:面向对象设计概述,系统设计74.10第六章第六章 面向对象设计方法:对象设计,领域对象设计面向对象设计方法:对象设计,领域对象设计实验实验4:需求分析:需求分析第七章第七章 统一建模语言统一建模语言UML:UML的组成、特点与应用,静态建模的组成、特点与应用,静态建模84.16面向过程分析设计课堂演讲竞赛面向过程分析设计课堂演讲竞赛面向过程分析设计演讲竞赛,需要两面向过程分析设计演讲竞赛,需要两次课!次课!或者根据学生情况往后推迟两周或者根据学生情况往后推迟两周4.17面向过程分析设计课堂演讲竞赛面向过程分析设计课堂演讲竞赛课程进度安排周周序序日期日期
6、讲讲授主要内容授主要内容实实践教学内容践教学内容备备注注9 94.244.24第七章第七章 统统一建模一建模语语言言UMLUML:动态动态建模,建模,实验实验5 5:软软件件设计设计第七章第七章 物理架构建模,基于物理架构建模,基于UMLUML的的统统一建模一建模过过程程RUPRUP,第八章,第八章 编码编码和和语语言言选选择择10104.304.30第九章:第九章:软软件件测试测试:测试测试的基本概念,黑盒的基本概念,黑盒测试测试备备注:注:5.1 5.1 放放 长长 假假11115.085.08第九章:第九章:软软件件测试测试:白盒:白盒测试测试,测试测试用例用例设计设计;软软件件测试测试
7、:软软件的件的纠错纠错实验实验6 6:编码编码与与调试调试程序程序12125.145.14第九章:第九章:软软件件测试测试:多模:多模块块程序的程序的测试测试策略策略实验实验7 7:编码编码与与调试调试程序程序5.155.15第九章:第九章:软软件件测试测试:面向:面向对对象系象系统统的的测试测试,第十章,第十章 软软件复用件复用13135.225.22第十一章第十一章 软软件件维护维护,第十二章,第十二章 软软件件项项目目计计划划实验实验8 8:编码编码与与调试调试14145.285.28面向面向对对象分析象分析设计设计演演讲竞赛讲竞赛实验实验9 9:软软件件测试测试5.295.29面向面向
8、对对象分析象分析设计设计演演讲竞赛讲竞赛15156.056.05第十三章第十三章 软软件工程管理,第十四章件工程管理,第十四章 软软件件质质量管理:从量管理:从质质量保量保证证到到质质量量认证认证,质质量保量保证证,软软件可靠性件可靠性16166.116.11第十四章第十四章 软软件件质质量管理:程序正确性量管理:程序正确性证证明,明,CMMCMM软软件能力成熟度模型,件能力成熟度模型,ISO9000ISO9000国国际标际标准,准,软软件度量件度量6.126.12第十五章:第十五章:软软件工程件工程环环境境17176.196.19总总复复习习、答疑、答疑合合 计计6868学学时时随堂与随堂与
9、课课外外结结合合课程简介及教学目标课程简介及教学目标 “软件工程软件工程”是计算机科学与技术、计算是计算机科学与技术、计算机软件与理论、信息与计算科学及其相关专业机软件与理论、信息与计算科学及其相关专业的一门专业基础课,它是软件设计与开发以及的一门专业基础课,它是软件设计与开发以及各种计算机应用系统开发的重要基础。是本科各种计算机应用系统开发的重要基础。是本科培养目标培养目标软件系统设计师和软件开发工程软件系统设计师和软件开发工程师师的必备知识。主要内容包括软件工程概述、的必备知识。主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、可行性分析、需求分析、概要设计、详细设计、面
10、向对象分析与设计、编码、软件质量与质量面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理等。课程的学习对提升保证、项目计划与管理等。课程的学习对提升同学们的能力、素质、道德修养、团队精神等同学们的能力、素质、道德修养、团队精神等都具有非常重要的意义。都具有非常重要的意义。课程简介及教学目标课程简介及教学目标 在课程的学习和实践中,同学们应在课程的学习和实践中,同学们应理解和掌握软件工程中的软件生命周期理解和掌握软件工程中的软件生命周期各阶段的任务、过程、结构化方法和工各阶段的任务、过程、结构化方法和工具;面向对象方法学、面向对象分析、具;面向对象方法学、面向对象分析、设计和实现;软件
11、工程应用的管理技术设计和实现;软件工程应用的管理技术等。本课程的目的与任务是使同学们通等。本课程的目的与任务是使同学们通过本课程的学习,了解软件项目开发和过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统维护的一般过程,掌握软件开发的传统方法和最新方法,为今后更深入地学习方法和最新方法,为今后更深入地学习和从事有关软件工程实践工作打下良好和从事有关软件工程实践工作打下良好的理论基础。的理论基础。软件开发与人才需求未来软件开发的生产模式及对人才的要求现有模式:小作坊的、一人身兼多职、英雄式的软件开发生产模式:大规模的软件生产,专业化、分工越来越细,团队合作开发对人才的要求:除精
12、通开发技术外,更需 要软件工程意识和团队 合作精神中国软件产业 中国软件产业的途径之一中国软件产业的途径之一(软件外包软件外包)印度软件产业发展与软件外包 中国向印度学习中国向印度学习发展软件外包业务发展软件外包业务中国目前外包业务与市场分析 中国目前80%的外包业务来自日、韩等亚洲国家 印度的外包业务主要来自于美国 中国和印度的不同(文化、语言、软件工程意识)软件工程教育的定位软件工程教育的定位我国软件工程的专业教育与软件人才的链之我国软件工程的专业教育与软件人才的链之间的关系可描述为如下图:间的关系可描述为如下图:软件开发工程师软件开发工程师架构设计师架构设计师产品经理产品经理项目管理者项
13、目管理者系统分析师系统分析师系统设计师系统设计师程序员程序员研究生教育研究生教育本科教育本科教育大专教育大专教育中专教育中专教育软件工程教育的定位软件工程教育的定位 观点:观点:不同的人才培养或者不同软件开发的岗位对软件工程的知识要求是不一样的。我们在学习软件工程知识与选用教材时,充分地考虑到这一因素,采取因材取舍的原则。不同的软件工程教材,适用于不同层次的人员学习,所以不同层次的人才选用不同的教材。例:海南纽康信息系统有限公司海南纽康信息系统有限公司 岗位能力规定1.程序员岗位能力规定程序员岗位能力规定录录用用员员工工条条件件年龄范围:年龄范围:20-2520-25学历要求:学历要求:大专以
14、上或中专以上并有计算机相关证书大专以上或中专以上并有计算机相关证书专业要求:专业要求:计算机及相关专业计算机及相关专业工作经历要求:工作经历要求:1.1.有从事软件编程的实习经历有从事软件编程的实习经历3-63-6个月以上。个月以上。2.2.通过公司内部实习期。通过公司内部实习期。日语水平:日语水平:1.1.相当三级相当三级 2.2.或者有或者有4 4级证书级证书 3.3.或者进公司时能理解日语仕样书,熟悉日语环境或者进公司时能理解日语仕样书,熟悉日语环境技术水平:技术水平:1.1.熟悉和掌握基本的数据库熟悉和掌握基本的数据库 2.2.熟悉和掌握熟悉和掌握2 2门开发语言门开发语言 3.3.能
15、胜任项目中编程能胜任项目中编程能力要求:能力要求:1.1.具备较强的学习能力具备较强的学习能力 2.2.工作积极主动,有责任心,有良好的品质意识工作积极主动,有责任心,有良好的品质意识岗岗位位工工作作描描述述1.1.能按时按质完成软件项目中的编码工作能按时按质完成软件项目中的编码工作2.2.能按时按质完成单体测试工作能按时按质完成单体测试工作3.3.能制作符合要求的测试报告能制作符合要求的测试报告4.4.能认真的参加项目内或部门、公司安排的培训,并且能达到培训要求。能认真的参加项目内或部门、公司安排的培训,并且能达到培训要求。5.5.每年的技术水平和日语水平考核有进步。每年的技术水平和日语水平
16、考核有进步。2.软件工程师岗位能力规定软件工程师岗位能力规定录录用用员员工工条条件件年龄范围:年龄范围:20-2720-27学历要求:大专以上学历要求:大专以上专业要求:计算机及相关专业专业要求:计算机及相关专业工作经历要求:工作经历要求:1.有从事软件编程一年以上的相关工作经历有从事软件编程一年以上的相关工作经历 2.通过公司内部试用期通过公司内部试用期日语水平:日语水平:1.相当三级相当三级 2.或者有或者有4级证书级证书 3.能理解日语仕样书,熟悉日语开发环境达一年能理解日语仕样书,熟悉日语开发环境达一年 技术水平:技术水平:1.熟悉运用熟悉运用SQL server、Oracle数据库数
17、据库 2.熟悉运用熟悉运用VC、C+或或Java编程编程 3.能带一个实习生能带一个实习生 能力要求:能力要求:1.具备较强的学习能力具备较强的学习能力 2.工作积极主动,有责任心,有良好的品质意识工作积极主动,有责任心,有良好的品质意识 3.具有团队协作精神及沟通能力具有团队协作精神及沟通能力 岗岗位位工工作作描描述述1.能按时按质完成软件项目中的编码工作能按时按质完成软件项目中的编码工作2.能完成详细设计的任务能完成详细设计的任务3.能完成综合测试任务能完成综合测试任务4.能协助公司独立担当带好新手的任务能协助公司独立担当带好新手的任务 3.高级软件工程师岗位能力规定高级软件工程师岗位能力
18、规定录录用用员员工工条条件件年龄范围:年龄范围:25岁以上岁以上学历要求:本科以上或专科并有学历要求:本科以上或专科并有 计算机相关技术证书计算机相关技术证书 专业要求:专业要求:计算机及相关专业计算机及相关专业工作经历要求:工作经历要求:1.从事日本软件编程的工作经历超过三年从事日本软件编程的工作经历超过三年 2.有在项目中担任技术骨干的经验至少一年有在项目中担任技术骨干的经验至少一年 3.通过公司内部试用期。通过公司内部试用期。日语水平:日语水平:1.相当三级相当三级 2.能理解日语仕样书能理解日语仕样书 技术水平:技术水平:1.精通运用精通运用SQL server、Oracle数据库数据
19、库 2.精通精通VC、C+或或Java,同类技术运用时间在三年以上,同类技术运用时间在三年以上 3.熟悉各种计算机开发语言。熟悉各种计算机开发语言。能力要求:能力要求:1.具备较强的学习能力具备较强的学习能力 2.工作积极主动,有责任心,有良好的品质意识工作积极主动,有责任心,有良好的品质意识 3.具有团队协作精神及沟通能力具有团队协作精神及沟通能力 4.在项目组中有解决技术难题的能力或能起到项目组协理作用在项目组中有解决技术难题的能力或能起到项目组协理作用 岗岗位位工工作作描描述述1.能配合项目主管按时按质完成项目任务。能配合项目主管按时按质完成项目任务。2.在项目组内担当技术骨干作用或担当
20、部门协理作用。在项目组内担当技术骨干作用或担当部门协理作用。3.首先理解项目中客户规定的首先理解项目中客户规定的“工具工具”,并能辅导组员掌握,并在整个项目中担当指,并能辅导组员掌握,并在整个项目中担当指导工作。导工作。4.担当事业部内或公司安排的技术培训任务。担当事业部内或公司安排的技术培训任务。5.能担任详细设计工作。能担任详细设计工作。4.项目主管岗位能力规定项目主管岗位能力规定录录用用员员工工条条件件年龄范围:年龄范围:2828岁以上岁以上学历要求:本科以上或专科并有学历要求:本科以上或专科并有 计算机相关技术证书计算机相关技术证书 专业要求:专业要求:计算机及相关专业计算机及相关专业
21、工作经历要求:工作经历要求:1.1.从事日本软件编程的工作经历超过三年从事日本软件编程的工作经历超过三年 2.2.有项目主管、组长经历两年以上有项目主管、组长经历两年以上 3.3.通过公司内部试用期通过公司内部试用期日语水平:日语水平:1.1.相当一级相当一级 2.2.二级以上证书二级以上证书技术水平:技术水平:1.1.熟悉各类数据库熟悉各类数据库 2.2.熟悉各种计算机开发语言熟悉各种计算机开发语言 3.3.熟悉特定的开发工具熟悉特定的开发工具能力要求:能力要求:1.1.具备较强的学习能力,具有进取心具备较强的学习能力,具有进取心 2.2.工作积极主动,有责任心,有良好的品质意识工作积极主动
22、,有责任心,有良好的品质意识 3.3.具有上下沟通的能力具有上下沟通的能力 4.4.具有项目组与项目组之间的合作意识和整体意识。具有项目组与项目组之间的合作意识和整体意识。岗岗位位工工作作描描述述1.1.项目开始前的准备,培训计划制定、环境构成、体制及人员安排项目开始前的准备,培训计划制定、环境构成、体制及人员安排2.2.项目开发标准的实施项目开发标准的实施3.3.整个项目过程的控制,进度管理整个项目过程的控制,进度管理4.4.项目项目QAQA管理,负责项目总体测试工作管理,负责项目总体测试工作5.5.项目后期的文档整理,维护对应计划及安排,项目总结,项目成员能力评价项目后期的文档整理,维护对
23、应计划及安排,项目总结,项目成员能力评价6.6.保密计划和质量计划等(特殊要求的项目)的制定、实施保密计划和质量计划等(特殊要求的项目)的制定、实施7.7.组织解决技术方面重大问题和及时应对的处理。组织解决技术方面重大问题和及时应对的处理。5.项目经理岗位能力规定项目经理岗位能力规定录录用用员员工工条条件件年龄范围:年龄范围:28岁以上岁以上学历要求:本科以上或专科并有学历要求:本科以上或专科并有 计算机相关技术证书计算机相关技术证书 专业要求:专业要求:计算机及相关专业计算机及相关专业工作经历要求:工作经历要求:1.有项目经理经历两年以上有项目经理经历两年以上 2.同时有日本工作经验一年以上
24、同时有日本工作经验一年以上 3.通过公司内部试用期通过公司内部试用期日语水平:日语水平:1.日语一级日语一级 技术水平:技术水平:1.熟悉各类数据库熟悉各类数据库 2.熟悉各种计算机开发语言熟悉各种计算机开发语言 3.熟悉特定的开发工具熟悉特定的开发工具 能力要求:能力要求:1.具备较强的学习能力,具有进取心具备较强的学习能力,具有进取心 2.工作积极主动,有责任心,有良好的品质意识工作积极主动,有责任心,有良好的品质意识 3.具有上下沟通的能力具有上下沟通的能力 4.具有项目组与项目组之间的合作意识和整体意识具有项目组与项目组之间的合作意识和整体意识 5.能灵活安排好项目与项目之间的衔接及人
25、员调度能灵活安排好项目与项目之间的衔接及人员调度 岗岗位位工工作作描描述述1.项目开始前的准备,培训计划制定、环境构成、体制及人员安排项目开始前的准备,培训计划制定、环境构成、体制及人员安排2.项目开发标准的实施项目开发标准的实施3.整个项目过程的控制,进度管理整个项目过程的控制,进度管理4.维护对应计划几安排,项目总结,项目成员能力评价维护对应计划几安排,项目总结,项目成员能力评价5.保密计划和质量计划等(特殊要求的项目)的制定、实施保密计划和质量计划等(特殊要求的项目)的制定、实施6.组织解决技术方面重大问题和及时应对的处理组织解决技术方面重大问题和及时应对的处理7.能合理安排项目与项目之
26、间的进度能合理安排项目与项目之间的进度 课程学习的内容与形式理论理论内容:基本原理、方法和技术形式:讲授、自学、讨论实践实践内容:构造一个应用系统(包括分析、设计、编码、测试)形式:分组合作、分阶段形成文档、编码、集成软件工程的主要内容软件工程的基本概念软件开发模型软件开发各阶段的任务、技术、方法传统方法、面向对象方法软件工程管理软件质量保证软件工程环境第一章 绪论1.1 1.1 软件与软件危机软件与软件危机1.2 1.2 软件工程学的范畴软件工程学的范畴1.3 1.3 传统软件工程和面向对象软件工程传统软件工程和面向对象软件工程1.4 1.4 软件工程的应用软件工程的应用1.1 1.1 软件
27、与软件危机软件与软件危机 软件是信息化的核心软件是信息化的核心,国民经济、国防建设、国民经济、国防建设、社会发展及人民生活都离不开软件。软件产业是社会发展及人民生活都离不开软件。软件产业是增长最快的朝阳产业,是高投入高产出、无污增长最快的朝阳产业,是高投入高产出、无污染、低能耗的绿色产业。染、低能耗的绿色产业。软件产业关系到国家经软件产业关系到国家经济和文化安全,体现了国家综合实力,是决定济和文化安全,体现了国家综合实力,是决定21世世纪国际竞争地位的战略性产业。纪国际竞争地位的战略性产业。软件工程(软件工程(Software Engineering)是在克服是在克服60年代末所出现年代末所出
28、现“软件危机软件危机”的过程中逐渐形成与的过程中逐渐形成与发展的。发展的。软件工程是一门指导计算机软件系统开软件工程是一门指导计算机软件系统开发和维护的工程学科,发和维护的工程学科,是一门新兴的边缘学科,是一门新兴的边缘学科,主要研究如何应用软件开发的科学理论和工程技主要研究如何应用软件开发的科学理论和工程技术来指导大型软件系统的开发。术来指导大型软件系统的开发。1.1 1.1 软件与软件危机软件与软件危机 软件工程的发展已经历了软件工程的发展已经历了三三三三个重要阶段:个重要阶段:3 3 3 3、第三代软件工程、第三代软件工程、第三代软件工程、第三代软件工程 构件工程(软件复用)构件工程(软
29、件复用)构件工程(软件复用)构件工程(软件复用)2 2 2 2、第二代软件工程、第二代软件工程、第二代软件工程、第二代软件工程 对象工程对象工程对象工程对象工程1 1 1 1、第一代软件工程、第一代软件工程、第一代软件工程、第一代软件工程 传统的软件工程传统的软件工程传统的软件工程传统的软件工程注:软件工程发展阶段论没有统一定论注:软件工程发展阶段论没有统一定论注:软件工程发展阶段论没有统一定论注:软件工程发展阶段论没有统一定论 6060年年 代代 末末 到到 7070年年 代代 为为 了了 克克 服服“软软 件件 危危 机机”(Software(Software crisis)crisis)
30、提提出出“软软件件工工程程”的的名名词词,将将软软件件开开发发纳纳入入工工程程化化的的轨轨道道,基基本本形形成成软软件件工工程程的的概概念念、框架、技术和方法。称为框架、技术和方法。称为传统的软件工程传统的软件工程。1.1 1.1 软件与软件危机软件与软件危机软件工程的发展已经历了软件工程的发展已经历了三三三三个重要阶段:个重要阶段:3 3 3 3、第三代软件工程、第三代软件工程、第三代软件工程、第三代软件工程 构件工程(软件复用)构件工程(软件复用)构件工程(软件复用)构件工程(软件复用)2 2 2 2、第二代软件工程、第二代软件工程、第二代软件工程、第二代软件工程 对象工程对象工程对象工程
31、对象工程1 1 1 1、第一代软件工程、第一代软件工程、第一代软件工程、第一代软件工程 传统的软件工程传统的软件工程传统的软件工程传统的软件工程注:软件工程发展阶段论没有统一定论注:软件工程发展阶段论没有统一定论注:软件工程发展阶段论没有统一定论注:软件工程发展阶段论没有统一定论 80 80年代中到年代中到9090年代,面向对象年代,面向对象的方法与技术得到发展,研究的重的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和演化为一种完整的软件开发方法和系统的技术体系,称为系统的技术体系,称为对象工程。对象工程。1.1 1.1
32、软件与软件危机软件与软件危机软件工程的发展已经历了软件工程的发展已经历了三三三三个重要阶段:个重要阶段:3 3 3 3、第三代软件工程、第三代软件工程、第三代软件工程、第三代软件工程 构件工程(软件复用)构件工程(软件复用)构件工程(软件复用)构件工程(软件复用)2 2 2 2、第二代软件工程、第二代软件工程、第二代软件工程、第二代软件工程 对象工程对象工程对象工程对象工程1 1 1 1、第一代软件工程、第一代软件工程、第一代软件工程、第一代软件工程 传统的软件工程传统的软件工程传统的软件工程传统的软件工程注:软件工程发展阶段论没有统一定论注:软件工程发展阶段论没有统一定论注:软件工程发展阶段
33、论没有统一定论注:软件工程发展阶段论没有统一定论 90起年代,基于构件(起年代,基于构件(Component)的开发方法取得重要进展,软件系统的的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称提高效率和质量,降低成本的目的。称为构件工程。为构件工程。软件软件就是程序?一一一一定定定定要要要要纠纠纠纠正正正正软软软软件件件件就就就就是是是是程程程程序序序序,开开开开发发发发软软软软件件件件就就就就是是是是编编编编写写写写程程程程序序序序的的的
34、的错误观念!错误观念!错误观念!错误观念!软件定义:软件定义:软件是能够完成预定功能和性软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述软件开发过程及其管理、需要的数据,加上描述软件开发过程及其管理、程序的操作和使用的有关文档。程序的操作和使用的有关文档。程序的构成:面向过程的程序=算法+数据结构 面向对象的程序=对象+消息 面向构件的程序=构件+框架 软件软件的简要定义:软件的简要定义:软件软件=程序程序+数据数据+文档文档程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构文档:与程
35、序开发及过程管理、维护和使用有关的图 文材料程序、软件与软件产品:程序、软件与软件产品:独唱独唱小合唱小合唱合唱合唱万人大合唱万人大合唱|简单程序简单程序 较复杂程序较复杂程序 软件软件软件规模越来越大 Windows9595有有10001000万行代码万行代码 Windows20002000有有50005000万行代码万行代码Exchange2000和和 Windows20002000开发人员结构开发人员结构Exchange2000Windows20002000项目经理项目经理25人人约约250人人开发人员开发人员140人人约约1700人人测试人员测试人员350人人约约3200人人软件开发的
36、发展过程计算机应用发展软件数量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程软件的特征1.软件是一种逻辑实体,不是物理实体,他具有抽象性软件是一种逻辑实体,不是物理实体,他具有抽象性2.软件不会磨损和老化软件不会磨损和老化3.软件主要是研制,生产是简单的拷贝软件主要是研制,生产是简单的拷贝4.4.软件成本昂贵,其开发方式软件成本昂贵,其开发方式软件成本昂贵,其开发方式软件成本昂贵,其开发方式至今尚未摆脱手工方式至今尚未摆脱手工方式5.软件维护不同于硬件维修,易产生新的问题软件维护不同于硬件维修,易产生新的问题6.6.软件具有软件具有软件具有软件具有“复杂性复杂性复杂性复
37、杂性”,其开发和运行常受到计算机系,其开发和运行常受到计算机系,其开发和运行常受到计算机系,其开发和运行常受到计算机系统的限制,即统的限制,即统的限制,即统的限制,即受环境影响大受环境影响大软件的特征失效率失效率失效率失效率时间时间时间时间 硬件失效率曲线硬件失效率曲线硬件失效率曲线硬件失效率曲线失效率失效率失效率失效率时间时间时间时间实际曲线实际曲线实际曲线实际曲线理想曲线理想曲线理想曲线理想曲线 软件失效率曲线软件失效率曲线软件失效率曲线软件失效率曲线软、硬件失效情况的对比软、硬件失效情况的对比 硬硬硬硬件件件件失失失失效效效效率率率率曲曲曲曲线线线线,是是是是一一一一U U型型型型曲曲曲
38、曲线线线线(即即即即浴浴浴浴盆盆盆盆曲曲曲曲线线线线)。软软软软件件件件失失失失效效效效率率率率曲曲曲曲线线线线,它它它它没没没没有有有有U U型型型型曲曲曲曲线线线线的的的的右右右右半半半半翼翼翼翼。因因因因为为为为软软软软件件件件不不不不存存存存在在在在磨磨磨磨损损损损和老化问题,然而存在退化问题。和老化问题,然而存在退化问题。和老化问题,然而存在退化问题。和老化问题,然而存在退化问题。软件危机定义定义计算机软件的开发和维护过程所遇到的一系列严重问题 表现表现对软件开发成本和进度的估算很不准确用户很不满意质量很不可靠没有适当的文档软件成本比重上升供不应求:软件开发生产率跟不上计算机应用迅速
39、深入的 趋势 软件危机例证软件危机例证 IBM公公司司的的 OS/360OS/360,共共约约100100万万条条指指令令,花花费费了了50005000个个人人年年;经经费费达达数数亿亿美美圆圆,而而结结果果却却令令人人沮沮丧丧,错错误误多多达达20002000个个以以上上,系系统统根根本本无无法法正正常常运运行行。OS/360OS/360系系统统的的负负责责人人BrooksBrooks这这样样描描述述开开发发过过程程的的困困难难和和混混乱乱:“像像巨巨兽兽在在泥泥潭潭中中作作垂垂死死挣挣扎扎,挣挣扎扎得得越越猛猛,泥泥浆浆就就沾沾得得越越多多,最最后后没没有有一一个个野野兽兽能能够够逃逃脱脱
40、淹淹没在泥潭中的命运。没在泥潭中的命运。”19631963年年年年美美美美国国国国飞飞飞飞往往往往火火火火星星星星的的的的火火火火箭箭箭箭爆爆爆爆炸炸炸炸,造造造造成成成成1000100010001000万万万万美美美美元元元元的的的的损失。原因是损失。原因是损失。原因是损失。原因是FORTRANFORTRAN程序:程序:程序:程序:DO 5 I=1DO 5 I=1,3 3 误写为:误写为:误写为:误写为:DO 5 I=1 DO 5 I=1.3 3 19671967年年年年苏苏苏苏联联联联“联联联联盟盟盟盟一一一一号号号号”载载载载人人人人宇宇宇宇宙宙宙宙飞飞飞飞船船船船在在在在返返返返航航航
41、航时时时时,由由由由于于于于软软软软件件件件忽忽忽忽略略略略一一一一个个个个小小小小数数数数点点点点,在在在在进进进进入入入入大大大大气气气气层层层层时时时时因因因因打打打打不不不不开开开开降降降降落落落落伞而烧毁。伞而烧毁。伞而烧毁。伞而烧毁。硬件/软件成本变化趋势硬件软件100%0%195519701985软件技术进步落后于需求增长软件危机原因客观:软件本身特点逻辑部件规模庞大主观:不正确的开发方法忽视需求分析错误认为:软件开发=程序编写轻视软件维护软件危机解决途径组织管理系统工程项目管理方法技术措施软件开发技术与方法软件工具1.2 1.2 软件工程学的范畴软件工程学的范畴软件工程学指导计
42、算机软件开发和维护的工程学科 工程管理+开发技术n1983年B.W.Boehm提出了软件工程的七条基本原理:1.用分阶段的是的生存周期计划严格管理;用分阶段的是的生存周期计划严格管理;2.坚持进行阶段评审;坚持进行阶段评审;3.严格实施的产品控制;严格实施的产品控制;4.采用现代程序技术;采用现代程序技术;5.结果应能清楚地审查;结果应能清楚地审查;6.开发小组的成员应该少而精;开发小组的成员应该少而精;7.承认不断改进软件工程的必要性。承认不断改进软件工程的必要性。1.2 1.2 软件工程学的范畴软件工程学的范畴于于1968年在联邦德国召开的北大西洋公约软年在联邦德国召开的北大西洋公约软件可
43、靠性会议(件可靠性会议(NATO)上,首次提出)上,首次提出“软软件工程件工程”的概念的概念,提出了在软件生产中采用,提出了在软件生产中采用工程化的方法,采用一系列科学的、现代化工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。这种工程化的思想的方法技术来开发软件。这种工程化的思想贯穿到软件开发和维护的全过程。贯穿到软件开发和维护的全过程。了解有关软件、软件生存期及软件工程过程了解有关软件、软件生存期及软件工程过程等重要的概念,对掌握、学习和应用软件工等重要的概念,对掌握、学习和应用软件工程的方法、技术等对于计算机科学与技术专程的方法、技术等对于计算机科学与技术专业的学生都是非常必要
44、的。业的学生都是非常必要的。1.2 1.2 软件工程学的范畴软件工程学的范畴软件工程学软件工程学软件工程学软件工程学软件开发技术软件开发技术软件工程管理软件工程管理软件开发方法学软件开发方法学软件工具软件工具软件工程环境软件工程环境软件管理学软件管理学软件经济学软件经济学软件度量学软件度量学软件工程层次图 该图展现了软件工程研究的内容及关注的焦点。1.3 1.3 传统软件工程和面向对象软件工程传统软件工程和面向对象软件工程由于软件开发方法可分为三大类:由于软件开发方法可分为三大类:由于软件开发方法可分为三大类:由于软件开发方法可分为三大类:面向过程的开发方法(传统的)面向过程的开发方法(传统的
45、)面向对象的开发方法面向对象的开发方法 基于构件的开发方法基于构件的开发方法相应地软相应地软件工程方法也分为三大类:件工程方法也分为三大类:面向过程的面向过程的软软件工程件工程(传统的)(传统的)面向对象的面向对象的软软件工程件工程 基于构件的基于构件的软软件工程件工程传统软件工程传统软件工程传统的软件工也称为传统的软件工也称为面向过程的面向过程的软件开发方软件开发方法,这类开发方法都典型地包含了分析、设计、法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。实现、确认(测试)、演化(维护)等活动。典型的传统软件开发方法有:典型的传统软件开发方法有:Jackson
46、方法、结构化开发方法、方法、结构化开发方法、原型化方法、原型化方法、HIPO法、法、IDEF法等。法等。传统软件工程传统软件工程一、结构化开发方法一、结构化开发方法一、结构化开发方法一、结构化开发方法(Structured Developing MethodStructured Developing Method)是是一一种种面面向向数数据据流流的的开开发发方方法法,是是现现有有的的软软件件开开发发方方法法中中最最成成熟熟,应应用用最最广广泛泛的的方方法法,主主要要特特点点是是快快速速,自自然然和方便。和方便。结结构构化化方方法法总总的的指指导导思思想想是是自自顶顶向向下下、逐逐步步求求精精,
47、以以数数据据流流,数数据据的的封封闭闭性性准准则则来来逐逐层层分分解解的的,它它的的基基本本原原则则是功能的分解与抽象。是功能的分解与抽象。结构化方法强调结构的合理性。提出了一组提高软件结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如结构质量的准则,如功能的分解与抽象、模块独立性、信功能的分解与抽象、模块独立性、信息屏蔽等。息屏蔽等。传统软件工程传统软件工程JACKSON方法是一种方法是一种面向数据结构面向数据结构的设计方的设计方法。强调程序结构与问题结构相对应。法。强调程序结构与问题结构相对应。JACKSON方法由两部分构成:方法由两部分构成:1 1、JSP(Jackson
48、structuredProgramming)(杰克逊结构程序设计(杰克逊结构程序设计)2、JSD(Jackson System Development)二、二、Jackson方法方法 1.3 1.3 传统软件工程和面向对象软件工程传统软件工程和面向对象软件工程三、原型化方法三、原型化方法(Prototyping Method)原原原原型型型型是是是是软软软软件件件件开开开开发发发发过过过过程程程程中中中中,软软软软件件件件的的的的一一一一个个个个早早早早期期期期可可可可运运运运行行行行的的的的版本,它反映了最终系统的部分重要特性。版本,它反映了最终系统的部分重要特性。版本,它反映了最终系统的部
49、分重要特性。版本,它反映了最终系统的部分重要特性。原原原原型型型型化化化化方方方方法法法法的的的的基基基基本本本本思思思思想想想想是是是是花花花花费费费费少少少少量量量量代代代代价价价价建建建建立立立立一一一一个个个个可可可可运运运运行行行行的的的的系系系系统统统统,使使使使用用用用户户户户及及及及早早早早获获获获得得得得学学学学习习习习的的的的机机机机会会会会,原原原原型型型型化化化化方方方方法法法法又又又又称称称称速速速速成成成成原原原原型型型型法法法法(Rapid Rapid Rapid Rapid PrototypingPrototypingPrototypingPrototyping
50、)。强强强强调调调调的的的的是是是是软软软软件件件件开开开开发发发发人人人人员员员员与与与与用用用用户户户户的的的的不不不不断断断断交交交交互互互互,通通通通过过过过原原原原型型型型的的的的演演演演进进进进不不不不断断断断适适适适应应应应用用用用户户户户任任任任务务务务改改改改变变变变的的的的需需需需求求求求。将将将将维维维维护护护护和和和和修修修修改改改改阶阶阶阶段段段段的的的的工工工工作作作作尽尽尽尽早早早早进行,使用户验收提前,从而使软件产品更加适用。进行,使用户验收提前,从而使软件产品更加适用。进行,使用户验收提前,从而使软件产品更加适用。进行,使用户验收提前,从而使软件产品更加适用。