《软件工程》(1).ppt

上传人:牧羊曲112 文档编号:6291570 上传时间:2023-10-14 格式:PPT 页数:76 大小:957KB
返回 下载 相关 举报
《软件工程》(1).ppt_第1页
第1页 / 共76页
《软件工程》(1).ppt_第2页
第2页 / 共76页
《软件工程》(1).ppt_第3页
第3页 / 共76页
《软件工程》(1).ppt_第4页
第4页 / 共76页
《软件工程》(1).ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

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

1、1,软 件 工 程Software Engineering,主讲:wangzhenE-mail:电话:86798113,2,软件工程软件业是决定21世纪国际竞争地位的战略性产业,是信息时代的朝阳产业。1.软件产业是信息产业的核心,是国际竞争的焦点和战略制高点。2.软件关系到国家政治、经济和社会的安全及民族文化的发扬光大。3.发展软件产业对优化我国产业结构、提高经济运行质量具有极其重要的作用。4.软件是国民经济建设中诸多关键技术的基础。,3,软件工程 近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门、生产部门、服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少

2、的一部分。展望二十一世纪,软件仍将成为驱动任何事情,从基础教育到遗传工程取得新进展的动力。学习研究工程化的软件开发方法,使开发过程更加规范,是我们学习的目标和动力。,4,软 件 工 程,软件工程导论(第四版)张海藩 清华大学出版社(2003),教 材,5,软 件 工 程,实用软件工程(第二版)郑人杰 殷人昆 陶永雷 清华大学出版社(1996),软件工程-实践者的研究方法(英译版 第五版)Roger S.Pressman 机械工业出版社,参考书目,6,软 件 工 程,课程评分方法 大作业 30%+期末考试 70%=总评 100%其它作业仅供参考。可通过e-mail递交考勤仅供参考,若抽查3次缺勤

3、,总成绩不及格,7,学生管理系统StudentMis,学生管理系统针对的用户是学校学生管理部门。相应的需求有:能够存储一定数量的学生信息,并方便有效的进行相应的学生数据操作和管理,主要包括:,大作业,8,学籍管理学生基本信息的导入、录入、删除及修改。学生辅助信息(综合测评、奖励、处分等)的录入、删除及修改。学生贷款管理(录入、删除及修改。查询)学生保险管理(录入、删除及修改。查询)学生就业管理(录入、删除及修改。查询)学生勤工助学管理(录入、删除及修改。查询)学生各种信息的多关键字检索查询。,9,能够对需要的统计结果提供打印输出。能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时

4、提供信息备份的服务。,可选题目:-商业管理系统的分析、设计与实现-教务管理系统的分析、设计与实现-订票管理系统的分析、设计与实现 可以自选题目,但需要教师认可,10,应提交的文档,软件需求规格说明书软件设计规格说明书用户安装及使用手册系统测试计划演示程序其它,11,软 件 工 程,目的 体验软件工程各阶段的主要工作,特别注意吸取教训;学会与他人合作,培养团队精神,单干户将得不到成绩。,分组:班长组织 每组6-8人,选一个组长。组长负责:组织、分工、安排进度、作业提交等。作业提交:每组一个,但必须注明分工.,12,0.软件概论 什么是软件 软件的分类 软件的发展1.软件危机 软件危机的表现 软件

5、危机的原因2.软件工程软件工程软件工程的目的和要求,第一章 软件工程学概述,13,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料,0.软件概论,14,软件的特点,软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,0.软件概论,15,0.软件概论,16,软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度

6、的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性 软件成本相当昂贵相当多的软件工作涉及到社会因素,0.软件概论,17,0.软件概论,18,软件的分类,按软件的功能进行划分:系统软件 使计算机系统各个部件、相关软件和数据协调、高效地工作的软件,0.软件概论,操作系统数据库管理系统设备驱动程序通信处理程序等,19,支撑软件 协助用户开发软件的工具软件,0.软件概论,文本编辑程序文件格式化程序磁盘向磁带进行数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件,20,应用软件,0.软件概论,商业数据处理软件工程与科学计算软件计算机

