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