




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019年6月5日星期三,西南交通大学信息科学与技术学院,第六章 详细设计,软件工程 (Software Engineering),2019年6月5日星期三,西南交通大学信息科学与技术学院,详细设计,根本目标:确定应该怎样具体地实现所要求的目标,即对目标系统的精确描述。 根本任务:为软件结构中的每个模块选择算法和块内数据结构,并用选定的某种表达工具给出清晰的描述。 详细设计结果基本上决定了最终的程序代码的质量。 衡量程序的质量,不仅要看其逻辑上是否正确,性能是否满足要求,更主要的是看其是否容易阅读和测试。 详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。,2019年6月5日星期三,西南交通大学信息科学与技术学院,结构化程序设计,1965年最早由E.W.Dijkstra提出:“可以从高级语言中取消goto语句,程序的质量与程序中所包含的goto语句的数量成反比”。 1966年,Bohm和Jacopini证明了,只用“顺序”(Sequence)、“选择”(Condition Select)和“循环”(Repetition)三种基本的控制结构就能实现任何单入口单出口的程序。 1972年,IBM公司的Mills进一步提出,程序应该只有一个入口和一个出口。,2019年6月5日星期三,西南交通大学信息科学与技术学院,结构化程序设计,结构程序设计是按照一组能提高程序的可读性和易维护性的规则而进行的程序设计方法,目的是为了使程序具有一种合理的结构,以使程序易理解和维护,便于保证和验证程序的正确性。,2019年6月5日星期三,西南交通大学信息科学与技术学院,结构化程序设计追求的目标,可理解性:程序正确性证明的关键是可理解性。程序正确性证明并非指从公理出发的形式推导,而是指任何一种有足够说服力的证明(形式的或非形式的),其实是一种理解。 易维护性:测试只能证明错误存在,而不能证明错误不存在。因此测试后投入运行的软件很可能还有错误。在运行阶段要不断发现并改正错误。此外,用户还会不断提出新的要求,系统的操作系统也可能发生变化。故投入运行的软件需要不断修改、扩充,即需要维护。软件的易维护性一般包括易阅读、易发现和改正错误、易修改扩充等含义。,2019年6月5日星期三,西南交通大学信息科学与技术学院,结构化程序设计的核心内容,一、自顶向下、逐步求精的设计方法。 1、软件结构设计的自顶向下、逐步求精的设计方法 把待开发的软件系统看作一个实体。首先把这个实体分解成相互独立的几大功能,每个功能又可分解成逻辑上独立的子功能,子功能又可再分解成更小的子功能。直到每个子功能都能非常明确地用什么算法去实现为止。 2、模块算法设计的自顶向下、逐步求精方法。 把模块解决问题的求解方案分解为若干步抽象的计算操作,并用一种描述工具按控制结构把这些抽象的计算操作描述出来。对算法包含的抽象计算操作又可进一步精细化,如此循序渐进,每一次的求精,使抽象的计算操作得到更进一步精细,计算操作越来越明确,逐步向程序形式靠近。如此下去,直到算法中包含的主要计算操作都能用伪代码表达为止。 3、自顶向下的程序验证。,2019年6月5日星期三,西南交通大学信息科学与技术学院,结构化程序设计的核心内容,二、使用三种基本控制结构来构造程序 1、任何程序都由顺序、选择和重复三种基本控制结构构造。 顺序实现了任何算法规约中的核心处理步骤; 条件允许根据逻辑情况选择处理方式; 重复提供了循环。 这些逻辑元素是结构化程序设计的基础。 根据逐步求精的思想,可用三种方式对模块过程进行分解: 用顺序方式对过程分解,确定各部分的执行顺序; 用选择方式对过程分解,确定各部分的执行条件; 用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。 对处理过程仍然模糊的部分反复使用以上分解,直到所有细节确定下来。,2019年6月5日星期三,西南交通大学信息科学与技术学院,结构化程序设计的核心内容,前一页,2、三种基本结构的共同点是单入口、单出口。 单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况一致。这样,使得程序容易阅读和理解,也容易保证程序的正确性。,2019年6月5日星期三,西南交通大学信息科学与技术学院,国家软件开发工程规范的规定,国家软件开发工程规范规定“程序单元必须只有唯一的入口,唯一的出口”有两个不同的概念: 1、以模块为对象,每个模块只有一个入口(通过模块名进行调用),唯一的出口指通过模块的返回语句返回到调用语句的下一个语句(对函数是返回到调用的位置)。 2、以五种语句的控制结构为对象,每种控制结构,以其语句标志的第一个语句为入口语句,以语句控制范围的下一个语句为出口到的语句。 经典的结构程序设计:使用顺序、IF_THEN_ELSE型分支结构、DO_WHILE型循环结构。 扩展的结构程序设计:还允许使用DO_CASE型多分支结构和DO_UNTIL型循环结构。 修正的结构程序设计:再允许使用BREAK(LEAVE)结构。,2019年6月5日星期三,西南交通大学信息科学与技术学院,逐步求精算法实例,空气污染物含量数据的统计处理程序 假定某工厂烟囱附近,在24小时中每分钟测量1次空气中污染物含量。得到的数据以每100单位中所含污染物成分的值给出。约定测量数据的正常值在1.00与9.00之间。 统计程序完成以下功能: 1、计算24小时内每小时平均污染物含量值。 2、记录每小时违章次数,污染物连续5次超过10.0为1次违章。当一次违章分布在两相邻小时之间时间段上时,这次违章记数在后一小时上。 3、按以下形式列出污染物含量统计表。 小时 每小时平均值 违章次数 1 6.00 1 2 6.40 2 24 5.50 0 根据程序要求,算法主要处理24小时数据。,2019年6月5日星期三,西南交通大学信息科学与技术学院,算法:统计污染物含量数据,BEGIN 1. 设置初值; 2. 处理24小时数据; END 求精步骤1:设置初值。开始时一般不明确为哪些变量赋初值。 求精步骤2:计算结果是以小时为统计单位输出,它是重复执行24次的循环结构。 局部数据结构设计:数据输入的方案选择: 1、处理前读入所有24小时数据,共1440个,需要大一个大的数组。 2、每次计算输入一个数据,这要保证对先前输入的数据不再使用。 3、每小时计算前,本小时所需数据一次输入。需要60个元素的数组。 数据结构还应考虑:计算结果是在全部计算完后输出,还是每小时结束后输出。假定选取1小时计算完后输出。 根据上面的讨论,需要命名的数据有: Valueofhour:ARRAY160 of real; 存储每小时测量数据 Mean:real; 平均值 Violations:integer; 违章计数器 Hour:integer; 小时,2019年6月5日星期三,西南交通大学信息科学与技术学院,算法:统计污染物含量数据,求精2:处理每小时数据 2.1 输出表头; hour:=1; WHILE hour=24 DO 2.2 读入本小时数据于Valueofhour数组中; 2.3 处理本小时数据; 2.4 输出本小时结果:hour,mean,violations; hour:=hour+1; ENDWHILE; 2.1、2.2、2.4已能用程序语言表达,只需对2.3进一步精细化。 为了处理60个数据,又需一循环结构。 引入分钟值变量:minutes,每分钟要做的工作是: 累计:求每小时的平均值 检查违章情况 为了累计,引入变量sum: 在每小时处理前设初值为0。 每小时处理后求平均值。,2019年6月5日星期三,西南交通大学信息科学与技术学院,算法:统计污染物含量数据,求精2.3,处理每小时数据: 2.3.1 设置初值; minutes:=1 WHILE minutes=60 DO Sum:=sum+Valueofhourminutes; 2.3.2 处理违章次数; minutes:=minutes+1; ENDWHILE; Mean:=sum/60.0; 一次违章出现是指连续5次污染值超过10.00。如果违章分布在两个相间的时间段上,则把这次违章算在下一小时上。 首先测试当前值是否超过10.00,若是,还将进一步检查是否连续出现5次。为了实现第二个测试,需要两个计数器: Voilation:计数本小时出现的违章次数。 Infraction:计数连续出现超过正常值的次数。 每次超正常值出现时,Infraction增1。为了保证Infraction表示连续出现超正常值,必须保证在第一次出现超正常值时其初值为0。为了保证相继两个小时的Infraction的值能连续被使用,在每小时处理前不能为Infraction置0值,只能在第一小时处理前置0。另外,在发现一次未超正常值时,也应置它为0,即连续出现超正常值中断。,2019年6月5日星期三,西南交通大学信息科学与技术学院,算法:统计污染物含量数据,求精2.3.2,检查违章次数: IF valueofhourminutes10.0 THEN Infraction:=Infraction+1; IF Infraction=5 THEN Voilations:=voilations+1; Infraction:=0 ENDIF ELSE Infraction:=0 ENDIF; 求精步骤2.3.1的“设置初值”是为变量sum和voilations置0值。 求精步骤1的“设置初值”是为infractions设置初值0。,2019年6月5日星期三,西南交通大学信息科学与技术学院,详细设计的工具,前一页,描述程序处理过程的工具称为详细设计的工具。 对详细设计工具的基本要求:能提供对设计的无歧义的描述,即能指明控制流程、处理功能、数据组织以及其它方面的处理细节。从而在编码阶段能把对设计的描述直接翻译成程序代码。,2019年6月5日星期三,西南交通大学信息科学与技术学院,详细设计的工具,前一页,详细设计工具分为图形、表格和语言三类。主要工具有: 程序流程图 盒图(N-S图) PAD图 判定表 判定树 过程设计语言(PDL),2019年6月5日星期三,西南交通大学信息科学与技术学院,前一页,PAD图,PAD是问题分析图(Problem Analysis Diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用二维树结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。,2019年6月5日星期三,西南交通大学信息科学与技术学院,PAD图基本符号,2019年6月5日星期三,西南交通大学信息科学与技术学院,用PAD图逐步求精,2019年6月5日星期三,西南交通大学信息科学与技术学院,求解一元二次方程的根的PAD描述,2019年6月5日星期三,西南交通大学信息科学与技术学院,统计污染物含量数据PAD描述,2019年6月5日星期三,西南交通大学信息科学与技术学院,统计污染物含量数据PAD描述,处理本小时数据,2019年6月5日星期三,西南交通大学信息科学与技术学院,统计污染物含量数据PAD描述,处理违章次数,2019年6月5日星期三,西南交通大学信息科学与技术学院,PAD图优点,(1)按PAD符号所设计出的程序必然是结构化程序。 (2)PAD图所描绘的程序结构十分清晰。 (3)用PAD图表现程序逻辑,易读、易懂、易记。 (4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成 (5)PAD图的符号支持自顶向下,逐步求精方法的使用 。,2019年6月5日星期三,西南交通大学信息科学与技术学院,程序复杂程度的定量度量,定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中故障的数量以及软件开发需要用的工作量;定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块化的精确限度。,2019年6月5日星期三,西南交通大学信息科学与技术学院,McCabe方法,McCabe方法根据程序控制流的复杂程度来定量度量程序的复杂程度,这样度量出的结果称为程序的环行复杂度。 流图:退化了的程序流程图,仅描述程序的控制流程,不表现对数据的具体操作,以及分支或循环的具体条件。 流图中,用圆表示结点,一个结点表示一条或多条语句,代表程序流图中一个处理框或菱形框。 流图中结点间用有向边连接,代表控制流。每条边必须终止于一个结点,即使这个结点不代表任何语句。 由边和结点围成的面积称为区域。当计算区域时应该包括外部未围起来的区域。 对于复合条件,应该分解为若干个简单条件。每个简单条件对应一个判定结点,它引出两条或多条边。,2019年6月5日星期三,西南交通大学信息科学与技术学院,McCabe方法,计算环形复杂度的方法 1、流图中的 区域数等于环形复杂度。 2、V(G)=E-N+2 其中,E为图G中的边数。 N是图中的结点数。 3、 V(G)=P+1 p为判定结点数目。 上面3种方法计算出来的结果应是一致的。,2019年6月5日星期三,西南交通大学信息科学与技术学院,V(G)=4,2019年6月5日星期三,西南交通大学信息科学与技术学院,环形复杂度的用途,程序的环形复杂度取决于程序控制结构的复杂度,当程序的分支数目或循环数目增加时其复杂度也增加。 McCabe研究大量实践表明:V(G)=10为宜。当V(G)接近10时,程序出错率将较快增加。即程序规模以V(G)=10为上界。,2019年6月5日星期三,西南交通大学信息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年老年医学护理康复竞赛题库及答案
- 桃花源记课件重点字
- 国企银行面试题库及答案
- 2025年药品监管笔试备考冲刺卷2018
- 2025年协会财务岗位笔试中的法律法规知识预测题
- 2025年跨国公司招聘区域经理面试技巧与模拟题集
- 2025年殡仪专业考试模拟题及解析
- 公务员选岗面试题及答案
- 公务员面试题答案及分析
- 校长述职报告课件
- 做一名优秀教师课件
- 缺血性肠病完整版本课件
- 企业标准编写模板
- 商场开荒保洁计划书
- 设备出厂检验报告
- DBJ 53-T-46-2012 云南省城镇道路及夜景照明工程施工验收规程
- 西方文明史(第五版)英文版全书ppt完整版课件整本书电子教案最全教学教程
- 商务英语翻译实务完整版教学ppt课件全套教程
- 非器质性失眠症临床路径
- GB∕T 708-2019冷轧钢板和钢带的尺寸、外形、重量及允许偏差
- 压力容器检验师培训压力容器检验测试技术课件
评论
0/150
提交评论