7、辅助设计制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件,21,按软件规模进行划分:类别 参加人员数 研制期限 源程序行数 微型 1 14周 0.5k,0.软件概论,小型 1 16月 1k2k 数值计算或数据处理.通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。,中型 25 12年 5k50k 应用程序和系统程序。软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。系统的软件工程方法是完全必要的。,22,大型 520 23年 50k100k 编译

8、程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。,0.软件概论,甚大型 1001000 45年 1M(=1024k)若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。,极大型 20005000 510年 1M10M 军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。,23,1.软件危机(Software

9、 Crisis),在60年代中期以前:个体化软件开发方法.用户 程序员(编写者=使用者),无文档资料,在60年代中期-70年代中期:软件作坊,产品软件.个体化软件开发方法.,软件危机:在计算机软件开发、维护过程中所遇到的一系列严重问题。,24,1.软件危机,例:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。.,在程序运行时发现的错误,必须设法改正,用户有新的需求,必须相应地修改程序,硬件或

10、OS的更新,通常需要相应地修改程序,25,1.软件危机,这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,Software Crisis!,26,1.软件危机,项目没有被很好地理解;计划不周,最终导致进度拖延、成本超支。,软件危机的表现:,计划很难制定致使经费预算常常突破:由于缺乏软件开发的经验,

11、主观盲目地制定计划,执行起来和实际情况有很大差距;对于工作量估计不准确,进度计划无法遵循,开发工作完成的期限一拖再拖。已经拖延了的项目,为了加快进度而增加人力,反而更加延误了时间。,项目没有被很好地理解:“闭门造车”。需求在开发的初期阶段提得不够明确,或是未能得到确切的表达。软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,造成开发后期矛盾的集中暴露。然而这时问题既难于分析,也难于挽回。,27,1.软件危机,没有充分的文档资料(documentation),“软件”程序,人与人的交流比写程序困难得多。,软件可靠性(reliability)缺少度量的标准,质量无法保证。如何保证软件产品

12、的质量,是非常复杂困难的问题。特别对于规模庞大的软件,如:航天.,28,1.软件危机,软件难以维护(maintainability)不易升级(evolvability),开发过程没有统一的、公认的方法论和规范指导,加之不重视文字资料工作,资料很不完整;忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。,(5)未能充分做好检测工作(test)在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。,29,软件危机产生的原因:,软件自身的特点(2)在开发和维护过程中,采用了错误的方法和技术早期的个体化开发特点急于求成,仓促上阵 我们认为的问题

13、=用户要解决的问题?认为软件=编程、运行;轻视软件维护 编程工作量10-20%软件维护工作量55-70%没有软件生命周期概念,1.软件危机,30,软件开发过程中,引入同一变动付出的代价随时间变化趋势,1.软件危机,31,改正一个问题需付出的代价,需求分析,结构设计,详细设计,编码,集成测试,系统测试,现场,改正一个问题的估计费用,改正一个问题估计的工作量,20,200,2000,1000,5.0,2.5,0.05,0.5,(美元),(人天),32,对软件的常见误解,用户的误解开发人员的误解管理者的误解,1.软件危机,33,误解先对软件需求做一般的说明,以后再逐步明确就可以了.需求本身就是不断变

14、化的,软件容易改变可以很快调整适应这种变化.,现实软件需求不明确是造成软件开发费用增加和延时交货的主要原因.软件开发费用随着开发阶段的后移而大大增加.,1x,1.5-6x,60-100 x,软件开发费用,设计阶段,开发阶段,维护阶段,用户的误解,1.软件危机,34,开发人员的误解,误解一旦程序开发完毕工作正常,我的任务就完成了在程序工作之前,无法顾及软件的质量问题.对于一个成功的项目来说,唯一能够提供的就是可以工作的程序.,现实一个软件的50%-70%的工作量耗在软件交付使用以后.对于某些错误软件审查比软件测试更加有效.一个完整的软件要包括程序、各种文件和各种数据.,1.软件危机,35,管理者

