第9章软件工程课件_第1页
第9章软件工程课件_第2页
第9章软件工程课件_第3页
第9章软件工程课件_第4页
第9章软件工程课件_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章软件工程,为什么提出软件工程,从20世纪40年代开始到软件工程术语提出为止的20多年时间里,对软件开发的理解就是编程序,那时的编程有以下特点:软件规模相对较小,人们关心的是计算机硬件的发展。作为一个计算机专业人员,他必须懂得计算机的结构。作为一个机构,其大量资金也是用于计算机硬件开销上,软件只是作为展现其硬件性能的一种手段而投入的少量资金。,为什么提出软件工程,编程仅作为一门技艺,大部分软件技术人员不太关心他人的工作,决定软件质量的惟一因素就是该编程人员的素质。缺少有效方法与软件工具的支持。由于重视个人技能,软件开发过程能见度低,许多管理人员不知道他们的软件技术人员工作究竟做得如何。由于人们重视个人技能,一旦需要做某些修改,就要原编程人员进行修改。这使得软件开发后的维护工作很难进行。,软件工程的背景和历史,1968年由NATO(北大西洋公约组织)在德国Garmish召开的学术会议上,FeitzBauer首先提出了“软件工程”概念。,软件工程与编程,前者是一门学科,一种科学理论来指导软件系统开发,标准化,自动化的过程考虑如何分解一个系统,以便各人分工开发;考虑如何说明每个部分的规格要求;怎样才能易于维护,单纯的代码编写是软件工程发展的前身是软件工程中占据很少时间和空间的一部分,计算机学科的发展,计算机科学(CS),计算机科学(CS),计算机工程(CE),软件工程(SE),信息系统(IS),计算学科(computingDiscipline),早期第二阶段第三阶段第四阶段面向批处理多用户分布式系统强大的桌面系统有限的分布实时嵌入“智能”面向对象技术自定义软件数据库低成本硬件专家系统软件产品消费者的影响人工神经网络并行计算网络计算机,1950,1960,1970,1980,1990,2000,Evolutionofsoftware#,为什么发展如此之快,不准确的时间和金钱的估算软件质量的低下相对硬件产品开发软件开发费用的增加维护、增强软件系统的必要性硬件价格大幅度下降,软件技术面临的问题,规模复杂性生产率,Windows95有1000万行代码Windows2000有5000万行代码,例:,Exchange2000和Windows2000开发人员结构,软件危机的主要特征,软件开发周期大大超过规定日期;软件开发成本严重超标;软件质量难于保证。,软件工程的定义,FritzBauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”,软件工程的定义(2),IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”,软件工程的定义(3),IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”,软件工程是一门交叉学科,软件工程的主要研究内容软件开发技术:软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理:软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。,软件工程一种层次化技术,工具,方法,过程,质量焦点,Softwareengineeringlayers,软件工程三个要素:方法、工具、过程,软件工程知识结构,2001年5月ISO/IECJTC1(ISO和IEC的第一联合技术委员会)发布了SWEBOK指南V0.95(试用版)SWEBOK把软件工程学科的主体知识分为10个知识领域。,软件工程知识结构,软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量,“软件工程”课程与其它软件专业课的区别,(1)立足于系统的整体。(2)讲授系统分析、系统设计、测试及维护的理论和方法。(3)构筑一个软件系统,实践软件开发全过程。,学习“软件工程”的目的,转变对软件的认识:上升程序系统转变思维定式:上升程序员系统工程师(系统分析员),软件和软件生命期模型,(SoftwareLifeCycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程。,软件生存期的阶段划分,(1)可行性研究与计划(2)需求分析(3)总体设计(4)详细设计(5)实现(6)集成测试(7)确认测试(8)使用和维护,成长期(开发期),计划期,成年期(运行期),软件工作的范围,只考虑编写程序,涉及整个软件生存周期,扩展到,软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存周期模型软件工程范型,软件开发模型,可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义阶段,开发阶段,维护阶段,1.瀑布模型(WaterfallModel),开发软件不仅仅是编程,瀑布模型开发软件的特点,1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。瀑布模型适用于开发用户需求明确并且很少变化的软件!,2.演化模型,首先针对已提出的核心需求开发软件的第一个版本,又称“原型”。用户使用原型并反馈意见进入下一轮,完成定义、设计、编码、测试、使用、反馈等阶段;进行多轮修正,直到实现用户的所有需求,交付使用。演化模型适用于开发事先用户需求不明确的软件!,3.螺旋模型,螺旋模型将瀑布模型和演化模型等结合起来,并且强调了其他模型均忽略了的风险分析。它将开发划分为制订计划、风险分析、实施开发和客户评估4类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本。如果开发风险过大,开发机构和客户无法接受,项目有可能就此终止。多数情况下,会沿着螺旋线继续下去,自内向外逐步延伸,最终得到满意的软件产品。螺旋模型更适合于大型软件的开发,1.可行性研究,可行性研究的任务:可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”,可行性研究的内容,(1)技术可行性(2)经济可行性(3)操作可行性(4)社会可行性(法律可行性)(5)抉择,可行性研究的步骤,(1)复查确认系统目标、规模(2)研究正使用系统工作流程(3)导出新系统高层逻辑模型(4)重新定义问题(5)导出和评价供选择的方案(6)推荐可行的方案(7)草拟开发计划(8)编写可行性研究报告,送审,系统流程图,输入单据磁盘文件处理输出单据,数据流程图,数据源点和终点,变换数据的加工,文件,数据,逻辑关系符号:与、或、异或,2.需求分析,为什么需要需求分析开发人员往往急于求成希望对开发进行指导希望开发人员对用户的要求理解希望用户理解开发人员测试部门有理可依,需求分析的任务,准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。用规范的形式准确地表达用户的需求。,什么是用户需求,思考、涉及的几个问题如何识别、获取需求?你能够采取何种手段与用户进行交流沟通?何为需求建模?你如何理解模型与建模?,软件需求分析的几个阶段,问题分析问题评估和方案综合建模规约复审系统分析员的主要焦点是“做什么(what)”,不是“怎样做(how)”,需求获取的常用方法,建立分析小组领域专家:主角系统分析员:导演客户访谈问题分析与确认,某出版社系统调查表,某出版社系统调查表,需求获取的内容,1.用户需求分类(1)功能性需求:定义了系统做什么(描述系统必须支持的功能和过程)(2)非功能性需求(技术需求):定义了系统工作时的特性(描述操作环境和性能目标),两类需求包括的内容,(1)功能(2)性能(3)环境(4)界面(5)用户或人的因素(6)文档,(7)数据(8)资源(9)安全保密(10)软件成本消耗与开发进度(11)质量保证,(1)功能需求,系统做什么?系统何时做什么?系统何时及如何修改或升级?,(2)性能需求,软件开发的技术性指标例如:存储容量限制执行速度、相应时间吞吐量,(3)环境需求,硬件设备:机型、外设、接口、地点、分布、温度、湿度、磁场干扰等软件:操作系统网络数据库,(4)界面需求,有来自其它系统的输入吗?到自其它系统的输出吗?对数据格式有规定吗?对数据存储介质有规定吗?,(5)用户或人的因素,用户类型?各种用户熟练程度?需受何种训练?用户理解、使用系统的难度?用户错误操作系统的可能性?,(6)文档需求,需哪些文档?文档针对哪些读者?,(7)数据需求,输入、输出数据的格式?接收、发送数据的频率?数据的准确性和精度?数据流量?数据需保持的时间?,(8)资源需求,软件运行时所需的数据、软件。内存空间等资源。软件开发、维护所需的人力、支撑软件、开发设备等。,(9)安全保密要求,需对访问系统或系统信息加以控制吗?如何隔离用户之间的数据?用户程序如何与其它程序和操作系统隔离?系统备份要求?,怎样写需求分析报告,作报告时要先从宏观上讲一、二、三、四、五,再从细节上讲A、B、C、D、E。需求分析不象侦探推理那样从蛛丝马迹着手。应该先了解宏观的问题,再了解细节的问题如图S=D1,D2,D3,DnDi=P1,P2,P3,PmPj=F1,F2,F3,Fk,怎样写需求分析报告,需求分析,绘制系统关联图。建立数据字典。为需求建立模型。建立用户接口原型。确定需求优先级。,需求分析的步骤,分析阶段中常用的模型(逻辑模型),数据流图(DFD)实体联系图(ERD)类图实例图时序图状态图,协作图事件列表数据流定义数据元素定义,数据流图(DFD,DataFlowDiagram),描述逻辑模型的图形工具,表示数据在系统内的变化。DFD可以用来表示一个系统或软件在任何层次上的抽象。较大型软件系统DFD分成多层(子图、父图概念),可以表示数据流和功能的进一步的,数据流程图的表示,数据源点和终点,变换数据的加工,文件,数据,逻辑关系符号:与、或、异或,需求建模实例酒店管理系统的局部DFD,已预订的入住,预订请求,预订,预订确认,未预订的入住,已预订的入住请求,未预订的入住请求,客人数据,客房数据,预订确认信息,客人信息,夜审,结算信息,财务系统,时钟,需求建模实例某金融贸易系统用例图(UML),需求建模实例用例图举例(UML),签定一份保险单,客户,保险销售人员,销售统计,客户统计,需求建模实例UML类图实例(Note44),需求建模实例描述客房状态的状态图(Note45),取消,预定,入住,已预订,空闲,占用,维修,维修,完成,退房换房,入住,事件,创建,需求建模实例接电话的顺序图(UML),需求建模实例UML协作图举例,数据词典(DD,DataDictionary),DD是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算有共同的理解,词典与数据流图之间关系(page44),数据流图描述了系统的“分解”;依靠“词典”来说明各个成分的含义;数据流图中所有名字的定义就构成一本词典;数据流图和词典结合在一起构成了“需求说明书”数据流图中出现的每一个数据流名、每一个文件名和每一个加工名在词典中都应该有一个条目给出这个名字的定义。,需求建模实例数据字典条目的定义,预订请求客人数据住宿期限+客房类别客人数据客人姓名+地址+身份证号码+护照号码+支付方式身份证号码=十进制15数字18护照号码字母+8数字8字母“A”“Z”十进制数字“0”“9”,需求建模实例数据字典条目的定义,F1:航班信息文件航空公司名称航班号起点终点日期起飞时间降落时间航空公司名称2字母4航班号3十进制数字3字母“A”“Z”十进制数字“0”“9”起点终点1汉字10起飞时间降落时间时分,需求建模实例数据字典条目的定义,时“00”“23”分“00”“59”日期年月日年2000200120022004月“01”“12”日“01”“31”,3.系统设计,软件设计分为两个阶段:(1)概要设计(总体设计)(Page66)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,软件设计分为两个阶段:,(1)概要设计(总体设计)(Page66)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,概要设计的基本概念,将系统划分成模块决定每个模块的功能决定模块的调用关系决定模块的界面,即模块间传递的数据,酒店管理信息系统功能结构图,大型零售商场管理信息系统功能结构图,4.人机界面设计,人机界面(HumanComputerInterface,简称HCI)通常也称为用户界面界面设计主要包括三个方面:设计软件构件之间的接口设计模块和其他非人的信息生产者和消费者的界面设计人(如用户)和计算机间的界面,界面的设计原则,分析用户类型应用程序和界面分离一致性尽量减少用户工作提供反馈出错处理和帮助功能增加可视化图形表示,黄金规则,在有关界面设计的著作中,TheoMandel创造了三条黄金原则:置用户于控制之下减少用户的记忆负担保持界面一致,黄金规则:置用户于控制之下,Mandel定义的一组允许用户操作控制的原则:以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式提供灵活的交互允许用户交互可以被中断和撤消当技能级别增加时可以使交互流水化并允许定制交互使用户隔离内部技术细节设计应允许用户和出现在屏幕上的对象直接交互,黄金规则:减少用户的记忆负担,Mandel定义了一组设计原则,使界面能够减少用户记忆负担:减少对短期记忆的要求建立有意义的缺省定义直觉性的捷径界面的视觉布局应该基于真实世界的隐喻以不断进展的方式揭示信息,黄金规则:保持界面一致,用户应以一致的方式展示和获取信息所有可视信息的组织均按照均按照贯穿所有屏幕显示所保持的设计标准输入机制被约束到有限的集合,在整个应用中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论