




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、导论导论主讲:何建军主讲:何建军导论导论n总学时数总学时数 :48n理论课:理论课:40n上机课:上机课:8考试方式:理论考试考试方式:理论考试+上机成绩上机成绩+平时成绩平时成绩导论导论章章章章 节节 内内 容容学时分配学时分配讲讲 课课1 1 软件工程概述软件工程概述4 42 2 可行性研究可行性研究4 43 3需求分析需求分析4 44 4形式化说明技术形式化说明技术2 25 5总体设计总体设计4 46 6详细设计详细设计4 47 7实现实现4 48 8维护维护2 29 9面向对象方法学引论面向对象方法学引论2 2(选讲)(选讲)1010面向对象分析面向对象分析2 2(选讲)(选讲)111
2、1面向对象设计面向对象设计2 2(选讲)(选讲)1212面向对象实现面向对象实现1 1(选讲)(选讲)1313软件项目管理软件项目管理1 1导论导论课程性质: 软件工程导论软件工程导论是数字媒体技术专业的一门是数字媒体技术专业的一门专业基础课程,在数字媒体技术学科人才培养体专业基础课程,在数字媒体技术学科人才培养体系中占有重要的地位。系中占有重要的地位。 软件工程导论软件工程导论是一门软件开发的指导性理是一门软件开发的指导性理论学科!论学科! 导论导论先谈谈“工程:” 十八世纪,欧洲创造了十八世纪,欧洲创造了“工程工程”一词,其本来含义是一词,其本来含义是兵器兵器制造、制造、军事军事目的的目的
3、的各项劳作,后扩展到许多领域,如建筑屋宇、制造机器、架桥修路等。各项劳作,后扩展到许多领域,如建筑屋宇、制造机器、架桥修路等。 “工程工程”是科学的某种应用。通过这一应用,使自然界的物质和能源的特性是科学的某种应用。通过这一应用,使自然界的物质和能源的特性能够通过各种结构、机器、产品、系统和过程,是以时间最短的和精而少的能够通过各种结构、机器、产品、系统和过程,是以时间最短的和精而少的人力做出高效、可靠且对人类有用的东西。人力做出高效、可靠且对人类有用的东西。 随着人类文明的发展,人们可以建造出比单一产品更大、更复杂的产品,这随着人类文明的发展,人们可以建造出比单一产品更大、更复杂的产品,这些
4、产品不再是结构或功能单一的东西,而是各种各样的所谓些产品不再是结构或功能单一的东西,而是各种各样的所谓“人造系统人造系统”(比如建筑物、轮船、铁路工程、海上工程、飞机等等),于是比如建筑物、轮船、铁路工程、海上工程、飞机等等),于是工程工程的概念就的概念就产生了,并且它逐渐发展为一门独立的学科和技艺。产生了,并且它逐渐发展为一门独立的学科和技艺。 在现代社会中,在现代社会中,“工程工程”一词有广义和狭义之分。就一词有广义和狭义之分。就狭义而言狭义而言,工程定义为,工程定义为“以某组设想的目标为依据,应用有关的科学知识和技术手段,通过一群人以某组设想的目标为依据,应用有关的科学知识和技术手段,通
5、过一群人的有组织活动将某个(或某些)现有实体(自然的或人造的)转化为具有预的有组织活动将某个(或某些)现有实体(自然的或人造的)转化为具有预期使用价值的人造产品过程期使用价值的人造产品过程”。就广义而言就广义而言,工程则定义为由一群人为达到,工程则定义为由一群人为达到某种目的,在一个较长时间周期内进行协作活动的过程。某种目的,在一个较长时间周期内进行协作活动的过程。导论导论n软件正改变世界软件正改变世界n1992年,来自明尼苏达州怀俄明的玛丽收到一份年,来自明尼苏达州怀俄明的玛丽收到一份幼儿园的入园幼儿园的入园通知,她当通知,她当时是时是104岁。岁。n1988年年2月月29日,一家超市因出售
6、过期一天的肉而被罚款日,一家超市因出售过期一天的肉而被罚款1000美元。因美元。因为在肉的标签上打印保质期的计算机程序没有考虑到为在肉的标签上打印保质期的计算机程序没有考虑到1988年是闰年。年是闰年。n1990年年4月月10日,在伦敦地铁运营过程中,司机还没上车,地铁列车就驶日,在伦敦地铁运营过程中,司机还没上车,地铁列车就驶离车站。当时司机按了启动键,正常情况下如果车门是开着的,系统就应离车站。当时司机按了启动键,正常情况下如果车门是开着的,系统就应该可以阻止列车起动。当时的问题是司机离开了列车去关一扇卡着的门,该可以阻止列车起动。当时的问题是司机离开了列车去关一扇卡着的门,但当门终于关上
7、时,但当门终于关上时,列车还没有等到司机上车就开动了。列车还没有等到司机上车就开动了。n在在1995年,由于新丹佛尔国际机场自动行李系统的错误,造成旅客行李箱年,由于新丹佛尔国际机场自动行李系统的错误,造成旅客行李箱的损坏。机场则被迫推迟的损坏。机场则被迫推迟16个月再开放,且大部分采用手工行李系统,产个月再开放,且大部分采用手工行李系统,产生生32亿美元超支亿美元超支。n 2002年的年的Swanick空运控制系统,包括英格兰和威尔士全部空运线路。空运控制系统,包括英格兰和威尔士全部空运线路。在系统交付时,已延期在系统交付时,已延期6年且严重超支(实际花费年且严重超支(实际花费6.23亿英傍
8、,原计划花亿英傍,原计划花费费3.5亿英镑)。亿英镑)。n麦克道尔道格拉斯的麦克道尔道格拉斯的C-17货机因为控制系统的软件问题,而超支货机因为控制系统的软件问题,而超支5亿美元。亿美元。C-17含有含有19台机载计算机,台机载计算机,80个微处理器以及个微处理器以及6种不同的编程语言。种不同的编程语言。 导论导论软件带来的困惑或影响导论导论n 1967年年8月月23日,前苏联的联盟一号宇宙飞船在返回大气层时,突然发日,前苏联的联盟一号宇宙飞船在返回大气层时,突然发生了恶性事故生了恶性事故-减速速降落伞无法打开。因减速速降落伞无法打开。因一位小数点计算错误一位小数点计算错误而导致而导致飞船在穿
9、过大气层时无法打开降落伞飞船在穿过大气层时无法打开降落伞,最终机毁人亡最终机毁人亡 。n挑战者号在挑战者号在1986年年1月月28日进行代号日进行代号STS-51-L的第的第10次太次太空任务时,在升空后空任务时,在升空后73秒时,爆炸解体坠毁。价值秒时,爆炸解体坠毁。价值12亿美元亿美元的航天飞机,顷刻化为乌有,七名宇航员全部遇难。的航天飞机,顷刻化为乌有,七名宇航员全部遇难。 但据说但据说程程序设计上的一个循环语句错误序设计上的一个循环语句错误造成造成n俄罗斯福布斯俄罗斯福布斯-土壤号火星探测器,探测器上搭载着中国首颗土壤号火星探测器,探测器上搭载着中国首颗火星探测器火星探测器“萤火一号萤
10、火一号”。 2011年年11月月9日发射升空后一切顺日发射升空后一切顺利,与运载火箭成功分离,但此后出现探测器的推进装置没有利,与运载火箭成功分离,但此后出现探测器的推进装置没有点火的问题,导致其变轨失败。俄联邦航天署表示这可能是由点火的问题,导致其变轨失败。俄联邦航天署表示这可能是由于于保障程序出现代码错误保障程序出现代码错误,或者定位系统出现技术故障导致的。,或者定位系统出现技术故障导致的。2012年年1月月15日探测器残骸坠落地球。损失日探测器残骸坠落地球。损失50亿卢布。亿卢布。 软件带来的灾难导论导论n你编过软件吗?你编过软件吗?对软件的认识:对软件的认识:1950:程序:程序196
11、0:程序:程序+文档(不包括管理文档)文档(不包括管理文档)1970:程序程序+文档文档+数据数据1984:软件管理是过程管理,:软件管理是过程管理,CMM1.0能力成熟能力成熟度模型度模型1996:UML统一建模语言(它是运用统一的、统一建模语言(它是运用统一的、标准化的标准化的标记和定义标记和定义实现对软件系统进行面向对象实现对软件系统进行面向对象的描述和建模。的描述和建模。 )导论导论时期时期硬件硬件软件软件早期时代早期时代20世纪世纪60年代中期以前年代中期以前晶体管计算机晶体管计算机程序设计阶段程序设计阶段个体化生产个体化生产第二代第二代20世纪世纪60年代中期到年代中期到70年代中
12、期年代中期集成电路计算机集成电路计算机程序系统阶段程序系统阶段作坊式生产作坊式生产软件危机出现软件危机出现软件工程诞生软件工程诞生第三代第三代20世纪世纪70年代中期到年代中期到80年代中期年代中期微处理器微处理器个人计算机个人计算机软件工程阶段软件工程阶段工程化思想工程化思想分布式系统分布式系统第四代第四代20世纪世纪80年代中期至今年代中期至今面向对象阶段面向对象阶段硬件与软件综合硬件与软件综合软件开发第四代技术软件开发第四代技术计算机系统计算机系统4 4个不同的发展阶段:个不同的发展阶段:导论导论计算机软件计算机软件4 4个不同的发展阶段:个不同的发展阶段: 面向批处理 有限的分布 自定
13、义软件 初期 多用户 实时 数据库 软件产品 第二阶段 分布式系统 嵌入“智能” 低成本硬件 消费者的影响 第三阶段 强大的桌面系统 面向多项技术 专家系统 人工神经网络 并行计算 网络计算机 第四阶段 1950 年 1960 年 1970 年 1980 年 1990 年 2000 年 导论导论1.1 软件危机软件危机1.2 软件工程软件工程1.3 软件生命周期软件生命周期1.4 软件过程软件过程第第1 1章章 软件工程学概述软件工程学概述 1.1 软件危机软件危机第第1 1章章 软件工程学概述软件工程学概述 1.1.1 软件发展软件发展-软件危机软件危机第第1 1章章 软件工程学概述软件工程
14、学概述 第第1 1章章 软件工程学概述软件工程学概述 1.1.1 软件发展软件发展-软件危机软件危机作坊式小团队开发;作坊式小团队开发;出现高级语言,编程效率有所提高;出现高级语言,编程效率有所提高;追求写代码技巧,提出了结构化程序设计方法;追求写代码技巧,提出了结构化程序设计方法;软件复杂性增加,需求增加,但软件开发方法和软件项目管软件复杂性增加,需求增加,但软件开发方法和软件项目管理技术跟不上,理技术跟不上,开发开发速度慢,速度慢,与计算机硬件发展速度拉大距离与计算机硬件发展速度拉大距离;软件数量猛增,但软件数量猛增,但质量差,可维护性差,质量差,可维护性差,维护维护成本急剧增加成本急剧增
15、加;上述矛盾越来越显著,最终导致了上述矛盾越来越显著,最终导致了软件危机软件危机;软件危机软件危机第第1 1章章 软件工程学概述软件工程学概述 “软件危机软件危机”的概念是在的概念是在1968年北大西洋公约组织年北大西洋公约组织(NATO)的计算机科学家在联邦德国召开的国际学术会议)的计算机科学家在联邦德国召开的国际学术会议上才第一次提出,软件开发长期以来存在上才第一次提出,软件开发长期以来存在“开发周期长和成开发周期长和成本高、质量差、适应性差、难维护本高、质量差、适应性差、难维护”这四大难题,在早期称这四大难题,在早期称它为它为“软件危机软件危机”,它是计算机科学发展进程的必然产物,它是计
16、算机科学发展进程的必然产物,只不过到后来这种现象日渐严重,已经影响到计算机事业的只不过到后来这种现象日渐严重,已经影响到计算机事业的发展,因而才引起各界的关注。发展,因而才引起各界的关注。 首次提出:软件工程!软件危机软件危机的典型表现:的典型表现:第第1 1章章 软件工程学概述软件工程学概述 (1)对软件开发成本和进度的估计常常很不准确;)对软件开发成本和进度的估计常常很不准确;(2)用户对)用户对“已完成的已完成的”软件系统不满意的现象经常发生;软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;)软件产品的质量往往靠不住;(4)软件常常是不可维护的;)软件常常是不可维护的;(5
17、)软件通常没有适当的文档资料;)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势迅速普及深入的趋势 。第第1 1章章 软件工程学概述软件工程学概述 软件危机的典型实例:软件危机的典型实例: 该系统由该系统由4000个模块组成,共约个模块组成,共约100万条指令,工作量是万条指令,工作量是5000 个人年(人年:个人年(人年:人数同工作年数乘积的总和,工作量),开发费用达数亿美元,但人们在使用时从
18、操人数同工作年数乘积的总和,工作量),开发费用达数亿美元,但人们在使用时从操作系统的程序中发现作系统的程序中发现2000个以上的错误,该系统的开发未达到预期的效果,而个以上的错误,该系统的开发未达到预期的效果,而 IBM 公司在经济上蒙受巨大损失。公司在经济上蒙受巨大损失。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。” 在61年年底,IBM开始打算实施“360系统电子计算机计划”,据当时的估算,整个计划投资约需50亿美元(这可是在60年代初,十几年前的“曼哈顿工程”才花了2
19、0亿),这是不折不扣的大手笔,要知道,当时IBM的年营业额还不到这个数字。例如,例如,IBM 公司公司60年代对年代对 OS/360 操作系统操作系统的开发过程中遭受到挫折就是一个典型的例子。的开发过程中遭受到挫折就是一个典型的例子。 所以如此花钱,是因为这项计划要做一些以前没人做过的事,这将是一个通用的系统(360就是360度的意思,表示该系统全面的应用范围),该系列不同型号的计算机将能享用同样的设备,如磁带机、打印机等,能使用同样的软件,并且可以相互连接,一起工作,这些在今天看来理所当然的事,在当时可是闻所未闻。该项目在硬件设计上很有创新,乃至IBM不得不自己动手设计制造芯片(因为买不到)
20、,但更大的困难却是在软件方面,要让所有的软件适用于所有的电脑(当然,仅限于360系列),这个理念让IBM的软件工程师们伤透脑筋,投入到这个项目中的软件工程师超过2000人(Windows2000也只动用了1700名),花费超过5亿美元,竟然超过了硬件研发的费用,所有这些都是创纪录的。 尽管软件开发工作未获全胜,但360项目还是取得了辉煌的成功,IBM在籍此在计算机行业几乎是一统天下,IBM/360更被誉为人类从原子能时代进入信息时代标志。此后IBM开发的大型机系列都保持了与360系统的兼容,直到最新的z系列,在360上写的程序仍可以不经修改的运行,“兼容”这一概念从此开始深入人心。 360计划
21、虽然是在61年开始启动,但等到完成己是1964年,它的主要部件采用了集成电路(Intergrated Circuit,IC),属于第三代计算机,它也是第三代计算机的标志产品。第第1 1章章 软件工程学概述软件工程学概述 软件危机的典型实例:软件危机的典型实例: 布鲁克斯(布鲁克斯(Brooks)分别于)分别于1975和和1987年出版了两本著名的软件工年出版了两本著名的软件工程知识著作程知识著作“人月神话人月神话”和和“没有银弹没有银弹”(No Silver Bullet),),Brooks的著名论断的著名论断“软件工作是人类所从事的最复杂的工作软件工作是人类所从事的最复杂的工作.” 人月神话
22、探索了达成一致性的困难和解决的方法,并探讨了软件工程管理的其他方面。“没有银弹没有银弹”(No Silver Bullet)负责这项艰苦卓绝的开发任务的,是Frederick Brooks,当时年仅三十,他是世界上第一批获得计算机科学博士学位的人之一,有趣的是,当开发这个新型操作系统的计划提出时,Brooks本是最强硬的反对派,因为他觉得这个项目的难度骇人听闻,实在是不切实际。但当IBM的管理层拍下板来,要Brooks担当重任时,他居然慨然应允,高风亮节,实在是令人佩服。他本人更在99年获得了计算机领域的最高奖“图灵奖”。该论述中强调真正的银弹并不存在,而所谓的银弹则是指没有任何一项技术或方法
23、可以能让软件工程的生产力在十年内提高十倍。第第1 1章章 软件工程学概述软件工程学概述 硬件向巨型机和微型机二个方向发展,出现了计算机网络,软件方硬件向巨型机和微型机二个方向发展,出现了计算机网络,软件方面提出了软件工程,出现了面提出了软件工程,出现了“计算机辅助软件工程计算机辅助软件工程”(CASE)计算机的应用领域渗透到各个业务领域,出现了嵌入式应用,其特计算机的应用领域渗透到各个业务领域,出现了嵌入式应用,其特点是受制于它所嵌入的宿主系统点是受制于它所嵌入的宿主系统1.1.1 软件发展软件发展-软件危机软件危机开发方式开发方式逐步由个体合作方式转向逐步由个体合作方式转向工程方式工程方式软
24、件工程方面软件工程方面的研究主要包括软件开发模型、软件开发方法及技术、的研究主要包括软件开发模型、软件开发方法及技术、软件工具与环境、软件过程、软件自动化系统等软件工具与环境、软件过程、软件自动化系统等软件方面软件方面研究以智能化、自动化、集成化、并行化、以及自然化为研究以智能化、自动化、集成化、并行化、以及自然化为标志的软件开发新技术标志的软件开发新技术第第1 1章章 软件工程学概述软件工程学概述 1.1.2 产生软件危机的原因产生软件危机的原因 (1)与软件本身的特点有关)与软件本身的特点有关n软件是逻辑部件。软件是逻辑部件。n软件不会被软件不会被“用坏用坏”,如果发现了错误,很可,如果发
25、现了错误,很可能是开发时期引入。能是开发时期引入。n软件规模庞大,而且程序复杂性将随着程序规软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。模的增加而呈指数上升。第第1 1章章 软件工程学概述软件工程学概述 1.1.2 产生软件危机的原因产生软件危机的原因 (2)与软件开发与维护的方法不正确有关)与软件开发与维护的方法不正确有关n忽视软件需求分析的重要性。忽视软件需求分析的重要性。对用户要求没有完整准确对用户要求没有完整准确的认识就匆忙着手编写程序。越早开始写程序,完成它的认识就匆忙着手编写程序。越早开始写程序,完成它所需要用的时间往往越长。所需要用的时间往往越长。n认为软件开发
26、就是写程序并设法使之运行认为软件开发就是写程序并设法使之运行。程序只是完。程序只是完整的软件产品的一个组成部分。一个软件产品必须由一整的软件产品的一个组成部分。一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数个完整的配置组成,软件配置主要包括程序、文档和数据等成分。据等成分。第第1 1章章 软件工程学概述软件工程学概述 1.1.2 产生软件危机的原因产生软件危机的原因 (2)与软件开发与维护的方法不正确有关)与软件开发与维护的方法不正确有关轻视软件维护轻视软件维护。维护是极端艰巨复杂的工作,需要。维护是极端艰巨复杂的工作,需要花费很大代价。软件维护的费用占软件总费用的花费很
27、大代价。软件维护的费用占软件总费用的55%70%。软件工程学的一个重要目标就是提高。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。软件的可维护性,减少软件维护的代价。第第1 1章章 软件工程学概述软件工程学概述 1.1.3 消除软件危机的途径消除软件危机的途径 软件工程!软件工程! n对计算机软件有正确的认识。对计算机软件有正确的认识。软件软件 程序!程序!n认识到软件开发是一种组织良好、管理严密、各类人员认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。协同配合、共同完成的工程项目。n应该推广使用在实践中总结出来的开发软件的成功技术应该推广使
28、用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。和方法,并继续研究探索。n应该开发和使用更好的软件工具。应该开发和使用更好的软件工具。n总之,为了解决软件危机,既要有总之,为了解决软件危机,既要有技术技术措施措施(方法和工方法和工具具),又要有必要的组织,又要有必要的组织管理管理措施。措施。 第第1 1章章 软件工程学概述软件工程学概述 1.2 软件工程软件工程简介简介软件工程:是指导计算机软件开发和维护的一门软件工程:是指导计算机软件开发和维护的一门工程学科工程学科。采用。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间工程的概念、原理、技术和方法来开发与维护软件,
29、把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护。合起来,以经济地开发出高质量的软件并有效地维护。 软件工程的代表性定义:软件工程的代表性定义:nBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。这些程序所必需的相关文件资料。 nFritz Bauer:软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件软件工程是为了经济地获得可靠的和能在实际机器上高效
30、运行的软件而建立和使用的好的工程原则。而建立和使用的好的工程原则。nIEEE:软件工程是(软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(运行和维护的过程,即将工程化应用于软件中;(2)研究()研究(1)的中所述方法。)的中所述方法。n计算机科学技术百科全书:计算机科学技术百科全书:软件工程是应用计算机科学、数学及管理科学等原理,软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。以工程化的原则和方法制作软件的工程。第第1 1章章 软件工程学概述软件
31、工程学概述 1.2 软件工程软件工程历史历史软件工程的划代(无公认的定义):软件工程的划代(无公认的定义):n1970年末之前,年末之前,传统软件工程传统软件工程,瀑布模型。,瀑布模型。n1980年后,年后,面向对象软件工程面向对象软件工程,面向对象语言以,面向对象语言以Smalltalk-80的出现为的出现为标志。标志。n1984年后,年后,软件过程工程软件过程工程,掀起软件过程运动,掀起软件过程运动,1991年出现的年出现的CMM是典型代表(是典型代表(指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简
32、称CMM )。n1990年后,年后,构件工程构件工程,基于构件的软件开发方法,可重用的构件组装,基于构件的软件开发方法,可重用的构件组装成新系统。成新系统。第第1 1章章 软件工程学概述软件工程学概述 1.2 软件工程软件工程特征特征软件工程的本质特性:软件工程的本质特性:n软件工程关注于软件工程关注于大型程序大型程序的构造的构造n软件工程的中心课题是控制软件工程的中心课题是控制复杂性复杂性n软件经常软件经常变化变化n开发软件的开发软件的效率效率非常重要非常重要n和谐地和谐地合作合作是开发软件的关键是开发软件的关键n软件必须有效地软件必须有效地支持它的用户支持它的用户n在软件工程领域中是由具有
33、一种在软件工程领域中是由具有一种文化背景文化背景的人替具有另一的人替具有另一种文化背景的人创造产品种文化背景的人创造产品第第1 1章章 软件工程学概述软件工程学概述 软件工程的本质特性:软件工程的本质特性:软件工程关注于软件工程关注于大型程序大型程序的构造的构造第第1 1章章 软件工程学概述软件工程学概述 软件工程的本质特性:软件工程的本质特性:软件工程的中心课题是软件工程的中心课题是控制复杂性控制复杂性控制复杂性的有效方法是分解:控制复杂性的有效方法是分解: 面向过程的方法,是按功能分解;面向过程的方法,是按功能分解; 面向对象的方法,是按责任分解。面向对象的方法,是按责任分解。第第1 1章
34、章 软件工程学概述软件工程学概述 软件工程的本质特性:软件工程的本质特性:软件软件需求需求经常变化经常变化需求变更是软件开发活动与生俱来的特性,不可避免。需求变更是软件开发活动与生俱来的特性,不可避免。变更不是坏事,但它是软件开发面临的最大挑战。变更不是坏事,但它是软件开发面临的最大挑战。软件工程追求的是软件工程追求的是:封装变更,灵活设计,应对变更,通过好的设计方封装变更,灵活设计,应对变更,通过好的设计方法,使变更对原有设计方案和已有代码影响最小。法,使变更对原有设计方案和已有代码影响最小。第第1 1章章 软件工程学概述软件工程学概述 软件工程的本质特性:软件工程的本质特性:开发软件的开发
35、软件的效率效率非常重要非常重要o随着社会经济和文化的发展,网络及各类开发与应用平台的不断翻新,随着社会经济和文化的发展,网络及各类开发与应用平台的不断翻新,计算机硬件性能的不断提高,社会对软件的数量、规模和复杂性不断提计算机硬件性能的不断提高,社会对软件的数量、规模和复杂性不断提高,软件的需求供不应求的现象依然日益严重。高,软件的需求供不应求的现象依然日益严重。o寻求开发与维护软件的更好、更有效的方法和工具,依然是软件工程的寻求开发与维护软件的更好、更有效的方法和工具,依然是软件工程的一个重要课题。一个重要课题。o不断提高软件开发效率非常重要不断提高软件开发效率非常重要第第1 1章章 软件工程
36、学概述软件工程学概述 软件工程的本质特性:软件工程的本质特性:和谐地和谐地合作合作是开发软件的关键是开发软件的关键第第1 1章章 软件工程学概述软件工程学概述 软件工程的本质特性:软件工程的本质特性:软件必须有效地软件必须有效地支持用户支持用户(功能、效能、手册、(功能、效能、手册、作用环境)作用环境)。在软件工程领域中是由具有一种在软件工程领域中是由具有一种文化背景文化背景的人的人替具有另一种文化背景的人创造产品替具有另一种文化背景的人创造产品: 文化创造产品文化创造产品。第第1 1章章 软件工程学概述软件工程学概述 1.2 软件工程软件工程 -基本原理基本原理勃姆图1-7 B.W.Boeh
37、m 用用分阶段分阶段的生命周期计划严格管理的生命周期计划严格管理 坚持进行阶段坚持进行阶段评审评审 实行严格的实行严格的产品控制产品控制 采用现代采用现代程序设计技术程序设计技术 结果应能清楚地结果应能清楚地审查审查 开发小组的人员应该开发小组的人员应该少而精少而精 承认不断承认不断改进改进软件工程实践的必要性软件工程实践的必要性第第1 1章章 软件工程学概述软件工程学概述 1.2 软件工程软件工程- 软件工程方法学软件工程方法学 软件工程包括软件工程包括技术技术和和管理管理两方面的内容。两方面的内容。提供如提供如何完成过程活动的指南和准则。何完成过程活动的指南和准则。管理管理:通过计划、组织
38、和控制等一系列活动,合理地配置和使用各种资通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。如源,以达到既定目标的过程。如重用技术、项目管理技术。重用技术、项目管理技术。技术技术(软件工程方法学软件工程方法学):通常把在软件生命周期全过程中使用的一整通常把在软件生命周期全过程中使用的一整套技术方法的集合称为套技术方法的集合称为方法学方法学(methodology),也称为,也称为范型范型(paradigm)。如如面向对象分析、设计、实现与测试技术等。面向对象分析、设计、实现与测试技术等。第第1 1章章 软件工程学概述软件工程学概述 1.2.3 软件工程方法学软件
39、工程方法学 软件工程方法学软件工程方法学3要素:要素:过程过程:需要完成的一系列任务的框架,它规定了完成各项:需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。任务的工作步骤。工具工具:是为运用方法而提供的自动的或半自动的软件工程支撑:是为运用方法而提供的自动的或半自动的软件工程支撑环境;如环境;如CASE(Computer-Aided Software Engineering )工具。工具。方法方法:是完成软件开发的各项任务的技术方法,回答:是完成软件开发的各项任务的技术方法,回答“怎样做怎样做”的问题;的问题;第第1 1章章 软件工程学概述软件工程学概述 1.2.3 软件工程方法
40、学软件工程方法学 1. 传统方法学传统方法学(生命周期方法学或结构化范型生命周期方法学或结构化范型)强调自顶向下强调自顶向下(1)采用结构化技术来完成软件;)采用结构化技术来完成软件; 结构化开发方法由结构化开发方法由结构化分析、结构化设计和结构化程序结构化分析、结构化设计和结构化程序设计设计三部分(三部分(3S)有机组合而成的。这里所说的结构是指软件)有机组合而成的。这里所说的结构是指软件系统内各个组成要素之间的相互联系、相互作用的框架。系统内各个组成要素之间的相互联系、相互作用的框架。 在本质上,结构化的软件开发方法是面向在本质上,结构化的软件开发方法是面向数据数据、面向面向过程过程、面向
41、、面向功能功能、面向数、面向数据流据流的观点来映射问题的。的观点来映射问题的。 第第1 1章章 软件工程学概述软件工程学概述 1.2.3 软件工程方法学软件工程方法学 (2)划分为若干个)划分为若干个阶段阶段,然后顺序地完成每个阶段的任务;,然后顺序地完成每个阶段的任务;每个阶段的任务相对独立,而且比较简单,降低了整个软件每个阶段的任务相对独立,而且比较简单,降低了整个软件开发工程的困难程度(开发工程的困难程度(阶段性阶段性);); 当软件规模庞大,或者的需求模糊或随时间而变化时,传当软件规模庞大,或者的需求模糊或随时间而变化时,传统方法学往往不成功;维护起来仍然很困难。统方法学往往不成功;维
42、护起来仍然很困难。(4)每个阶段结束前必须从)每个阶段结束前必须从技术和管理技术和管理两方面对这个阶段两方面对这个阶段的开发成果进行严格的检查,通过之后这个阶段才算结束;的开发成果进行严格的检查,通过之后这个阶段才算结束;保证质量,提高可维护性(保证质量,提高可维护性(阶段审查阶段审查););(3)前一个阶段是后一个阶段的前提和基础,而后一阶)前一个阶段是后一个阶段的前提和基础,而后一阶段提出的解法更具体,细节更多(段提出的解法更具体,细节更多(阶段衔接阶段衔接););第第1 1章章 软件工程学概述软件工程学概述 1.2.3 软件工程方法学软件工程方法学 2. 面向对象方法学面向对象方法学强调
43、主动地多次反复迭代强调主动地多次反复迭代面向对象方法:面向对象方法:把把数据和行为数据和行为看成同等重要,它是一种以数看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。据为主线,把数据和对数据的操作紧密地结合起来的方法。面向对象方法学面向对象方法学4个要点:个要点:n对象对象(object):融合了数据及在数据上的操作行为。融合了数据及在数据上的操作行为。n类类(class):类是对具有相同数据和相同操作的一类是对具有相同数据和相同操作的一组相似对象的定义。组相似对象的定义。n继承:继承:按照父类与子类的关系,把若干个相关类按照父类与子类的关系,把若干个相关类组成一
44、个层次结构的系统。组成一个层次结构的系统。n消息:消息:对象彼此间仅能通过发送消息互相联系。对象彼此间仅能通过发送消息互相联系。第第1 1章章 软件工程学概述软件工程学概述 1.2.3 软件工程方法学软件工程方法学 面向对象方法学的优点:面向对象方法学的优点:n面向对象方法学面向对象方法学的尽量模拟人类习惯的思维方式,使开发的尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。法与过程。n面向对象方法学面向对象方法学开发软件的过程,是一个开发软件的过程,是一个主动地多次反复主动地多次反复迭代迭代的演化过
45、程,保证了在各项开发活动之间的平滑过渡。的演化过程,保证了在各项开发活动之间的平滑过渡。n促进了促进了软件重用软件重用。最终的软件产品由许多较小的、基本上。最终的软件产品由许多较小的、基本上独立的对象组成,每个对象相当于一个微型程序,而且大独立的对象组成,每个对象相当于一个微型程序,而且大多数对象都与现实世界中的实体相对应,降低了复杂性,多数对象都与现实世界中的实体相对应,降低了复杂性,提高了可理解性,简化了开发和维护工作。提高了可理解性,简化了开发和维护工作。第第1 1章章 软件工程学概述软件工程学概述 1.2.3 软件工程方法学软件工程方法学 软件四化:软件四化:n构架平台化构架平台化n组
46、建业务化组建业务化n编码自动化编码自动化n管理工厂化管理工厂化以面向对象技术为手段,以可重用软件构件化和体系以面向对象技术为手段,以可重用软件构件化和体系架构为基础,以工业化生产方式和管理支撑体系为核架构为基础,以工业化生产方式和管理支撑体系为核心的软件新变革。心的软件新变革。第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 软件生命周期(软件生命周期(Software Life Cycle)定义定义:从软从软件开发需求被件开发需求被退退出,启动可行性分析开始,经历软件开出,启动可行性分析开始,经历软件开发过程,直到软件被开发出来、投入使用,最终被淘汰发过程,直到
47、软件被开发出来、投入使用,最终被淘汰为止的整个时间。为止的整个时间。生存周期理论生存周期理论:把整个生存周期划分为若干阶段,使把整个生存周期划分为若干阶段,使得每个阶段有明确的任务,把规模大、活动多、管理复得每个阶段有明确的任务,把规模大、活动多、管理复杂的软件开发活动变得容易控制和管理。杂的软件开发活动变得容易控制和管理。第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期阶段划分阶段划分 n三个时期八个阶段:三个时期八个阶段:软件生命周期由软件生命周期由软件定义软件定义、软件、软件开发开发和和运行维护运行维护(也称为软件维护也称为软件维护)三个时期组成,每三个时期
48、组成,每个时期又进一步划分成若干个阶段。个时期又进一步划分成若干个阶段。 三个时期:三个时期:八个阶段:八个阶段:软件生命周期软件生命周期软件定义软件定义软件开发软件开发软件维护软件维护运行维护运行维护概要设计概要设计详细设计详细设计编码和单元测试编码和单元测试综合测试综合测试系统设计系统设计系统实现系统实现问题定义问题定义可行性研究可行性研究需求分析需求分析第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期基本原则基本原则 软件生命周期模型软件生命周期模型第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期具体内容具体内容 1. 问题定义
49、问题定义n任务:问题是什么任务:问题是什么n通过对客户的访问调查,系统分析员扼要地写出关于通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告。问题性质、工程目标和工程规模的书面报告。n经过讨论和必要的修改之后这份报告应该得到客户的经过讨论和必要的修改之后这份报告应该得到客户的确认。确认。n结果:结果:n关于系统规模和目标的报告书(用户确认)关于系统规模和目标的报告书(用户确认) 第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 2. 可行性研究可行性研究n任务:有可行的解吗任务:有可行的解吗n系统分析员需要进行一次大大压缩和简化了
50、的系统分析和系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程(抽象层位上进行系统分析和设计)。设计过程(抽象层位上进行系统分析和设计)。n研究问题的范围,探索这个问题是否值得去解,是否有可研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。行的解决办法。n结果:结果:n系统的高层逻辑模型(数据流图、成本效益分析)系统的高层逻辑模型(数据流图、成本效益分析)n可行性论证报告(立即进行可行性论证报告(立即进行/推迟进行推迟进行/不能或不值得进行)不能或不值得进行)第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 3. 需求分析需求分析n任务:必须
51、做什么任务:必须做什么n主要是确定目标系统必须具备哪些主要是确定目标系统必须具备哪些功能功能。n系统分析员必须和用户密切配合,充分交流信息,以系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。得出经过用户确认的系统逻辑模型。n结果:结果:n系统的逻辑模型(数据流图、数据字典、简要的算法系统的逻辑模型(数据流图、数据字典、简要的算法描述)描述)n用规格说明书准确地记录对目标系统的需求用规格说明书准确地记录对目标系统的需求第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 4. 总体设计总体设计n任务:如何解决已提出的问题任务:如何解决已提出
52、的问题n设计出实现目标系统的几种可能的方案(低、中、高设计出实现目标系统的几种可能的方案(低、中、高成本)。成本)。n用适当的表达工具描述每种方案,分析优缺点,推荐用适当的表达工具描述每种方案,分析优缺点,推荐一个最佳方案,制定出实现最佳方案的详细计划。设一个最佳方案,制定出实现最佳方案的详细计划。设计程序的计程序的体系结构体系结构。n结果:结果:n可能的解法(系统流程图、成本效益分析)可能的解法(系统流程图、成本效益分析)n推荐的系统体系结构(层次图或结构图)推荐的系统体系结构(层次图或结构图)第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 5. 详细设计详细
53、设计n任务:怎样具体实现该系统任务:怎样具体实现该系统n详细地设计每个详细地设计每个模块模块,确定实现模块功能所需要的算法,确定实现模块功能所需要的算法和数据结构。和数据结构。n结果:结果:n每个模块的算法和数据结构每个模块的算法和数据结构(程序流程图、程序流程图、PAD图、图、N-S图等图等)。第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 6. 编码和单元测试编码和单元测试n任务:得到正确的程序模块任务:得到正确的程序模块n选取一种适当的高级程序设计语言选取一种适当的高级程序设计语言(必要时用汇编语言必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写
54、的程序;把详细设计的结果翻译成用选定的语言书写的程序;n并且仔细测试编写出的每一个模块。并且仔细测试编写出的每一个模块。n结果:结果:n代码和测试报告代码和测试报告 第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 7. 综合测试综合测试n任务:得到符合要求的任务:得到符合要求的软件软件n通过集成测试、验收测试、现场测试、平行运行等方通过集成测试、验收测试、现场测试、平行运行等方法对目标系统进一步测试检验。法对目标系统进一步测试检验。n通过对软件测试结果的分析可以预测软件的可靠性;通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决
55、定测试和反之,根据对软件可靠性的要求,也可以决定测试和调试过程什么时候可以结束。调试过程什么时候可以结束。n结果:结果:n测试计划、详细测试方案以及实际测试结果测试计划、详细测试方案以及实际测试结果n完整一致的软件配置完整一致的软件配置 第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 8. 软件维护软件维护n任务:使系统持久地满足用户的需要任务:使系统持久地满足用户的需要n改正性维护,诊断和改正在使用过程中发现的软件错改正性维护,诊断和改正在使用过程中发现的软件错误;误;n适应性维护,修改软件以适应环境的变化;适应性维护,修改软件以适应环境的变化;n完善性维护,
56、根据用户的要求改进或扩充软件;完善性维护,根据用户的要求改进或扩充软件;n预防性维护,修改软件为将来的维护活动做准备。预防性维护,修改软件为将来的维护活动做准备。n每一项维护活动实质上是经历了一次压缩和简化了的每一项维护活动实质上是经历了一次压缩和简化了的软件定义和开发的全过程。软件定义和开发的全过程。n结果:结果:n完整准确的维护记录完整准确的维护记录 第第1 1章章 软件工程学概述软件工程学概述 1.3 软件生命周期软件生命周期 各类维护工作量各类维护工作量所占比例所占比例维护工作量在软件生维护工作量在软件生命周期所占比例命周期所占比例完完善善性性维维护护50%66%改改正正性性维维护护1
57、7%21%适适应应性性维维护护18%25%预预防防性性维维护护4%维护维护60%以上以上第第1 1章章 软件工程学概述软件工程学概述 1.4 软件过程软件过程定义定义n 软件过程是为了获得高质量软件所需要完成的一软件过程是为了获得高质量软件所需要完成的一系列任务的系列任务的框架框架,它规定了完成各项任务的工作,它规定了完成各项任务的工作步骤步骤。n过程定义了运用方法的过程定义了运用方法的顺序顺序、应该交付的文档、应该交付的文档资资料料、为保证软件质量和协调变化所需要采取的、为保证软件质量和协调变化所需要采取的管管理措施理措施,以及标志软件开发各个阶段任务完成的,以及标志软件开发各个阶段任务完成
58、的里程碑里程碑。第第1 1章章 软件工程学概述软件工程学概述 1.4 软件过程软件过程原则原则n软件过程提供了一个软件过程提供了一个框架框架,在该框架下可以建立一个软件开,在该框架下可以建立一个软件开发的发的综合计划综合计划: 若干框架活动:若干框架活动:适用于所有软件项目,而不在乎其规模和复杂适用于所有软件项目,而不在乎其规模和复杂性。性。 若干不同任务的集合若干不同任务的集合:每一个集合都由:每一个集合都由任务任务、里程碑里程碑、交付物交付物以及以及质量保证点质量保证点组成。组成。 若干保护性活动:若干保护性活动:如软件质量保证、软件配置管理、测试与度如软件质量保证、软件配置管理、测试与度
59、量等。它们贯穿于整个过程模型之中。保护性活动独立于任量等。它们贯穿于整个过程模型之中。保护性活动独立于任何一个框架活动,且贯穿于整个过程之中。何一个框架活动,且贯穿于整个过程之中。里程碑:用来说明项目进展情况的事件。通常把一个开发活动里程碑:用来说明项目进展情况的事件。通常把一个开发活动的结束或一项开发任务的完成定义为一个里程碑。的结束或一项开发任务的完成定义为一个里程碑。第第1 1章章 软件工程学概述软件工程学概述 1.4 软件过程软件过程描述方法描述方法n描述软件过程描述软件过程生命周期模型。生命周期模型。q建立软件开发过程模型建立软件开发过程模型的理论基础是的理论基础是软件生命周期理论软
60、件生命周期理论和相和相关的关的软件工程原则软件工程原则,因此,软件过程模型又称软件生命周期,因此,软件过程模型又称软件生命周期模型(模型(Software Life Cycle Model)过程模型化是为了便于过程模型化是为了便于理解和操作理解和操作。软件过程模型是对软件开发活动进行有效地组织、协调、管软件过程模型是对软件开发活动进行有效地组织、协调、管理与控制的一种理与控制的一种策略策略。其其核心思想核心思想主张把软件过程划分成若干个主张把软件过程划分成若干个阶段阶段,每个阶段所,每个阶段所包含的活动内容和性质具有包含的活动内容和性质具有“高内聚,低藕合高内聚,低藕合”的特征的特征。这这样有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年人高血压管理指南2025
- Brand KPIs for online betting:10bet in Mexiko-英文培训课件2025.5
- Brand KPIs for online betting:Sportsbet.io in Brazil-英文培训课件2025.5
- DeepSeek+兴趣教育应用场景规划方案
- 中职数学探究式教学模式的实践与思考
- 西昌市互生家具厂项目环评报告
- 2024-2025年第二学期学校整体工作总结-知不足而奋进
- 探析民办高职院校学生工作的现状及对策
- 山东省济宁市微山县第二中学2024-2025学年高二下学期第二次阶段测试语文试题
- 物理试题及答案
- 城市轨道交通客运组织电子教案(全)完整版课件整套教学课件
- GB∕T 33917-2017 精油 手性毛细管柱气相色谱分析 通用法
- 高压氧治疗操作规程以及护理常规
- 高中人教物理选择性必修二专题05 单双杆模型-学生版
- 二手车评估作业表简单实际样本
- 人民币小学学具图
- 新能源汽车的研究论文
- (完整word版)电梯管理证复审申请表
- 防错系统“红兔子”使用作业指导文件PPT课件
- 北师大版小学数学五年级下册单元测试题含答案(全册)
- 护理技术—鼻饲法课件
评论
0/150
提交评论