资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件工程概要,数据库原理课程,补充知识,背景,软件危机,软件开发周期大大超过规定日期,软件开发成本严重超标,软件质量,难于,保证,软件的发展大体上经历了三个阶段:,程序设计,阶段、,软件,阶段、,软件工程,阶段。,程序设计时代,名称,程序,生产方式,个人,质量,取决于个人水平,设计对象,以硬件为中心,开发工具,无,维护,无,设计方法,无,以技巧为主,软件时代,软件,项目组,取决于小集团水平,硬件,/,软件为中心,无系统工具,工具为个人,所有,由开发者进行维护,在设,计中不重视维护设计问题,自顶向下,有质量保证问题和持续性,问题,软件工程时代,软件产品,软件组织,软件生产管理,以软件为中心,软件生成器,设计与制作过程中均考虑维,护问题,维护成本占很大比,重,结构化设计、原型设计,从程序设计到软件工程时代,软件工程的定义,IEEE,【IEE93】,定义:“将系统化的、规范的、可度量的方法应用于,软件的开发、运行和维护,的过程,即将工程化应用于软件中,。,”,软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,,以提高质量,降低成本,为目的。,两种软件工程方法,传统软件工程,软件分析 总体设计 详细设计 面向过程的编码 测试,面向对象软件工程,软件分析与对象抽取 对象详细设计 面向对象的编码 测试,结构化分析模型的组成结构,数据流图,(,DFD,),E-R,图,状态,变,迁图,(,STD,图),加,工,说,明,控制说明,数,据,对,象,说,明,数据字典,(,DD,),面向对象分,析模型的组成结构,对象-关,系模型,类/对象,模型,对象-行为模型,使用实例,(,Use Case),操作、,属性、,协作者,对象模型,动态模型,功能模型,传统软件工程中的瀑布模型,可行性研究与计划,需求分析,总体|详细设计,编码,运行维护,测试,定义,阶段,开,发,阶,段,维护阶段,1.问题定义,关键问题:,“,要解决的问题是什么?,”,主要结果:提出关于问题的性质、工程目标和规模的书面报告。,内容及步骤,(一)系统任务的提出,(二)初步调查,(三)系统目标的确定,2 可行性研究,可行性、可行性研究的含义,可行性的含义包括可能性、必要性。,可行性分析的对象是,系统目标,。评价总体方案(系统目标)的可能性、必要性。,可行性研究目的:,用最小的代价在尽可能短的时间内确定,问题是否能够解决,是否有必要去解决,。,可行性研究,的内容,1.技术上的可行性,2.经济上的可行性,3.操作可行性,4.时间可行性,5.组织与管理上可行性,6.社会、政策允许的可行性,3.需求分析的任务,准确地,定义,未来系统的目标,确定为了满足用户的需求系统必须做什么。,用 规范的形式准确地表达用户的,需求,。,基本任务:准确地回答,“,系统必须做什么?,”,需求分析的具体任务,1.确定对系统的综合需求,:,(1)系统功能要求(2)系统性能要求(3)运行要求(4)将来可能提出的要求,2.分析系统的数据要求,:,采用建立,“,概念模型,”,的方法,并辅助图形工具,如:层次方框图、,Warnier,图等。,3.导出系统的逻辑模型,:,数据流程图、数据字典、主要算法,4.修正系统开发计划,5.开发原型系统,4.总体设计的过程,设想供选择的方案,选取合理的方案,推荐最佳方案,功能分解,设计软件结构,数据库设计,制定测试计划,书写文档,审查和复审,5.详细设计的基本任务,回答的关键问题:,“,怎样具体地实现这个系统,”,主要任务是设计出程序的,“,蓝图,”,,供程序员日后根据这个蓝图编写出实际的程序代码。,注意:设计程序的蓝图,不是具体地编写程序。,设计程序主要采用结构化的程序设计方法。,详细设计,主要任务:,编写详细设计说明书,为此,设计人员应:,(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。,(2)确定每一模块的数据结构。,(3)确定模块接口细节。,详细设计是编码的先导。,详细设计具体任务,确定模块如何实现,编写详细设计说明书,制定单元测试计划,详细设计评审,6.编码,程序写作风格,程序设计方法论,自顶向下的程序设计方法,自底向上的程序设计方法,程序设计自动化,程序设计工具,7.测试,软件测试是,为了发现错误而执行程序,的过程。,软件测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入的数据及其预期的输出结果),并利用这些用例去运行程序,以发现程序错误的过程。,软件测试的目的,测试是程序的执行过程,目的在于发现错误;,一个好的测试用例在于,能发现至今未发现的错误,;,一个成功的测试是,发现了至今未发现的错误,的测试。,测试设计中需要考虑的,22,种测试类型,黑盒,测试,白盒测试,单元测试,累计综合测试,集成测试,功能测试,系统测试,端到端测试,健全测试,衰竭测试,接受测试,负载测试,强迫测试,性能测试,可用性测试,安装/卸载测试,恢复测试,兼容测试,安全测试,比较测试,Alpha,测试,Beta,测试,8.运行维护,本质上是修改和压缩了的软件定义和开发过程,分析,设计,编码,测试,验收,配置,复审,可靠性,可移植性,可用性,可理解性,可修改性,可测试性,可理解性,可修改性,可移植性,效率,可靠性,效率,完整性,一致性,可理解性,几种,典型,的开发,方法:,模块化方法(,modular method,),结构化方法,面向数据结构方法,面向对象方法,软件开发方法,结构程序设计,结构程序设计是一种设计程序的技术,它采用,自顶向下逐步求精,的设计方法和,单入口单出口,的控制结构。,逐步求精的含义,总体设计阶段逐步求精的含义,把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。,详细设计阶段逐步求精的含义,把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。,结构程序设计优越性,自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。,用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。,不使用,GO TO,语句,仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。,传统方法学的缺点,瀑布模型的缺点:僵化,瀑布模型要求:生命周期各阶段间遵守严格的顺序。,实际情况是:软件开发往往在反复实践中完成。,瀑布模型要求:预先定义并“冻结”软件需求。,实际情况是:某些系统的需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时。,结构化技术的缺点(,SA-SD-SP),本质上是功能分解,以实现功能的过程为中心。,而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。,系统有明确的边界定义,,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。,数据与操作分开处理,,可能造成软构件对具体应用环境的依赖,可重用性(,reusability),较差.,软件工程的新途径之一:快速原型法,适用于用户驱动的系统(即需求模糊或随时间变化的系统),建造/修改,原型,用户测试,运行原型,听取用,户意见,传统方法和面向对象方法的比较,传统方法,系统是过程的集合,过程与数据实体交互,过程接受输入并产生输出,面向对象方法,系统是交互对象的集合,对象与人或其它对象交互,对象发送与响应消息,传统方法数据与过程是分离的,过程1,输入,输出,过程2,过程3,数据实体,属于该对象,的数据,对象,处理数据的方法,消息,消息,对象把数据和处理数据的方法封状成一个单元,为什么对面向对象方法感兴趣?,面向对象方法的主要优点:,自然性:,追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。,软件复用,:,可复用性,(,可,重,用性,),可,扩展,性,可,管理,性,面向对象分析,面向对象分析的关键:,识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。,面向对象方法最基本的原则:,按照人们习惯的思维方式,用,面向,对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。,面向对象建模,用,面向对象方法开发软件,通常需要建立三种形式的模型:,对象模型,:描述系统数据结构,动态模型,:描述系统控制结构,功能模型,:描述系统功能,一些具体工具介绍,A Room hierarchy based on an interior designers perspective,Room,Room with lights,Room with windows,Garage,Basement,Kitchen,Bathroom,Room with,Furniture,Living,Room,Family,Room,Bed,Room,Dining,Room,层次方框图,数据流程图,DFD,是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理的功能,数据流程图的特性,(1),抽象性,:具体的组织机构、工作场所、物质流等等都去掉,仅剩下信息和数据存储、流动、使用以及加工的情况。,(2),概括性,:它把系统对各种业务的处理过程联系起来考虑,形成一个总体,具有概括性。,(3)数据流程图描述的,主体,是抽象出来的数据。,(4)数据流程图具有,层次性,,一个系统将有许多层次的流程图。,数据流程图的用途,系统分析员用这种工具可以自顶向下分析系统信息流程,可在图上画出需要计算机处理的部分,根据数据存贮,进一步作数据分析,向数据库设计过渡,根据数据流向,定出存取方式,对应一个处理过程,用,相应的语言,、,判定表,等工具表达处理方法,程序流程图、伪码、盒图、问题分析图,开始,P,G,Q and P,停止,F,F,def,k,x,2,d,e,1,2,3,While,x,3,c,x,2,1,c,Do-While,x,3,2,3,d,e,k,:,PROCEDURE,spell_check,IS,BEGIN,Split document into single words,Look up words in dictionary,Display words which are not in dictionary,Create a new dictionary,END,spell_check,几种表示工具比较,流程图,伪码,PDL,盒图,N-S,问题分析图,PAD,结构化,差,中,优,优,逻辑表达,中,良,良,良,易,转换代码,良,优,良,优,直观性,中,中,良,良,使用频率,优,优,中,中,判定表,判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系,而其它的工具不易表示。,一张判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。,判定表的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。,例子:,航空行李托运费的算法,按规定:重量不超过30公斤的行李可免费托运。重量超过30公斤时,对超运部分,头等舱国内乘客收4元/公斤;其它舱位国内乘客收6元/公斤;外国乘客收费为国内乘客的2倍;残疾乘客的收费为正常乘客的1/2。,Rules,Rule numbers,Condition rows,Action rows,行李费算法,行李重量,W 30,行李重量,W,30,免费,国内乘客,外国乘客,头等舱,其他舱,残疾乘客,正常乘客,(,W-30),2,(,W-30),4,残疾乘客,正常乘客,(,W-30),3,(,W-30),6,头等舱,其他舱,残疾乘客,正常乘客,(,W-30),4,(,W-30),8,残疾乘客,正常乘客,(,W-30),6,(,W-30),12,用判定树表示
展开阅读全文