资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,软件工程,广东商学院信息学院核心课程,目 录,第一章 软件工程概述,第二章 可行性研究,第三章 需求分析,第四章 概要设计,第五章 详细设计,第六章 面向对象的分析与设计方法,第七章 编码,第八章 软件质量与质量保证,第九章 项目计划与管理,第十章 软件开发工具与环境概述,第一章 软件工程概述,1.1,软件,1.2,软件工程概念,1.3,软件生存周期与软件开发模型,1.4,小结,1.1,软件,1.1.1,软件的发展,1.,程序设计阶段,(,20,世纪,50,年代初,20,世纪,60,年代中期),2.,程序系统阶段,(,20,世纪,60,年代中期,20,世纪,70,年代末),3.,软件工程阶段,(,20,世纪,70,年代中期,20,世纪,80,年代中期),4.,第四阶段,(,20,世纪,80,年代中期至今),1.1.1,软件的发展,阶段,第一阶段,第二阶段,第三阶段,第四阶段,典,型,技,术,面向批处理,有限的分布,自定义软件,多用户,实时,数据库,软件产品,分布式系统,嵌入“智能”,低成本硬件,消费者的影响,强大桌面系统,面向对象技术,专家系统,人工神经网络,并行计算,网络计算,表,1-1,四个阶段典型技术比较,1.1.2,软件的定义,软件的定义如下:,(,1,)在运行中能提供所希望的功能和性能的指令集。,(,2,)使程序能够正确运行的数据结构。,(,3,)描述程序研制过程、方法所用的文档。,1.1.3,软件的特点,软件具有抽象性,重视软件开发过程,软件不会磨损、老化,但维护比较复杂。,软件的开发和运行经常受到计算机系统的限制,对计算机系统有不同程度的依赖性,软件的开发尚未完全摆脱手工的开发方式,软件的开发费用越来越高,成本相当昂贵,软件的开发过程复杂,需要在开发过程中进行管理,1.1.4,软件的分类,1,基于软件的功能划分,(,1,)系统软件,(,2,)支撑软件,(,3,)应用软件,2.,基于软件工作方式的划分,(,1,)实时处理软件,(,2,)分时软件,(,3,)交互式软件,(,4,)批处理软件,1.1.4,软件的分类,1,基于软件规模的划分,(,1,)微型软件,(,2,)小型软件,(,3,)中型软件,(,4,)大型软件,(,5,)甚大型软件,(,6,)极大型软件,1.2,软件工程概念,1.2.1,软件危机与软件工程的定义,1.,软件危机,软件危机指的是软件开发和维护过程中遇到的一系列严重问题。,软件危机包含以下两方面的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。,1.2.1,软件危机与软件工程的定义,软件危机的主要表现:,产品不符合用户的实际需要。,软件开发生产率提高的速度远远不能满足客观需要。,软件产品的质量差。,对软件开发成本和进度的估计常常不准确。,软件的可维护性差。,软件文档资料通常既不完整也不合格。,软件的价格昂贵,软件成本在计算机系统总成本中所 占的比例逐年上升。,1.2.1,软件危机与软件工程的定义,1.2.1,软件危机与软件工程的定义,2.,软件工程的定义,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。,1.2.1,软件危机与软件工程的定义,软件工程的,6,条基本原则:,(,1,)用分阶段的生存周期计划严格管理,(,2,)坚持进行阶段评审,(,3,)实行严格的产品控制,(,4,)采用现代程序设计技术,(,5,)清楚地审查结果,(,6,)合理安排软件开发小组的人员,1.2.2,软件工程的原则,软件工程学应遵守以下原则:,1.,分解,2.,抽象和信息隐藏,3.,一致性,4.,确定性,1.3,软件生存周期与软件开发模型,1.3.1,软件生存周期,一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把这个时期称为生存周期。,软件的生存周期一般可分为以下阶段:,S1:,问题的定义,S2,:可行性研究,S3,:需求分析,S4,:概要设计,S5,:详细设计,S6:,编码,S7,:测试,S8,:运行与维护,1.3,软件生存周期与软件开发模型,1.3.1,软件生存周期,软件生存周期的,三大阶段,:,1.,计划阶段,分为两步:软件计划和需求分析,2.,开发阶段,三个步骤:设计、编码和测试,3.,维护阶段,分为改正性维护、完善性维护和适应性维护等,1.3.2,软件开发模型,1.3.2,软件开发模型,软件开发模型是软件过程思想的具体化,是实施与过程模型中的软件开发方法和工具,是在软件开发实践中总结出来的软件开发方法和步骤。,软件开发模型是整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。,1.3.2,软件开发模型,1.,瀑布模型,又称为,生存周期模型,。,核心思想:,按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。瀑布模型规定了各项软件工程活动,包括:,制定开发计划,进行需求分析和说明,软件设计,程序编码,测试及运行维护,。并且规定了软件生存周期的各个阶段如同瀑布流水,逐级下落,自上而下、相互衔接的固定次序。,1.3.2,软件开发模型,计划,需求分析,设计,编码,测试,运行维护,计划阶段,开发阶段,维护阶段,图,1,4,瀑布模型,1.3.2,软件开发模型,1.,瀑布模型,缺点:,(,1,),缺乏灵活性,,无法解决软件需求不明确或不准确的问题。,(,2,)由于具有顺序性和相关性,凡后一阶段出现的问题需要通过前一阶段的重新确认来解决。,(,3,)不能体现开发中的并行和串行。,1.3.2,软件开发模型,1.,螺旋模型,螺旋模型沿着螺线旋转,如图,1-5,所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:,(,1,),制定计划,:确定软件目标,选定实施方案,弄清项目开发的限制条件;,(,2,),风险分析,:分析所选方案,考虑如何识别和消除风险;,(,3,),实施工程,:实施软件开发;,(,4,),客户评估,:评价开发工作,提出修正建议,1.3.2,软件开发模型,用户评价,基于用户说明的计划,初始需求与项目计划,基于初始需求的风险分析,基于用户反应的风险分析,初始软件原型,第二级原型,工程系统,图,1,5,螺旋模型,1.3.2,软件开发模型,3.,第四代技术模型(,4GT,),软件工程的第四代技术模型的应用关键在于软件描述的能力,它用一种特定的语言来完成或者以一种用户可以理解的问题描述方法来描述须解决的问题。,例如:数据库查询的非过程语言,报告生成器,数据操纵,屏幕交互及定义,以及代码生成;高级图形功能;电子表格功能。,1.3.2,软件开发模型,4.,原型模型,从需求分析开始。软件开发者和用户在一起定义软件的总目标,说明需求,并规划出定义的区域。然后快速设计软件中对用户,/,客户可见部分的表示。快速设计导致了原形的建造,原形由用户,/,客户评估,并进一步求精待开发软件的需求。逐步调整原型使之满足用户需求。如图,1,6,所示。,1.3.2,软件开发模型,需求的采集和细化,快速设计,建造原型,用户评价原型,对原型加工,产生样品,图,1,6,原型模型,1.3.2,软件开发模型,4.,原型模型,(,1,),适用范围,特别适用需求分析与定义规格说明,设计人机界面,充作同步培训工具,“,一次性,”,的应用,低风险引入新技术,(,2,),不适用范围,嵌入式软件,实时控制软件,科技数值计算软件,1.3.2,软件开发模型,4.,原型模型,(,3,)步骤,S1,:弄清用户,/,设计者的基本信息需求,S2,:开发初始原型系统,S3,:用原型系统完善用户,/,设计者的需求,S4,:修改和完善原型系统,1.3.2,软件开发模型,4.,混合模型,混合模型把几种模型组合在一起,它允许一个项目沿着最有效的路径发展。它提供了一种适用各种具体系统、环境和结构的灵活的结构。,混合模型分为,分析、综合、运行和废弃,四个阶段,各阶段的重叠为设计员提出了进行路线的选择。,混合模型的优点是:混合模型给管理人员提供了在具体操作中使用结构框架的某种形式。由于混合模型的不确定性,管理人员在一开始不必去决定完成开发过程的方向,。,1.4,小结,本章首先介绍了软件的有关概念,包括软件的产生、定义、特点和种类,然后对软件工程的概念进行了介绍,包括软件工程的定义、目标、原则和软件危机。最后介绍了软件生存周期与软件开发模型,主要包括瀑布模型、原型模型、螺旋模型、基于四代技术模型等。,第二章 可行性研究,2.1,可行性研究的任务,2.2,可行性研究的步骤,2.3,系统流程图,2.4,成本效益分析,2.5,小结,2.1,可行性任务的研究,可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。,目的不是解决问题,而是确定问题是否值得去解。,一般说来,从一下几个方面进行研究:,1,经济可行性,2,技术可行性,技术可行性研究是系统开发过程中难度最大的、最重要的工作。技术可行性研究包括:,(1),风险分析,(2),资源分析,(3),技术分析,2.1,可行性任务的研究,3,运行可行性,4,法律可行性,5,开发方案可行性,可行性研究最根本的任务是对以后的行动路线提出建议:如果问题没有可行的解,应该建议停止这项工程的开发;如果问题值得解,应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。,可行性研究的成本只占预期的工程中成本的,5,10%,2.2,可行性研究的步骤,一般来说,有以下步骤:,1,复查系统规模和目标,2,研究目前正在使用的系统,3,提出新系统的高层逻辑模型,4.,重新定义问题,5.,提出和评价供选择的方案,6.,推荐一个方案并说明理由,7.,推荐开发工程决定,8.,书写计划任务书,9.,提交审查,2.3,系统流程图,系统流程图是,描绘物理系统的传统工具,。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序,文件,数据库,表格,人工过程等等)。,系统流程图表达的,是部件的信息流程,,而不表示对信息进行加工处理的控制过程,系统流程图的基本符号见图,2-1,2.3,系统流程图,处理,能改变数据或数据位置的加工或部件,输入输出,表示输入输出,连接,指出转到图的另一部分或从;另一部分转来,换页连接,指出转到另一页图上或从另一页图转来,人工操作,由人工完成处理,通信链路,远程通信线路传送数据,数据流,用来连接其他符号,图,2-1,系统流程图的基本符号,2.3,系统流程图,例如:,可用系统流程图来分析下述问题。,某图书馆闭架借书流程如下:读者须先被验明证件后才能进入查询室。读者在查询室内通过检书卡或利用终端检索图书数据库来查找自己所需的图书。找到所需图书并填好索书单后到服务台借书。如果所借图书还有剩余,管理员将填好借书单,从库房中取出图书交于读者。图,2-2,的系统流程图描述了上述系统的概貌。图中的每个符号定义了组成系统的一个部件,而并没有指明每个部件的具体工作过程。图中的箭头指定了系统中信息的流动(逻辑)路径。,2.3,系统流程图,图,2-2,图书馆借书系统流程图,读 者,验 证,索书单,图书,查询,检书卡,图书,数据库,借书,借书单,取书,2.4,成本,-,效益分析,成本效益分析的目的是要从经济角度分析开发一个特定的新系统是否划算,从而帮助使用部门负责人正确地作出是否投资于这项开发工程的决定。,成本,/,效益分析首先要估算待开发系统的开发成本,然后与可能取得的效益(有形的和无形的)进行比较与权衡。,2.4.1,成本估计,1.,自顶向下成本估计,这类方法,着眼于软件的整体,。根据被开发项目的整体特性,首先估算出总的开发成本,然后在项目内部进行成本分配。,自顶向下估计的,缺点,是,对开发中某些局部的问题或特殊困难容易低估,甚至没有考虑到。,可采用特尔斐(,Delphi,)法,特尔斐法的传统作法是:把系统定义文件或规格说明发给各位专家,各自单独进行成本估计,填入成本估计表(见图,2-3,)。,2.4.1,成本估计,项目名:,*,日期:,1/1/2001,以下是第,1,轮的估计值:,您的估计值 平均估计值 人,-,月,0 20 40 60 80 100,您对下轮的估计值是,35,人,-,月,您的理由是:,图,2-3,特尔斐成本估计表,2.4.1,成本估计,2.,自底向上成本估计,与自顶向下估计相反,由底向上估计不是从整体开始,而是,从一个个任务单元开始,。其具体作法是,现将开发任务分解为许多子任务,子任务又分成子子任务,直到每一任务单元的内容都足够明确为止。然后把各个任务单元的成本估计出来,汇合成项目的总成本。,缺点,:有可能使成本估计偏低。,3.,算法模型估计,算法模型就是资源模型,是成本估计的又一有效工具。模型估计的,关键,是要选好适用的模型,。模型估计法常与自顶向下估计或由底向上估计结合使用。,2.4.2,费用估计,1.,代码行技术,估计出源代码行数以后,用每行代码的,平均成本乘以行数,就可以确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平。,2.,任务分解技术,首先把软件开发工程分解为若干个相对独立的任务。再分别估计每个单独的开发任务的成本,最后加起来得出软件开发工程的总成本,。,2.4.3,几种度量效益的方法,1.,货币的时间价值,通常用利率表示货币的时间价值。设年利率为,i,,现已存入,P,元,则,n,年后可得钱数为,F=P(1+i),n,这就是,P,元钱在,n,年后的价值。反之,若,n,年后能收入,F,元,那么这些钱现在的价值是,P=F/(1+i),n,2.,投资回收期,投资回收期是衡量一个开发工程价值的经济指标。投资回收期就是积累的经济效益等于最初的投资所需要的时间。投资回收期越短,就能越快获得利润。,2.4.3,几种度量效益的方法,3.,纯收入,工程的纯收入是衡量工程价值的另一项经济指标。纯收入就是在整个生存周期之内系统的累计经济效益(折合成现在值)与投资之差。,如果纯收入小于零,那么显然这项工程不值得投资。只有当纯收入大于零,才能考虑投资。,2.5,小结,通过可行性研究可以知道问题有无可行的解,进而避免人力、物力和财力上的浪费。,可行性研究所需的成本占总工程成本的,5,10%,。,可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也就是说可行性研究的目的是确定问题是否值得去解,而不是解决问题。,第三章 需求分析,3.1,需求分析的任务与步骤,3.2,需求分析的方法,3.3,图形,3.4,需求规格说明与评审,3.5,小结,3.1,需求分析的任务与步骤,通过软件需求分析,,把软件功能和性能的总体概念描述为具体的软件需求规格说明,,进而建立软件开发的基础。,3.1.1,需求分析的任务,需求分析的任务不是确定系统如何完成它的工作,而是,确定系统必须完成哪些工作,,也就是对目标系统提出完整、准确、清晰、具体的要求。,主要的任务,有:,1.,确定对系统的综合要求,2.,分析系统的数据需求,3.,提出系统的逻辑模型,4.,修正系统开发计划,5.,开发原型系统,3.1,需求分析的任务与步骤,3.1.2,需求分析的步骤,1.,调查研究,分析人员协同程序员研究系统数据的流程及调查用户需求或查阅可行性报告、项目开发计划报告,访问现场,获得当前系统的具体模型,以,IPO,图或,DFD,图表示。,2.,分析与综合,3.,书写文档,a.,系统规格说明,b.,数据要求,c.,用户系统描述,d.,修正的开发计划,4.,需求分析评审,3.1,需求分析的任务与步骤,3.1.3,需求分析的原则,1.,必须能表达和理解问题的数据域和功能域,数据域包括:数据流、数据内容和数据结构,2.,按,自顶向下逐层分解,问题,3.,要给出系统的逻辑视图和物理视图,(,1,),逻辑视图,给出软件要达到的功能和要处理数据之间的关系,而不是实现的细节。,(,2,),物理视图,给出处理功能和数据结构的实际表示形式。,3.2,需求分析的方法,3.2.1,面向数据流的需求分析方法,结构化分析方法,是面向数据流进行需求分析的方法。,结构化分析方法,使用数据流图,DFD,与数据字典,DD,来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。,其,核心思想是分解化简问题,,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。,3.2,需求分析的方法,3.2.2,数据流图,数据流图称为,Data Flow Diagram,。是描述数据处理过程的工具,。,1.,数据流图的含义,以图形的方式描述数据流从输入到输出的传输变换过程,2.,数据流图的特点,a.,抽象性,b.,概括性,c.,层次性,3.,数据流图基本符号,(1),数据流图中的主要图形元素,3.2.2,数据流图,数据流图中的基本图形元素有,4,种:,数据输入的,源点,和数据输出的,汇点,。,加工,。输入数据在此进行变换产生输出数据。,数据流,。被加工的数据与流向。,数据存储文件,,须加以命名。,图,3-2,数据流图基本图形符号,3.2.2,数据流图,(2),数据流与加工之间的关系,A,B,*,C,A,B,B,C,A,*,数据,A,和,B,同时输入变换成,C,数据,A,变换成,B,和,C,数据,A,或数据,B,(不能同时)输入变换成,C,3.2.2,数据流图,(2),数据流与加工之间的关系,A,B,C,A,B,B,C,A,数据,A,变换成,B,或,C,(不能变换成,B,和,C,),数据,A,或,B,,或,A,和,B,同时输入变换成,C,数据,A,变换成,B,或,C,,或,B,和,C,C,3.2.2,数据流图,4.,数据流图的用途,(1),系统分析员用这种工具可以自顶向下分析系统信息 流程。,(2),可在图上画出需要计算机处理的部分。,(3),根据数据存贮,进一步作数据分析,向数据库设计过渡。,(4),根据数据流向,定出存取方式。,(5),对应一个处理过程,用相应的语言、判定表等工具表达处理方法。,3.2.2,数据流图,5.,数据流图的优缺点,(1),总体概念强,每一层都明确强调干什么,需要什么,给出什么。,(2),可以反映出数据的流向和处理过程。,(3),由于自顶向下分析,容易及早发现系统各部分的逻辑错误,也容易修正。,(4),容易与计算机处理相对照。,(5),不直观,,一般都要在作业流程分析的基础上加以概括、抽象、修正来得到。,3.2.2,数据流图,6.,数据流图画法,(1),画数据流图的一般原则,自外向内,自顶向下,逐层细化,完善求精,(2),数据流图的分层方法,一套分层的数据流图由,顶图、底图和中间层,的数据流图所组成。,称上层图为下层图的,“,父,”,图,,下层图称为上层图的,“,子,”,图,。,1,2,3,3.1,3.2,3.3,A,B,C,D,E,F,C,D,F,U,R,父图,子图,3.2.2,数据流图,6.,数据流图的画法,(3),分层法绘制流程图的几个问题,编号的设置,父图与子图的平衡,局部数据存贮,处理逻辑的分解与分细的程度,由左到右绘制数据流图,绘制数据流图时,可以先忽略枝节(次要)的 信息,合理地命名,3.2.2,数据流图,7.,实例,假如要分析一家公司的营销系统。其采购部门每天须要按销售部门提供的定货单(须定的货物)向供应商采购货物。每种货物的数量都存放在数据存储货物库存中,销售和采购使每种货物数量发生的变化能够在此数据存储中及时被反映出来。而资金的汇总、核对等工作由其会计部门处理。,3.2.2,数据流图,7.,实例,图,3-5,第一层数据流图,图,3-6,销售系统,3.2.2,数据流图,图,3-7,采购系统,3.2.2,数据流图,图,3-8,会计系统,3.2.2,数据流图,3.2.3,数据字典,1.,数据字典的定义,数据字典是,关于数据的信息的集合,,对数据流程图中的各个元素作完整的定义与说明,是数据流程图的补充工具。,数据流图和数据字典共同构成系统的逻辑模型,。,2,数据字典的内容,一般说来,数据字典由下列六类元素的定义组成:,(,1,)数据流 (,2,)数据项,(,3,)数据结构 (,4,)数据存贮,(,5,)处理逻辑,(,6,)外部实体,3.2.3,数据字典,3,定义数据的方法,由数据元素组成数据的方式只有下述,4,种基本类型:,(,l,),顺序,即以确定次序连接两个或多个分量;,(,2,),选择,即从两个或多个可能的元素中选取一个;,(,3,),重复,即把指定的分量重复零次或多次。,(,4,),可选,即一个分量是可有可无的(重复零次或一次)。,4,数据字典的用途,数据字典最重要的用途是,作为分析阶段的工具,。,5.,数据字典的实现,3.3,图形,3.3.1,层次方框图,用,树形结构,的一系列多层次的矩形框描述数据的层次结构。,产品,硬件,软件,服务,处理机,存储器,外部设备,系统软件,应用软件,软件服务,硬件维修,培训,硬件系统,编译程序,软件工具,图,3-9,某计算机公司全部产品的数据结构,3.3,图形,3.3.2 Warnier,图,法国计算机科学家,Warnier,提出了表示信息层次结构的另外,一种图形工具,。和层次方框图类似,,Warnier,图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。,系统软件 编辑程序,软件产品 软件工具 测试驱动程序,设计辅助工具,操作系统,编译程序,应用软件,图,3-10Warnie,图的一个例子,3.3,图形,3.3.3 IPO,图,IPO,图是,输入,/,处理,/,输出图,的简称,它是美国,IBM,公司发展完善起来的一种图形工具,能够方便的描绘输入数据,对数据的处理和输出数据的关系,.,旧的主文件,事务文件,1.,校验,主记录,2.,校验,事务记录,3,更新,主记录,有效的,主记录,有效的,事务记录,更新后的,主文件,输入 处理 输出,图,3-11 IPO,图的一个例子,3.4,需求规格说明书与评审,描述需求的文档,叫做,软件需求规格说明书,。,3.4.1,需求规格说明的主要内容,需求分析应交付的主要文档是,需求规格说明,。,软件需求规格说明的一般格式如下:,1,引言,2,任务概述,3,数据描述,4,功能要求,5,性能需求,6,运行需求,7,其他要求,8,附录,3.4.2,需求分析的评审,应该对功能的正确性、完整性和清晰性,以及其他需求给予评价。,3.4,需求规格说明书与评审,软件需求分析评审的主要内容一般说来,应该从下述四个方面进行验证:,(,1,),一致性,(,2,),完整性,(,3,),现实性,(,4,),有效性,3.4.3,需求分析评审的方法,1.,验证需求的,一致性,2.,验证需求的,现实性,3.,验证需求的,完整性和有效性,3.5,小结,软件需求分析是软件生存周期中重要的一步,也是最关键的一步。只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。,本章主要介绍需求分析的任务和步骤、需求分析方法和需求分析规格说明。,第四章 概要设计,4.1,概要设计的任务与步骤,4.2,软件设计的原则,4.3,面向数据流的设计方法,4.4,面向数据结构的设计方法,4.5,概要设计文档评审,4.6,小结,4.1,概要设计的任务与步骤,4.1.1,概要设计任务,系统分析员,审查,软件可行性计划、软件需求分析提供的文档,提出候选的,最佳推荐方案,,确定,模块结构,,划分,功能模块,,编写,概要设计说明书,。,4.1.2,概要设计步骤,一般步骤如下:,S1,:设计系统方案,S2,:选取一组合理的方案,S3,:推荐最佳实施方案,S4,:功能分解,S5,:软件结构设计,S6,:数据库设计、文件结构的设计,S7,:制定测试计划,S8,:编写概要设计文档,S9,:审查与复审概要设计文档,4.1.2,概要设计步骤,图,4-1,概要设计,4.2,软件设计的原则,4.2.1,模块化,模块化,就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。,每个程序都相应地有一个最适当的模块数目,M,,使得系统的开发成本最小。,采用模块化原理可以使软件,结构清晰,,,容易实现设计,,软件的,可阅读性、可理解性和可修改性,大大增强。,图,4-2,模块与软件耗费,4.2,软件设计的原则,4.2.2,抽象与逐步求精,抽象,就是抽出事物的本质特性而暂时不考虑它们的细节。,考虑对任何问题的模块化解法时,可以提出许多抽象的层次。,软件工程过程的每一步都是对软件解法的抽象层次的一次精化。,4.2.3,信息隐蔽和局部化,信息隐蔽原理,指出:每一个模块的实现细节对于其他模块来说是隐蔽的,也就是说,,模块中所包括的信息不允许其它不需要这些信息的模块调用。,局部化,是指把一些关系密切的软件元素物理地放得彼此靠近。,4.2,软件设计的原则,4.2.4,模块独立性,模块独立性,是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。,模块的独立程度,可以由两个定性标准度量,为,内聚和耦合,。,1.,耦合,是对一个软件结构内各个模块之间互连程度的度量。耦合强弱,取决于模块间接口的复杂程度,。,2.,内聚,内聚是一个模块内各个元素彼此结合的紧密程度,理想内聚的模块只做一件事情。内聚和耦合是密切相关的,,模块内的高内聚往往意味着模块间的松耦合,。,4.2,软件设计的原则,4.2.5,结构设计原则,1.,显著改进软件结构提高模块独立性,2.,模块规模应该适中,3.,适当选择深度、宽度、扇出和扇入,a.,深度,表示软件结构中控制的层数,标志系统的大小和复杂程度,b.,宽度,是同一层次上的模块总数,宽度越大系统越复杂。,c.,扇出,指一个模块直接调用的模块数目。,d.,扇入,指有多少上级模块直接调用该模块。,4.,模块的作用域应在控制域之内,5.,减低模块接口的复杂程度,6.,设计单入口单出口的模块,7.,模块功能应可预测,4.3,面向数据流的设计方法,面向数据流的设计方法的目标是给出设计软件结构的一个系统化途径。,面向数据流的设计方法是基于数据流的设计方法。结构化设计属于面向数据流的设计方法。,面向数据流的设计要解决的任务,就是在上述需求分析的基础上,将,DFD,图映射为软件系统的结构。,在结构化设计方法中,软件的结构将用结构图(,SC,图)来描述。,4.3.1,基本概念,面向数据流的设计方法,把信息流映射成软件结构,,信息流的类 型决定了映射的方法,信息流有下述两种类型。,1,变换流,4.3,面向数据流的设计方法,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。如右图所示。,4.3.1,基本概念,2.,事务流,事务型结构有至少一条接受路径,一个事务中心,与若干条动作路径组成。,这类数据流应该划为一类特殊的数据流,称为,事务流,。,图,4-17,中的处理,T,称为,事务中心,,它完成下述任务:,(,1,)接收输入数据(输入数据又称为事务);,(,2,)分析每个事务以确定它的类型;,(,3,)根据事务类型选取一条活动通路。,图,4-17,事务流,4.3.1,基本概念,3.,设计过程,图,4-18,面向数据流方法设计过程,4.3.2,系统结构图(,SC,图)的组成,1.,模块的表示符号,图,4-19 SC,图的,6,种模块,4.3.2,系统结构图(,SC,图)的组成,2.,简单调用,在,SC,图中,调用线的箭头指向被调用模块。,图,4-20,模块的简单调用,4.3.2,系统结构图(,SC,图)的组成,3.,选择调用,图中用菱形符号表示选择。,4.,循环调用,循环用叠加在调用线始端的环形箭头表示。,SD,方法提出了两种分析与过渡方法,变换分析,与,事务分析,,能方便地把,DFD,图转换为初始,SC,图。(如下图),图,4-21,模块的选择调用,图,4-22,模块的循环调用,变换型,DFD,图,变换分析,初始,SC,图,事务型,DFD,图,变换分析,初始,SC,图,4.3.3,变换分析,变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。,1.,区分传入、传出和变换中心,变换结构由传入、传出和变换中心三部分组成。变换中心的任务,就是通过计算或者处理,把系统的逻辑输人变换(或加工)为系统的逻辑输出。,图,4-24,变换分析,4.3.3,变换分析,2.,完成第一级分解,这一步要画出初始的,SC,图,主要是画出它最上面的两层模块,顶层和第一层,。任何系统的顶层都只有一个用于控制的主模块。它的下一层(第一层)一般包括,输入、输出和中心变换,三个模块,分别代表系统的三个相应分支。两种画法如右图所示。,图,4-25,第一层图,图,4-26,模块间的调用,4.3.3,变换分析,2.,完成第二级分解,对上步的结果继续进行,由顶向下,的分解,直至画出每个分支所需要的全部模块,称为第二级分解。这一步得到的结果,便是系统的初始,SC,图。,图,4-27,第二级分解,4.3.3,变换分析,2.,完成第二级分解,图,4-28,输入分支的第二种分解,图,4-29,模块的调用和执行过程,4.3.3,变换分析,2.,完成第二级分解,图,4-30,输出分支的两种分解,图,4-31,中心加工分支第二级分解,4.3.3,变换分析,2.,完成第二级分解,图,4-32,初始,SC,图,4.3.3,变换分析,2.,完成第二级分解,变换分析的主要步骤如下:,S1:,复查基本系统模型,S2:,复查并精化数据流图,S3:,确定数据流图具有变换特性和事务特性,S4:,划分,DFD,图的边界,S5:,建立初始,SC,图的框架并分解,SC,图的各个分支,S6:,使用设计度量和启发式规则对第一次分割得 到的软件结构进一步精化,4.3.4,事务分析,1.,事务的定义,事务可定义为:引起式、触发式启动单一动作或一串动作的任何数据,控制,信号,事件或状态变化。,2.,事务分析的步骤,S1:,在,DFD,图上确定事务中心,接受部分(包含接受路径)和发送部分(包含全部动作路径)。,S2:,画出,SC,图框架,把,DFD,图的三个部分分别映射为事务控制模块,接受模块和动作发送模块。,S3:,分解和细化接受分支和发送分支,完成初始的,SC,图。,4.3.4,事务分析,3.,动作分支的分解,对每一动作路径的分解仍应按照该路径本身的结构特征,分别采用变换分析或事务分析方法进行分解。,图,4-33,事务分析映射,4.4,面向数据结构的设计方法,1.Jackson,图,(1),表达基本结构,各数据元素之间的逻辑关系只有顺序、选择、重复三种,所以逻辑数据结构也只有三种。,图,4-34,顺序结构,图,4-35,选择结构,图,4-36,重复结构,4.4,面向数据结构的设计方法,1.Jackson,图,(2),改进的,Jackson,图,图,4-37,改进的,Jackson,图,4.4,面向数据结构的设计方法,1.Jackson,图,(3),如何使用,Jackson,图,a.,表示数据结构,b.,表示程序结构,c.Jackson,伪代码,2.Jackson,方法,(1)Jackson,方法的步骤,S1,:实体动作分析,S2,:实体结构分析,S3,:定义初始模型,S4,:确定输入数据和输出数据的逻辑结构,并用,Jackson,图描述这些数据结构,S5,:找出输入数据结构和输出数据结构中有对应关系的数据单元,4.4,面向数据结构的设计方法,2.Jackson,方法,(1)Jackson,方法的步骤,S6,:列出完成结构图各框处理功能全部操作和条件,S7,:用伪码表示程序,(2)Jackson,方法的实现,S1,:画数据结构图,S2,:画程序结构图,S3,:写出程序的过程性描述,例:信用卡报帐系统(略),4.5,概要设计文档评审,在概要设计阶段,设计人员完成的主要文档是,概要设计说明书,,它主要规定软件的结构。,概要设计说明书的主要内容及结构如下,:,1.,引言,2.,任务概述,3.,总体设计,4.,接口设计,5.,数据结果设计,6.,运行设计,7.,出错处理设计,8.,安全保密设计,9.,维护设计,4.6,小结,软件设计的主要任务是根据需求规格说明导出系统的实现方案。软件设计在技术上可分为总体结构设计、数据设计、过程设计和界面设计四个活动;在工程上可分为概要设计和详细设计两个阶段。软件设计中用到的基本概念包括:抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。软件过程设计中最常用的技术和工具主要规格说明书,此文档经严格复审后将作为编码阶段的输入文档。,第五章 详细设计,5.1,详细设计的任务与原则,5.2,详细设计的方法,5.3,详细设计规格说明与审查,5.4,小结,5.1,详细设计的任务与原则,5.1.1,详细设计的任务,(,1,)为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;,(,2,)确定每一模块使用的数据结构;,(,3,)确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。,(,4,)要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试。,5.1.2,详细设计的原则,(,1,)模块的逻辑描述要清晰易读、正确可靠。,(,2,)采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。,(,3,)选择恰当描述工具来描述各模块算法。,5.2,详细设计的方法,详细设计的工具主要包括,:,1.,图形工具,2.,表格工具,3.,语言工具,5.2.1,程序流程图,限制在流程图中只能使用,5,种基本控制结构:,1.,顺序型,2.,选择型,3.While,型循环,4.Until,型循环,5.,多情况型选择,A,P,S,P,S,P,A,B,B,图,5-1,顺序结构,图,5-2,选择结构,图,5-3while,型循环,5.2,详细设计的方法,5.2.1,程序流程图,图,5-5,多情况型选择,图,5-4 until,型循环,S,P,P=1,P=2,P=n,A1,A2,An,5.2,详细设计的方法,5.2.1,程序流程图,图,5-7,标准程序流程图的规定符号,起止端点 数据输入输出 处理 预备或预处理 预定义处理或即定处理,条件判断 文件或文档 外接 内接,流线 虚线 省略线 并行方式 注解或注释,5.2,详细设计的方法,5.2.2 N-S,图,Nassi,和,Shneiderman,盒图,1.,顺序型,在顺序型中,先执行,A,,后执行,B,。,2.,选择型,在选择型结构中,如果条件,P,成立,则可执行,T,下面的,A,的内容,当条件,P,不成立时,则执行,F,下的内容。,3.While,型循环,先判断,P,的值,再执行,S,。其中,P,是循环条件,,S,是循环体,图,5-1,顺序结构,图,5-2,选择结构,图,5-3while,型循环,A,B,T,S1,F,P,S2,WHILE P,S,5.2,详细设计的方法,5.2.2 N-S,图,4.Until,型循环,在,UNTIL,重复型循环结构中,先执行,S,,后判断,P,的值。,5.,多情况型选择,P,为控制条件,根据,P,的取值,相应地执行其值下面的各框内容。,图,5-2,多分支选择型,图,5-3 until,型循环,S,UNTIL P,p,=1,=2,=n,A1,A2,An,5.2,详细设计的方法,5.2.3 PAD,图,Problem analysis diagram,1.,顺序型,在顺序型中,先执行,A,,后执行,B,。,2.,选择型,在选择型结构中,如果条件,P,成立,则可执行,T,下面的,A,的内容,当条件,P,不成立时,则执行,F,下的内容。,3.WHILE,重复型和,UNTIL,重复型,图
展开阅读全文