您好,欢迎访问三七文档
软件工程2019/8/82浙江大学机械系现代制造工程研究所李江雄第一章绪论软件基本概念软件生产方式软件危机软件工程概念软件工程基本原理软件工程的作用软件开发方法第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/83浙江大学机械系现代制造工程研究所李江雄1软件基本概念1.1软件定义:是指与计算机系统的操作有关的计算机程序、规程、规则以及任何与之相关的文件。包括:程序是按事先设计的功能和性能要求执行的指令序列数据使程序能够正确运行的数据及其结构文档描述软件研制过程和方法、维护方法和使用方法的文档第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/84浙江大学机械系现代制造工程研究所李江雄1软件基本概念1.2软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,但是,随着技术进步,软件会退化软件的开发至今尚未完全摆脱手工艺的开发方式,软件都是手工定制的软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件本身是复杂的:实际问题的复杂性,程序逻辑结构的复杂性软件成本相当昂贵相当多的软件工作涉及到社会因素第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/85浙江大学机械系现代制造工程研究所李江雄1软件基本概念1.3软件的分类分类方法软件类型按功能(1)系统软件(3)应用软件(2)支撑软件按版权(1)商业软件(3)自由(免费)软件(2)共享软件(4)公有领域软件按工作方式(1)实时软件(3)交互式软件(2)分时软件(4)批处理软件按销售方式(1)订制软件(2)产品软件第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/86浙江大学机械系现代制造工程研究所李江雄2软件生产方式软件生产方式程序设计时代程序系统时代软件工程时代时间1946~19561956~19681968~生产方式个体手工劳动作坊式小集团合作工程化的生产使用工具机器、汇编语言高级语言软件语言开发方法个人编程技巧个人编程技巧,开始提出结构化方法使用数据库、网络、分布式、面向对象等技术硬件特征价格贵、存储容量小、运行可靠性差速度、容量机工作可靠性明显提高,价格降低向超高速、大容量、微型化以及网络化方向发展软件特征只有程序设计概念,不重视程序设计方法程序员数量猛增,但开发人员素质差,开发技术没有突破,软件危机产生开发技术有很大进步,但没有突破性进展,没有完全摆脱软件危机软件定义等于程序等于程序加技术文档完整定义软件语言:包括需求定义语言、软件功能语言、软件设计语言、程序设计语言第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/87浙江大学机械系现代制造工程研究所李江雄3软件危机3.1什么是软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题的存在是普遍的:不仅仅是“不能正常运行的”软件具有,而是几乎所有软件都不同程度地存在这些问题。3.2软件危机的表现(1)对软件开发成本和进度的估计常常不准确,实际成本比估计成本高出许多(2)用户对“已完成”的软件系统不满意的现象经常发生(3)软件产品的质量往往靠不住(4)软件常常是不可维护的(5)软件通常没有适当的文档资料(6)软件成本在计算机系统总成本中所占比例逐年上升(7)软件开发生产率提高的速度远远跟不上计算机应用普及速度。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力(8)……第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/88浙江大学机械系现代制造工程研究所李江雄3软件危机3.3产生软件危机的原因软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件软件开发过程的进展情况较难衡量;软件开发的质量也较难评价;软件维护通常意味着改正或修改原来的设计,这就客观上使得软件较难维护因此,管理和控制软件开发过程相当困难。软件不同于程序,其一个特点是规模庞大规模增大,程序的复杂程度成指数增加,往往需要软件团队来完成,如何各个成员的工作成果能合到一起确实能构成一个高质量的软件系统更是一个复杂的难题。不仅涉及到许多技术问题,诸如:分析方法、设计方法、形式说明方法、版本控制等,更重要的是必须有严格而又科学的管理。软件专业人员对软件开发和维护的糊涂观念,在实践中采用错误的方法和技术,是造成软件危机的主要原因忽视软件需求分析的重要性,认为软件开发就是写程序并使之运行忽视文档工作的重要性,软件开发的生命周期各环节没有文档资料,使得维护工作相当困难轻视软件的测试工作,不能将“Bug”尽早排除,增大维护成本轻视软件维护工作第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/89浙江大学机械系现代制造工程研究所李江雄3软件危机3.4软件危机的例子美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。⑴项目没有被很好地理解;计划不周,最终导致进度拖延。⑵没有充分的文档资料(documentation)(3)软件可靠性(reliability)缺少度量的标准,质量无法保证。第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/810浙江大学机械系现代制造工程研究所李江雄3软件危机3.5怎样克服软件危机从两个方面着手:技术和管理采用技术措施,包括吸取和借鉴在别的工程项目和软件开发实践中已取得的成功技术、开发和使用更好的软件工具等。采用必要的组织管理措施,因为软件开发不再是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。软件工程正是从这两个方面研究如何更好地开发和维护计算机软件的一门学科。必须意识到:“软件”编程,它有自己的生命周期(lifecycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/811浙江大学机械系现代制造工程研究所李江雄4软件工程定义4.1软件工程定义软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则--1968年北大西洋公约组织(NATO)在联邦德国召开一次国际会议,会上在讨论软件危机问题时,提出了软件工程的概念。软件工程是研究和应用如何以系统化的、规范的、可度量的方法开发、运行和维护软件,即把工程化应用到软件上—1983年IEEE给出的定义。(比较全面的定义)软件工程的基本思想:强调在软件开发过程中应用工程化的原则,解决软件的整体质量较低、最后期限和费用没有保证等问题。第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程定义5软件工程基本原理6软件工程作用7软件开发方法2019/8/812浙江大学机械系现代制造工程研究所李江雄4软件工程定义软件工程是用科学知识和技术原理来定义、开发、维护软件的一门工程学科,也是一门涉及计算机科学、工程科学、管理科学、数学等领域的交叉学科。计算机科学中的研究成果可以用于软件工程,但计算机科学着眼于原理和理论,软件工程则着眼于如何建造一个软件系统;软件工程不仅要用工程科学中的技术来进行成本估算、进度安排以及指定计划和方案,还要利用管理科学中方法、原理来实现软件生产管理;并用数学的方法建立软件开发中的各种模型和算法,如可靠性模型、说明用户要求的形式化模型等第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程定义5软件工程基本原理6软件工程作用7软件开发方法2019/8/813浙江大学机械系现代制造工程研究所李江雄4软件工程定义4.2软件工程研究内容软件工程的目标是取得软件开发的成功,即:(1)付出较低的开发成本(2)达到要求的软件功能(3)取得较好的软件性能(4)软件易于移植(5)需要较低的维护费用(6)能按时完成开发任务,及时交互(7)开发的软件可靠性高软件工程的研究内容,包括:软件开发模型:描述软件开发过程中各中活动如何执行的模型软件开发方法:使用定义好的技术集及符号表示习惯来组织软件生产过程的方法软件支撑过程:由支持软件生存周期各个阶段的生产工具组成,如需求分析工具、设计工具、实现工具、测试工具、开发环境软件管理过程:ISO9000质量管理和质量保证体系、CMM能力成熟度模型、软件企业文化等第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程定义5软件工程基本原理6软件工程作用7软件开发方法2019/8/814浙江大学机械系现代制造工程研究所李江雄5软件工程基本原理(1)用分阶段的生命周期计划严格地管理软件开发软件开发过程按时间分一系列阶段,计划、分析、设计、编码、测试、运行、维护。其中计划又包括六类:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划(2)坚持进行阶段评审上一阶段评审不通过,就不能进入下一阶段开发。因为错误发现越晚,所付代价越高(3)实行严格的产品管理改变需求时,为保证软件各个配置成分的一致性,必须按照严格的规程进行评审,批准后才能实施修改(4)采用现代程序设计技术,提高软件开发和维护效率(5)结果应能清楚地审查为提高软件开发过程的可见性,应根据软件开发项目的总目标和完成期限,规定开发组织的责任和产品标准;对文档要有严格的要求,使结果能清楚地审查(6)开发小组的人员应该少而精只有这样才能保证效率高、错误少(7)承认不断改进软件工程实践的必要性不仅要积极主动地采纳新的软件技术,还要注意不断总结经验与时俱进第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程定义5软件工程基本原理6软件工程作用7软件开发方法2019/8/815浙江大学机械系现代制造工程研究所李江雄5软件工程基本原理上面是1983年美国TRW公司著名软件工程专家B.W.Boehm提出7条原理作为软件工程基本原理:补充(8)“二八”定律对软件项目进度和工作量的估计,一般主观上认为已经完成了80%的,往往实际上只完成了20%。对程序中存在问题的估计,80%的问题往往存在20%的程序之中。对模块功能的估计,20%的模块实现了80%的功能。对人力资源的估计,20%的人解决了软件中80%的问题。对投入资金的估计,企业信息系统中80%的问题,可以用20%的资金来解决。第一章绪论1软件基本概念2软件的生产方式3软件危机4软件工程5软件工程基本原理6软件工程作用7软件开发方法2019/8/816浙江大学机械系现代制造工程研究所李江雄6软件工程的作用
本文标题:李江雄-软件工程1
链接地址:https://www.777doc.com/doc-194247 .html