收藏 分享(赏)

计算机软件基础 (12).ppt

上传人:scg750829 文档编号:9038149 上传时间:2019-07-21 格式:PPT 页数:153 大小:517.50KB
下载 相关 举报
计算机软件基础 (12).ppt_第1页
第1页 / 共153页
计算机软件基础 (12).ppt_第2页
第2页 / 共153页
计算机软件基础 (12).ppt_第3页
第3页 / 共153页
计算机软件基础 (12).ppt_第4页
第4页 / 共153页
计算机软件基础 (12).ppt_第5页
第5页 / 共153页
点击查看更多>>
资源描述

1、计算机软件基础 The software basic of computer,主讲:赵英良,第16单元 传统程序设计方法,第 2 页,本讲内容,一 、结构化开发方法 二、软件需求定义 三、系统设计(软件的设计) 四、程序编码 五、系统测试 六、软件维护,第 3 页,教学目标,了解传统程序设计方法: 基本概念 方法及特点 步骤及准则,第 4 页,本单元涉及内容,第10章 传统的软件开发方法 10.1 结构化开发方法概述 10.2 系统分析与定义 10.3 系统设计 10.4 系统编程 10.5 系统测试 10.6 系统维护P273P333,第 5 页,一 、结构化开发方法,结构化开发方法是传统的

2、软件系统开发方法。 结构化开发方法的基本思想:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。 基本要点是: 自顶向下 逐步求精 模块化设计 结构化编码 主程序员组织 结构化设计SD,第 6 页,“自顶向下”,将复杂的大问题分解为小问题,找出问题的关键、重点所在,同时找出技术难点来。然后用精确的思维定性、定量地描述问题。 问题的核心是”分解“。如何划分?准则是什么? 实现的手段是”子程序“、”函数“,即模块化。,要 点:将大问题化为小问题,找出关键、难点,定量描述 核心是:分解 手段是:模块化(函数、子程序),第 7 页,“逐步求精”,将现实世界的问题

3、经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对较简单的问题。经几次抽象(精化)处理,最后到求解域中只是非常简单的编程问题。 求解(抽象)过程可以划分为若干个阶段,在不同阶段用不同工具来描述。实现细则在前期阶段可以不去管它。在每个阶段有不同的规划和标准,产生出不同阶段的文档资料。,将现实问题抽象为逻辑空间问题,几经抽象化为简单的编程问题。,第 8 页,模块化处理,模块化就是把程序划分为若干个模块,而每个模块完成一个子功能,把这些模块汇总起来构成一个有机整体,即可完成指定的功能。 模块化的目的是为了降低软件复杂度,使软件设计,调试和维护等操作变得简易。,第 9 页,结构化编码,

4、SP编码的方法强调清晰简洁,它是一种构造程序的技术,有利于提高软件生产率及降低软件维护代价。 1966年Bohm和Jacopin就证明了只要用三中基本结构,就足以表示所有形式的程序控制结构。 1978年Kernihan和Plauger对一些编码风格进行归纳,提出了16种具体方法。,第 10 页,结构化编码风格,尽量使用标准库函数 程序讲究清晰,避免过于精巧 对重复使用的表达式尽量调用公共函数代替 使用括号,以避免二义性 用逻辑表达式代替分支嵌套 使用缩排格式 避免使用IF THEN 和空ELSE 注意计算机运算特点,如10.0乘0.1很少等于1.0,使用有意义的变量名 对输入进行错误判别 注释

5、勿用太滥 模块化功能专一,模块间偶合清晰 递归定义的DS尽量采用递归过程访问 把大程序分成小块去编写和测试 勿追求不必要的效率,尽量采用基本控制结构 避免循环多个出口,第 11 页,主程序员组织,是一种人员的组织形式 主程序员 组织负责人,全权负责,包括解决技术难题,有时一些关键性技术问题,主程序员应亲自动手遍程去解决;他必须是技术高手,是程序生产过程中的总体设计师。 程序员 按任务书要求编程;是程序生产线上的“工人”。 测试工程师 具有较高遍程水准和经验,负责系统测试;是程序生产过程中的检验员。 文档人员 自始至终参加程序生产活动,负责编写一切有关文档资料。,第 12 页,结构化方法的体系结

6、构,结构化方法的体系结构是: 结构化分析(SAStructured Analysis) 结构化设计(SDStructured Design) 结构化程序设计(SPStructured Programming),第 13 页,结构化分析SA,SA方法是建立在自顶向下、逐步求精思想基础上的分析方法, SA方法是分析方法,基础是自顶向下、逐步求精 要点:分解和抽象: 把复杂问题自顶向下逐层分解,再从分解出的对象中抽象出相对简单的子问题。 经过一系列分解和抽象,到最底层的问题已经是很容易求解的了。,第 14 页,结构化设计SD,SD方法是由IBM公司的Constentine等人花了十几年时间研究出来的

