资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,0,11 十一月 2024,1,第1章 软件工程概述,授课对象,软件学院本科,40学时 课程设计2周(下学期),高级语言程序设计、数据结构、,数据库技术,等等,授课学时,先修课程,2,计算机科学与软件工程,Computer Science,Customer,Theories,Computer,Function,Problem,Software,Engineering,Tools and,Techniques to,Solve Problem,3,初步了解,工程?,硬件工程?,软件工程?,计算机工程?,工程:利用自然规律,创建一个使一部分,人受益的系统.,4,计算机工程 Computer Engineering,硬件工程 Hardware Engineering,研究硬件生产和硬件管理的工程学科.,计算机硬件及网络分析、制定设计方案、,选型、配置、采购、验收、安装、调试、,运行、培训、维护,5,软件工程,Software Engineering,研究软件开发、生产和管理的,工程学科,调研、,可行性论证、,正式立项,、,需求,分析、,项目策划、,设计,、,编程、测试、,实施、,试运行、产品发布、用户培训、产品复制、,销售、,系统维护、,版本升级,.,采用科学的方法指导软件的开发与维护!,初步了解,6,软件开发模型,软件开发过程,方法与技术,软件开发环境与工具,软件管理过程(度量、成本),软件企业文化,现代软件工程研究的内容,:,软,件,开,发,既,是,一,门,科,学,又,是,一,门,工,程,也,是,一,门,艺,术,7,导读,第1章绪论-提出问题,第2章 模型-全局观点,第3章 项目计划-管理观点,第4、5章分析方法,需求分析-开发第1步最重要,第6章 软件设计-实现的前提,第7章 实现-初始结果,第8章 测试 质量保证-得到可交付的结果,第9章 维护-延长软件生命期,8,软件工程教材丛书,需求分析系列,设计系列,实现系列,测试与度量系列,项目管理系列,质量管理系列,面向对象技术系列,建模语言系列,可用性与复用系列,前沿论题系列,软件工程,软件工程,方法与技术,软件项目管理,软件过程系列,9,史济民等,软件工程-原理、方法与应用,(第二板),高等教育出板社,ISBN 7-04-011561-1,张海藩,软件工程,人民邮电出版社,2002年3月第一版,周之英,现代软件工程(上、中、下),科学出版社 2001年4月第一版,陈明,软件工程学教程,科学出版社,2002年3月第一版,郑人杰,软件工程,清华大学出版社,中文参考书,10,英文,参考书,Software Engineering Theory,and Practice(Second Edition),Author:Shari Lawrence Pfleeger,(软件工程理论与实践,高等教育出版社),Software Engineering A,Practitioners Approach,Author:Rogers.Pressman,(软件工程实践者的研究方法 机械工业出版社),11,基本要求,理解,软件工程的思想和方法,掌握,软件开发方法和工具,学会,按照工程化的方法开发和维护软件,具有,阅读软件工程方面资料的能力,为,实践,及未来的软件开发打基础,12,听课,复习,阅读,讨论,练习,从知到会,实践,,从会到通,知识方法能力,如何学习软件工程,讲课,教书,学习读书,知识课程,你们的收获不会仅仅局限,在本课程之内,课堂教学,复习,作业,参考资料,实践,渗 透,13,考试,课堂小考核,占成绩的 10%,完成一个小型软件系统的分析、设计文档,阶段性成果占成绩的20%,考试成绩占 70%,财富可以通过辛勤劳动获取,,也可能由于喜中彩票大奖获得。,但知识却必须是通过一点一滴,努力学习逐渐积累,珍惜每一天,每一节课,每一分钟,诚信,14,实践作业,分析和设计下列问题之一,并写出文档,.,1.,教学管理软件,2.教学网站,3.网上售书,网上购物,4.超市管理,5.食堂管理,6.工寓管理,7.,自选,15,第1章,软件工程的概述,16,基本内容,:,1.1,软件,1.2 软件工程的,概念,1.3 软件工程的,作用,1.4 软件工程的,发展,1.5 软件工程,三要素,1.6 软件工程的,目标,17,1.1 软件,1.1.1 软件的定义,:,20世纪五十年代,软件=程序,面向过程的程序=算法+数据结构,20世纪六十年代,软件=程序+文档,20世纪七十年代 软件=,程序+文档+数据,面向对象的程序=对象+消息,面向构件的程序=构件+构架,18,1.1.2 软件的特征:,软件是一个信息变换器;,软件是产品交付使用的载体;,软件是是被开发或设计的,而不是被制造的;,软件不会磨损,但维护困难。,故障率,时间,夭折,磨损,实际,理想,故,障,率,时间,修改,软件故障曲线,硬,件故障曲线,图 1-1 硬,件软件故障,图,19,1.1.3,软件的应用,*系统软件,*应用软件,*商业软件,*工程和科学计算软件,*嵌入式软件,*个人计算机软件,*人工智能软件,*基于web软件,*工具包软件,20,1.2 软件工程的概念,1.2.1,软件工程的提出,软件开发失败的例子,1962年6月,美国飞向金星的第1个空间探测器,(水手1号)飞行中偏移了航线,失败了.,原因:飞舱中的导航程序中的一个语句的语义错,.,世界上精心设计的并花费巨额投资的美国阿波,罗8号太空飞船登月飞行计划的软件的错误,使,存储器一部分信息丢失;阿波罗14号的飞行10天,中,出现18个软件错误.,原因:软件的可靠性问题,21,1963,1966年IBM开发OS/360操作系统,投资几千万美元,工作量5000多人年,,拖延几年,才交付使用,而且每年要发现,近100个错误。,美国肯尼迪发射的一枚“阿脱拉斯火箭,当飞地面几十英里高空时,翻转.地面控制中心被迫下令炸毁,结果损失1850万,美元,原因:飞行计划程序漏掉一个“连”接字符,22,通过比较,支持“美国航天飞机”的软件由3,百万行代码组成,包括地面控制发射和飞行,的计算机,航天飞机本身就需10万行代码。,这样一个反导弹软件系统需要测试大量,的代码.此外可靠性约束是不可能测试的。,许多软件工程师认为一个“反弹道导弹系统”,只少需要1千万行代码,有人估计代码在1亿,行左右。,23,“安全临界”软件问题:安全临界是指其可,靠性至少达到10,-9,,也就说在工作10,9,小时,内不能出现错误。为了观察可靠性程度,,就必须使系统至少运行10,9,小时不会失败。,但验证10,9,小时不出错,需要测试114,000,年,这实际上是不可能的。,这是一种无法实现的计划。,24,由上可看出:,软件需求量不断增大,复杂度越来越高,,软件可靠性无保障,软件维护费用不断上升,软件进度无法预测,成本增长无法控制,程序人员无限度地增加各个方面.,上述原因导致了60年代末的“软件危机.,25,一系列软件开发的失败引起人们的思考,,1968年北大西洋公约组织(NATO)的计算机,科学家在联邦德国的幕尼黑召开的一次计,算机软件国际会议上,对软件开发的方法、,技术进行了广泛的讨论,首次提出了“,软件工程,”的概念。,26,1.2.2 软件工程的含义,P.Wegner和B.Boehm认为:,科学知识在设计和构造计算机程 序,以及开发、运作和维护这些程序所需求的有关文档编制中的实际应用。,F.L.Bauer认为,:,为了经济地获得软件,这个软件是可靠的并且能在实在的计算机上工作,所需要的,健全的工作原理(方法)的确立和使用。,27,IEEE(83)指出:,软件工程是开发、运行、维护和修复软件的系统方法。,IEEE(93)指出:,软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化的方法应用于软件开发中。,28,解决60年代出现的软件危机,解决软件当前面临的技术问题,软件可靠性、可用性、重用性、维护性等等,告诉人们怎样去开发软件、管理软件,开发软件即需要,干哪些“活”,对“开发”两字做,一解析.,如何干活,,即有关开发模型和开发方法等技,术问题.,如何管理,,即有关CMM等管理问题.,1.3,软件工程的作用,29,现代软件开发对人才的要求,系统分析人员、设计人员、软件架构师、,软件集成人员、高层管理人员、,中层项目经理、软件蓝领工人、,实施和维护人员、,软件售前人员、软件营销人员,提高软件产品的质量,降低软件开发的成本.,30,1.4 软件工程的发展,传统的软件工程时代,过程软件工程时代,对象软件工程时代,构件软件工程时代,发展方向:流水线装配软件工程的方向,发展(流水线生产,网络化,,服务化,全球化),31,为屏蔽计算机硬件的异构性,发展了操作系统,.NET/COM,Web Services,J2EE/EJB,UNIX,Windows,Linux,C/C+,语言,Java,语言,为屏蔽操作系统和编程语言的异构性,发展了支撑软件和中间件,为了屏蔽中间件之间的异构性,出现了Web技术。,Fortran,语言,为了祢补应用软件与现实计算环境之间的距离,网 络 层,综观 软件技术 的发展,图 1-2,应用系统,操作系统,支撑软件,中间件,32,1),20世纪60年代末至80年代初,围绕软件项目,,开展了有关:,软件开发风范,开发方法,支持工具的研究。,20世纪,60年代末 80年代初 20世纪末,主要特点,强调技术 关注管理 “螺旋反复”,发展阶段,33,2,),20世纪80年代以来,随着软件系统规模的增大、,复杂性的提高以及在关键领域应用的开展,人,们更加关注:,软件生产技术的研究和实践,注重软件工程管理。,主要成果包括,:,(1),计算机辅助软件工程(CASE),(2)软件复用:如构件模型、复用机制等,(3)软件过程概念以及能力成熟度模型(CMM),34,1.5 软件工程三个要素:,工具,质量焦点,过程,Software engineering layers,方法,工具,图 1-5,软件工程三个要素,35,1.6 软件工程的目标,低成本,满足,功能,满足,性能,易于,移植,维护费用,低,及时交付,使用,简而言之,提高软件,质量,,降低软件,开发和维护,成本,36,本章小结,软件工程的概述,软件,软件工程,的概念,软件工程,的目标,希望认真学习,主动获取知识,软件工程,三要素,方法,过程,工具,37,
展开阅读全文