软件工程课件第六章

上传人:壹****1 文档编号:567440059 上传时间:2024-07-20 格式:PPT 页数:30 大小:236.52KB
返回 下载 相关 举报
软件工程课件第六章_第1页
第1页 / 共30页
软件工程课件第六章_第2页
第2页 / 共30页
软件工程课件第六章_第3页
第3页 / 共30页
软件工程课件第六章_第4页
第4页 / 共30页
软件工程课件第六章_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《软件工程课件第六章》由会员分享,可在线阅读,更多相关《软件工程课件第六章(30页珍藏版)》请在金锄头文库上搜索。

1、第六章第六章 详细设计详细设计软件工程软件工程(Software Engineering)7/20/2024西南交通大学信息科学与技术学院详细设计详细设计根根本本目目标标:确确定定应应该该怎怎样样具具体体地地实实现现所所要要求求的的目目标标,即即对对目标系统的精确描述。目标系统的精确描述。根根本本任任务务:为为软软件件结结构构中中的的每每个个模模块块选选择择算算法法和和块块内内数数据据结构,并用选定的某种表达工具给出清晰的描述。结构,并用选定的某种表达工具给出清晰的描述。详细设计结果基本上决定了最终的程序代码的质量。详细设计结果基本上决定了最终的程序代码的质量。衡衡量量程程序序的的质质量量,不

2、不仅仅要要看看其其逻逻辑辑上上是是否否正正确确,性性能能是是否否满足要求,更主要的是看其是否容易阅读和测试。满足要求,更主要的是看其是否容易阅读和测试。详详细细设设计计的的目目标标不不仅仅仅仅是是逻逻辑辑上上正正确确地地实实现现每每个个模模块块的的功功能,更重要的是设计出的能,更重要的是设计出的处理过程应该尽可能简明易懂处理过程应该尽可能简明易懂。7/20/2024西南交通大学信息科学与技术学院结构化程序设计结构化程序设计1965年最早由年最早由E.W.Dijkstra提出:提出:“可以从可以从高级语言中取消高级语言中取消goto语句,程序的质量与程序中语句,程序的质量与程序中所包含的所包含的

3、goto语句的数量成反比语句的数量成反比”。1966年,年,Bohm和和Jacopini证明了,只用证明了,只用“顺序顺序”(Sequence)、“选择选择”(ConditionSelect)和和“循环循环”(Repetition)三种基本的控制结构就三种基本的控制结构就能实现任何单入口单出口的程序。能实现任何单入口单出口的程序。1972年,年,IBM公司的公司的Mills进一步提出,程进一步提出,程序应该只有一个入口和一个出口。序应该只有一个入口和一个出口。 7/20/2024西南交通大学信息科学与技术学院结构化程序设计结构化程序设计结构程序设计是按照一组能提高程序结构程序设计是按照一组能提

4、高程序的可读性和易维护性的规则而进行的程序的可读性和易维护性的规则而进行的程序设计方法,目的是为了使程序具有一种合设计方法,目的是为了使程序具有一种合理的结构,以使程序易理解和维护,便于理的结构,以使程序易理解和维护,便于保证和验证程序的正确性。保证和验证程序的正确性。7/20/2024西南交通大学信息科学与技术学院结构化程序设计追求的目标结构化程序设计追求的目标可可理理解解性性:程程序序正正确确性性证证明明的的关关键键是是可可理理解解性性。程程序序正正确确性性证证明明并并非非指指从从公公理理出出发发的的形形式式推推导导,而而是是指指任任何何一一种种有有足足够够说说服服力力的的证证明明(形形式

5、式的的或或非非形形式式的的),其其实实是是一一种种理理解。解。易易维维护护性性:测测试试只只能能证证明明错错误误存存在在,而而不不能能证证明明错错误误不不存存在在。因因此此测测试试后后投投入入运运行行的的软软件件很很可可能能还还有有错错误误。在在运运行行阶阶段段要要不不断断发发现现并并改改正正错错误误。此此外外,用用户户还还会会不不断断提提出出新新的的要要求求,系系统统的的操操作作系系统统也也可可能能发发生生变变化化。故故投投入入运运行行的的软软件件需需要要不不断断修修改改、扩扩充充,即即需需要要维维护护。软软件件的的易易维维护护性性一一般般包包括易阅读、易发现和改正错误、易修改扩充等含义。括