7、一种程序设计方法,发表于1974年。 简述:SD是一种用于概要设计的方法,与SA方法配合使用。(SD是用于概要设计的方法) 目标:建立一个结构良好的软件系统。 SD方法的基础:是数据流程图,因此也称为面向数据流的设计方法。问题:SA方法用于软件开发的哪个阶段?,第 15 页,结构化程序设计SP,SP的思想最早是由著名计算机科学家E.W.Dijkstra提出的。 1966年Bohm和Jacopin证明了只用三种基本结构就能实现任何一个入口,一个出口的程序; 1977年IBM公司的Mills又进一步提出:“程序应该只有一个入口和一个出口。 在长期程序设计的实践中,SP方法不断得以完善,使之成为开发

8、传统应用领域应用系统的主要方法之一。,第 16 页,关于SP的定义,北大王选院士认为: 没有GOTO语句 一个入口、一个出口 自顶向下,逐步求精的分解 主程序员组 谭浩强认为: 自顶向下 逐步求精 模块化设计 结构化编码,第 17 页,关于SP的定义(续),另一种说法: 自顶向下,逐步求精 程序结构按功能划分为模块 模块功能单一、简单 模块由三种基本结构组成 程序由函数、子程序来实现,第 18 页,二、软件需求定义,概 述:软件需求分析就是明确软件系统将来达到的目标。 基本任务:准确地回答系统“做什么?” 目 标: 规定项目必须满足的总目标;确定项目的可行性;拟定完成项目各个目标的策略,制定项

9、目资源成本和进度。,第 19 页,1、软件需求定义的任务,理解和表达用户要求,制定软件开发计划,编写要求说明书。,第 20 页,(1)软件需求定义的特点,(1)它是软件生存周期中最容易出错的一个阶段, (2)也是软件工程中最困难的一个阶段。 (3)它是其它阶段的基础,十分重要的阶段。 困难在于: 不能准确地理解和清楚地描述 软件系统非常复杂,以致用户和软件人员都不能完整、精确地理解它或不能清楚地表达出来;软件人员和用户缺乏共同语言。 用户熟悉业务,但不了解计算机;而软件人员则相反;这种隔阂使双方不能进行交流。,第 21 页,(2)确定对系统的综合要求,系统功能要求找出系统必须完成的所有功能。

10、系统性能要求例如,联机系统的响应时间,系统需要的存储容量以及后援存储,重新启动和安全性等问题。 运行要求(环境要求)对系统运行环境的要求。例如,什么样的硬件环境?采用哪种DBMS?OS平台是什么?需要什么样的外存储器和数据通信接口等。 将来可能提出的要求为系统将来可能的扩充和修改预做准备。,第 22 页,(3)软件需求定义的工作流程,系统定义,用户要求,软件功能,范围,功能说明书,软件计划,软件定义,软件功能,费用、资源进度,第 23 页,2、需求分析过程,基本过程示意图 沿数据流回溯 用户复查 细化数据流图 修改开发计划 书写文档资料 审查和复审,第 24 页,需求分析的基本过程,用户,分析

11、员,程序员,软件开发计划,软件需求说明书,分析追踪 数据流图,用户复查,细化数据 流图,无补充 修改,需要分解,不要分解,有补充修改,交换意见作出贡献,第 25 页,沿数据流回溯,通常从数据流图的输出端着手分析,要搞清楚: 数据元素从哪儿来? 每个输出数据元素又是从哪儿来的?有时对用户具体的数据元素还搞不清楚,则需要和用户探讨、商量解决。 通常把分析过程中得到的有关部门数据元素信息记录到数据字典DD中。把对算法的简明描述记录在IPO(输入|处理|输出图)图中。 通过分析而补充的数据流、数据存储和处理,应该添加到DFD的适当位置上。 数据字典(DD)、输入处理输出图(IPO) 数据流图(DFD)

12、,第 26 页,用户复查,经分析将在数据流图回溯过程中找出的数据元素,并由此定义的DD和算法是否正确?这只能由最有发言权的用户来复查。 在复查过程中反映出新的问题,应及时修改、补充DFD、DD和IPO图,并将对系统的新认识及时记录下来。实际上,追踪DFD和复查系统的逻辑模型这两个步骤是交替进行的循环过程。,第 27 页,细化数据流图,在反复循环的分析过程中,不断细化DFD(即把数据流图扩展到更低的层次)。通过功能分解可以完成DFD的细化,即将一些处理比较复杂的功能再划分为若干个子功能。,第 28 页,修改开发计划,在分析过程中可能会不断地修改原拟定的开发计划,这是正常的。,第 29 页,书写文

