软件工程一讲ppt课件.ppt

上传人:本田雅阁 文档编号:2612194 上传时间:2019-04-18 格式:PPT 页数:58 大小:1.02MB
返回 下载 相关 举报
软件工程一讲ppt课件.ppt_第1页
第1页 / 共58页
软件工程一讲ppt课件.ppt_第2页
第2页 / 共58页
软件工程一讲ppt课件.ppt_第3页
第3页 / 共58页
软件工程一讲ppt课件.ppt_第4页
第4页 / 共58页
软件工程一讲ppt课件.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《软件工程一讲ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程一讲ppt课件.ppt(58页珍藏版)》请在三一文库上搜索。

1、软件工程 Software Engineering,主讲:李铁柱,教材,软件工程与UML案例解析 何晓蓉 铁道出版社 软件工程方法与实践 许家珆 电子工业出版社 Software Engineering, 6th Edition Ian Sommerville(英) 机械工业出版社(影印版),参考书目,软件工程导论(第五版),张海藩,清华大学出版社 软件工程实践导论-有关方法、设计、实现、管理之三十六计,金尊和,清华大学出版社,2005. 软件开发的科学与艺术,微软亚洲研究院,电子工业出版社,2002 年 软件工程实践者的研究方法,R S. Pressman, 机械工业出版社 现代软件工程,

2、周之英编著, 科学出版社 软件工程思想,林锐。 人月神话,FREDERICK P. BROOKS, JR. 清华大学出版社。,学习要求,听 理解知识点和思想 无需死记硬背 做 实践 体会软件工程的原则、方法和技术,在实践中提高 培养抽象思维能力 培养独立解决问题的能力 培养合作精神 想 阅读相关资料,学习方式,完成必要的作业 完成每次的实验题目 完成一次综合性的项目分析开发,软件工程师的基本功底,扎实的基础 丰富的想象力 最简单的是最好 交流能力 良好的编程风格 韧性和毅力,项目有关常识,流程重于项目 QC(就是QA)独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走.如果QC觉得

3、流程不对,他会直接上报高层, 项目肯定就此停止. 所谓的项目经理(PC)一般也是从编码人员升上来的,并不是所谓的不懂技术,一般都至少有四年以上的经验,所有的东西(包括草稿)都必须有文档 详细文档要求达到只有这个文档就可以编码的程度,一般写文档时间占60%,编码时间极少 有各种详细的review(同行评审),项目组内的,项目组之间的,客户的. 计划很详细,的确能达到小时级,但是实际情况还是误差比较大,所以加班是家常便饭的事情。,项目有关常识,学习目的,有助于正确理解和认识“软件”的概念及其特点 理解软件开发面临的问题和挑战 掌握软件工程的原则、方法和思想来系统地开发软件,尤其是复杂、庞大的软件的

4、开发 了解和接触软件开发所需的各种技术手段 软件工程是典型的计算机科学和数学,管理科学,心理学,社会学等学科的综合。,软件的发展,程序设计阶段(20世纪40年代初60年代中期) 程序系统阶段(60年代中期到70年代末期) 软件工程阶段(20世纪70年代中) 第四阶段,个体化的软件环境,软件规模小,编写者和使用者往往是同一个人,除程序清单外,无其它文档资料。,“软件作坊”,比较广泛使用产品软件,仍沿用个体化开发方法。软件维护工作很难进行,甚至不可维护(不能修改运行时发现的错误,不能适应新的硬件环境)由于软件的“不可维护”,而导致了“软件危机”。,微处理器出现,个人计算机产品、分布式系统对软件开发

5、提出更高要求,软件在工业、学术界应用广泛,个人应用少。,更强大的硬件和软件,复杂操作系统控制的强大的桌面系统,局域网和广域网,先进的应用软件配合,成为主流。集中主机环境转变为分布的C/S,B/S环境。面向对象技术取代传统技术。,例: Windows95有1000万行代码 Windows Vista有超过5000万行代码 Exchange2000和 Windows2000开发人员结构,四个阶段典型技术,第一阶段 :面向批处理 有限的分布 自定义软件 第二阶段:多用户 实时 数据库 软件产品 第三阶段:分布式系统 嵌入“智能” 第四阶段:OO 专家系统 AI PC NC,软件工程概论,什么是软件

6、软件的分类 软件的特点 软件的生存期 软件开发面临的问题 软件危机 软件工程 软件工程的目的和要求,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合 软件程序数据文档资料 程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料,软件的分类,按软件的功能进行划分: 系统软件 支撑软件 应用软件,系统软件,使计算机系统各个部件、相关软件和数据协调、高效地工作的软件 操作系统 数据库管理系统 设备驱动程序 通信处理程序等,支撑软件 协助用户开发软件的工具软件 文本编辑程序 文件格式化程序 磁

7、盘向磁带进行数据传输的程序 程序库系统 支持需求分析、设计、实现、测试和支持管理的软件,应用软件 商业数据处理软件 工程与科学计算软件 计算机辅助设计制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 事务管理、办公自动化软件 计算机辅助教学软件,按软件规模进行划分: 类别 参加人员数 研制期限 源程序行数 微型 1 14周 0.5k 小型 1 16月 1k2k 数值计算或数据处理,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。 中型 25 12年 5k50k 软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写