6、易阅读、易发现和改正错误、易修改扩充等含义。7/20/2024西南交通大学信息科学与技术学院结构化程序设计的核心内容结构化程序设计的核心内容一、自顶向下、逐步求精的设计方法一、自顶向下、逐步求精的设计方法。 1 1、软件结构设计的自顶向下、逐步求精的设计方法、软件结构设计的自顶向下、逐步求精的设计方法 把把待待开开发发的的软软件件系系统统看看作作一一个个实实体体。首首先先把把这这个个实实体体分分解解成成相相互互独独立立的的几几大大功功能能,每每个个功功能能又又可可分分解解成成逻逻辑辑上上独独立立的的子子功功能能,子子功功能能又又可可再再分分解解成成更更小小的的子子功功能能。直直到到每每个个子子

7、功功能能都都能非常明确地用什么算法去实现为止。能非常明确地用什么算法去实现为止。 2 2、模块算法设计的自顶向下、逐步求精方法。、模块算法设计的自顶向下、逐步求精方法。 把把模模块块解解决决问问题题的的求求解解方方案案分分解解为为若若干干步步抽抽象象的的计计算算操操作作,并并用用一一种种描描述述工工具具按按控控制制结结构构把把这这些些抽抽象象的的计计算算操操作作描描述述出出来来。对对算算法法包包含含的的抽抽象象计计算算操操作作又又可可进进一一步步精精细细化化,如如此此循循序序渐渐进进,每每一一次次的的求求精精,使使抽抽象象的的计计算算操操作作得得到到更更进进一一步步精精细细,计计算算操操作作越

8、越来来越越明明确确,逐逐步步向向程程序序形形式式靠靠近近。如如此此下下去去,直直到到算算法法中中包含的主要计算操作都能用伪代码表达为止。包含的主要计算操作都能用伪代码表达为止。 3 3、自顶向下的程序验证。、自顶向下的程序验证。7/20/2024西南交通大学信息科学与技术学院结构化程序设计的核心内容结构化程序设计的核心内容二、使用三种基本控制结构来构造程序二、使用三种基本控制结构来构造程序 1 1、任何程序都由顺序、选择和重复三种基本控制结构构造。、任何程序都由顺序、选择和重复三种基本控制结构构造。 顺序实现了任何算法规约中的核心处理步骤;顺序实现了任何算法规约中的核心处理步骤; 条件允许根据

9、逻辑情况选择处理方式;条件允许根据逻辑情况选择处理方式; 重复提供了循环。重复提供了循环。 这些逻辑元素是结构化程序设计的基础。这些逻辑元素是结构化程序设计的基础。根据逐步求精的思想,可用三种方式对模块过程进行分解:根据逐步求精的思想,可用三种方式对模块过程进行分解: 用顺序方式对过程分解,确定各部分的执行顺序;用顺序方式对过程分解,确定各部分的执行顺序; 用选择方式对过程分解,确定各部分的执行条件;用选择方式对过程分解,确定各部分的执行条件; 用用循循环环方方式式对对过过程程分分解解,确确定定某某个个部部分分进进行行重重复复的的开开始始和和结束的条件。结束的条件。 对对处处理理过过程程仍仍然

10、然模模糊糊的的部部分分反反复复使使用用以以上上分分解解,直直到到所所有有细细节确定下来。节确定下来。7/20/2024西南交通大学信息科学与技术学院结构化程序设计的核心内容结构化程序设计的核心内容前一页 2 2、三种基本结构的共同点是单入口、单出口。、三种基本结构的共同点是单入口、单出口。 单单入入口口单单出出口口的的控控制制结结构构,使使得得程程序序的的静静态态结结构构和和它它的的动动态态执执行行情情况况一一致致。这这样样,使使得得程程序序容容易易阅阅读读和和理理解,也容易保证程序的正确性。解,也容易保证程序的正确性。7/20/2024西南交通大学信息科学与技术学院国家软件开发工程规范的规定

11、国家软件开发工程规范的规定国国家家软软件件开开发发工工程程规规范范规规定定“程程序序单单元元必必须须只只有有唯唯一一的的入口,唯一的出口入口,唯一的出口”有两个不同的概念:有两个不同的概念: 1 1、以以模模块块为为对对象象,每每个个模模块块只只有有一一个个入入口口( (通通过过模模块块名名进进行行调调用用) ),唯唯一一的的出出口口指指通通过过模模块块的的返返回回语语句句返返回回到到调调用用语句的下一个语句语句的下一个语句( (对函数是返回到调用的位置对函数是返回到调用的位置) )。 2 2、以以五五种种语语句句的的控控制制结结构构为为对对象象,每每种种控控制制结结构构,以以其其语语句句标标

