开发设计过程讲义资料

上传人:yuzo****123 文档编号:141663102 上传时间:2020-08-11 格式:PPT 页数:98 大小:633.50KB
返回 下载 相关 举报
开发设计过程讲义资料_第1页
第1页 / 共98页
开发设计过程讲义资料_第2页
第2页 / 共98页
开发设计过程讲义资料_第3页
第3页 / 共98页
开发设计过程讲义资料_第4页
第4页 / 共98页
开发设计过程讲义资料_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《开发设计过程讲义资料》由会员分享,可在线阅读,更多相关《开发设计过程讲义资料(98页珍藏版)》请在金锄头文库上搜索。

1、结构化程序设计方法,一个结构化程序 就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、便于阅读、便于修改和维护。 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程 分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。,采取以下方法来保证得到结构化的程序: 自顶向下; 逐步细化; 模块化设计; 结构化编码。,两种不同的方法: 自顶向下,逐步细化; 自下而上,逐步积累。,用这种方法逐步分解,直到作者认为可以直接将各小段表达为文字语句为止。这种方法就叫 做“自顶向下,

2、逐步细化”。,模块设计的方法: 模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务,每一个子任务就相对简单了。 在拿到一个程序模块以后,根据程序模块的功能将它划分为若干个子模块,如果这些子模块的规模还嫌大,还再可以划分为更小的模块。这个过程采用自顶向下方法来实现。 子模块一般不超过50行。 划分子模块时应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好。,自上而下的编程方法基本步骤 (1)首先对你所面临的问题进行精确描述,即你遇到的到底是什么问题; (2)定义输入输出量,即分析我们的目的是什么和现有的条件; (3)设计算法,逐层分解,逐步求精,这是做事情的

3、一个过程,大部分人做事出错就出在这个地方,懒得到逐层分解,逐步求精,总是妄想一步登天; (4)把算法转化为程序语言,这一步是踏踏实实做的过程,没有这一步你什么也做不成。 (5)检测程序,我们做的东西是否正确,不正确检测错误。这一步是需要耐心的,不要怕错误,每一次检测都会让你提高。做事时,不要因一些错误而畏缩不前。,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成。 软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。 开发时期通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

4、 维护时期的主要任务是使软件持久地满足用户的需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。,1.3 软件生命周期,软件生命周期每个阶段的基本任务。 问题定义 可行性研究 3. 需求分析 总体设计 详细设计 编码和单元测试 综合测试 软件维护,第2章 可行性研究,2.1 可行性研究的任务 2.2 可行性研究过程 2.3 成本/效益分析,可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 标准:系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。(资本回报),2.1 可行性研究的任务,技术可行性 技术风险分析

5、技术解决方案的实用性 使用的技术实用化程度 技术解决方案合理程度 技术资源的可用性 参与人员的工作基础 基础硬件/软件的可用性 软件工具实用性,用户操作可行性 用户类型 外行型 熟练型 专家型 操作习惯 使用单位的计算机使用情况 使用单位的规章制度,第3章 需求分析,3.1 需求分析的任务 3.2 与用户沟通获取需求的方法 3.3 软件需求规格说明 3.4 实体-联系图 3.5 验证软件需求,通信录,问题定义: 以文件的方式保存用户录入的通讯录数据 供用户查询和使用通讯录信息,通信录,功能需求: 记录项的基本属性:,姓名、性别、住址、联系电话、电子邮件 等,通信录,功能需求: 录入:操作添加一

6、条新的记录项,删除:删除一条已经存在的记录项,修改:改变记录项的一个或多个属性,并用新的记录项覆盖已经存在的记录项,查找:根据用户输入的属性值查找符合条件的记录项,通信录,功能需求: 通讯录数据以文件形式存储在磁盘上,根据实际需要定义文件的存储格式;在程序运行中需要对文件进行读取操作。,程序中还要对输入数据的容错性进行检查, 可以保证通讯录数据的合法性。,第4章 总体设计,4.1 设计过程 4.2 设计原理 4.3 描绘软件结构的图形工具,总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。 总体设计阶段的另一项重要任务是设计软件的结构,

7、也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。,典型的总体设计过程包括下述9个步骤: 设想供选择的方案 选取合理的方案 推荐最佳方案 功能分解 5. 设计软件结构 6. 设计数据库 7. 制定测试计划 8. 书写文档(系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果) 9. 审查和复审,4.1 设计过程,过程、函数、子程序和宏等,都可作为模块。 模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 采用模块化原理可以使软件结构清晰,能够提高软件的可靠性和可修改性,也有助

8、于软件开发工程的组织管理。,4.2 设计原理 4.2.1 模块化,信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化有助于实现信息隐藏,隐藏的不是有关模块的一切信息,而是模块的实现细节。,4.2.2 信息隐藏和局部化,开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。换句话说,希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。 模块的独立性很重要,有两条理由:第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。第二,独立的模块比