13、档资料,本阶段应完成4份文档资料: 系统规格说明 描述目标系统的概貌、功能要求、性能、运行及将来可能提出的要求。 用户系统描述 从用户角度描述系统,类似一份用户手册初稿。 数 据 要 求 包括DD、数据结构的层次框图等。 修改的开发计划 包括成本估计、进度计划表、资源使用计划等。,第 30 页,说明,需求说明书主要内容: 概 述 开发系统的意义、目的、背景及技术术语; 现行系统的概况 业务流程、范围、存在的问题等; 需求说明 功能描述: 信息描述:DFD、DD、DS、IPO、接口等 性能描述 运行环境 系统限制 用户系统描述 系统功能和性能的描述 使用系统的主要步骤和方法 系统用户的责任等,第

14、 31 页,审查和复审,分析阶段最后一步是按结束标准对该阶段的工作成果进行正式的技术审查和管理审查。,第 32 页,3、需求分析的原则,1能够表达和理解问题的信息域 信息域反映的是用户业务系统中数据的流向和对数据进行加工的处理过程,因此信息域是解决“做什么?”的关键因素。 2要建立描述系统信息、功能和行为的模型 建立模型的过程是“由粗到精”的分析综合的过程。 3能够对所建模型按一定形式进行分解 分解是为了降低问题的复杂性,增加问题的可解性和可描述性。 4分清系统的逻辑视图和物理视图软件需求的逻辑视图描述的是系统要达到的功能和要处理的信息之间的关系,这与实现细节无关; 而物理视图描述的是处理功能

15、和信息结构的实际表现形式,这与实现细节是有关的 需求分析只研究软件系统“做什么?”,而不考虑“怎样做?”。,第 33 页,4、需求分析的图形工具,图形工具在描述复杂关系时比文字叙述要优越。在系统需求分析过程中为了准确描述需求,常采用一些简单的描述工具,例如:数据流图(DFD,Data Flow Diagram)、数据字典(DD,Data Dictionary)、结构化分析语言(Language of Structured Analysis)、判定表(Decision Table)判定树等(Decision Tree),第 34 页,(1)数据流图DFD,数据流图(DFDData Flow Di

16、agram )以图形的方式表达数据处理系统中信息的变换和传递过程。它有四种基本符号:,S,P,X,数据源及数据终点,加工 对数据进行的加工或变换,指向加工的数据流 是输入数据;离开的是输出数据。,数据流 具有名字且有流向的数据,文件 存放数据的场所,第 35 页,数据流图举例宾馆管理系统,客人,预订,登录,房管,客人信息库,可售房库,售出房库,客帐库,公安,预付 款,财务,IDD,第 36 页,数据流图的结构,一个实际问题的数据加工流程是非常复杂的。如果绘制在一个平面图上就显的太乱了。 因此,通常采用分层次结构。把一个复杂的问题,分解为一些相互独立的子问题,再绘出分层DFD。数据流图的组成成分

17、:数据流、加工、文件、源终点,第 37 页,结构图分层举例,宾馆 管理,DFD/L0,顶层图,第2层图,DFD/L1,A,D,C,E,第3层图,DFD/L2.2,DFD/L2.1,A1,A2,A3,E1,E2,B,第 38 页,(2)数据字典DD(Data Dictionary),DD对数据流程图中出现的所有元素给出逻辑定义;即给出DFD中的数据流、加工和文件、及及数据项等的详细解释。 数据字典的条目解释通常采用规范的定义形式:客帐=帐号+房租+IDD费+餐饮费+洗衣费+娱乐费+日期+经办人 内容 数 据 流:编号、名称、简述、别名、构成、来源、去向、流量数据项目:编号、名称、简述、别名、类型

