,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,高级软件工程(第一章)软件工程现状及发展课件(),高级软件工程(第一章)软件工程现状及发展课件(),1,第一章,软件工程现状及发展,高级软件工程,2,第一章 软件工程现状及发展 高级软件工程2,软件工程是一门非常强调实践的学科(最佳实践)。,任务是完成活动所需要的原子动作。,如何理解软件工程的基本思想?,张友生,软件体系结构原理、方法与实践(第2版),清华大学出版社。,程序逻辑结构的复杂性,高生产力就是以最小的成本获得最好的收益,即在规定的时间和预算之内完成软件开发、维护和服务等任务。,难以更改、调试和增强;,软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性,软件工程最基本的核心质量和生产率。,高质量就是最大程度地满足客户需求、帮助客户获得成功;,OMG CORBA(Common Object Request Broker Architecture),软件的开发至今尚未完全摆脱手工艺的开发方式,3,参考资料,系统分析与设计导论,,(美),Jeffrey L.Whitten,等著,机械工业出版社。,(,美,)Roger S.Pressman,著,郑人杰等译,软件工程,:,实践者的研究方法,(,原书第,8,版,本科教学版,),,机械工业出版社。,Joey George,等著,龚晓庆 等译,面向对象分析与设计(原书第,2,版),清华大学出版社。,秦航,软件设计和体系结构,清华大学出版社,。,张友生,软件体系结构原理、方法与实践(第,2,版),清华大学出版社,。,3,软件工程是一门非常强调实践的学科(最佳实践)。3参考资料系,4,网上参考资料学生上网查找、收集,4,4网上参考资料学生上网查找、收集4,什么是软件?,软件是指计算机程序、运行程序所需的数据、与程序有关的文档资料的总称。,“软件”强调的产品、工程、产业或学科层面,“程序”更侧重技术层面的含义,运行程序所需的数据,计算机程序,文档,5,什么是软件?软件是指计算机程序、运行程序所需的数据、与程序有,软件的特点,软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性;,软件的生产与硬件不同,在它的开发过程中没有明显的制造过程;,在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。,6,软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具,软件的特点(续),软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性,软件的开发至今尚未完全摆脱手工艺的开发方式,软件本身是复杂的,实际问题的复杂性,程序逻辑结构的复杂性,软件成本相当昂贵,相当多的软件工作涉及到社会因素,7,软件的特点(续)软件的开发和运行常受到计算机系统的限制,对计,软件开发技术的发展过程,1950-1960,年代:,软件,=,程序,(Program),面向过程的软件,=,算法,(Algorithm)+,数据结构,(Data Structure),1970,年代:,软件,=,程序,(Program)+,文档,(Document),软件,=,程序,(Program)+,文档,(Document)+,数据,(Data),1980,年代:,面向对象的软件,=,对象,(Object)+,消息,(Message),1990,年代,至今:,面向构件的软件,=,构件,(Component)+,框架,(Framework),面向服务的软件,=,服务,(Service)+,消息,(Message)+,总线,(Bus),8,软件开发技术的发展过程1950-1960年代:8,软件危机,软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题;,软件危机的表现:,对软件开发成本和进度的估算很不准确,甚至严重拖期和超出预算;,无法满足用户需求,导致用户很不满意;,质量很不可靠,经常失效;,难以更改、调试和增强;,没有适当的文档;,软件成本比重上升;,软件开发生产率跟不上计算机应用迅速深入的趋势。,9,软件危机软件危机:计算机软件的开发和维护过程所遇到的一系列,什么是软件工程?,软件工程是一种工程形式,它运用计算机科学和数学原理,针对软件问题获得一种经济有效的解决方案。,用系统的、规范的、可度量的方法,开发、运行和维护软件。,软件工程最基本的核心,质量和生产率。,软件工程是一门非常强调实践的学科(最佳实践)。,软件工程是采用系统工程学和管理学相结合的原理、方法和技术来指导、管理和实施软件的各种活动,包括软件开发、运行、维护和服务等。,10,什么是软件工程?软件工程是一种工程形式,它运用计算机科学和,什么是高质量和生产率,?,高质量就是最大程度地满足客户需求、帮助客户获得成功;,高生产力就是以最小的成本获得最好的收益,即在规定的时间和预算之内完成软件开发、维护和服务等任务。,11,什么是高质量和生产率?高质量就是最大程度地满足客户需求、帮助,如何理解软件工程的基本思想?,将软件看成一个系统,通过迭代来完善软件系统,逐渐逼近客户的需求,软件开发是工程和艺术的统一、创造性和规范性的统一,过程决定产品,持续改进过程,质量以预防为主、重在文化建设,以客户为中心、软件即服务,个人和团队并重,向传统的成熟工业学习,适合自己的,才是最好的,12,如何理解软件工程的基本思想?将软件看成一个系统12,软件工程的四个要素,管理:针对不同的领域建立目标、标准和规则,过程:定义完成软件各项任务的工作阶段、内容、流程、阶段性成果和验收要求,方法:软件开发、运行和维护等所需的技术方法,工具:为方法的运用提供自动或半自动的软件支撑环境,13,软件工程的四个要素 管理:针对不同的领域建立目标、标准和规则,软件过程基本概念,过程是针对一个给定目标的一系列运作步骤,是在过程环境下的一系列有序活动;,活动是过程对象一次状态改变,也叫过程步;,任务是完成活动所需要的原子动作。,如,实现(或构造)是属于开发过程的一个活动,而详细设计、设计复审、编码、测试计划以及规范开发、代码复审和测试等都被看作是任务,实现(活动)由这些任务构成,14,软件过程基本概念过程是针对一个给定目标的一系列运作步骤,是在,软件生产的问题,用户对生产出的软件不满意,开发人员往往不注重或不善于和客户交流,找出客户真正需要的东西,匆忙地进行开发,在开地过程中又不能从客户那里得到反馈信息,最后生产出的软件和客户想要的相差很远,难免出现纠纷。,15,软件生产的问题用户对生产出的软件不满意15,软件生产问题的原因,软件需求不充分,没有将问题搞清楚就匆忙上马,在开发过程中又不能和客户有效地沟通,许多问题在交付软件时才集中地爆发出来,这时候已经是大势已去,难以挽回了(在实际的软件开发中,首先应该满足的是客户的需要,开发软件不是为了展示个人的技巧。),16,软件生产问题的原因软件需求不充分16,软件发展趋势,遗留软件将继续发挥作用。,软件应用范围将继续扩大,成为信息社会的基础设施。,网络化软件将是发展重点。,软件的可靠性与安全性日趋重要。,工业化生产是必由之路。,17,软件发展趋势遗留软件将继续发挥作用。17,软件工程技术的发展,分布式对象技术,Microsoft COM/DCOM/COM+,OMG CORBA(Common Object Request Broker Architecture),Sun Microsystem JavaBean,18,软件工程技术的发展分布式对象技术18,软件工程技术的发展,软件复用技术,Pattern(analysis,design,process),Framework,基于构件的开发,19,软件工程技术的发展软件复用技术19,基于云计算平台进行软件开发,微软云计算平台服务,阿里巴巴云计算平台服务,20,基于云计算平台进行软件开发微软云计算平台服务 阿里巴巴云计算,现代软件开发对人才的要求,扎实的基础,创新、独立的工作能力,主人翁精神和团队精神,沟通与协调能力,成就感强、有激情,自觉地干好工作,锲而不舍,从错误中学习,21,现代软件开发对人才的要求扎实的基础21,软件开发中的错误观点,只要掌握了,1-2,门程序设计语言,进行软件开发就没有问题。,软件需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。软件需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。,只要有最好的开发工具、最好的计算机,一定能做出优秀的软件。只要有最好的开发工具、最好的计算机,一定能做出优秀的软件。,总之,错误认为:软件就是程序,开发软件就是编写程序。,22,软件开发中的错误观点只要掌握了1-2门程序设计语言,进行软件,