15、的误解,误解书上已经有各种软件开发的标准,拿来用就是了.已经有足够的软件开发工具可供使用.一旦项目的程序员不够可以随时增加.,现实书上是有各种软件开发的标准,但不是过时就是不适用.软件工具不是一拿来就能用的.“项目后期增加程序员会使项目的完成更加推后.-Brooks,1.软件危机,36,按工程化的原则和方法组织软件开发是软件开发的一个主要出路。50年代到60年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。写出的程序通篇充满了程序技巧,这些程序很难被别人看懂。然而随着计算机的广泛使用,人们逐渐抛弃了这种观点。对于稍大的、并需要较长时间为许多人使用的程序,人们要求这些程序容易看懂、容易

16、使用,并且容易修改和扩充。多个软件人员分工合作、共同完成;只有在项目的总体要求和技术规范的约束下充分发挥和施展。,解决问题的出路,1.软件危机,37,1.软件危机,Better management Different team organizations Better languages&tools Uniform coding conventions 技术+管理 必须意识到:“软件”编程,它有自己的生命周期(life cycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。,“软件工程”(Software Engineering)NATO Conferen

17、ce,Garmisch,Germany,1968.,解决问题的想法:,38,1.软件工程的定义,Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料IEEE:软件工程是开发、运行、维护和修复软件的系统方法Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法经典定义(P5),2.软件工程(Software Engineering),39,软件工程 一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三个要素:方法、工具、过程,40

18、,软件工程三要素方法、工具和过程,支持软件工程的根基就在于对质量的关注。软件方法为软件开发提供了“如何做”的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件工程过程定义了:方法使用的顺序 要求交付的文档资料 为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑,2.软件工程,41,软件工程项目的基本目标,付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作,及时交付使用,2.软件工程,42,软件开发项目力图在以上目标的冲突中取得一定程度的平衡。,2.软件工程,43,软件工程过程,软件规格说明:规定软件的功能及其运

19、行的限制软件开发:产生满足规格说明的软件软件确认:确认软件能够完成客户提出的要求软件演进:为满足客户的变更要求,软件必须在使用的过程中演进,2.软件工程,44,软件工程过程的特性,易理解性可见性可支持性可接受性,可靠性健壮性可维护性速度,2.软件工程,45,软件生存期(或生命周期)(life cycle),软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期,2.软件工程,三个阶段:定义、开发、维护.,八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护,46,2、原理(Principles):(P.7-9)用分阶段的生命

20、周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控制计划 验证计划 运行维护计划,开发小组的成员应该少而精,采用现代程序设计技术,结果应能清楚地审查 set standards,承认不断改进软件工程实践的必要性,2.软件工程,坚持进行阶段评审,实行严格的产品控制基准配置管理(Baseline configuration management),47,3、生命周期各阶段的基本任务(Principles):,2.软件工程,48,2.软件工程,49,2.软件工程,50,2.软件工程,51,关键问题:“要解决的问题是什么?”,问题定义,2.软件工程,确定问题的性质,确定要开发软件系统的目

21、标、规模,与用户交互,提交文档(性质、目标、规模),时间最短:1天,52,关键问题:“该问题有行得通的解决办法吗?”,可行性研究,2.软件工程,简化的系统分析、设计,导出系统的高层逻辑模型(数据流图),目标、规模更具体,主要任务:成本/效益分析,形成可行性研究报告,提交管理部门审查,53,关键问题:“目标系统必须做什么?”,需求分析,2.软件工程,确定系统必须具备的功能,与用户充分交互,沟通,提出用户确认的系统逻辑模型(数据流图、数据字典、简要的算法),编写软件需求说明书或系统功能说明书及初步的系统用户手册,提交管理机构评审,54,关键问题:“概括地说,应该如何解决这个问题?”,总体设计(或概

22、要设计),2.软件工程,确定人机工作范围,多方案的选择:低成本中等成本高成本,设计软件结构(模块),描述:结构图/层次图,编写设计说明书,提交评审。,55,关键问题:“应该怎样具体地实现这个系统?”,详细设计,2.软件工程,对每个模块要完成的工作进行具体的描述,设计出程序的详细规格说明,为源程序编写打下基础,描述:HIPO图(层次图+输入/处理/输出图)或PDL语言(过程设计语言),编写详细设计说明书,提交评审。,56,关键问题:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”,编码和单元测试,2.软件工程,程序应正确、容易理解(结构良好、清晰易读)

23、、容易维护,测试每一模块(功能、结构),提交“源程序清单”,57,关键任务:通过各种测试使软件达到预定要求,综合测试,2.软件工程,测试类型:集成、验收,集成测试:将已测试过的模块按一定顺序组装起来,进行测试,用户验收测试:按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,提交文档:测试计划、详细测试方案、测试结果,58,关键任务:通过各种维护使系统持久地满足用户需要四类维护:改正性维护:运行中发现了软件的错误需要修正适应性维护:为了适应变化了的软件工作环境,需做适当变更完善性维护:为了增强软件的功能需做变更(用户需求改进或扩充)预防性维护:为将来的维护做准备记

24、录维护活动,软件维护,2.软件工程,59,软件生存期模型,软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架瀑布模型快速原型模型增量模型 螺旋模型,2.软件工程,软件工程过程定义了:方法使用的顺序 要求交付的文档资料 为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑,60,1.瀑布模型(线形顺序模型),可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义阶段,开发阶段,维护阶段,2.软件工程,61,2.软件工程,顺序性、依赖性 推迟程序的物理实现 质量保证的观点 阶段文档与评审的要求,利于尽早发现错误。每个阶段必须完成规定的文档;每

25、个阶段结束前完成文档审查,及早改正错误。,特 点,62,2.原型模型(快速成型模型),建造/修改 原型,用户测试运行原型,听取用 户意见,原型范型,2.软件工程,63,采用原型模型的软件生存周期,分析定义系统需求,生成原型,系统设计,程序设计,编码,测试,运 行和维护,原型化,含原型化的软件生存期,64,3.演化模型,65,3.1 增量模型(递增模型),先完成一个系统子集的开发,再按同样的开发步骤增加功能(系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。,66,分析,增量模型,设计,编码,测试,分析,设计,编码,测试,分析,设计,编码,测试,分析,设

26、计,编码,测试,增量1,增量2,增量3,增量n,增量1交付客户,增量2交付客户,增量3交付客户,增量n交付客户,日历时间,.,67,3.2 螺旋模型,风险分析,工程实施,用户通信,用户评估,产品维护项目,产品增强项目,新产品开发项目,概念开发项目,计划,建造及发布,68,“基于版本发布”的特点,V1.0,功能,时间,V2.0,V1.1,69,Trade-off Decision(折中决定),可 靠 性,发布日期,功 能,最优,约束范围,可接受,正确的Trade-off 决定,70,4.面向对象模型,71,4.1 喷泉模型,进一步开发,实现和集成阶段,运行状态,实现阶段,面向对象设计阶段,计划阶

27、段,面向对象分析阶段,需求阶段,维护期,72,喷泉模型特点,主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征,73,4.2 可重用部件组装模型,使用重用技术的软件工程模型构件(components):可重用的软件成份可复用性(Reusability)(可重用性)集成化软件开发环境(ISEE),74,可重用部件组装模型,系统A的软件构成,系统C的软件构成,系统B的软件构成,可重用部 件,可重用 部 件,75,软件生产线,应用构件提取车间,应用构件库,构件生产车间,构件库,组装车间,领域 1,领域 2,应用系统,.,1,2,3,4,1基础构件,2功能构件 3接口构件,4用户界面构件,76,3.技术审查和管理复审,任务:发现技术方面的错误,监督项目进度、经费开支、投资回收的前景等。思考:阅读学生管理系统简介,思考下列问题:,1、第一件要做的事是什么?,2、你认为该软件应具备的最重要的两种品质是什么?,3、你认为怎样分工是最合理的?,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号