18、、长度、位数数据文件:编号、名称、简述、别名、构成、关键字、存取要求处理(加工): 编号、名称、简述、别名、处理条件、I/O内容、处理逻辑,第 39 页,(3)结构化语言,例如,选择结构的描述语句(IF THEN ELSE)、循环结构的描述语句等。 例如:DO CASE CASE 时间12 AND 时间18R-rent=rent;注意:这不是程序!,第 40 页,(4)判定表,采用判定表能把加工逻辑表示的更加清楚。 判定表中:纵向各列给出的是不同的条件, 横向各行则表示在各条件下相应的处理。,条件 结 帐 时 间 12点前 1218点 18点后,处理,不收费,收半费,收全费,第 41 页,(5

19、)判定树,用树的形式表示条件分枝 判定树比判定表更家直观,它用来描述具有多个条件的数据加工更容易被用户接受。树状的分支表示多种不同的条件。例如,,结帐时间=?,12点前 1218点间 18点后,不收费 收半费 收全费,下一页,第 42 页,5、用于需求分析的软件工具,为保证软件需求的正确性和需求的一致性,需要采用适当的软件工具支持需求分析工作。软件工具应满足下列要求: 必须有形式化的语法(可让计算机自动处理) 能够导出详细的文档 必须提供分析(测试)规格说明书的不一致性和冗余性的手段,并能产生指明对完整性分析结果的报告。 能够改进通信状况,第 43 页,已有的需求分析的软件工具,RSL(Req

20、uest Statement Language)需求陈述语言;其语句是计算机可以处理的,并将处理结果集中存放在ASSM(抽象系统语义模型)的DB中。1977年。 PSL/PSA (Problem Statement Language /Problem Statement Analysis System)问题陈述语言/问题陈述分析程序系统。它是CADSAT(计算机辅助设计和规格说明分析工具)的一部分。PSL是用来描述系统的形式语言,PSA是处理PSL描述的分析程序。1997年。 PSL/PSA有4种主要功能: 描述任何应用领域的信息系统 创建一个DB保存对该信息系统的描述符 对描述符可执行增、删

21、、改等操作 产生格式化文档及规格说明书的各种分析报告 PSL/PSA的主要优点是改进了文档质量、使之具有完整性、一致性和无二义性,从而减少管理维护费用。,第 44 页,超高级语言和第4代语言,超高级语言的语句功能很强,用少数语句就可以实现一个系统。但这种语言需要的系统资源开销也大。 APL 是一种处理矩阵运算的、功能强大的超高级语言。它非常简洁,用它书写程序所化时间很少。用它来开发一个原型系统所需要的时间通常只相当于实现最终系统所用时间的一小部分。但这类语言不适合用来写大型系统(语法结构不易读)。 Shell 是UNIX系统的命令解释语言,在Shell中可以使用UNIXOS的所有命令。如果开发

22、的系统中使用的基本数据是正文行和文件,适合用Shell描述算法。用Shell语言开发适于用该种语言书写的程序时,所需的成本比用普通PL开发时低得多。 PROLOG 是开发原型系统使用最普遍的语言,具有极强的知识表达、推理和查询功能,在表达知识和快速建立软件原型方面具有明显优势。它只有事实、规则和询问三种语句,语法比其它PL简单,又具有交互性,使用十分方便。但它表达算法类知识的能力较弱,不善于解决计算问题;效率较低。 第4代语言具有非过程性、交互性、可视性、智能化缺省设置、易使用、高生产率、易调试、易维护、OO及基于DBMS等,是快速构造软件原型的高效软件工具。,第 45 页,6、结构分析方法(

23、SA方法),结构化分析方法的背景(形成) 早期无系统分析方法(凭经验) 60年代美国的科学家提出一种理论:SP SD SA 目前研究的新热点是:OOP OOD OOA即面向对象的程序设计技术(OO-Object Oriented ),第 46 页,SA的一般步骤,1建立当前系统的物理模型 即理解并描述当前系统是怎样进行工作的。通过调研、了解把当前系统的业务工作流程(看到的、听到的、收集到的信息)用流程图的形式描述出来。 2建立当前系统的逻辑模型 逻辑模型是指系统的功能模型,反映了数据处理系统的本质。对物理模型进行分析,区别本质因素和非本质因素,去掉非本质因素,就成为逻辑模型(本质因素是固有的,

24、不依赖于环境变化而变化的因素)。 3、建立目标系统的逻辑模型 这是SA方法实质性的一步,是SA的最终目标。目标系统是指将来由计算机处理的软件系统,它是在分析当前系统逻辑模型与目标系统逻辑模型的差别基础上建立起来的。,第 47 页,SA的基本特点:分析与抽象,采用用户容易理解的图形工具 从全局认识系统,采用自顶向下,逐级分析的方式,销售MIS,销售MIS,经营,库存,财务,1),2),3),销售MIS,经营,库存,财务,市场分析,统计分析,客户档案,盘点结存,订货管理,工资核算,采购计划,工资核算,成本核算,面向用户,强调逻辑而非实现(在该阶段,不考虑系统的实现问题) 以获取分离数据和加工为动机