9、较容易测试和维护。总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。,4.2.3 模块独立,通信录的模块结构图,4.3 描绘软件结构的图形工具,通信录,功能需求: 录入:操作添加一条新的记录项,删除:删除一条已经存在的记录项,修改:改变记录项的一个或多个属性,并用新的记录项覆盖已经存在的记录项,查找:根据用户输入的属性值查找符合条件的记录项,通信录,功能需求: 通讯录数据以文件形式存储在磁盘上,根据实际需要定义文件的存储格式;在程序运行中需要对文件进行读取操作。,程序中还要对输入数据的容错性进行检查, 可以保证通讯录数据的合法性。,通信录的模块结构图,输入输出终端,输入输出模块,

10、管理模块,文件操作模块,存储文件,用户输入,系统输出,文件写入,文件读出,4.3 描绘软件结构的图形工具,4.3.1 层次图 层次图用来描绘软件的层次结构。 层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系。,第5章 详细设计,5.1 结构程序设计 5.2 人机界面设计 5.3 过程设计的工具,结构程序设计的概念最早由E.W.Dijkstra提出。 1966年Bohm和Jacopini证明了,只用3种基本的控制结构就能实现任何单入口单出口的程序。这3种基本的控制结构是“顺序”、“选择”和“循环” 。,5.1 结构程序设计,3种基本的控制结构,出于要有一种不允许违背结构程序设计精神的图

11、形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。它有下述特点: (1) 不可能任意转移控制。 (2) 很容易确定局部和全程数据的作用域。 (3) 很容易表现嵌套关系,也可以表示模块的层次结构。,6.3.2 盒图(N-S图),图6.4 盒图的基本符号,PAD是问题分析图(problem analysis diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。,6.3.3 PAD图,图6.5 PAD图的基本符号,下面以行李托运费的算法为例说明判定表的组织方法。假设某航

12、空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表可以清楚地表示与上述每种条件组合相对应的计算行李费的算法,如表6.1(见书118页)所示。,用判定树表示计算行李费的算法,5.2.1 设计问题 系统响应时间、用户帮助设施、出错信息处理和命令交互。 1. 系统响应时间 一般说来,系统响应时间指从用户完成某个控制动作(例如,按回车键或点击鼠标),到软件给出预期的响应(输出信息或做动作)之

13、间的这段时间。 2. 用户帮助设施 设计帮助设施时要解决的问题(见下页),5.2 人机界面设计,3. 出错信息处理 出错信息和警告信息,是出现问题时交互式系统给出的“坏消息”。 一般说来,交互式系统给出的出错信息或警告信息,应该具有下述属性。 (1) 信息应该用用户可以理解的术语描述问题。 (2) 信息应该提供有助于从错误中恢复的建设性意见。 (3) 信息应该指出错误可能导致哪些负面后果。 (4) 信息应该伴随着听觉上或视觉上的提示。 (5) 信息不能带有指责色彩。,4. 命令交互 命令行曾经是用户和系统软件交互的最常用的方式,现在面向窗口的、点击和拾取方式的界面已经减少了用户对命令行的依赖。

14、,通讯录,界面设计 :,通讯录,界面设计 :,通信录,功能需求: 记录项的基本属性:,姓名、性别、住址、联系电话、电子邮件 等,通讯录,数据结构设计: struct myrecord unsigned int num; unsigned int group; char nameMAXLEN+1; char gender; date birthday; char addressMAXLEN+1; char phoneMAXLEN+1; char emailMAXLEN+1; ;,通讯录,数据结构设计: struct mydate unsigned int year; unsigned int m

15、onth; unsigned int day; ; typedef struct mydate date;,通讯录,数据结构设计: 三个查询关键字:记录编号、组别和联系人姓名 union mysearch_entry unsigned int num; unsigned int group; char nameMAXLEN+1; ; typedef union mysearch_entry search_entry;,通讯录-函数设计,menu.c输入输出文件,通讯录-函数设计,menu.c输入输出文件,通讯录-函数设计,file.c文件处理文件,通讯录-函数设计,control.c控制文件,

16、通讯录的某个模块的流程图,第6章 实现,6.1 编码 6.2 软件测试基础 6.3 白盒测试技术 6.4 黑盒测试技术 6.5 调试 6.6 软件可靠性,通常把编码和测试统称为实现。 所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。 测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误,它是对软件规格说明、设计和编码的最后复审。 通常在编写出每个模块之后就对它做必要的测试(称为单元测试),编码和单元测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试。 通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。,适宜的程序设计语言能使根据设计去完成编码时困难最少,可以减少需要的程序测试量,并且可以得出更容易阅读和更容易维护的程序。 由于软件系统的绝大部分成本用在生命周期的测试和维护阶段,所以容易测试和容易维护是极端重要的。,6.1 编码 6.1.1 选择程序设计语言,总的说来,高级语言明显优于汇编语言,因此,除了在很特殊的应用领域,或者大型系统中执行时间非常关键的一小部分代码需要用汇编

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

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