8、以及技术审查需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。,大型 520 23年 50k100k 编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。 甚大型 1001000 45年 1M(=1000k) 若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。 极大型 20005000 510年

9、1M10M 军事指挥、弹道导弹防御系统。,按软件工作方式划分: 实时处理软件 分时软件 交互式软件 批处理软件,按软件失效的影响进行划分: 高可靠性软件 一般可靠性软件,软件的特点,软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有明显的制造过程 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,软件的特点 -软件的失效曲线,软件的特点-软件规模与复杂度关系,以美国宇航局的软件系统为例: 1963年 水星计划系统 200万条指令 1967年 双子星座计划系统 400万条指令 1973年 阿波罗计划系统 1000万条指令 1979年 哥

10、伦比亚航天飞机系统 4000万条指令 假设1个人一年生产一万条有效指令,那么是否4000人生产一年,或400人生产10年就能完成任务吗?答案是否定的。一万条指令的复杂度决不仅仅是100条指令复杂度的100倍。,软件的特点-软件成本构成,12% 需求率,4%,生产率,开发人员,成本构成不同: 主要投资在研制;软件研制是一种人力、资金密集 的产业,而软件生产只是简单的复制、安装和培训。,软件的特点-改正一个问题需付出的代价,需 求 分 析,结构设计,详细设计,编码,集成测试,系统测试,现场,改正一个问题的估计费用,改正一个问题估计的工作量,20,200,2000,1000,5.0,2.5,0.05

11、,0.5,(美元),(人天),软件的特点-软件开发进度难以预测,拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。 以丹佛新国际机场为例。该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,机场的计划者还无法预测行李系统何时能达到

12、可使机场开放的稳定程度。,软件的生存期 life cycle,软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期 软件生存期的六个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护,制定计划,确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面的要求 完成该软件任务的可行性研究 估计可利用的资源(计算机硬件,软件,人力等)、成本、效益、开发进度 制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查,需求分析和定义,对待开发软件提出的需求进行分析并给出详细的定义 编写软件需求说明书或系统功能说明书及初步的系统用户手册 提交管理机构评

13、审,软件设计,概要设计 把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应 详细设计 对每个模块要完成的工作进行具体的描述,为源程序编写打下基础 编写设计说明书,提交评审。,程序编写,把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单” 写出的程序应当是结构良好、清晰易读的,且与设计相一致的,软件测试,单元测试,查找各模块在功能和结构上存在的问题并加以纠正 组装测试,将已测试过的模块按一定顺序组装起来 按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,运行维护,改正性维护 运行

14、中发现了软件中的错误需要修正 适应性维护 为了适应变化了的软件工作环境,需做适当变更 完善性维护 为了增强软件的功能需做变更,36,案例分析,某电力公司A,希望软件公司B 为他们制造一种”电费结算系统”,该系统用于结算每一户电表1个月期间应该缴纳的电费。 B 公司得到电力公司A的这个要求之后,开始进入制作“电费结算系统”软件的生命周期。,37,问题定义阶段,该阶段的关键任务是要明确: 要解决的问题是什么?,思考:以下几个选项中,哪个是B公司得出的结论: A.要解决某小区用电总度数问题 B.要解决某小区总收电费问题 C.要解决电力公司A管辖范围内的所有电表每月每户电费结算问题 D.要解决全国区域

15、内电表结算问题,38,可性行研究阶段,该阶段的关键任务是要明确: 做不做 用最小的代价在尽可能短的时间内从经济、技术、社会因素等方面论证解决方案的可行性,思考:B公司在可行性分析阶段应该做些什么事情,会得出什么结论?,39,需求分析阶段,该阶段的关键任务是要明确: 做什么 通过与客户不断的讨论、协商,对目标系统提出完整、准确、清晰、具体的要求. 用正式的文档准确地记录对目标系统的需求,形成软件需求规格说明书(SRS),注意点,B公司在这个阶段应该对用户的要求进行详细的调研与分析,需要去了解电费结算中需要涉及到信息、结算电费的标准与公式、这个电费结算系统的产出文档是什么等内容,确定该系统需要实现

16、的功能,例如:对使用电表的用户进行管理,对1个用户1个月的电费计算,能够生成结算单。最后以文档的形式描述出需求规格。这些是指导B公司进行下一步工作的依据。,40,概要设计(总体设计)阶段,该阶段的关键任务是要明确: 怎么做 提出实现目标系统的几种方案,制定最佳方案的详细计划 系统的体系结构设计 阶段性成果:概要设计说明书、数据库或者数据结构说明书、组装测试计划等,根据上一 步得到的需求规格说明书,将需求功能进行模块化分,B公司的设计人员开始了对“电费结算系统”的设计。例如,系统管理模块,电费计算模块,生成结算单模块等。,41,详细设计阶段,该阶段的关键任务是要明确: 具体做法 设计出程序的详细

