1、2.4 需求分析-任务一、需求分析的任务基本任务:准确地回答“系统必须做什么?”1.确定对系统的综合需求(1)系统功能要求(2)系统性能要求(3)运行要求(4)将来可能提出的要求2.分析系统的数据要求采用建立“概念模型”的方法,并辅助图形工具,如:层次方框图、Warnier图等。2.4 需求分析-过程3.导出系统的逻辑模型数据流程图、数据字典、主要算法4.修正系统开发计划5.开发原型系统二、分析过程1.沿数据流程图回溯 从“输出端”到“输入端”回溯,分析数据元素。2.用户复查 借助已有的数据流程图,帮助复查,再次完善数据流程图。2.4 需求分析-过程3.细化数据流程图4.修正开发计划5.书写文
2、档 系统规格说明:系统的概貌、功能要求、运行要求、将来可能的要求。数据要求:数据字典、图形工具(数据结构的层次图、Warnier图)用户系统描述:初步的用户手册 修正的开发计划2.4 需求分析-过程分析追踪数据流程图用户复查细化数据流程图有补充修正无补充修正需要分解不需分解需求分析的基本过程2.4 需求分析-概念模型和规范化三、概念模型和规范化1.概念模型 最常用的表示概念性数据模型的方法:实体联系方法(Entity-Relationship Approach),简称E-R模型。E-R模型包含三个基本成分:“实体”、“联系”、“属性”(1)实体:是客观世界中存在的、且可相互区分的事物。它可以是
3、人或物,也可以是具体事物或抽象事物。例如:教师、学生、课程是实体。2.4 需求分析-概念模型和规范化 实体用矩形框表示,如:教师(2)联系:客观世界中的事物彼此之间有联系,描述实体与实体之间的关系。联系有三种:1:1(一对一联系)例如:实体“校长”与“大学”之间的联系为“1:1”1:N(一对多联系)例如:实体“学校”与“院系”之间的联系为“1:N”M:N(多对多联系)例如:实体“学生”与“课程”之间的联系为“M:N”联系用菱形框表示,如:2.4 需求分析-概念模型和规范化(3)属性:属性是实体或联系所具有的性质。通常一个实体或联系由若干属性来刻画。教师学生课程教学1NMN成绩2.4 需求分析-
4、概念模型和规范化2.范式 第一范式 每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。第二范式 满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。第三范式 符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)一般使用第三范式,避免第三范式2.4 需求分析-图形工具四、图形工具1.层次方框图 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它表达完整的数据结构,下面的各层矩形框代表这个
5、数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分解的元素)例如:P46页 图3-32.4 需求分析-图形工具2.Warnier图 Warnier图也用树形结构描绘信息,且更丰富,能表达逻辑关系。例如:P46页 图3.42.4 需求分析-图形工具3.IPO图 IPO图是输入/处理/输出图的简称,能够方便地描述输入数据、对数据的处理和输出数据之间的关系。基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。例如:P47页 图3.5、图3.62.4 需求分析五、验证软件需求1.验证软件需求的四个方面 一致性 完整性 现实性 有效性2.
6、验证软件需求的方法3.验证软件需求的软件工具2.4 需求分析六、软件需求说明书(P15)引言 任务概述 需求规定 运行环境规定2.5 总体设计-过程一、总体设计的过程1.设想供选择的方案 在数据流程图的基础上,一个边界一个边界设想并列出供选择的方案。不评价这些供选择的方案2.5 总体设计-过程2.选取合理的方案 从上一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的三种方案。根据系统分析确定的目标,来判断哪些方案是合理的。2.5 总体设计-过程3.推荐最佳方案 综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并为最佳方案制定详细的实现计划。2.5 总
7、体设计-过程4.功能分解 对流程图进一步细化,进行功能分解2.5 总体设计-过程5.设计软件结构 软件结构反映系统中模块的相互调用关系:顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,最下层的模块完成最具体的功能。软件结构通过层次图或结构图来描绘,可以直接从数据流程图映射出软件结构。2.5 总体设计-过程6.数据库设计2.5 总体设计-过程7.制定测试计划2.5 总体设计-过程8.书写文档文档包括:系统说明 用户手册 测试计划 详细的实现计划 数据库设计结果2.5 总体设计-过程9.审查和复审 先技术审查 后管理审查2.5 总体设计-模块二、模块的概念1.定义 具
8、有四种属性的一组程序语句称为一个模块,四种属性:输入/输出、逻辑功能、运行程序、内部数据。前两个属性又称为外部属性,后两个属性又称为内部属性。(1)一个模块的输入/输出都是指同一个调用者。(2)模块的逻辑功能是指模块能够做什么事,表达了模块把输入转换成输出的功能,可以是单纯的输入/输出功能。(3)模块的运行程序指模块如何用程序实现其逻辑功能。2.5 总体设计-模块(4)模块的数据指属于模块自己的数据。2.属性外部属性:输入/输出、逻辑功能内部属性:运行程序、内部数据 在结构化系统设计中。人们主要关心的是模块的外部属性,至于内部属性,将在系统实施工作中完成3.大小 模块有大有小,它可以是一个程序
9、,也可以是程序中的一个程序段或者一个子程序。2.5 总体设计-模块4.理想模块(黑箱模块)理想模块的特点:(1)每个理想模块只解决一个问题。(2)每个理想模块的功能都应该明确,使人容易理解。(3)理想模块之间的联结关系简单,具有独立性。(4)由理想模块构成的系统,容易使人理解,易于编程,易于测试,易于修改和维护。对用户来说,其感兴趣是模块的功能,而不必去理解模块内部的结构和原理。2.5 总体设计-模块5.模块的理论根据设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量。对于两个问题P1和P2,如果:C(P1)C(P2),则显然有:E(P1)E(P2)根据人类解决一般问题
10、的经验,有:C(P1+P2)C(P1)+C(P2)进而获得:E(P1+P2)E(P1)+E(P2)2.5 总体设计-模块6.模块的图形及符号(1)模块的图形:用矩形表示。模块的名称写在方框内,由一个动词和一个作为宾语的名词组成。例如:修改库存(2)模块间通讯的图形模块间通讯有两种:数据通讯、控制通讯。数据通讯是一个数据流,它表示了一个经过处理的数据从一个模块传向另一个模块。2.5 总体设计-模块 控制通讯,只传送一个标志,该标志只表达了处理工作的某种状态,而不是由被发送模块真正进行过处理的数据。AB模块间的联结获得配件库存量读库存记录模块间的通讯配件编号库存量无此配件2.5 总体设计-模块(3
11、)模块间判断调用的图形 一个模块是否调用某一个从属模块,依赖于调用模块中判断的条件。如果条件成立,则产生调用命令。ABCD2.5 总体设计-模块(4)模块间循环调用的图形 指一个模块需要循环调用某一个或若干个从属模块。AC2.5 总体设计-模块7.模块设计的基本原则 模块设计的基本原则:降低系统中模块之间的联结程度,提高每个模块的独立性、聚合度。(1)模块间的联结 两个模块之间的联结有五种形式,按照联结程度由低到高排列为:数据联结、特征联结、控制联结、公共联结、内容联结。2.5 总体设计-模块A.数据联结 如果两个模块间的通讯信息是若干参数,其中每一个参数都是一个数据元素,称这种联结为数据联结
12、。这是模块之间影响最小的联结关系。开发货单计算金额单价数量金额2.5 总体设计-模块B.特征联结 如果两个模块都与同一个数据结构有关,则称为特征联结。计算水费和电费计算水费计算电费住户详情水费住户详情电费模块之间的特征联结2.5 总体设计-模块 住户详情数据结构中包括“本月用水量”、“本月用电量”。上面的“特征联结”图可改进为下面“数据联结”图。计算水量和电费计算水费计算电费水费电费本月用水量本月用电量模块之间的数据联结2.5 总体设计-模块C.控制联结 如果模块A向模块B所传递的信息控制了模块B的内部逻辑,那么A和B之间的联结称为控制联结。控制信息可以看作是一个开关量,它传递了一个控制信息或
13、状态的标志。控制信息不同于数据信息,数据信息一般通过处理过程处理被处理的数据,而控制信息则是控制处理过程中的某些参数。2.5 总体设计-模块 当要查找的库存编号找不到时,经上级模块反馈一个控制信息,要求上级模块打印“无此库存记录”错误信息。获得库存记录检索库存记录库存编号库存量打印“无此库存记录”错误信息2.5 总体设计-模块D.公共联结 如果两个模块都和同一个公共数据域有关,则称为公共联结。公用联结是一种不良的联结关系,它给模块的维护和修改带来困难。如公共数据要作修改,很难判定有多少模块应用了该公共数据,故在模块设计时,一般不允许有公共联结关系的模块存在。ABC公用数据2.5 总体设计-模块
14、E.内容联结(病态联结)如果一个模块和另一个模块的内部属性(即运行程序和内部数据)有关,则称为内部联结。例如:模块A中TRC:模块B中GO TO TRC 模块A与模块B存在内容联结,这是一种最坏的联结。2.5 总体设计-模块联结方式对连锁反应的影响可修改性可读性通用性数据联结 弱好好好特征联结 弱中中中控制联结 中不好不好不好公共联结 强不好最坏最坏内容联结 最强最坏最坏最坏设计模块时,应以数据联结为主,辅以特征联结与控制联结,消除公共联结和内容联结。2.5 总体设计-模块(2)模块的聚合 模块的聚合是指一个模块内部的各个组成部分的紧凑性,其处理动作的组合强度。聚合的七种形式:A.功能聚合 如
15、果一个模块内部的各组成部分的处理动作全都为执行同一个功能而存在,并且只执行一个功能,则称为功能聚合。判断一个模块是不是功能聚合,只要看这个模块是“做什么”,是完成一个具体的任务,还是完成多任务。2.5 总体设计-模块B.顺序聚合 如果一个模块内部的各个组成部分执行的几个处理动作有这样的特征:前一个处理动作所产生的输出数据是后一个处理动作的输入数据,称为顺序聚合。顺序聚合维护起来不如功能聚合方便,要修改模块中的一个功能,会影响到同一个模块中的其他功能。ABC功能1功能22.5 总体设计-模块C.通讯聚合 如果一个模块内各组成部分的处理动作都使用相同的输入数据或相同的输出数据,称为通讯聚合。获得配
16、件单价和库存量配件编号库存量单价两个工作:1.按配件编号查询“数据存储”,获得单价。2.按配件编号查询“数据存储”,获得库存量。这两个处理动作都使用相同的输入数据,称为通讯聚合。2.5 总体设计-模块D.过程聚合 如果一个模块内部的各个组成部分的处理动作各不相同,彼此也没有联系,但他们都受同一个控制流支配,决定他们的执行次序,称为过程聚合。循环体计算累积事务记录累积销售额累积订货量通过循环体,计算两种累积数。2.5 总体设计-模块E.暂时聚合 如果一个模块内的各组成部分的处理动作和时间有关,则称为暂时聚合。暂时聚合模块的处理动作必须在特定的时间内完成。例如:程序设计中的初始化模块。2.5 总体
17、设计-模块F.逻辑聚合 如果一个模块内部的各组成部分的处理动作在逻辑上相似,但功能都彼此不同或无关,则称为逻辑聚合。一个逻辑聚合模块往往包括若干个逻辑相似的动作,使用时可以选用一个或几个功能。例如:把编辑各种输入数据的功能放在一个模块中。2.5 总体设计-模块G.机械聚合 如果一个模块的内部各组成部分的处理动作彼此没有任何联系,则称为机械聚合。2.5 总体设计-模块 模块聚合性的判断该模块只能执行一个功能吗?功能聚合模块内各组成部分的关系如何?是否次序重要吗?次序重要吗?逻辑相似吗?数据流控制流两者都不是是是是否否否顺序聚合通讯聚合过程聚合暂时聚合逻辑聚合机械聚合2.5 总体设计-模块 七种聚
18、合模块的性能比较聚合形式聚合形式可修改性可读性 通用性黑箱程度聚合性功能聚合好好好好黑箱10顺序聚合好好好中不完全黑9通讯聚合中中中不好不完全黑7过程聚合中中中不好半透明5暂时聚合不好不好中最坏半透明3逻辑聚合最坏最坏不好最坏透明1机械聚合最坏最坏最坏最坏透明02.5 总体设计-模块8.模块设计的其他原则(1)模块的分解 分解是指把一个模块分解成若干个从属于它的下层模块。一般按功能分解,分解到成为一个小的功能单一的模块为止。一般一个模块内包含的语句在3050条左右较好(指高级语言)。2.5 总体设计-模块(2)模块的扇出和扇入 模块的扇出指一个模块拥有的直属下级模块的个数,一般扇出数控制在7以
19、内。模块的扇入是指一个模块的直接上级模块的个数。在设计中,扇入系数大,说明模块分解得好,通用性强,冗余度低。2.5 总体设计-模块(3)模块的控制范围和判断作用范围 模块的控制范围:本身及其所有下级模块。模块的判断作用范围:被判断调用的模块。原则:原则:A.对于任何一个内部存在判断调用的模块,它的判断作用的范围应该是其控制范围的一个子集。B.存在判断调用的模块,所在层次不要与那些属于判断作用范围的模块所在的层次相隔太远。2.5 总体设计-模块ABCDEFG模块G中有一条判断调用D的语句,违反第1条原则2.5 总体设计-模块ABCDEFG违反第2条原则2.5 总体设计-模块ABCDEFG违反第2
20、条原则2.5 总体设计-模块ABCDEFG正确2.5 总体设计-模块(4)力争降低模块接口的复杂程度 模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致(即看起来传递的数据之间没有联系),是紧联结或低聚合的征兆,应该重新分析这个模块的独立性。(5)设计单入口单出口的模块2.5 总体设计-模块(6)模块功能应该可以预测 模块的功能应该能够预测,但也要防止模块功能过分局限。2.5 总体设计-面向数据流的设计方法三、面向数据流的设计方法(一)概念1.变换流2.事务流3.设计过程2.5 总体设计-面向数据流的设计方法1.变换流外部表示
21、内部表示信息输入流输出流变换流信息流时间参看图形,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流具有这些特征时,这种信息流称为变化流。2.5 总体设计-面向数据流的设计方法2.事务流T事务事务中心数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这种“以事务为中心的”的数据流,成为“事务流”。处理T称为事务中心,完成以下任务:接收输入数据;分析每个事务以确定它的类型;根据事务类型选取一条活动通路。精化数据流程图流类型区分事务中心和数据接收通路区分输入和输出
22、分支映射成事务结构映射成变换结构运用模块设计规则,精化软件结构导出接口描述和全程数据结构复查详细设计事务分析变换分析事务变换面向数据流的设计过程面向数据流的设计过程2.5 总体设计-面向数据流的设计方法(二)变换分析1.复查基本系统模型 复查的目的是确保系统的输入数据和输出数据符合实际。2.复查并精华数据流程图3.确定数据流程图具有变换特性还是事务特性 只有当遇到有明显事务特性的信息流时,才采用事务分析方法,否则,一般都认为是变换流,采用变换分析的方法。2.5 总体设计-面向数据流的设计方法4.确定输入流和输出流的边界,从而孤立出变换中心(1)检查“输入流”的边界 从输入的数据源开始,沿着每一
23、个由数据源传入的数据流的移动方向进行跟踪分析,逐个分析它所经过的处理逻辑功能。如果仅是传入的数据流作形式上的转换,逻辑上没有进行实际的数据处理功能,则这些处理逻辑属于系统的“输入处理部分”。顺着传入的数据流的移动方向,一直跟踪到它被真正地处理为止。2.5 总体设计-面向数据流的设计方法(2)检查“输出流”的边界 从输出结果的地方开始,逆着每一个传递出去的数据流,由外向里反方向跟踪,逐个分析它的处理逻辑功能,一直反方向跟踪到它被真正地产生出来为止。(3)得到变换中心 根据前两步的分析结果,画出一个闭环界线,在界线以内的就是变换中心。2.5 总体设计-面向数据流的设计方法5.完成“第一级分解”Cm
24、CaCtCe第一级分解的方法2.5 总体设计-面向数据流的设计方法 控制模块Cm是抽象出来的,它位于软件结构最顶层,协调控制下属模块。输入信息处理控制模块Ca,协调对所有输入数据的接收。变换中心控制模块Ct,管理对内部形式的数据的所有操作。输出信息处理控制模块Ce,协调输出信息的产生过程。2.5 总体设计-面向数据流的设计方法6.完成“第二级分解”所谓第二级分解就是把数据流程图中的每个处理映射成软件结构中一个适当的模块。完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理逻辑映射成软件结构中Ca控制下的一个低层模块;然后沿输出通路向外移动,把输入通路中每个处理
25、逻辑映射成直接或间接受模块Ce控制的一个低层模块;最后把变换中心内的每个处理映射成受Ct控制的一个模块。2.5 总体设计-面向数据流的设计方法ADCBCmCaCBDA第二级分解的方法2.5 总体设计-面向数据流的设计方法7.使用模块的设计原则,对第一次分割得到的软件结构进一步精化。为了得到一个易于实现、易于测试和易于维护的软件结构,根据软件设计的基本原则和其它启发性原则,对初步分割得到的模块进行再分解或合并。2.5 总体设计-面向数据流的设计方法(三)事务分析 事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在由数据流程图到软件结构的映射方法不同。由事务流映射成的软件结构包括
26、一个接收分支和一个发送分支。映射出接收分支接收分支结构的方法和变换分析映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接收流通路的处理逻辑映射成模块。发送分支发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把数据流程图中的每一个活动流通路映射成与它的特征相对应的结构。总控调度A_CTLB_CTLC_CTL接收通路C通路B通路A通路事务分析的映射方法2.5 总体设计-面向数据流的设计方法(四)总结 对于一个大系统,常常把变换分析和事务分析应用到同一个数据流程图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构。一般说来,如果数据流不具有显著的事务特点,
27、最后使用变换分析;反之,如果具有明显的事务中心,则应该采用事务分析技术。2.5 总体设计-总体设计说明书四、总体设计说明书引言总体设计接口设计运行设计系统数据结构设计1.系统出错处理设计2.6详细设计-基本任务一、基本任务 回答的关键问题:“怎样具体地实现这个系统”主要任务是设计出程序的“蓝图”,供程序员日后根据这个蓝图编写出实际的程序代码。注意:设计程序的蓝图,不是具体地编写程序。设计程序主要采用结构化的程序设计方法。2.6详细设计-基本步骤二、基本步骤 确定模块如何实现 编写详细设计说明书 制定单元测试计划 详细设计评审2.6详细设计-结构程序设计三、结构程序设计1.什么是结构程序设计 结
28、构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。2.6详细设计-结构程序设计 三种基本的控制结构ABexpBAFTexpATFexpAFT2.6详细设计-结构程序设计2.逐步求精的含义 详细设计阶段逐步求精的含义:把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。总体设计阶段逐步求精的含义:把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。2.6详细设计-结构程序设计3.结构程序设计技术的优越性(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。(2)用先
29、全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。(3)不使用GO TO语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。2.6详细设计-结构程序设计(4)控制结构有确定的逻辑模式,编写程序代码只限于很少几种直截了当的方式,因此源程序清晰流畅。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。(6)程序的逻辑结构清晰,有利于程序正确性证明。2.6详细设计-详细设计的工具四、详细设计的工具(含义、图例、评价)1.程序流程图2.盒图(NS图)3.PAD图4.判定表5.判定树6.
30、过程设计语言(PDL)7.模块开发文件夹2.6详细设计-详细设计的工具1.程序流程图(1)程序流程图又称为程序框图,是早期软件设计的主要工具。(2)优点:对控制流程的描绘很直观,便于初学者掌握。(3)缺点:程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。2.6详细设计-详细设计的工具 程序流程图中用箭头代表控制流,因此程序员不受约束,可以完全不顾结构程序设计的精神,随意转移控制。程序流程图不易表示数据结构。2.6详细设计-详细设计的工具2.盒图(N_S图)盒图由Nassi和Shneiderman提出,又称为N_S图,它有以下特点:(1)功能
31、域(即一个特定控制结构的作用域)明确,很容易从盒图上看出。(2)不可能任意转移控制(3)很容易确定局部和全程数据的作用域(4)很容易表现嵌套关系,也可以表示模块的层次结构(5)盒图没有箭头,不可以随意转移控制,不允许违背程序设计的原则。2.6详细设计-详细设计的工具3.PAD图 PAD图由日本日立公司在1973年发明,它用二维树型结构的图来表示程序的控制流,比较容易翻译成程序代码。主要特点:(1)使用PAD图设计的程序必然是结构化程序(2)PAD图描绘的程序结构十分清晰。(3)用PAD图表现程序逻辑,易读、易懂、易记。(4)容易将PAD图转换成高级语言源程序2.6详细设计-详细设计的工具(5)
32、PAD图既可用于表示程序逻辑,也可用于描绘数据结构。(6)PAD图的符号支持自顶向下、逐步求精方法的使用。(7)PAD图面向高级语言。2.6详细设计-详细设计的工具4.判定表 判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系,而其它的工具不易表示。一张判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。判定表的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。2.6详细设计-详细设计的工具5.判定树 判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。优点:形式
33、简单,不需任何说明,易看出含义,易于掌握和使用。缺点:简洁性不如判定表,相同的数据元素往往要重复写多遍,而且越接近树的叶端重复次数越多。2.6详细设计-详细设计的工具6.过程设计语言PDL PDL也称为伪码,是用正文形式表示数据和处理过程的设计工具。PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。2.6详细设计-详细设计说明书五、详细设计说明书引言程序系统的组织结构1.关键程序的设计说明2.7编码-程序设计概述一、程序设计概述1.50年代用机器指令代码进行手工编写程序 当时程序设计是繁杂
34、而又仔细的劳动,重复0与1,后期逐渐被用符号指令的汇编程序代替。当时评价程序的好坏是指令条数少,运行速度快,存储单元少。2.7编码-程序设计概述2.60年代初,第一个高级语言Fortran的出现,大大简化了程序设计。用高级语言编写程序,基本与机器无关,可集中精力于算法本身。随着计算机的应用推广而渗透到各学科和技术领域,一系列不同程序风格和不同服务对象的专用语言和通用语言大量出现,至今已有1000多种。2.7编码-程序设计概述3.70年代初期,大型软件(如操作系统、数据库)的出现,给程序设计带来了新的问题。如花费大量的资金和人力编制程序,还有产品的可靠性、维护、修改和移植等,形成软件危机。例:I
35、BM公司的OS/360系统,花费了几千人年的努力,历尽艰辛,但结果令人失望。OS/360系统的负责人Brooks生动地描述了研制过程中的困难和混乱:“象巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能逃脱淹没在泥潭中得命运程序设计就象这样一个泥潭一批批程序员在泥潭中挣扎没有人料到问题竟会这样”2.7编码-程序设计概述4.从60年代末开始,出现了许多程序设计的方法,比较成功或流行的有:结构化的程序设计、逐步求精的程序设计、程序的推导技术、程序变换技术、面向对象的程序设计。如果说70年代、80年代是“结构化的程序设计”年代,那么90年代则是“面向对象的程序设计”的天下。2.7
36、编码-程序设计概述 总之,软件的发展大体上经历了三个阶段:程序设计阶段、软件阶段、软件工程阶段。在当今软件工程时代,软件不再是建立在个别人“手艺”基础上的、个体或“作坊”生产的“工艺品”,而是以工程的方式批量生产的产品。2.7 编码-程序设计语言二、程序设计语言1.分类机器语言汇编语言高级语言语言2.7 编码-程序设计语言高级语言从应用特点分从内在特点分基础语言,如BASIC结构化语言,如PASCAL、C专用语言,如APL系统实现语言,如C静态高级语言,如COBOL块结构高级语言,如PASCAL动态高级语言,不属于通用语言2.7 编码-程序设计语言2.特点 名字说明 类型说明 初始化 程序对象
37、的局部性 程序模块 控制结构:顺序、分支、循环 异常处理 独立编译2.7 编码-程序设计途径三、程序设计途径1.写程序的风格 程序内部的文档:恰当的标识符、适当的注释和程序的视觉组织等。数据说明 语句构造:原则是每个语句都应该简单而直接,并注意以下规则:不要为了节省空间而把多个语句写在同一行。尽量避免复杂的条件测试 尽量减少对“非”条件的测试 避免大量使用循环嵌套和条件嵌套 利用括号使逻辑表达式或算术表达式的运算次序清晰直观。2.7 编码-程序设计途径 输入/输出:好的设计原则:(1)对所有输入数据进行检验(2)检查输入项重要组合的合法性(3)保持输入格式简单(4)使用数据结束标记,不要要求用
38、户指定数据的数目(5)明确提示交互式输入的请求,详细说明可用的选择或边界数值(6)当程序设计语言对格式有严格要求时,应保持输入格式一致(7)设计良好的输出报表(8)给所有输出数据加标志。2.7 编码-程序设计途径 效率:主要指处理机时间和存储器容量两个方面。提高程序运行时间的原则:(1)写程序之前先简化算术的和逻辑的表达式(2)仔细研究嵌套的循环,以确定是否有语句可以从内层往外移(3)尽量避免使用多维数组(4)尽量避免使用指针和复杂的表(5)使用执行时间短的算术运算(6)不要混合使用不同的数据类型(7)尽量使用整数运算和布尔表达式 存储效率 输入/输出的效率2.7 编码-程序设计途径2.程序设
39、计方法论 自顶向下的程序设计方法 自底向上的程序设计方法3.程序设计自动化4.程序设计工具-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaM
40、dPhSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWnZr$u(3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-
41、z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcO
42、gRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u
43、(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%vH9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaLdPgSkV
44、nYq$t*w-E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A1D5G8KbNeQiTlW&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8Kb
45、NeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#r%v(y0B3E6I9LcOgRnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmY*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B
46、3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#sz0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!
47、t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfQiUlXp#s%v)y5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbM
48、eQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2
49、E6H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&wD5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9KcOfRjUmXp!s
50、&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3cNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiU!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMx+A2D5H8KcNfQiUlXo#s%v)y0B3F