




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程导论1软件设计需求分析的任务:明确“系统必须做什么?”。软件设计的任务:在需求分析的基础上,针对给定的问题,给出软件解决方案,即确定“怎么做?”。2总体设计
结构化设计方法又分为总体设计与详细设计。总体设计的任务:设计软件的模块结构及确定系统的模块之间的关系,也称黑盒设计。详细设计的任务:详细描述黑盒中的内容。3总体设计总体设计的过程总体设计原理启发式规则面向数据流的设计方法面向数据流的设计方法示例41.设想供选择的方案。2.选取合理的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.审查和复审总体设计过程系统设计结构设计5总体设计的过程总体设计过程由两个主要阶段组成:
1、系统设计----划分出组成系统的物理元素。
2、软件结构设计-----确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
程序、文件、数据库、人工过程和文档等6系统设计设计中用到的工具:数据流图------系统逻辑模型系统流程图------系统物理模型系统设计方法从数据流图出发设想供选择的物理方案;选取合理方案-----其中用到系统流程图;推荐最佳方案;7系统流程图下面是一个简单的例子。某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量有变化时,应该及时修改库存清单主文件,如果哪种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。该装配厂使用一台小型计算机处理更新库存清单主文件和产生定货报告的任务。零件库存量的每一次变化称为一个事务,由放在仓库中的CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的定货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出定货报告。8订货系统的系统流程图系统流程图9数据流图10
数据流图出发设想供选择的物理方案一订货系统数据流图事务随时可能发生,因此处理1.1(“接收事务”)必须是联机的;采购员每天需要一次定货报表,因此处理2(“产生报表”)应该以批量方式进行。可以联机地接收事务并放入队列中更新库存清单、处理定货和产生报表以批量方式进行11数据流图出发设想供选择的物理方案二订货系统数据流图改变自动化边界,把处理1.1,1.2和1.3放在同一个边界内,这个系统将联机地接收事务、更新库存清单和处理定货及输出定货信息;处理2将以批量方式产生定货报表如果把处理1.1和处理1.2放在一个自动化边界内,把处理1.3和处理2放在另一个边界内,意味着什么样的物理系统呢?12软件结构设计结构设计确定程序由那些模块组成,以及这些模块之间的关系。---不涉及模块内部算法流程软件结构设计的步骤:功能分解;软件总体结构设计----即模块结构图(MSD)
;数据结构设计,主要是完成数据库的物理设计,确定数据库名,表名,设计数据字典;书写文档13软件结构设计设计中的图形工具:层次图(H图)-----系统结构图;------Hierarchy
HIPO图=H图+IPO表结构图------模块联系图;系统结构图图例:层次图用来描绘软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用关系而不表示组成关系。正文加工系统输入输出存储检索加标题编辑格式化编目录添加插入删除修改合并列表14软件结构设计HIPO图1.HIPO图:H图+IPO图;2.在H图中,除最顶层方框外,在每一个方框内加上一个编号,编号次序依次为:1.0,2.0,…;2.1,2.2,…;3.1,3.2…;…3.对于H图中的每一个方框,有一张IPO图描述这个方框所代表模块的处理过程.15软件结构设计带编号的层次图(H图)和H图中每个方框相对应,有一张IPO图描绘这个方框代表的模块的处理过程。HIPO图中的每张IPO图内都应该明显地标出它所描绘的模块在H图中的编号,以便追踪了解这个模块在软件结构中的位置。16
IPO表系统:
作者:.
模块:
日期:.
编号:.
注释:被调用:调用:输入:输出:处理:局部数据元素:调用本模块的模块清单被本模块调用的模块清单本模块使用的局部元素数据流图中的各个处理,也可以简略描述系统的主要算法。17软件结构设计结构图1.结构图是软件结构设计的另一种工具,与层次图类似。2.它在层次图的每一个方框内注明的是模块的名字或主要功能。3.方框之间的直线表示模块的调用关系。4.用带注解的箭头表示模块调用过程中传递的信息。18软件结构设计结构图图例:传递的是数据传递的是控制调用关系结构图的例子——产生最佳解的一般结构确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系产生最佳解计算最佳解得到好输入输出结果读输入编辑输入结果格式化显示结果原始输入原始输入好输入解编辑结果格式化的解好输入解解格式化的解19软件结构设计层次图与结构图的相关说明:(1)二者均不能表明模块的调用次序;(2)二者均未指明什么时候调用下层的模块;(3)二者指明一个模块调用哪些模块,而未表明模块内的其它成份。20又称为结构化设计方法;目标:给出设计软件结构的一个系统化途径;作用:该方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。基于数据流(SD
)的设计方法21基于数据流(SD
)的设计方法变换流参看图形,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流具有这些特征时,这种信息流称为变换流。12345678abcdefhgyxz22基于数据流(SD
)的方法事务流输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这种“以事务为中心的”的数据流,称为“事务流”。处理T称为事务中心,完成以下任务:(1)接收输入数据;(2)分析每个事务以确定它的类型;(3)根据事务类型选取一条活动通路。T事务23基于数据流(SD
)的方法精化数据流图流类型区分事务中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构用启发式规则精化软件结构导出接口描述和全程数据结构复查错误详细设计“变换流”“事务流”事务分析变换分析面向数据流方法的设计过程24基于数据流(SD
)的方法变换分析1、复查基本系统模型2、复查并精化数据流程图3、确定数据流程图具有变换特性还是事务特性变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构确保系统的输入数据和输出数据符合实际确保数据流图给出了目标系统的正确的逻辑模型,而且应该使数据流图中每个处理都代表一个规模适中相对独立的子功能一般地说,一个系统中的所有信息流都可以认为是变换流,但是,当遇到有明显事务特性的信息流时,建议采用事务分析方法进行设计25基于数据流(SD
)的方法4、确定输入流和输出流的边界,从而孤立出变换中心检查“输入流”的边界检查“输出流”的边界得到变换中心26基于数据流(SD
)的方法5、完成“第一级分解”控制模块Cm是抽象出来的,它位于软件结构最顶层,协调控制下属模块。输入信息处理控制模块Ca,协调对所有输入数据的接收。变换中心控制模块Ct,管理对内部形式的数据的所有操作。输出信息处理控制模块Ce,协调输出信息的产生过程。27基于数据流(SD
)的方法CmCaCtCe第一级分解的方法28基于数据流(SD
)的方法6、完成“第二级分解”把数据流图中的每个处理映射成软件结构中一个适当的模块。29基于数据流(SD
)的方法ADCBCmCaCBDA第二级分解的方法30CmCeHIHKJIJ
K基于数据流(SD
)的方法31基于数据流(SD
)的方法CmCtFGEGFE32基于数据流(SD
)的方法完成第二级分解的方法是:从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理逻辑映射成软件结构中Ca控制下的一个低层模块;沿输出通路向外移动,把输入通路中每个处理逻辑映射成直接或间接受模块Ce控制的一个低层模块;把变换中心内的每个处理映射成受Ct控制的一个模块。33基于数据流(SD
)的方法事务分析由事务流映射成的软件结构包括一个接收分支和一个发送分支。映射出接收分支结构的方法和变换分析映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接收流通路的处理逻辑映射成模块。发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把数据流程图中的每一个活动流通路映射成与它的特征相对应的结构。34基于数据流(SD
)的方法总控调度A_CTLB_CTLC_CTL接收通路C通路B通路A通路事务分析的映射方法35变换型软件结构是典型的三叉型,事务型软件结构是典型的二叉型对于复杂系统可能需用多个模块来对应一级分解中的一个模块对前面分割得到的软件结构进行精化基于数据流(SD
)的方法36示例1、通过模—数转换实现传感器和微处理机接口;2、在发光二极管面板上显示数据;3、指示每小时英里数(MPH),行驶的里程,每加伦油行驶的里程数(MPG)等等;4、指示加减速;5、超速警告:如果车速超过55英里/小时,则发出超速警告铃声。37示例示例:数字仪表板系统的精化读旋转信号收集并求平均转换成转/分计算gph读并校核确定加速/减速计算里程计算mph和超速值计算燃料消耗产生加速/减速显示产生里程显示发出铃声产生mph显示产生mpg显示旋转信号信号/秒
(sps)
sps燃烧流传感器信号燃烧流gph
sps
rpm
rpm箭头指示上箭头下箭头水平线英里超速值
mph
mpgmpg显示
mph显示铃声里程显示38
示例数字仪表板系统的第一级分解数字仪表板控制接受传感器信号数据转换控制驱动仪表板控制输入部分输出部分变换控制39示例接受传感器信号计算gph转换成rpm读燃料流采集sps读转速信号可以将输入部分的模块结构图进一步分解为:其中:sps为转速的每秒信号量;sps
为sps的平均值;sps为sps的瞬时变化值;rpm为每分钟转速;mph为每小时英里数;gph为每小时燃烧的燃料加仑数;40
示例输入结构中的模块“转换成rpm”和“收集sps”可以合并:-------***?接受传感器信号计算gph转换成rpm读燃料流读转速信号精化后的输入结构图:41
示例数据转换控制计算mpg计算mph计算里程计算加/减速变换中心的模块结构图进一步分解为:42
示例数据转换控制计算mpg计算mph计算里程计算加/减速变换部分的精化1)首先,应该了解:对于变换部分的求精,是一项具有挑战性的工作。其中主要是根据设计准则,并要通过实践,不断地总结经验,才能设计出合理的模块结构。2)就给定的数字仪表板系统而言,如果把“确定加/减速”的模块放在“计算速度mph”模块下面,则可以减少模块之间的关联,提高模块的独立性。通过这一求精,可以得到如下的模块结构图:43
示例驱动仪表板控制生成mpg显示生成mph显示生成里程显示生成加/减速显示发出蜂鸣显示
进一步分解输出部分的模块结构图为:
44
示例输出部分精化为:驱动仪表板控制生成mpg显示生成里程显示生成mph显示生成加/减速显示发出蜂鸣显示45
示例通过以上讨论,可以看出:在总体设计中(1)将一个给定的DFD转换为初始的模块结构图基本上是一个“机械”的过程,一般体现不了设计人员的创造力;(2)优化设计-将一个初始的模块结构图转换为最终的模块结构图,对设计人员将是一种挑战,其结果将直接影响软件系统开发的质量。4647数据字典描述内容包括:数据流图、状态转换图、E-R图中的数据信息(数据流、数据存储、外部实体)、控制信息(事件)等。不包括处理。采用半形式化手段,包含如下信息:名字、别名、使用地点和方式、内容描述、补充信息等。通常作为CASE“结构化分析与设计工具”的一部分实现。数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。48数据元素的组合方式顺序:即以确定的次序连接两个或多个分量。例:A+B选择:即从两个或多个可能的元素中选取一个。例:[A|B]重复:即把指定的分量重复零次或多次。例:1{A}5可选:即一个分量是可有可无的(重复零次或一次)。例:(A)49例题1:某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。使用上面讲过的符号,我们可以像下面那样定义标识符:标识符=字母字符+字母数字串字母数字串=0{字母或数字}7字母或数字=[字母字符|数字字符]由于和项目有关的人都知道字母字符和数字字符的含义,因此,关于标识符的定义分解到这种程度就可以结束了。50名字:订货报表别名:订货信息描述:每天一次送给采购员的需要订货的零件表定义:订货报表=零件编号+零件名称+订货数量+目前的价格+主要供应者+次要供应者位置:输出到打印机名字:零件编号别名:描述:唯一的表示库存清单中一个特定零件的关键域定义:零件编号=8{字符}8位置:订货报表订货信息库存清单例子2:51数据字典的实现有:全人工过程、全自动化过程、混合过程。无论采用那种实现都应有如下特点:1、通过名字可方便查阅。2、没有冗余3、尽量不重复在规格说明书的其它组成部分中已经出现的信息。4、容易修改更新,可单独处理每个数据元素的信息。5、定义的书写方法简单方便而且严格。52数据字典的用途1.数据字典是描述数据流图中数据的信息的集合。2.它对数据流图中的有关成分说明“是什么或做什么”、“在何处或来自何处,去向何处”、“何时出现,时间长短”等问题;3.对用户来讲,数据字典为他们提供了数据的明确定义;4.对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。53总体设计的原则和概念模块化抽象和逐步求精信息隐蔽和局部化模块独立启发式规则54总体设计的原则和概念1、模块化模块的定义?什么是模块化?为什么要模块化?数据说明、可执行语句等程序对象的集合,可以单独命名,且可通过名字来访问把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求模块的理论根据55总体设计的原则和概念2、抽象和逐步求精抽象与逐步求精的互补性抽象和逐步求精与模块化关系抽象就是抽出事物的本质特性而暂时不考虑它们的细节。为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。56总体设计的原则和概念抽象1CAD图形软件抽象2CAD图形软件用户界面任务创建二维图形显示图形任务管理图形文件模块化抽象抽象3创建二维图形任务画线任务画圆任务…模块化逐步求精57总体设计的原则和概念3、信息隐蔽与局部化信息隐蔽与局部化密切相关信息隐蔽与局部化的好处
1、减小模块之间联系的复杂度
2、修改软件时影响面小信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近58总体设计的原理原理4、模块独立模块独立的概念模块独立的重要性模块独立的定性度量标准①耦合:②内聚:衡量不同模块彼此间互相依赖的紧密程度。衡量同一个模块内部各个元素彼此结合的紧密程度。独立性较强的模块应该是高内聚低耦合的模块。59总体设计的原理耦合定义:对一个软件结构内不同模块之间的互连程度的度量。影响耦合强弱的因素:1、模块间接口的复杂程度;
2、进入或访问一个模块的点;
3、通过接口的数据。60总体设计的原理耦合的种类:数据耦合特征耦合控制耦合公共耦合内容耦合61总体设计的原理数据耦合如果一个模块访问另一个模块时,彼此之间通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息,则称这种耦合为数据耦合。这是模块之间影响最小的耦合关系。开发货单计算金额总金额单价数量数据耦合62总体设计的原理特征耦合(标记耦合)一组模块通过参数表传递记录信息,这个记录是某一数据结构的子结构,而不是简单变量。这种耦合称为特征耦合。
计算水费和电费计算水费计算电费住户详情水费住户详情电费本月用水量本月用电量特征耦合数据耦合63总体设计的原理控制耦合如果模块A向模块B所传递的信息控制了模块B的内部逻辑,那么A和B之间的耦合称为控制耦合。控制信息是一个开关量,它传递了状态的标志。用于控制处理过程中的某些参数。获得库存记录A检索库存记录B库存编号库存量打印“无此库存记录”错误信息控制耦合改进方法:将A
模块对返回值的处理放到B模块中,B不再向A
返回值。64控制耦合举例A计算平均分或最高分B平均/最高(控制信号)成绩读入分数输出结果计算平均分计算最高分平均/最高?B65 控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块去除模块间控制耦合的方法66改控制耦合为数据耦合举例A计算平均分B1平均成绩最高成绩计算最高分B267总体设计的原理公共耦合如果两个或多个模块都和同一个公共数据域有关,则称为公共耦合。公共数据域:全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等。AB公共数据松散公共耦合AB公共数据紧密公共耦合AB公共数据CDEF不良公共耦合68总体设计的原理内容耦合如果一个模块和另一个模块的内部属性(即运行程序和内部数据)有关,则称为内容耦合。两个模块间发生内容耦合的4种情况:
1、一个模块访问另一个模块的内部数据;
2、一个模块不通过正常入口而转到另一个模块的内部;
AB一个模块进入另一个模块内部69总体设计的原理
3、两个模块有一部分程序代码重叠(只可能出现在汇编程序中);
4、一个模块有多个入口(这意味着一个模块有几种功能)。模块代码重叠入口1……入口2……多入口模块70小结:设计模块时,尽量使用数据耦合,少用特征耦合与控制耦合,限制使用公共耦合,完全不用内容耦合。联接方式对连锁反应的影响可修改性可读性通用性数据耦合弱好好好特征耦合弱中中中控制耦合中不好不好不好公共耦合强不好最坏最坏内容耦合最强最坏最坏最坏71总体设计的原理(四)内聚定义:模块的内聚是指一个模块内部的各个组成部分的紧凑性,其处理动作的组合强度。内聚的种类:功能内聚顺序内聚通讯内聚过程内聚时间内聚逻辑内聚偶然内聚72总体设计的原理(四)A、功能内聚如果一个模块内部的各组成部分的处理动作全都为执行同一个功能而存在,并且只执行一个功能,则称为功能内聚。int
max(x,y)int
x,y;{intz;z=x>y?x:y;
return(z);}判断一个模块是不是功能内聚,只要看这个模块是“做什么”,是完成一个具体的任务,还是完成多任务。73总体设计的原理(四)B、顺序内聚如果一个模块内部的各个组成部分执行的几个处理动作有这样的特征:前一个处理动作所产生的输出数据是后一个处理动作的输入数据,称为顺序内聚。顺序内聚维护起来不如功能内聚方便,要修改模块中的一个功能,会影响到同一个模块中的其他功能。ABC功能1功能274总体设计的原理(四)通讯内聚如果一个模块内各组成部分的处理动作都使用相同的输入数据或产生相同的输出数据,称为通讯内聚。获得配件单价和库存量配件编号库存量单价两个工作:1.按配件编号查询“数据存储”,获得单价。2.按配件编号查询“数据存储”,获得库存量。75总体设计的原理(四)过程内聚如果一个模块内部的各个组成部分的处理动作各不相同,彼此也没有联系,但他们都受同一个控制流支配,决定他们的执行次序,称为过程内聚。通过循环体,计算两种累积数。循环体计算累积事务记录累积销售额累积订货量76总体设计的原理(四)E、暂时内聚(时间内聚)如果一个模块内的各组成部分的处理动作和时间有关,则称为暂时内聚。暂时内聚模块的处理动作必须在特定的时间范围内内完成,但完成次序不重要。这种模块多为多功能模块。例如:程序设计中的初始化模块要为所有的变量赋初值,对所有介质上的文件置初态,初始化寄存器和栈等。77总体设计的原理(四)F、逻辑内聚如果一个模块是把几种相关的功能组合在一起,每次调用时,由传送给模块的判定参数来确定该模块应该执行哪一种功能,则称为逻辑内聚。78G、机械内聚(偶然内聚)如果一个模块的内部各组成部分的处理动作彼此没有任何联系,或者即使有联系,这种联系也很松散,则称为机械内聚。
总体设计的原理(四)79总体设计的原理(四)模块内聚性的判断该模块只能执行一个功能吗?功能内聚模块内各组成部分的关系如何?是否次序重要吗?次序重要吗?逻辑相似吗?数据流控制流两者都不是是是是否否否顺序内聚通讯内聚过程内聚暂时内聚逻辑内聚机械内聚80小结:七种聚合模块的性能比较:81小结:设计原则:设计时力争做到高内聚,能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度降低模块间的耦合程度,从而获得较高的模块独立性。82总体设计的原则和概念5、启发式规则(1)模块的分解:----为什么要分解?如何分解?分解的准则?分解是指把一个模块分解成若干个从属于它的下层模块。当模块过大时就应该分解它。
一般按功能分解,分解到成为一个小的功能单一的模块为止。一般一个模块内包含的语句在30-50条左右较好(指高级语言)。不要过大,也不要过小。分解后不应该降低模块的独立性。83总体设计的原则和概念深度表示软件结构中控制的层数----粗略的标志一个系统的大小和复杂程度。宽度是软件结构同一层次上的模块总数的最大值----宽度越大系统越复杂。模块的扇出指一个模块拥有的直属下级模块的个数,一般扇出数控制在7以内,平均为3或4。模块的扇入是指一个模块的直接上级模块的个数。
好的设计结构-----通常是顶层扇出比较高,中层扇出比较少,底层扇入到公共的实用模块中去(底层模块有高扇入)。****模块的独立性是贯穿始终的标准,不能为了追求其它目标而违背独立性标准。(2)深度、宽度、扇出和扇入都应适当84减少高扇出争取高扇入编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构85增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资86总体设计的原则和概念(3)模块的控制域和作用域模块的控制域:本身及其所有下级模块(包括直接和间接下级模块)。模块的作用域:受该模块内一个判定影响的所有模块的集合。原则:A.对于任何一个内部存在判断调用的模块,它的判断作用的范围应该是其控制范围的一个子集。B.存在判断调用的模块,所在层次不要与那些属于判断作用范围的模块所在的层次相隔太远----越近越好。87总体设计的原则和概念ABCDEFG模块G中有一条判断调用D的语句,违反第1条原则改进的办法:判定点上移(从G到C中);不在控制域的模块移动(模块D移到模块G下面)。A.对于任何一个内部存在判断调用的模块,它的判断作用的范围应该是其控制范围的一个子集。88总体设计的原则和概念ABCDEFG模块C中有一条判断调用G的语句,违反第2条原则B.存在判断调用的模块,所在层次不要与那些属于判断作用范围的模块所在的层次相隔太远----越近越好89总体设计的原则和概念模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致(即看起来传递的数据之间没有联系),是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。例子:QUAD-ROOT(TBL,X)改为QUAD-ROOT(A,B,C,ROOT1,ROOOT2)其中TBL和X为数组,TBL传递方程的系数,X回传根。(4)力争降低模块接口的复杂程度90总体设计的原则和概念(5)设计单入口单出口的模块防止出现内容耦合---多入口(多种处理功能)意味着内容耦合。(6)模块功能应该可以预测-----模块是黑合子,输入相同则输出相同,其内部数据结构和接口受到限制。模块的功能应该能够预测,但也要防止模块功能过分局限。过分局限将导致模块灵活性太差,会出现使用现场的修改。91小结1.总体设计首先从数据流图(DFD)出发,根据系统功能的需求选择最佳方案,然后进行软件结构设计。2.模块化是结构化设计方法(SD方法)的基础。将一个复杂的系统划分为一个个相对独立的模块,可以简化开发工作,同时提高软件的质量。3.为了使程序结构适应问题的结构,SD方法把数据流图(DFD)划分为变换型和事务型两大类,通过与之相对应的变换分析和事务分析方法,提供了从DFD图导出软件结构图的一组映射规则。92小结4.软件结构图是SD方法所采用的重要表达工具.软件结构图的建立分为两步:
(1)按照“自顶向下,逐步求精”原则,由DFD图导出初始的软件结构图;
(2)按照模块设计准则改进初始图,获得最终的软件结构图。5.SD方法是目前技术上比较成熟,同时也是应用最广泛的系统开发方法之一。93教材购销系统主要功能根据学校的教学计划,向选课的学生及时供应所需教材
①审查学生购书单有效性,对有效书单发售教材
②对属于计划供应但暂时缺货的教材进行登记根据缺书登记补充采购所缺的教材,通知学生补购
①将缺书登记表汇总为待购教材计划
②待购教材到货后,及时通知学生补购94例“教材销售子系统”数据流图学生采购子系统学生F3学生用书表F4售书登记表1.1审查有效性购书单无效书单有效购书单1.2开发票发票1.3登记并开领书单领书单F2缺书登记表F1学生用书表1.5补售教材补售书单1.4登记缺书暂缺书单进书通知单缺书记录95“教材购销系统”的基本加工(1)“教材销售子系统”数据流图中共有五个基本加工:1.1审查有效性(1)查询“学生用书表”和“售书登记表”;(2)将不合要求的购书单(无效书单)退回学生;(3)将“有效购书单”送下一步“开发票”处理。1.2开发票(1)根据“有效购书单”和“补售书单”,查询“教材存量表”;(2)若教材存量中有“有效购书单”上的书,开出“发票”,送下一步“登记并开领书单”处理;若教材存量中无“有效购书单”上的书开出“暂缺书单”,送下一步“登记缺书”处理;96“教材购销系统”的基本加工(1)1.3登记并开领书单(1)根据“发票”开出“领书单”交给学生;(2)同时修改“售书登记表”。1.4登记缺书根据“暂缺书单”修改“缺书登记表”。1.5补售教材
(1)根据“缺书登记表”开出“缺书记录”送“采购子系统”。
(2)根据“进书通知书”开出补售书单送下一步“开发票”处理。97二层DFD—采购子系统F2缺书登记表销售书库保管员2.1按书号汇总缺书2.2按出版社统计缺书2.3修改教材库存待购量F6教材一览表F1教材存量表F5待购教材表进书通知单进书通知单缺书单98例“教材销售子系统”软件结构图(1)1.简化数据流图99例“教材销售子系统”软件结构图(2)2.初始结构图顶层和一层销售子系统输出暂缺书单输出购书发票开购书发票和暂缺书单获得补售书单获得有效购书单100例“教材销售子系统”软件结构图(3)3.对一层模块分解得到初始结构图销售子系统输出暂缺书单输出购书发票开购书发票和暂缺书单获得补售书单获得有效购书单生成缺书登记记录缺书登记售书登记输出领书单开领书单审查有效性读入购书单退还无效书单读进书通知单开补售书单1265378912,34452,56,7688791购书单2有效购书单
3无效购书单4进书通知单
5补售书单6购书发票
7暂缺书单8领书单
9缺书登记记录101例“教材销售子系统”软件结构图(4)4.对初始结构图按照设计准则进行精化与改进(1)第二层的输出模块“缺书登记”和“售书登记”都属于写文件,且在模块“开购书发票和暂缺书单”的作用域中,把它们作为子图放到该模块的控制域中,同时将该模块简化为“开购书发票”,直接调用模块“售书登记”与“缺书登记”。(2)模块“生成缺书登记记录”与“输出暂缺书单”省略。
102例“教材销售子系统”软件结构图(4)4.对初始结构图按照设计准则进行精化与改进(3)模块“输出购书发票”目的是生成“领书单”,可直接简化为模块“开出领书单”。(4)因“售书登记”与“缺书登记”不能同时发生,故在“开购书发票”用的是选择调用模块。最后得到与以前讲的例子中的层次图基本一样的初始结构图(见下页图)。103例“教材销售子系统”软件结构图(5)教材销售子系统读入购书单开领书单获得补售书单获得有效购书单审查有效性退回无效书单读进书通知单开补售书单112,33445开购书发票售书登记缺书登记67252,5661购书单2有效购书单
3无效购书单4进书通知单
5补售书单6购书发票
7暂缺书单104例“教材采购子系统”数据流图F2缺书登记表销售书库保管员2.1按书号汇总缺书2.2按出版社统计缺书2.3修改教材库存待购量F6教材一览表F1教材存量表F5待购教材表进书通知单进书通知单缺书单二层DFD—采购子系统105“教材购销系统”的基本加工2.1按书号汇总缺书根据“缺书记录”查询“教材存量表”,按书号排序汇总缺书,生成“待购教材表”文件。2.2按出版社统计缺书根据“待购教材表”和“教材一览表”按出版社汇总生成“汇总缺书单”送书库保管员。2.3修改教材存量和待购量
(1)输入“进书通知单”;
(2)根据“进书通知单”修改“教材存量表”和“待购教材表”;
(3)同时将“进书通知单”送下一步“销售教材”处理。106例“教材采购子系统”软件结构图1、简化数据流图缺书登记单2.12.22.3按书号汇总缺书单按出版社汇总缺书单进书登记单修改教材库存107例“教材采购子系统”软件结构图教材采购子系统读入缺书登记单输出进书通知单生成进书通知单按出版社汇总缺书单按书号汇总缺书单12修改教材库存34441缺书登记单2按书号汇总缺书单3按出版社汇总缺书单4进书通知单132、软件结构图108人机界面设计人机界面(HumanComputerInterface,简称HCI)通常也称为用户界面界面设计主要包括三个方面:设计软件构件之间的接口设计模块和其他非人的信息生产者和消费者的界面设计人(如用户)和计算机间的界面109界面的设计原则分析用户类型应用程序和界面分离一致性尽量减少用户工作提供反馈出错处理和帮助功能增加可视化图形表示110黄金规则在有关界面设计的著作中,
TheoMandel创造了三条黄金原则:置用户于控制之下减少用户的记忆负担保持界面一致
111黄金规则:置用户于控制之下Mandel定义的一组允许用户操作控制的原则:以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式提供灵活的交互允许用户交互可以被中断和撤消当技能级别增加时可以使交互流水化并允许定制交互使用户隔离内部技术细节设计应允许用户和出现在屏幕上的对象直接交互112黄金规则:减少用户的记忆负担Mandel定义了一组设计原则,使界面能够减少用户记忆负担:减少对短期记忆的要求建立有意义的缺省定义直觉性的捷径界面的视觉布局应该基于真实世界的隐喻以不断进展的方式揭示信息113界面举例MSN114界面举例红心大战缺省值115黄金规则:保持界面一致用户应以一致的方式展示和获取信息所有可视信息的组织均按照均按照贯穿所有屏幕显示所保持的设计标准输入机制被约束到有限的集合,在整个应用中被一致地使用从任务到任务的导航机制被一致地定义和实现116帮助保持界面一致性的设计原则允许用户将当前任务放入有意义的语境在应用系列内保持一致性如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它117用户友好性设计 用户友好性一般属软件的性能特性,它独立于所有具体功能,却影响着所有功能的重用性。用户友好性应体现在与用户有接口的软件特性上。
用户友好性的根本目的是为了软件可重用性、可维护性。118用户友好性的标志可操作性健壮性易学习性可扩展性119人-机界面的交互方式菜单界面按显示形象分类:正文菜单图标菜单正文图标混合菜单按屏幕位置和操作风格分类:固定浮动下拉式嵌入式120菜单举例图标式菜单菜单条弹出式菜单弹出式帮助文本121菜单举例下拉式菜单、瀑布式菜单瀑布式菜单122菜单举例123菜单举例124菜单举例125对话对话形式:(1)必须回答式(2)无需回答式(3)警告式对话实现方式:(1)标准对话(2)定做式对话126界面其他元素3.功能键4.图符界面5.填表界面6.命令语言界面7.查询语言界面8.自然语言界面1271.系统响应时间
系统响应时间指从用户完成某个控制动作(按回车键或点击鼠标),到软件给出预期的响应(输出信息或做动作)之间的时间间隔。
系统响应时间有两个重要属性:
(1)响应时间长度:
(2)易变性人机界面设计的4个问题128常见的帮助设施可分为集成的和附加的两类。
(1)集成的帮助设计在软件里面,这可以缩短用户获得帮助的时间,增加界面的友好性。
(2)附加的帮助设施是在系统建成后再添加到软件中的。在多数情况下它实际上是一种查询能力有限的联机用户手册。2.用户帮助设施1293.出错信息处理
出错信息或警告信息应该具有的属性:(1)使用用户可以理解的术语描述问题。(2)应该提供有助于从错误中恢复的建设性意见。(3)应该指出错误可能导致哪些负面后果(如破坏数据文件),以便用户检查是否出现了这些问题,并在确实出现问题时及时解决。(4)应该伴随着听觉上或视觉上的提示,例如,在显示信息时同时发出警告铃声,或者信息用闪烁方式显示,或者信息用明显表示出错的颜色显示。(5)信息不能带有指责色彩,不能责怪用户。1304.命令交互
在提供命令交互方式时,需考虑下列问题:
(1)是否每个菜单选项都有对应的命令?
(2)采用何种命令形式?有3种选择:控制序列(如Ctrl+P),功能键、键入命令。
(3)学习和记忆命令的难度有多大?忘记了命令怎么办?
(4)用户是否可以定制或缩写命令?
(5)保持命令的一致性.
131用户界面设计过程用户界面设计是一个迭代的过程,主要步骤有:1.创建设计模型2.用原型实现设计模型3.由用户试用和评估4.根据用户意见进行修改132详细设计详细的任务结构化程序设计详细设计的工具实例133详细设计详细设计任务又叫过程设计,用伪代码、图或表等工具描绘软件各个模块的算法流程。详细设计不是写代码,但设计结果是编码的依据;设计好的标准是:逻辑正确、效率高、易读易懂。
134详细设计...模块A模块B...模块A软件结构图...模块B模块过程描述B...135结构程序设计定义:程序代码仅使用顺序、选择和循环这三种基本的控制结构进行连接,且每个代码块只有一个入口和一个出口,只在检测错误和退出循环处使用非基本结构技术。
现有程序设计语言均是结构化的;过程性程序设计语言是非结构化的;
136结构化程序设计的三种基本控制结构顺序结构AB选择结构expABTF循环结构expATF137详细设计中的工具:详细设计中的工具:程序流程图(PFD)盒图(N-S图)PAD图判定表/判定树过程设计语言(PDL)138详细设计的主要工具程序流程图(PFD)例1求1-100的累加和
s累加和
n初值
N否(假)
Y是(真)s=1;n=1n<=100?n=n+1s=s+n显示s结束NY开始139详细设计的主要工具程序流程图的缺点:程序流图本质上不是逐步求精的好工具,它使人过早考虑控制流程而不是全局结构。程序流图中的箭头代表控制流,它可以随意转移控制,因此不符合结构程序设计的精神。不容易表示数据结构。***------总趋势越来越多人不再使用它。140详细设计的主要工具盒图
(N-S图)
1973年,Nassi
和Shneiderman
发表了“结构化程序的流程图技术”一文,提出了这种新方法,其特点是结构紧凑,占用篇幅小。使用符号如下:ABPFTABPFTAwhilePdoAdo-untilPAP=1=2…=nA1A2…An顺序型选择型(1)选择型(2)当型循环直到型循环多分支选择型A调用子程序141详细设计的主要工具盒图的特点:不能随意转移控制,改进了程序流图的缺点。一个控制结构的作用域明确,也容易表示模块的层次结构。局部和全局数据的作用域容易确定。***本质上的改进是没有箭头,不能随意转移控制。142详细设计的主要工具问题分析图
(PAD)S1SA1A2AnPPP=1=2=nwhilePSSS1S2S2untilP选择型顺序型多分支选择型先判断重复型后判断重复型def定义符号语句标号143详细设计的主要工具问题分析图
(PAD)的优点:PAD图所描绘的程序结构十分清晰,图中每条竖线代表一个层次,从左到右依此扩展。用PAD图表示程序逻辑,易懂、易读、易记。容易将PAD图转换成高级语言,有可用的转换工具。144详细设计的主要工具可以用于描述数据结构。PAD图支持自顶向下,逐步求精方法的使用。----可以先定义抽象程序,然后用def符号逐步增加细节。***本质上改进是:不使用箭头和使用def定义。145使用PAD图提供的定义功能来逐步求精的例子146开始Y取下一部门打开职工工资表取下一职工性别年龄职务?处科员+50+45+35写入工资表<55>=55女N=年龄-55工资*1.05N=0?N-1年龄职务?处科员+50+40+30写入工资表<65>=65N=年龄-65工资*1.04N=0?N-1下一职工?下一部门?结束NNY附注:女退休后每年工资加5%男退休后每年工资加4%例
普调工资男147详细设计的主要工具练习题:用N-S图、PAD图表示普调工资。148判定表用于表示复杂的条件组合与应做的动作之间的对应关系。一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。判定表149下面以行李托运费的算法为例说明判定表的组织方法。假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表可以清楚地表示与上述每种条件组合相对应的计算行李费的算法,如表所示。150123456789国内乘客TTTTFFFF头等舱TFTFTFTF残疾乘客FFTTFFTT行李重量W≦30kgTFFFFFFFF免费╳(w-30)*2╳(w-30)*3╳(w-30)*4╳╳(w-30)*6╳╳(w-30)*8╳(w-30)*12╳判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点:形式简单、易于掌握和使用。判定树152用判定树表示计算行李费的算法153表1条件取值表条件名取值符号取值数m年龄年龄<=21Cm1=321<年龄<26Y年龄>=26L性别男Mm2=2女F婚姻未婚Sm3=2已婚E154表2确定判定表123456789101112年龄CCCCYYYYLLLL性别FFMMFFMMFFMM婚姻SESESESESESEA类保险
√√
√√
B类保险√√√√C类保险√√√√额外收费155表3合并后的判定表134578911年龄CCCYYYLL性别FMMFMMFM婚姻--SE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 著作权转让合同范本
- 发明专利许可合同
- 专业计算机软件使用许可协议
- 分布式光伏发电项目合同
- 软件项目合作开发合同
- 会计月工作总结
- 二零二五宅基地协议书范例
- 2025年-河北省建筑安全员-A证考试题库附答案
- 二零二五项目建设环境影响评价合同
- 摄影馆承包合同常用范例
- 道闸终止合同范例
- 《课堂管理方法与技巧》课件
- 甘肃省兰州市2022年中考道德与法治试题(含答案)
- 学校食堂从业人员培训资料全
- 大学生创业导论学习通超星期末考试答案章节答案2024年
- 疫苗质量标准
- 胃食管反流护理查房课件
- 2024年浙江省单独考试招生文化课考试数学试卷真题(含答案详解)
- 2024至2030年中国小型模块化反应堆(SMR)行业分析及发展前景预测报告
- GB 44240-2024电能存储系统用锂蓄电池和电池组安全要求
- 2022-2023学年浙江省宁波市九校联考高一(下)期末数学试卷
评论
0/150
提交评论