17、规格说明,即详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。 阶段性成果:详细设计规格说明书和单元测试计划等,对每一个模块,设计它的实现算法和数据结构。例如,电费计算模块,需要根据计算公式进行电费的计算。B公司的设计人员开始了对“电费结算系统”的设计。,42,编码和单元测试阶段,该阶段的关键任务是 编码和单元测试 编写出正确的、易理解的、易维护的程序模块; 仔细测试编写出的每一个模块 阶段成果:经过单元测试后的代码,单元测试报告等。,B公司程序员们开始对每个模块进行分工,各自负责1个或者多个模块,然后写代码阿写代码,代码写好了,还需要对自己所写模块的代码进行测试,保证自己的正确性。

18、,43,综合测试阶段,该阶段的关键任务是通过各种类型的测试(及调试)使软件达到预定的要求 组装测试:根据设计的软件结构,把经过单元测试检验的模块按某种策略装配起来,在装配过程中对程序进行必要的测试。 验收测试:按照规格说明书的规定,由用户对目标系统进行验收,看其是否达到需求规格说明书中定义的全部功能和性能等方面的需求。 验收测试结束后,经过评审的软件产品就可以交付投入使用了。,经过上面的几个步骤,B公司的人员终于拿出了“电费结算系统”,他们需要对该系统进行各种测试,包括集成测试,系统测试,用户环境测试,验收测试等等,确保该系统能够平稳的运行在A公司中。,44,软件维护阶段,该阶段的关键任务是通

19、过各种必要的维护活动使系统持久地满足用户的要求。 改正性维护:诊断和改正在使用过程中发现的软件错误 适应性维护:修改软件易适应环境的变化 完善性维护:根据用户的要求改进或扩充软件使它更完善 预防性维护:修改软件为将来的维护活动预先做准备,在电力公司A的实际使用当中,“电力结算系统”出现了一些问题,B公司需要派人员进行维护。 此外,A公司对B公司所开发的系统比较满意,愿意继续让B公司对其进行其他方面功能的扩充,例如:分小区进行用电量和电费收益的统计分析等。,软件开发中面临的问题,计划很难制定致使经费预算常常突破 由于缺乏软件开发的经验 ,主观盲目地制定计划,执行起来和实际情况有很大差距,对于工作

20、量估计不准确,进度计划无法遵循,开发工作完成的期限一拖再拖。已经拖延了的项目,为了加快进度而增加人力,反而更加延误项目的进度。,需求在开发的初期阶段提得不够明确, 或是未能得到确切的表达。 软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,造成开发后期矛盾的集中暴露。然而这时问题既难于分析,也难于挽回。 开发过程没有统一的、公认的方法论和规范指导 加之不重视文字资料工作,资料很不完整;忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。,未能充分做好检测工作 在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。 美国IBM公司

21、在1963年至1966年开发的IBM 360机的操作系统。5000人-年的工作量,1000人投入,近100万行源程序。每次发行的新版本都是从前一版本中找1000个程序错误,项目负责人F.D.Brook总结时说:“正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深。最后无法逃脱灭顶的灾难。“,软件危机,1968年由NATO (北大西洋公约组织)在德国Garmish召开的学术会议上,Feitz Bauer首先提出了“软件工程”概念,引入了现代软件开发的方法,希望用工程化的原则和方法来克服软件危机。,软件危机的具体体现,(1)软件开发进度难以预测 (2)软件开发成本难以控制 (3)用户对软

22、件功能难以满足 (4)软件产品质量无法保证 (5)软件产品难以维护 (6)软件缺少文档资料,按工程化的原则和方法组织软件开发是解决软件开发中出现问题的一个主要出路。 软件工程阶段,大约为70年代以后。50年代到60年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。写出的程序通篇充满了程序技巧,这些程序很难被别人看懂。然而随着计算机的广泛使用,人们逐渐抛弃了这种观点。对于稍大的程序,并需要较长时间为许多人使用的程序,人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。多个软件人员分工合作、共同完成;只有在项目的总体要求和技术规范的约束下充分发挥和施展。,解决途径,软件工程的定义,软

23、件工程:是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。 实质上,软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和最先进的软件开发技术结合起来,应用到软件开发和维护过程中去。 IEEE:( Institute of Electrical and Electronics Engineers ) 软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件中的方法的研究。,软件工程三要素:方法、工具和过程,工具层:为软件工程方法提供了自动的或半自动的软件支撑环境。 CASE:计

24、算机辅助软件工程,将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。 使用软件工程工具可以有效地改善软件开发过程,提高开发效率,降低开发成本,软件工程三要素:方法、工具和过程,方法层:提供了软件开发的各种方法。方法覆盖了一系列的任务,包括项目计划与估算方法、需求分析和设计的方法、编程、测试方法及维护方法等 软件工程方法为软件开发提供了 “如何做” 的技术,过程层:是软件工程的基础。软件工程过程是为了获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。(具体实施),软件工程三要素:方法、工具和过程,软件工程过程定义了: 方法使用的顺序 要求交付的文档资料 为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑,软件工程项目的基本目标,付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用,软件开发项目力图在以上目标的冲取得一定程度的平衡。,结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1