12、志志的的第第一一个个语语句句为为入入口口语语句句,以以语语句句控控制制范范围围的的下下一一个语句为出口到的语句。个语句为出口到的语句。 经经典典的的结结构构程程序序设设计计:使使用用顺顺序序、IF_THEN_ELSEIF_THEN_ELSE型型分分支支结构、结构、DO_WHILEDO_WHILE型循环结构。型循环结构。 扩扩展展的的结结构构程程序序设设计计:还还允允许许使使用用DO_CASEDO_CASE型型多多分分支支结结构构和和DO_UNTILDO_UNTIL型循环结构。型循环结构。 修正的结构程序设计:再允许使用修正的结构程序设计:再允许使用BREAK(LEAVE)BREAK(LEAVE

13、)结构。结构。7/20/2024西南交通大学信息科学与技术学院逐步求精算法实例逐步求精算法实例空气污染物含量数据的统计处理程序空气污染物含量数据的统计处理程序假假定定某某工工厂厂烟烟囱囱附附近近,在在24小小时时中中每每分分钟钟测测量量1次次空空气气中中污污染染物物含含量量。得得到到的的数数据据以以每每100单单位位中中所所含含污污染染物物成成分分的的值值给出。约定测量数据的正常值在给出。约定测量数据的正常值在1.00与与9.00之间。之间。统计程序完成以下功能:统计程序完成以下功能:1、计算、计算24小时内小时内每小时每小时平均污染物含量值。平均污染物含量值。2、记记录录每每小小时时违违章章

14、次次数数,污污染染物物连连续续5次次超超过过10.0为为1次次违违章章。当当一一次次违违章章分分布布在在两两相相邻邻小小时时之之间间时时间间段段上上时时,这这次次违违章记数在后一小时上。章记数在后一小时上。3、按以下形式列出污染物含量统计表。、按以下形式列出污染物含量统计表。小时小时每小时平均值每小时平均值违章次数违章次数16.00126.402245.500根据程序要求,算法主要处理根据程序要求,算法主要处理24小时数据。小时数据。7/20/2024西南交通大学信息科学与技术学院算法:统计污染物含量数据算法:统计污染物含量数据BEGIN1.设置初值;设置初值;2.处理处理24小时数据;小时数

15、据;END求精步骤求精步骤1:设置初值。开始时一般不明确为哪些变量赋初值。:设置初值。开始时一般不明确为哪些变量赋初值。求求精精步步骤骤2:计计算算结结果果是是以以小小时时为为统统计计单单位位输输出出,它它是是重重复复执执行行24次次的的循环结构。循环结构。局部数据结构设计:数据输入的方案选择:局部数据结构设计:数据输入的方案选择:1、处理前读入所有、处理前读入所有24小时数据,共小时数据,共1440个,需要大一个大的数组。个,需要大一个大的数组。2、每次计算输入一个数据,这要保证对先前输入的数据不再使用。、每次计算输入一个数据,这要保证对先前输入的数据不再使用。3、每小时计算前,本小时所需数

16、据一次输入。需要、每小时计算前,本小时所需数据一次输入。需要60个元素的数组。个元素的数组。数数据据结结构构还还应应考考虑虑:计计算算结结果果是是在在全全部部计计算算完完后后输输出出,还还是是每每小小时时结结束后输出。假定选取束后输出。假定选取1小时计算完后输出。小时计算完后输出。根据上面的讨论,需要命名的数据有:根据上面的讨论,需要命名的数据有:Valueofhour:ARRAY1.60ofreal;存储每小时测量数据存储每小时测量数据Mean:real;平均值平均值Violations:integer;违章计数器违章计数器Hour:integer;小时小时7/20/2024西南交通大学信息

17、科学与技术学院算法:统计污染物含量数据算法:统计污染物含量数据求精求精2:处理每小时数据:处理每小时数据2.1输出表头;输出表头;hour:=1;WHILEhour=24DO2.2读入本小时数据于读入本小时数据于Valueofhour数组中数组中;2.3处理本小时数据;处理本小时数据;2.4输出本小时结果:输出本小时结果:hour,mean,violations;hour:=hour+1;ENDWHILE;2.1、2.2、2.4已能用程序语言表达,只需对已能用程序语言表达,只需对2.3进一步精细化。进一步精细化。为了处理为了处理60个数据,又需一循环结构。个数据,又需一循环结构。引入分钟值变量