25、(这点很重要)。,第 48 页,三、系统设计(软件的设计),系统设计概述 目标和任务 设计方法和步骤 文档 设计复审,第 49 页,软件设计流程图,概要设计,复审,要求说明书,软件 结构,可接收,详细设计,模块 描述,设计 说明书,复审,修改,修改,第 50 页,1、软件设计概述,(1)目标和任务 任务 依据分析结果,明确系统“如何做?”,建立实现方案。 目标 提高软件系统的: 可维护性: 可扩充、可修改 可理解性: 对软件人员要易读易理解;对用户要易使用、易维护 可靠性: 包括正确性和健壮性,第 51 页,(2)设计方法和步骤,概要设计 定义系统的逻辑结构,包括:系统的模块划分、建立模块的层

26、次结构、逻辑关系、设计全局DS及DB; 详细设计 根据每个模块的功能描述,设计模块内部的实现算法、模块所需要的局部数据结构。,第 52 页,设计方法和步骤设计方法:,概要设计方法 早期:模块化方法、功能分解法;典型:面向数据流、面向数据结构(SP)的设计方法近期:面向对象(OO)的设计方法SD(面向数据流的方法);Jackson(JSD)、Warnier(LCP)(面向数据结构的方法) 详细设计方法 主要是结构化程序设计方法 详细设计的表示工具 图形工具: 程序流程图、程序分析图(PAD)和NS图 语言工具: 伪码和程序设计语言(PDL),第 53 页,(3)软件设计原则,软件设计的重要性表现

27、在软件的质量。如何设计才能保证质量?一般原则: 要有分层的组织结构,便于对软件各个构件进行控制; 应形成具有独立功能特征的模块(模块化) 应有性质不同、可区分的数据和过程描述(表达式) 应使模块间和与外部环境间接口的复杂性尽量地减小 应利用软件需求分析中得到的信息和可重复的方法。 要想得到一个满意的设计结果,不光要有基本设计原则的指导,还要有系统化的设计方法和科学严格的评审机制相结合才能达到预想的目的。,第 54 页,(4)、软件设计准则,如何度量软件设计的标准,计算机业界对该问题还处于初期认识阶段。 不分模块的程序是无法理解、管理和维护的程序。凡是使用计算机编程的人均自觉不自觉地将程序划分为

28、模块。但有这样一个实际问题,一个系统到底划分为多少个模块好呢?如何度量模块化的程度呢?,第 55 页,经典设计准则,软件结构准则 模块化准则 模块独立性准则 模块的耦合性 模块的内聚性,第 56 页,软件结构准则,(1)结构形态准则 好的软件结构应具有倒置水缸形; 顶部宽度最小,中间宽度最大,底部宽度小于中间宽度。 在顶部有较高的扇出数(一个模块直接下属的子模块数), 在底部有较高的扇入数(模块的直接上属模块的个数)。 (2)判断的影响范围应该是控制范围的一个子集 影响范围 指在一个模块中有一个判别条件,所有受该判别条件影响的模块的集合称为影响范围;控制范围 指一个模块本身及所有下属模块构成的

29、集合。不满足该准则时的处理方法:就将判别条件移到上属模块中去,使其影响范围在控制范围内,或者将受影响的模块移入控制范围内。,第 57 页,结构形态准则示意图,深度,宽度,扇出,扇入,第 58 页,控制、影响范围示意图,B模块的控制范围是B、D、E、F、G、H; 假设E中有一个判别条件,受其影响的模块有F、G、H,则E的影响范围是F、G、H。,M,E,A,B,C,D,F,G,H,第 59 页,模块化准则,设C(X)是关于问题X的复杂性,E(X)是完成问题X的工作量,有两个问题P1和P2:若C(P1) C(P2) , (即P1比P2复杂)E(P1) E(P2), (即P1比P2用的工作量多)而 C

30、(P1+P2) C(P1) + C(P2),(即组合问题比单个问题复杂)则 E(P1+P2) E(P1) + E(P2)(组合问题的工作量大于单个问题的工作量之和) 这说明: 软件分解为若个模块后,则总的工作量减少,但并不是说,模块分解的越多,工作量就一定越少。因为分解到一定程度后,模块之间的接口工作量就上升,从而使总的代价上升。,第 60 页,模块化准则示意图,代价,模块数,模块代价,接口代价,总代价,M,第 61 页,模块化准则讨论,软件系统模块化数目存在一个最佳值M。 根据心理学研究表明,一个模块的语句数量以3050句为宜(在一张打印纸上可完整地输出)。 模块太大,难于阅读和理解;编程和

