1、,第3章 软件工程基础,主要内容3.1 软件工程的基本概念3.2 结构化分析方法3.3 结构化设计方法3.4 软件测试3.5 程序的调试,全国等级考试考试大纲要求软件工程基本概念,软件工具与软件开发环境。结构化分析方法,数据流 图,数据字典,软件需求规格说明书。结构化设计方法,总体设计与详细设计。软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。程序的调试,静态调试与动态调试。,知识类型:理论二级所占分值:约6分课时:4学时参考书目:软件工程导论(第4版) 张海藩 编著,软件 (Software)是指包括程序、数据以及相关文档的完整组合。国标定义:
2、与计算机系统的操作有关的计算机程序、规程、规则以及可能有的文件、文档及数据。,软件工程(Software Engineering) 是在20世纪60年代末期提出的。这一概念的提出,其目的是倡导以工程的原理、原则和方法进行软件开发,以期解决当时出现的“软件危机”。,表现: 软件需求的增长得不到满足 软件开发成本和进度无法控制 软件质量难以保证 软件不可维护或维护程度非常低 软件成本不断提高软件开发生产效率的提高赶不上硬件的发展和应用需求的增长(7) 软件通常缺少适当的文档资料,总之,可以将软件危机归结为成本、质量和生产率等问题,实际上几乎所有软件都在不同程度上存在软件危机.,软件危机 (Soft
3、ware Crisis),下一节,软件危机软件开发进度难以预测,拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。以丹佛新国际机场为例 该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,该系统还无法正常运行。据研究结果统计:只有1
4、5%的项目是按计划完成的。,略过,软件危机软件开发成本难以控制,投资一再追加,令人难于置信。据同样的研究统计结果表明:仅有10%的项目是按费用计划完成的。例如,20世纪80年代初,美国国内税收服务处(IRS)让Sperry公司开发一套联邦税收表格自动处理系统。结果是:系统被证明不适合当前的工作量,花费几乎是预算的两倍,必须立即更换(华盛顿邮报的报道)。到1985年,还需要再追加9千万美元来改进Sperry公司最初价值1.03亿美元的设备。另外,因为出现的问题阻碍了IRS按时返还纳税者的税款,IRS还被迫偿还4. 02亿美元的利息以及2.23千万美元的工资给加班职员。,软件危机软件产品质量无法保
5、证,开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种“闭门造车”的开发方式必然导致最终的产品不符合用户的实际需要。,软件危机用户对产品功能难以满足,系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。例如,一次美国在肯尼迪角发射一枚阿脱拉斯火箭,预定将用这种火箭运载飞往金星的宇宙飞船。火箭飞离地面几十英里高空开始翻转,地面控制中心被迫下令自爆炸毁。后经检查发现是飞行计划程
6、序中漏掉一个连字符。就是这样一个连字符的疏漏造成这枚价值1850万美元的火箭实验失败。据统计数字表明:在大型系统中,约3/4的系统有问题。,软件危机软件产品难以维护,软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。,软件危机软件缺少适当的文档资料,文档资料是软件必不可少的重要组成部分。实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作
7、说明书。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。,软件危机软件开发供不应求,软件开发生产率的提高速度,难以满足社会需求的增长率。软件产品“供不应求”的现象致使不能充分利用现代计算机硬件提供的巨大潜力。,伴随着软件危机的存在引入软件工程,3.1 软件工程的基本概念,形成: 为了摆脱软件危机,北大西洋软件组织成员国软件工作者于1968-1969年,两次召开会议,认识早期软件开发中所存在的问题和产生问题的原因,提出软件工程的概念. 目的: 软件工程是指导计算机软件开发和维护的一门学科,它应用计算机科学、数学和管理科学等原理,以及借鉴传统工程的原则和方法,来创
8、建软件,从而达到提高质量、降低成本的目的。,软件工程: 是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。,软件工程是一门交叉学科,软件工程的主要研究内容软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境 软件工程管理:软件管理学 软件经济学 软件心理学 软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。,软件工程 一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三个要素(*): 方法、工具、过程,软件工程必须以有组织的质量
9、保证为基础,全面质量管理和过程改进使得更加成熟的软件工程方法不断出现。,三要素:,质量 焦点:,软件工程过程是进行一系列有组织的活动,从而能够合理和及时地开发出计算机软件。过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、质量的保证和变更的管理。,软件工程方法为软件开发提供“如何做”的技术。它包括了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列的任务。,软件工程工具为过程和方法提供自动的或半自动的支持。这些软件工具被集成起来,建立起一个支持软件开发的系统,称之为计算机辅助软件工程(CASE,Computer Aided Software Enginee
10、ring)。CASE集成了软件、硬件和一个存放开发过程信息的软件工程数据库,形成了一个软件工程环境,过程、方法、工具,软件工程与一般工程的差异,软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性软件特征:功能的多样性 实现的多样性 能见度低 软件结构合理性差智力密集及知识产权保护,“软件工程”课程 与其它软件专业课的区别,(1) 立足于系统的整体。(2) 讲授系统分析、系统设计、 测试及维护的理论和方法。(3) 构筑一个软件系统,实践 软件开发全过程。,“软件工程”课程教学的目标,转变对软件的认识: 上升 程序 系统 转变思维定式: 上升 程序员
11、 系统工程师 (系统分析员) 工程化训练,系统分析员的地位,用户,分析员,程序员,“一个好的工业,应有一套良好的标准来配套”,软件的工业化生产过程应具备的特点:明确的工作步骤详细具体的规范化文档明确的质量评价标准,软件产品的标准化,软件开发过程的标准化,软件工程技术的两个明显特点:,强调规范化 强调文档化,3.1.2 软件生命周期,一. 定义: (Software Life Cycle) 软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。 软件生命周期可以划分为软件定义、软件开发和软件运行维护三个时期,每个时期又进一步划分成若干个阶段。,概要设计,可行性研究与计划制定,需求分析,
12、定义阶段,详细设计,实现,测试,使用,开发阶段,维护,运行维护阶段,退役,确定开发目标和总的要求,给出功能、可靠性等可能方案,制定实施计划.,对软件需求进行分析并给出详细定义,编写软件规格说明书及初步的用户手册,提交评审。,给出软件的结构、模块和功能的划分等,确定算法。编写概要设计、详细设计说明书和测试计划初稿。,源程序编码,把软件设计转换成计算机可以接受的程序代码。编写用户手册、操作手册和单元测试计划。,设计测试用例,检验软件各个组成部分。编写测试分析报告。,将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。,只考虑编写程序,涉及整个软件生存周期
13、,扩展到,软件工作的范围,在实践中,软件开发并不总是按照计划、分析、设计、实现、测试、集成、交付、维护等顺序来执行的,即各个阶段是可以重叠交叉的。整个开发周期经常不是明显地划分为这些阶段,而是分析、设计、实现、再分析、再设计、再实现等迭代执行。,注意:,软件开发的基本策略,一、复用复用就是利用某些已开发的、对建立新系统有用的软件元素来生成新的软件系统。,软构件(Software Component):具有一定集成度并可以重复使用的软件组成单元。软件复用就是直接使用已有的软构件,即可组装(或加以合理修改)成新的系统,而可以不必每次从零做起。,可重用部件组装模型,系统A的软件构成,系统C的软件构成
14、,系统B的软件构成,可重用部 件,可重用 部 件,复用优点:降低了软件的成本、提高了生产率而且新系统也具有较高的质量。,使用构件开发软件的过程:,二、 分而治之,分而治之是指把大而复杂的问题分解成若干个简单的小问题,然后逐个解决。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。,软件开发的基本策略,优化工作是十分复杂的,有时很难实现所有目标的优化,这时就需要“折中”策略。软件的折衷策略是指通过协调各个质量因素,实现整体质量的最优。软件折中的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。,优化:为了提高软件质量,程序员会不断改进软件中的算法,数据结构和程
15、序组织。,三、优化与折中,软件开发的基本策略,软件开发的各阶段的成本比例,软件工程基本概念补充习题讲解,1.软件开发的结构化生命周期方法将软件生命周期划分成_。 A. 定义、开发、运行维护 B. 设计阶段、编程阶段、测试阶段 C. 总体设计、详细设计、编程调试 D. 需求分析、功能定义、系统设计2. 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_。 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析3. 下面不属于软件工程的3个要素的是_。 A. 工具 B. 过程 C. 方法 D. 环境4. 软件是一种_。 A. 程序 B. 数据 C. 逻辑产品 D
16、. 物理产品5.下列描述中正确的是_。(等级考试题) A)软件工程只是解决软件项目的管理问题 B)软件工程主要解决软件产品的生产率问题 C)软件工程的主要思想是强调在软件开发过程中 需要应用工程化原则 D)软件工程只是解决软件开发中的技术问题,3.2 结构化分析方法,3.2.1 需求分析与需求分析方法,需求阶段是软件开发的关键阶段。需求分析的任务: 准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。 用 规范的形式准确地表达用户的需求。,需求分析阶段的工作(四方面):,需求获取,确定系统各方面需求,全面地提炼出系统的功能性与非功能性需求。,需求分析,编写需求规格说明书,需求审评,
17、对获取的需求分析和综合,给出系统解决方案和逻辑模型。,为用户、设计人员的交流提供方便,还可作为控制软件开发进程的依据。,复审需求分析阶段的工作,验证需求文档的一致性、可行性等。,清楚地理解所要解决的问题 完整地获取用户需求,需求获取的目的,某出版社系统调查表,某出版社系统调查表,需求获取的内容,用户需求分类 (1)功能性需求: 定义了系统做什么(描述系统必须支持 的功能和过程) (2)非功能性需求(技术需求): 定义了系统工作时的特性 (描述操作环境和性能目标),需求分析的步骤,当前系统,目标系统,物理模型,逻辑模型,逻辑模型,物理模型,模型化,抽象化,具体化,实例化,怎么做,做什么,当前系统
18、,目标系统,需求定义,需求分析过程示意,学生,(1) 通过对现实环境的调查, 获得当前系统的物理模型,学生,购书申请,购书单,发票,领书单,书,107张,教务科,206王,会计室,206李,出纳员,303赵,教材科,学生购买教材的物理模型,需求分析过程示意,(2) 去掉具体模型中的非本质因素, 抽象出当前系统的逻辑模型,学生购买教材的逻辑模型,学生,学生,购书申请,购书单,发票,领书单,书,审查有效性,开发票,开领书单,发书,需求分析过程示意,(3) 分析当前系统与目标系统的差别, 建立目标系统的逻辑模型,计算机售书系统的逻辑模型,学生,学生,购书单,发票,领书单,审查并开发票,开领,书单,无
19、效书单,需求分析过程示意-计算机售书系统的逻辑模型,(1) 通过对现实环境的调查, 获得当前系统的物理模型,(2) 去掉具体模型中的非本质因素, 抽象出当前系统的逻辑模型,(3) 分析当前系统与目标系统的差别,建立目标系统的逻辑模型,需求分析的方法,结构化分析(传统建模方法)面向对象分析,计算机世界,现实世界,影射,计算机世界,现实世界,结构化开发方法,结构化分析,结构化设计,结构化编程,OOA,OOD,OOP,面向对象开发方法,3.2.2 结构化分析方法,一、 结构化分析方法(Structure Analysis-SA)1. 定义: 是面向数据流进行需求分析的方法,采用自顶向下,逐层分解,建
20、立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。,办理取款手续的数据流图,通过对用户的调查,以软件的需求为线索, 获取当前系统的具体模型,去掉具体模型中非本质因素,抽象出当前系统的逻辑模型,根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型,完善目标系统并补充细节,写出目标系统的软件需求规格说明,结构化分析的主要步骤,二、结构化分析方法使用的常用工具,数据流图(DFDData Flow Diagram ) 数据字典(DDData Dictionary) 判定树 判定表,3.2.2 结构化分析方法,1. 数据流图(DFDData Flow Diagram
21、) (1)作用: 从数据传递和加工的角度,在需求分析阶段以图形的方式描述数据流从输入到输出的移动变换过程, 为系统建立逻辑模型。,储户,检验,付款,登录,存折,帐卡,取款信息,办理取款手续的 DFD 图,检验不合格,现款,付款信息,取款单,存折,注意,数据流图与程序流程图中的箭头表示的内容相同么?,数据流图中的箭头表示的是数据流。程序流程图中的箭头表示的是控制流。,两者有本质不同,不要混淆,1. 数据流图(DFDData Flow Diagram ) (1)作用:,二、结构化分析方法使用的常用工具,3.2.2 结构化分析方法,(2)数据流图中的基本图形符号意义,数据加工: 转换数据流的处理过程
22、,外部实体:表示数据的源点或终点, 即系 统外部的实体。,数据流: 在转换之间有向流动的数据项或数据 集合,数据存储文件: 可以是数据库文件或 任何形式的数据组织。,箭头:箭头向内则表示写入文件或查询文件.箭头向外则表示从文件中读取数据或得到查询结果.,(2)数据流图中的基本图形符号意义,数据流与数据加工之间的关系,数据流图的层次结构,为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是
23、系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。,分层的数据流图,基于计算机的系统,输入信息,输出信息,外部实体,外部实体,外部实体,输入信息,外部实体,外部实体,输出信息,输出信息,建立数据流图的步骤,第1步:由外向里:先画系统的输入输出,然后画 系统的内部第2步:自顶向下:顺序完成顶层、中间层、底层 数据流图第3步:逐层分解,结构化分析方法步骤示例,商店业务处理系统,首先确定系统的输入和输出 根据商店业务,画出顶层数据流图,以反映最主要业务处理流程,结构化分析方法步骤示例,商店业务处理系统,顶层数据
24、流图,结构化分析方法步骤示例,商店业务处理系统,经过分析,商店业务处理的主要功能应当有销售、采购、会计三大项。主要数据流输入的源点和输出终点是顾客和供应商。 然后从输入端开始,根据商店业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数据流图,第一层数据流图,加细每一个加工框 销售细化,采购细化, 考务处理系统功能,(1)对考生送来的报名单进行检查;(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;(4)制作考生通知单(含成绩及合格/不合格标志)送给考生;(5)按地区进
25、行成绩分类统计和试题难度分析,产生统计分析表。,考务处理系统的分层DFD,顶层数据流图,考生,考务处理系统,考试中心,阅卷站,不合格报名单,报名单,准考证,考生通知单,成绩清单,合格标准,错误成绩清单,考生名单,统计分析表,(1)对考生送来的报名单进行检查;(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;,(4)制作考生通知单(含成绩及合格/不合格标志)送给考生;(5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。,登记报名单,报名单,准考证,1,统计成绩,2,不合格报名单,
26、考生通知单,成,统计分析表,1层数据流图,考生名册,绩,清,单,合格标准,考生名单,成,绩,清,单,错,误,2层数据流图 (a),检查报名单,报名单,准考证,1.1,编准考证号,1.2,不合格报名单,考生名册,考生名单,合格报名单,登记考生,1.3,2层数据流图 (b),检查成绩清单,2.1,审定合格者,2.2,考生名册,正确成绩清单,制作通知单,2.3,分析统计成绩,2.4,分析试题难度,2.5,试题得分清单,考生通知单,难度分析表,合格标准,分类统计表,成绩清单,错误成绩清单,经审定的成绩清单,2. 数据字典(1)定义 是所有与系统相关的数据元素的一个有组织的列表,以及精确、严格的详细定义
27、。(2)作用 对DFD中出现的被命名的图形元素的确切解释,数据词典与数据流图配合,能清楚地表达数据处理的要求。,二、结构化分析方法使用的常用工具,3.2.2 结构化分析方法,2. 数据字典,二、结构化分析方法使用的常用工具,3.2.2 结构化分析方法,(3)数据字典的组成 数据项:是数据的最小单位; 数据结构:是若干数据项的有意义的集合; 数据流:可以是数据项,也可以是数据结构,表示某一个处理过程的输入或输出; 数据存储:处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件。 处理过程:,(4) 数据字典定义符号,=,被定义为,+,与, ,x=a+b,则表示 x 由 a 和 b 组成,x
28、=a,b,则表示 x 由 a 或由 b 组成, ,或,重复,x=a,则表示 x 由 0个或多个a 组成,( ),可选,表示在两个 * 之间的内容为词条的注释,m n,重复,x=3a8,则表示x中至少出现3次a ,最多出现8次,*,注释符,x=(a),则表示a 在x 中出现, 也可不出现,x=1.9 (x可取1到9中任意一个值),.,连接符,某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。,标识符=字母字符+字母数字串字母数字串=0字母或数字7字母或数字=字母字符,数字字符,数据字典中定义数据例:,例:若
29、数据流图中有“员工登记单”数据存储文件,则在数据字典中此条目可描述为: 员工登记单员工编号姓名职务聘用日期 员工编号“0001”.“9999” 姓名1字母8 职务5字母20 聘用日期年+月+日 年“00”.“99” 月“01”.“12” 日“01”.“31”,3. 判定树 使用判定树进行描述时, 应分清哪些是判定的条件,哪些是判定的结论,并找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。优点:更加直观,易于理解和使用,二、结构化分析方法使用的常用工具,3.2.2 结构化分析方法,检查发货单,金额$500,金额$500,欠款60天,不发出批准书,欠款60天,发货单,发出批准书
30、、,欠款60天,发出批准书、,发货单及赊欠报告,欠款60天,发出批准书、,发货单,以“检查发货单”为例,用判定树表示计算行李费的算法,4 .判定表(1) 使用条件: 当数据流图中的加工要依赖于多个逻辑条件的取值时(该加工的一组动作是由于某一组条件取值的组合而引发的),使用判定表描述比较适宜.,二、结构化分析方法使用的常用工具,3.2.2 结构化分析方法,(2) 判定表的组成(四部分):,基本条件: 各种可能的条件 条件项: 各种可能的条件组合 基本动作: 所有的操作 动作项: 对应的条件组合下所选的操作,以“检查发货单”为例,某学校对教职工拟定奖励策略如下:(1)高级职称且教学评估优秀的奖励1
31、000元,教学效果评估合格的奖励800元;(2)中级职称且教学评估优秀的奖励800元,教学效果评估合格的奖励500元;(3)初级职称且教学评估优秀的奖励500元。要求画出奖励策略的判断表。,举例,3.2.2 结构化分析方法补充习题讲解,1. 在软件生命周期中,能准确地确定软件系统必须 做什么和必须具备哪些功能的阶段是( ) A.概要设计 B.详细设计 C.可行性研究 D.需求分析2. 需求分析阶段的任务是确定( ) A.软件开发方法 B. 软件开发工具 C.软件开发费用 D.软件系统功能3.软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及_A. 阶段性报告
32、B. 需求评审 C. 总结 D. 都不正确4. 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是_。 A. 可行性分析 B. 需求分析 C. 详细设计D. 程序编码,DDBB 2.分析:A:概要设计阶段 B 实现阶段 C 在可行性研究阶段,5. 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。 A. 控制流 B. 加工 C. 数据存储 D. 源和潭6. 下列工具中属于需求分析常用工具的是_。 A. PAD B. PFD C. N-S D. DFD7. 数据字典是对数据定义信息的集合,它所定义的对象都包含在
33、()。A.程序框图 B.数据流图 C.软件结构 D.方框图8 下列不属于结构化分析的常用工具的是_。 A. 数据流图 B. 数据字典 C. 判定树 D. PAD图,答案:ADB 5. 分析 有数据流,没有控制流 6.分析:PAD(问题分析图)、PFC(程序流程图)、N-S图是详细设计阶段的设计工具参考教材P21 8. D,9. 在数据流图(DFD)中,带有名字的箭头表示_ A. 控制程序的执行顺序 B. 模块之间的调用关系 C. 数据的流向 D. 程序的组成成分10. 结构化分析方法的一个重要思想是_. A. 自顶向下,逐层抽象 B.自底向上,逐层抽 C. 自顶向下,逐层分解 D.自底向上,逐
34、层分解11. 数据字典是各类数据描述的集合,它通常包括5个部分, 即:数据项、数据结构、数据流、_和处理过程。,9. C 10.C 数据存储,1. 定义: 软件需求规格说明书(SRS,Software Requirement Specmcation)是需求分析阶段的最后成果,软件开发的重要文档之一。它对所开发的软件的功能、性能、用户界面及运行环境等进行详细说明。 2. 作用:便于用户与开发人员进行理解与交流;反映出问题的结构,可以作为软件开发的基础和依据;作为测试和验收的依据。 3. 特点: 正确而无歧义性,简明易懂,可修改性,可验证性等。,3.2.3 软件需求规格说明书,主要包括以下的内容:
35、,SRS,对软件系统所必须解决的问题作出详细说明。,描述为解决用户问题所需要的每一项功能的过程细节。,说明系统应达到的性能(运行时间、内存容量等、测试种类)。,包括与该软件有关的全部参考文献。,列表数据、算法的详细说明、框图、图表和其他材料。,从系统的角度描述软件的目标和任务。,1.下列叙述中,不属于软件需求规格说明书的作用是()。 . 便于用户与开发人员进行理解与交流; B. 反映出问题的结构,可以作为软件开发的基础 和依据; C. 作为测试和验收的依据。 . 便于开发人员进行需求分析2. 需求分析阶段的最后成果是_,是软件开发的重 要文档之一。3. 软件需求规格说明书缩写是_.,1. D软
36、件需求规格说明书是需求分析阶段的第3步,在第2步需求分析的后面2. 软件需求规格说明书 (注意本题也有可能填前一部分的需求分析)3. SRS,3.3 结构化设计方法,3.3.1 软件设计过程及原则,软件需求:解决“做什么”,软件设计:解决“怎么做”,软件设计的任务:,映射,问题结构(软件需求),软件结构,从软件需求规格说明书出发,形成软件的具体设计方案。(根据需求分析阶段确定的功能确定模块及每个模块算法和编写具体的代码),3.3 结构化设计方法3.3.1 软件设计过程及原则,一、软件设计内容 软件设计定义:软件设计是把软件需求(定义阶段)转换为软件的具体设计方案,即划分模块结构的过程,是软件开
37、发阶段最重要的步骤。,软件设计划分,3.3 结构化设计方法,3.3.1 软件设计过程及原则,一般过程: 是一个迭代过程,先进行高层次结构设计;再进行低层次过程设计;穿插数据设计和接口设计。,软件设计过程:,编码,测试,设计,- 软件开发阶段的信息流,3.3 结构化设计方法,3.3.1 软件设计过程及原则,3.3 结构化设计方法,二、软件设计原则,3.3.1 软件设计过程及原则,为了开发出高质量低成本的软件,在软件开发过程中必须遵循下列软件工程原则:,1.抽象(abstraction) 抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象的办法可以控制软件开发过程的复杂性,有利于软件的可
38、理解性和开发过程的管理。,2.信息隐藏(informationhiding) 信息隐蔽:采用封装技术,将程序模块的实现细节(过程或数据)隐藏起来,对于不需要这些信息的其它模块来说是不能访问的,使模块接口尽量简单。按照信息隐藏的原则,系统中的模块应设计成“黑箱”,模块外部只能使用模块接口说明中给出的信息,如操作、数据类型等等。,3.模块化(modularity) 使程序有许多个逻辑上相对独立的模块组成。模块(module)是程序中逻辑上相对独立的单元;模块的大小要适中;高内聚、低耦合。*,学生成绩管理,系统的模块化设计,抽象出的本质特征是录入,抽象出的本质特征是统计,顶层模块主要功能成绩管理,底
39、层模块,完成具体的功能,逐步求精,自顶向下,4.一致性(consistency)整个软件系统(包括文档和程序)的各个模块均应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与硬件接口应保持一致;系统规格说明与系统行为应保持一致;实现一致性需要良好的软件设计工具(如数据字典、数据库、文档自动生成与一致性检查工具等等)、设计方法和编码风格的支持。,1.信息隐蔽的概念与下述哪一种概念直接相关_。 A. 软件结构定义 B. 模块独立性 C. 模块类型划分D. 模拟耦合度 2. 下面不属于软件设计原则的是_。 A. 抽象 B. 模块化 C. 自底向上 D. 信息隐蔽3. 为了使模块尽可能独立,要
40、求_。(05年 4 月) A) 模块的内聚程度要尽量高,且各模块间的耦合程度 要尽量强 B) 模块的内聚程度要尽量高,且各模块间的耦合程度 要尽量弱 C) 模块的内聚程度要尽量低,且各模块间的耦合程度 要尽量弱 D) 模块的内聚程度要尽量低,且各模块间的耦合程度 要尽量强,BCB,4. 下列描述中正确的是_。(05年 4月) A) 程序就是软件 B)软件开发不受计算机系统的限制 C) 软件既是逻辑实体,又是物理实体 D) 软件是程序、数据与相关文档的集合5. 两个或两个以上模块之间关联的紧密程度称为 A)耦合度 B)内聚度 C)复杂度 D)数据传输特性,DA,3.3.2 结构化设计方法,1.
41、软件设计的方法: 开发阶段设计软件时所使用的方法,注意区别:结构化分析方法是定义阶段需求分析过程中所使用的方法。,2. 软件设计的方法的种类:,结构化设计方法面向对象的设计方法,3.3.2 结构化设计方法,3. 结构化设计方法(SD- Structured Design) 结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础发展起来的。,基本思想: 将软件设计成由相对独立且具有单一功能的模块组成的结构 ,分为概要设计和详细设计两个阶段.,结构化设计过程的概要设计阶段的描述工具是: 结构图 (SC- Structure Chart ),概要设计也称为结构设计或总体设计,主要
42、任务是把系统的功能需求分配给软件结构,形成软件的模块结构图,如图,3.3.2 结构化设计方法,3.3.2 结构化设计方法,概要设计的基本任务设计软件系统结构: 划分功能模块,确定模块间调用关系。数据结构及数据库设计: 实现需求定义和规格说明过程中提出的数据对象的逻辑表示。编写概要设计文档 包括概要设计说明书、数据库设计说明书,集成测试计划等。 概要设计文档评审: 对设计方案是否完整实现需求分析中规定的功能、性能的要求,设计方案的可行性等进行评审。,结构化设计的目的,使程序的结构尽可能反映要解决的问题的结构,结构化设计的任务,把需求分析得到的数据流图DFD等变换为系统结构图(SC)。,结构化设计
43、的目的与任务,3.3.2 结构化设计方法,1. 在结构化方法中,软件功能分解属于下列软件开发中的阶段是_。 A. 详细设计 B. 需求分析 C. 总体设计 D. 编程调试从工程管理角度,软件设计一般分为两步完成,它 们是_。 (06.9月等级) A. 概要设计与详细设计 B. 数据设计与接口设计 C. 软件结构设计与数据设计 D. 过程设计与数据设计3. 下列选项中不属于软件生命周期开发阶段任务的是() . 软件测试 . 概要设计 . 软件维护 .详细设计,CAC 1.分析:开发阶段的功能分解是在概要设计阶段完成的,而概要设计又称为结构设计或总体设计, 选C.,4. 概要设计工具- 结构图(SC: Structure Chart ),作用:软件结构概要设计阶段的工具。反映系统的功能实现以及模块与模块之间的联系与通信,即反映了系统的总体结构。,3.3.2 结构化设计方法,目标系统的DFD,目标系统的SC,注意:数据流DFD是软件生命周期的定义阶段中的需求分析方法中结构化分析方法的一种,此外还有数据字典(DD)、判定树和判定表,而SC是开发阶段中概要设计使用的方法。,