18、:引入分钟值变量:minutes,每分钟要做的工作是:每分钟要做的工作是:累计:求每小时的平均值累计:求每小时的平均值检查违章情况检查违章情况为了累计,引入变量为了累计,引入变量sum:在每小时处理前设初值为在每小时处理前设初值为0。每小时处理后求平均值。每小时处理后求平均值。7/20/2024西南交通大学信息科学与技术学院算法:统计污染物含量数据算法:统计污染物含量数据求精求精2.3,处理每小时数据:,处理每小时数据:2.3.1设置初值;设置初值;minutes:=1WHILEminutes10.0THENInfraction:=Infraction+1;IFInfraction=5THEN

19、Voilations:=voilations+1;Infraction:=0ENDIFELSEInfraction:=0ENDIF;求精步骤求精步骤2.3.1的的“设置初值设置初值”是为变量是为变量sum和和voilations置置0值。值。求精步骤求精步骤1的的“设置初值设置初值”是为是为infractions设置初值设置初值0。7/20/2024西南交通大学信息科学与技术学院详细设计的工具详细设计的工具前一页描述程序处理过程的工具称为详细设描述程序处理过程的工具称为详细设计的工具。计的工具。对对详详细细设设计计工工具具的的基基本本要要求求:能能提提供供对对设设计计的的无无歧歧义义的的描描述

20、述,即即能能指指明明控控制制流流程程、处处理理功功能能、数数据据组组织织以以及及其其它它方方面面的的处处理理细细节节。从从而而在在编编码码阶阶段段能能把把对对设设计计的的描述直接翻译成程序代码。描述直接翻译成程序代码。7/20/2024西南交通大学信息科学与技术学院详细设计的工具详细设计的工具前一页详细设计工具分为详细设计工具分为图形、表格和语言图形、表格和语言三类。主要工具有:三类。主要工具有:程序流程图程序流程图 盒图(盒图(N-S图)图) PAD图图判定表判定表判定树判定树 过程设计语言(过程设计语言(PDL) 7/20/2024西南交通大学信息科学与技术学院前一页PAD图图PAD是问题

21、分析图(是问题分析图(ProblemAnalysisDiagram)的英文缩写,自的英文缩写,自1973年由日本日年由日本日立公司发明以后,已得到一定程度的推广。立公司发明以后,已得到一定程度的推广。它用它用二维树结构二维树结构的图来表示程序的控制流,的图来表示程序的控制流,将这种图翻译成程序代码比较容易。将这种图翻译成程序代码比较容易。7/20/2024西南交通大学信息科学与技术学院PAD图基本符号图基本符号7/20/2024西南交通大学信息科学与技术学院用用PADPAD图逐步求精图逐步求精7/20/2024西南交通大学信息科学与技术学院求解一元二次方程的根的求解一元二次方程的根的PADPA

22、D描述描述读读a,b,c=b*b+4ac输出输出x1,x2=0x1,x2=-b/2aX1=-b/2a+sqrt()/2aX2=-b/2a-sqrt()/2aX1=-b/2a+sqrt(-)/2aiX2=-b/2a-sqrt(-)/2ai07/20/2024西南交通大学信息科学与技术学院统计污染物含量数据统计污染物含量数据PADPAD描述描述Infractions=0Hour=1Whilehour=24打印表头打印表头读入本小时数据于读入本小时数据于Valueofhour数组中数组中处理本小时数据处理本小时数据输出本小时结果:输出本小时结果:hour,mean,violationsHour=ho

23、ur+17/20/2024西南交通大学信息科学与技术学院统计污染物含量数据统计污染物含量数据PAD描述描述处理本小时数据处理本小时数据sun=0minutes=1Whileminutes10.0Infraction=Infraction+1Infraction=5Infraction=0Voilations=voilations+1Infraction=07/20/2024西南交通大学信息科学与技术学院PAD图图优点优点(1)按)按PAD符号所设计出的程序必然是结构化程序。符号所设计出的程序必然是结构化程序。(2)PAD图所描绘的程序结构十分清晰。图所描绘的程序结构十分清晰。(3)用)用PAD

24、图表现程序逻辑,易读、易懂、易记。图表现程序逻辑,易读、易懂、易记。(4)容易将)容易将PAD图转换成高级语言源程序,这种转换可用图转换成高级语言源程序,这种转换可用软件工具自动完成软件工具自动完成(5)PAD图的符号支持自顶向下,逐步求精方法的使用图的符号支持自顶向下,逐步求精方法的使用 。7/20/2024西南交通大学信息科学与技术学院程序复杂程度的定量度量程序复杂程度的定量度量 定量度量程序复杂程度的方法很有价定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可值:把程序的复杂程度乘以适当常数即可估算出软件中故障的数量以及软件开发需估算出软件中故障的数量以及软件开发需要用