31、测试的效率也不高。 模块太小,又会使系统过于零碎,接口的工作量增加。,第 62 页,模块独立性准则,模块独立性:是指开发具有功能专一、模块之间无过多相互作用的模块。 具有独立性的模块,开发容易、能减少错误的传播,使模块重组、分解方便,容易调试和维护。 度量模块的独立性标准: 内聚性 模块内部各部分之间联系紧密程度的度量; 藕合性 模块之间联系紧密程度的度量。 显然,独立性强的模块,耦合性越小越好,内聚性越大越好。,第 63 页,模块的藕合性及其分类,无直接藕合 模块之间无调用关系 数据藕合 通过参数调用在模块之间传递简单数据。传递参数可以是: 加工的数据或控制用数据 ( 这是推荐和常用的藕合方

32、法) 标记藕合 通过参数传递一种数据结构值。 控制藕合 通过参数传递逻辑变量,起控制作用 外部藕合 指模块受软件的外部环境的约束。 内容藕合 指一个模块使用另一个模块状内的数据或控制信息;或直接转移到另一个模块的内部。 公用藕合 几个模块公用一个全程数据区;这种问题就比较复杂。如果是动态并发程序,情况就更复杂了。不光是模块间数据引用的冲突问题,还有时间差数据变更问题。,低藕合, 经常被 采用,中等藕合,高藕合,第 64 页,关于耦合的讨论,设计时应: 尽量使用数据耦合, 少用控制耦合, 限制公用耦合的范围, 完全不用内容耦合。,第 65 页,内聚性问题,一个程序主要由两部分组成:数据和对数据的

33、加工处理。 内聚性:是指一个模块内部各种数据和各种处理之间联系的紧密程度。 它是模块执行任务的整体统一性的度量,是模块相对功能强弱的度量。 在理想的系统中,每个模块执行一个明确、单一的任务。但现实情况是一个模块往往执行若干个结合在一起的任务,这些任务组合方式不同就构成不同的内聚性。,第 66 页,内聚性分类:,共存内聚 几个无关的任务组合在一起 逻辑内聚 将几个逻辑上相关的任务组合在一起 时态(时间)内聚 将在某一时刻同时要执行的任务组合在一起 过程内聚 指几个相关联的任务组合在一起 通讯内聚 指在同一DS上进行操作的几个任务组合在一起 顺序内聚 指模块的几个任务总是前者的输出即为后者的输入,

34、表现出按一定顺序执行。 功能内聚 指模块只包含完成单一功能的任务。,弱,强,第 67 页,内聚性问题的讨论,从使用角度分析,能否用一个短句完整地描述该模块做什么;若这个短句是复合句,或有若干个动词,则该模块是非功能性模块。 在设计时,尽量采用功能性模块。,第 68 页,(5)文档资料,设计阶段要交付的文档是设计说明书。它可对编程和测试提供指南服务,还可在系统交付使用后,为维护人员提供帮助。内容包括: 概述 描述设计工作总的范围;系统目标、功能、接口等; 系统结构 包括:系统的模块划分、每个模块的功能简介、各个模块之间的逻辑关系; DS及DB设计 用图表把设计结果描述出来; 接口设计 包括:人机

35、界面设计、软、硬件之间的接口设计、本系统与外界以及与支持软件之间的接口关系; 模块设计 根据模块的功能,用相应的工具描述每个模块的流程,以及每个模块用到的数据结构。,第 69 页,2、概要设计,概要设计:是为软件系统定义一个逻辑上一致的结构:进行模块划分,建立模块层次结构、调用关系,设计全局数据结构及数据库,设计系统接口及人机界面等。 概要设计的方法有许多种: 在早期有模块化方法、功能分解方法,这都是人们一般常用的方法; 在60年代后期提出了面向数据流的设计方法、面向数据结构的设计方法; 近年来又提出面向对象的设计方法等。,第 70 页,概要设计主要步骤,1)精细化数据流程图,确定数据流程 图

36、的类型; 2)指出各种信息流的流界; 3)将数据流程图映射为软件结构; 4)精细化软件结构; 5)开发接口描述和全程数据描述。,第 71 页,数据流程图分类,变换流、事务流 变换流,加工 中心,输入 加工,输出 加工,输入,输出,内部 结果,内部 数据,输入流,输出流,变换流,加工结果,第 72 页,事物流,事物 中心T,数据流,事物中心,t1,t2,t3,t4,事物路径,事物流,一个数据流经过某个加工后,有若干个平行的数据流 流出,将这种变换称为事物流。,当事物流中的 事物流到事物 中心后,事物 中心分析每个 事物,确定其 类型;并根据 事物类型选择 一个事物路径 继续进行处理。,第 73