25、的工作量;定量度量的结果可以用来要用的工作量;定量度量的结果可以用来比较两个不同的设计或两个不同算法的优比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块劣;程序的定量的复杂程度可以作为模块化的精确限度。化的精确限度。7/20/2024西南交通大学信息科学与技术学院McCabe方法方法McCabe方法方法根据程序控制流的复杂程度来定量度量程序根据程序控制流的复杂程度来定量度量程序的复杂程度的复杂程度,这样度量出的结果称为,这样度量出的结果称为程序的环行复杂度程序的环行复杂度。流图:退化了的程序流程图,仅描述程序的控制流程,不流图:退化了的程序流程图,仅描述程序的控制流程,

26、不表现对数据的具体操作,以及分支或循环的具体条件。表现对数据的具体操作,以及分支或循环的具体条件。流图中,用圆表示结点,一个结点表示一条或多条语句,流图中,用圆表示结点,一个结点表示一条或多条语句,代表程序流图中一个处理框或菱形框。代表程序流图中一个处理框或菱形框。流图中结点间用有向边连接,代表控制流。每条边必须终流图中结点间用有向边连接,代表控制流。每条边必须终止于一个结点,即使这个结点不代表任何语句。止于一个结点,即使这个结点不代表任何语句。由边和结点围成的面积称为区域。当计算区域时应该包括由边和结点围成的面积称为区域。当计算区域时应该包括外部未围起来的区域。外部未围起来的区域。对于复合条

27、件,应该分解为若干个简单条件。每个简单条对于复合条件,应该分解为若干个简单条件。每个简单条件对应一个判定结点,它引出两条或多条边。件对应一个判定结点,它引出两条或多条边。7/20/2024西南交通大学信息科学与技术学院McCabe方法方法计算环形复杂度的方法计算环形复杂度的方法1、流图中的流图中的区域数等于环形复杂度。区域数等于环形复杂度。2、V(G)=E-N+2其中,其中,E为图为图G中的边数。中的边数。N是图中的结点数。是图中的结点数。3、V(G)=P+1p为为判定结点数目。判定结点数目。上面上面3种方法计算出来的结果应是一致的。种方法计算出来的结果应是一致的。7/20/2024西南交通大

28、学信息科学与技术学院开始K=0,L=0,T=0输入AT0T=T+AK=K+1L=L+1输入A输出K,L,T结束开始K=0,L=0,T=0输入AT0T=T+AK=K+1L=L+1输入A输出K,L,T结束A0V(G)=47/20/2024西南交通大学信息科学与技术学院环形复杂度的用途环形复杂度的用途程序的环形复杂度取决于程序控制结构程序的环形复杂度取决于程序控制结构的复杂度,当程序的分支数目或循环数目的复杂度,当程序的分支数目或循环数目增加时其复杂度也增加。增加时其复杂度也增加。McCabe研究大量实践表明:研究大量实践表明:V(G)=10为宜。当为宜。当V(G)接近接近10时,程序出错率将较时,

29、程序出错率将较快增加。即程序规模以快增加。即程序规模以V(G)=10为上界。为上界。7/20/2024西南交通大学信息科学与技术学院Halstead方法方法根据程序中运算符和操作数的总数来度量程序的复杂根据程序中运算符和操作数的总数来度量程序的复杂度。度。令令N1为程序中运算符出现的总次数,为程序中运算符出现的总次数,N2为操作数出为操作数出现的总次数,程序长度现的总次数,程序长度N定义为:定义为:N=N1+N2可根据程序中不同运算符(包括关键字)的个数可根据程序中不同运算符(包括关键字)的个数n1,不不同操作数(变量和常数)的个数同操作数(变量和常数)的个数n2,预测程序的长度的计预测程序的长度的计算公式为:算公式为:H=n1.log2n1+n2.log2n2实践表明,其预测程序长度实践表明,其预测程序长度H与实际长度与实际长度N非常接近。非常接近。预测程序中包含错误的个数的计算公式为:预测程序中包含错误的个数的计算公式为:E=N.log2(n1+n2)/3000有人曾对从有人曾对从300到到1200条语句范围内的程序核实了上面公条语句范围内的程序核实了上面公式,发现预测的错误数与实际错误相比误差在式,发现预测的错误数与实际错误相比误差在8%之内。之内。7/20/2024西南交通大学信息科学与技术学院

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号