37、页,设计过程,流类型?,区分事物中心和 数据接受路径,区分输入和 输出分支,”事物“,”变换“,映射成事物结构,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和 全程数据结构,详细设计,第 74 页,变换分析技术,变换分析技术是从典型的变换型数据流程图(DFD)中推导出相应的结构图。 变换分析是一组设计步骤,可把DFD映射为一种标准结构。有了标准结构,再根据软件结构度量、模块化度量、模块独立性度量来精细改善结构图,从而得到良好的软件结构。 (变换流的变换分析),第 75 页,变换分析的步骤,确定DFD及其类型 确定输入流、中心加工、输出流的流界; 第一级分解;设计上层模块; 第二级

38、分解,设计中、下层模块; 进一步精细化。,第 76 页,举例设计汽车仪表盘,设计一个“智能”产品汽车数字仪表盘,实现的功能为: 通过模-数转换实现传感器和微处理器的接口; 在发光二级管面板上显示数据; 指示mph(每小时英里数)、行驶里程、每加仑汽油行驶的英里数(mpg)等; 指示加速|减速 超速警告;车速超过55英里/小时,则发出超速警告铃声。,第 77 页,汽车数字仪表系统的DFD,旋转 信号,读旋 转信号,信号/秒,SPS,读旋和 求均值,燃料流 信号,读和 校对,燃料流,计算gph,转换为 转/分rpm,SPS,rpm,mph,计算 mph和 超速值,mph,显示,产生 mph 显示,

39、gph,mpg,mpg,显示,计算 燃料 消耗,产生 mpg 显示,mph,SPS,rpm,超速值,发出 铃声,铃声,产生 里程,里程,计算 里程,英里,确定加 减速,产生加 减速显示,箭头 指示,水平线,下箭头,上箭头,输入流,变换流,输出流,SPS,第 78 页,设计步骤(一),第1步: 确定DFD及其类型。认真分析DFD,可知有2个输入流(旋转信号、燃料流传感器信号),5个输出流(加、减速显示、里程显示、发出铃声、mph显示、mpg显示),输出流显然是把输入流经计算而产生的。由此可见,这是一个典型的变换流类型。 rpm 每分钟转数 gph 每小时加仑数 mph 每小时英里数 mpg 每加

40、仑英里数,第 79 页,设计步骤(二),确定流界(输入流、变换流和输出流) 输入流 读旋转信号、收集求和平均值、转换成rpm、读和校对、计算gph 变换流 确定加、减速度、计算里程、计算mph和超速值、计算燃料消耗 输出流 产生加、减速显示、里程显示、发出铃声、产生mph和mpg显示,第 80 页,设计步骤(三),第1级分解,产生顶层模块第1级分解过程实际上是对DFD自顶向下的控制进行分配。DFD被映射为一个特殊的软件结构:输入控制、变换控制和输出控制,再人为地为它们加一个主控模块。再根据实际问题为每个模块命名。,Cm,Ci,Ct,Co,数字仪表板 控制系统,接收传感 器信号,数据转换 控制,

41、驱动仪表 板面,第 81 页,设计步骤(四),第2级分解,建立中下层模块由顶向下,逐步精细,设计中、下层模块。 为每个逻辑输入设计一个输入模块,向上属模块提供输入信息;而该模块又需要两个下属模块,分别称为“取模块”和“转换模块”。沿每条逻辑输入分支,按此办法一直分解到物理输入为止。 同理为每一个逻辑输出设计一个输出模块,它要输出上属模块送来的信息,而该模块又需要两个下属模块;一个转换送来的信息,另一个把转换的信息送走。 转换模块的设计无规律性,一般可根据中心加工的子加工来建立模块。,第 82 页,第2级分解举例,将数字仪表盘控制系统继续分解:,读旋转信号,接收传感器 信号,rpm,sps,sp

42、s,收集sps,转换成rpm,信号均值,信号/秒,计算gph,读燃料流,燃烧流,计算mph,数字转换 控制,sps,确定加减速,里程,计算里程,计算mpg,rpm,箭头 指示,rpm,mph,mpg,mph gph,gph,变换处理,输入模块,第 83 页,第2级分解举例(续),输出模块,驱动仪表盘,加减速显示,显示里程,显示mph,发出铃声,发光二极管显示,显示mpg,第 84 页,设计步骤(五),进一步精化,数字仪表板 控制系统,发出 铃声,计算 里程,显示 mph,显示 mpg,显示 里程,显示 加减速,发光二极管显示,精化后的数字仪表盘 系统的软件结构,驱动仪表板面,数据转换控制,读旋

43、转 信号,计算 gph,计算 mph,计算 mpg,确定加减速,读燃料 流,接收传感器信号,转换成 rpm,第 85 页,事务分析技术,事务分析技术也是将相应的数据流程图(DFD)映射为对应的的软件结构图。 事务分析的组设计步骤同变换分析: 确定数据流图的类型 确定流界 第1级分解 第2级分解 设计后处理,第 86 页,3、详细设计方法,详细设计的概念:是根据每个模块的功能设计其逻辑描述、实现算法以及实现这些算法的逻辑控制流程,并设计这些模块所需的局部数据结构。 详细设计的方法:主要是用结构程序设计SP方法, 详细设计的表示工具:有图形工具和语言工具。 图形工具:有程序流程图(p296)、PA

44、D(Problem Analysis Diagram)图、NS(由 Nassi和 Shneidermen开发)图, 语言工具:有伪码和过程设计语言PDL(Program Design Language)等。,第 87 页,SP中的基本结构,顺序结构 选择结构 IF THEN ELSE 结构 IF THEN 结构 IF OR IF ELSE 结构 CASE 结构 重复结构 当型结构 直到型结构 出口结构 可用判定表、判定树表示,第 88 页,N-S图(盒图),第 89 页,PAD图,第 90 页,SP中的优点,自顶向下,逐步求精方法符合人们解决复杂问题的普遍规律;抽象、分解、找出关键问题所在。将

45、重点、技术难点找出来,便于精确描述和求解。模块化设计便于协同开发,因而可以显著提高软件系统的成功率和生产率。 用先全局后局部,先整体后细节,先抽象后具体的逐步求精过程开发的程序有清晰的层次结构,容易理解和阅读。采用划整为零的开发技术,便于各层次人员发挥各自的创造性劳动。 不使用GOTO语句,使程序静态结构和程序动态执行情况一致,容易理解和阅读,开发出的程序容易修改和维护。 程序只采用三种基本结构,有确定的逻辑结构,可读性好。 共用模块可重用。,第 91 页,SP中的缺点,SP方法的模块化设计的子程序、函数的可重用性很小。可重用的只是一些标准库函数或基于某个OS的I/O函数。其它模块的可重用性很

46、小。 数据和过程的分离。程序员在编程时必须随时考虑要处理的数据的格式: 不同格式的数据,即使做相同的处理,也要编写不同的代码; 数据格式一样,但处理不同,也要用不同的代码; 相容性问题。 当程序和数据相对独立时,程序员要始终考虑保持程序和数据的一致性(用错误数据调用正确的程序,或用正确的数据调用错误的程序),这已成为程序员的沉重负担。 这些问题都是SP方法本身解决不了的。,第 92 页,四、程序编码,程序设计语言的特点 选择语言 写程序的风格 程序设计方法论,第 93 页,1.程序设计语言的特点,软件工程师应该了解程序设计语言各方面的特点,以及这些特点对软件质量的影响,以便在一个特定的开发项目

47、选择语言时,能够作出合理的选择。 程序设计语言的特点是: 名字说明 类型说明 初始化 程序对象的局部性 程序模块 循环控制结构 分支控制结构 异常处理 独立编译,第 94 页,程序设计语言的特点(一),名字说明 预先说明程序中使用的变量名,这是许多编译系统所要求的,目的是检查变量名的合法性,使错误能消除在语义、语法检查阶段。 类型说明 用于定义对象在计算机中的存储单元的长度。确定了类型也就确定了该对象的使用方式。编译系统能发现程序中对某个特定类型的对象使用不当的错误,有助于减少程序错误。 初始化 变量在没使用前是何种状态(值),在不同语言中是不确定的。因此,在使用前进行必要的初始化处理,以减少

48、发生的可能性。 程序对象的局部性 提倡使用局部变量,这不仅有助于提高可读性,而且有助于减少差错和提高程序的可修改性。,第 95 页,程序设计语言的特点(二),程序模块 为了控制程序对象名字的可见性,一些块结构语言提供了保护控制机制:类程(CLASS) SIMULA语言 段(Segment) ALGOL60 语言模块(Module) Modula语言 包(Package) Ada语言这些保护机制有些很好的特性,例如Ada语言中的“包”,可用来构造抽象数据类型等,因此,这类语言适合于较大型软件工程项目。 循环控制结构 常见的循环结构有三种:FOR 循环、WHILE循环、REPEAT UNTIL循环;在实际应用中,往往在循环体内加设测试循环结束条件,以便决定是否继续循环。为此,有些语言中增加了诸如:exit、break、loop、escape等语句,改善了程序结构的可读性。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报