程序设计与软件开发——数据结构(5)
软件系统开发技术模拟题参考答案

软件系统开发技术试题(一)答案一、单项选择题(本大题共10小题,每小题1分,共10分)1. 设计软件结构一般不拟定( D )A.模块之间的接口B.模块间的调用关系C. 模块的功能D. 模块内的局部数据2. 软件结构化设计中,好的软件结构应当力求做到(BA.顶层扇出较少,中间扇出较高,底层模块低扇入B.顶层扇出较高中间扇出较少,底层模块高扇入C. 顶层扇入较少,中间扇出较高底层模块高扇入D. 顶层扇入较少,中间扇入较高,底层模块低扇入3. 两个模块都使用同一张数据表,模块间的这种耦合称为(AA.公共耦合C. 数据耦合B.内容耦合D. 控制耦合4. 划分模块时,下列说法对的的是(A )A.作用范围应在其控制范围之内B.控制范围应在其作用范围之内C. 作用范围与控制范围互不包含D. 作用范围与控制范围不受限制5. 重用率高的模块在软件结构图中的特性是(BA.扇出数大B.扇入数大C. 扇出数小D. 内聚性高6. 面向对象建模得到的三个模型,其中核心的模型是(A)A.对象模型C. 逻辑模型B.功能模型D. 动态模型7. 从结构化的瀑布模型看,在软件生存周期的几个阶段中,对软件的影响最大是(CA.具体设计阶段B.概要设计阶段C. 需求分析阶段D. 测试和运营阶段8. 对U ML的叙述不对的的是( D )A.U ML统一了B ooch方法、OMT方法、OO SE方法的表达方法。
B.U ML是一种定义良好、易千表达、功能强大且普遍合用的建模语言。
C. U ML融入了软件工程领域的新思想、新方法和新技术。
D. U ML仅限千支持面向对象的分析与设计,不支持其它的软件开发过程。
9. 以下哪个软件生存周期模型是一种风险驱动的模型( C )A.瀑布模型C. 螺旋模型B.增量模型D.喷泉模型10. 以下哪一项对模块耦合性没有影响( DA.模块间接口的复杂限度B.调用模块的方式C. 通过接口的信息D. 模块内部各个元素彼此之间的紧密结合限度二、填空题(本大题共10小题,每空2分,共20分)1. 数据流图描绘数据在系统中流动和解决的过程。
计算机二级【公共基础知识】软件工程基础【2024版】

(2)数据字典是结构化分析方法的核心,定义
了数据流图中每一个图形元素,使得用户和系 统分析员对于输入、输出、存储成分和中间结 果有共同的理解。
5.软件需求规格说明书
是需求分析的最后结果,是软件开发中重要的文档之一。 软件需求规格说明书的特点: (1)正确性; (2)无岐义性(最重要) ; (3)完整性; (4)可验证性; (5)一致性; (6)可理解性; (7)可追踪性。
软件生命周期是指软件产品从提出、实现、使
用维护到停止使用退役的过程。
3.软件生命周期:软件产品从提出、实现、使用
维护到停止使用退役的过程。包括软件定义、 软件开发、运行维护,主要活动阶段是:
(1)可行性研究与计划制定; (2)需求分析; (3)软件设计; (4)软件实现; (5)软件测试; (6)运行和维护。
答案:D
例题:
软件工程的出现是由于 A)程序设计方法学的影响 B)软件产业化的需要 C)软件危机的出现 D)计算机的发展
答案:C
例题:
软件设计中,有利于提高模块独立性的一个准 则是
A)低内聚低耦合 B)低内聚高耦合 C)高内聚低耦合 D)高内聚高耦合
答案:C
例题:
下列不属于结构化分析的常用工具的是 A)数据流图 B)数据字典 C)判定树 D)PAD图
3.4软件测试
软件测试的指用人工或自动手段来运行或测定
某个系统的过程,其目的在于检验它是否满足 规定的需求或是弄清预期结果与实际结果之间
的差别。简单地说,软件测试的目的是尽可能 多地发现程序中的错误。
考点2:软件测试方法
按是否要执行被测试软件的角度分为:静态测 试和动态测试。
静态测试包括代码检查、静态结构分析、代码 质量度量。不实际运行软件,主要通过人工进 行。
数据结构课程设计——报告(样例)

《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期:秋班号:学号:姓名:成绩:哈尔滨华德学院电子与信息工程学院年月一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于字).数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(语言),自行实现一个较为完整的应用系统。
.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
具体的有:()熟练掌握链表存储结构及其建立过程和常用操作;()熟练掌握队列的建立过程和常用操作;()学会自己调试程序的方法并掌握一定的技巧。
(二)题目要求(不少于字).每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级,或)以及等候替补的客户名单(包括姓名和所需数量)。
.系统能实现的操作和功能如下:()查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;()承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;()承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
二、实训环境配置系统三、设计正文.需求分析。
程序设计基础

第二章程序设计基础2.1程序设计方法与风格程序设计是一门艺术,需要相应的理论、技术、方法和工具来支持。
就程序设计方法和技术的发展而言,主要经过了结构化程序设计和面向对象程序设计阶段。
除了好的程序设计方法和技术外,程序设计风格也是很重要的。
因为程序设计风格会深刻地影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此程序设计风格对保证程序的质量是很重要的。
一般来说,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。
程序是由人来编写的,为了测试和维护程序,往往还要阅读和跟踪程序,因此程序设计的风格总体而言应该强调简单和清晰,程序必须是可理解的。
可以认为,著名的“清晰第一,效率第二”的论点已成为当今主导程序设计风格。
要形成良好的程序设计风格,主要应注重和考虑下述一些因素。
1、源程序文档化源程序文档化应考虑如下几点:(1)符号名的命名:符号名的命名应具有一定实际意义,以便于对程序功能的理解。
(2)程序注释:正确的注释能够帮助读者理解程序。
注释一般包括序言性注释和功能性注释。
序言性注释通常位于每个程序的开头部分,它给出程序的整体说明,主要描述内容包括:程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。
功能性注释的位置一般嵌在源程序体之中,主要描述其后的语句或程序做什么。
(3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。
2、数据说明的方法在编写程序时,需要注意数据说明的风格,以便使程序中的数据说明更易于理解和维护。
一般应注意以下几点:(1)数据说明的次序规范化。
鉴于程序理解、阅读和维护的需要,使数据说明次序固定,可以使数据的属性容易查找,也有利于测试、排错和维护。
(2)说明语句中变量安排有序化。
当一个说明语句说明多个变量时,变量按字母顺序排列为好。
(3)使用注释来说明复杂数据的结构。
软件工程导论知识点

软件工程导论知识点软件是程序、数据及相关文档的完整集合。
其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
开发软件时,对于提高软件开发人员工作效率至关重要的是开发程序人员数量。
软件工程中描述软件生存周期的瀑布类型一般包括计划、需求分析、设计、编码、测试、维护等几个阶段。
其中,设计阶段在治理上可以依次分成概要设计和详细设计两个步骤。
在结构化的分析方法中,用以表达系统内数据的运行情况的工具有数据流图。
在结构化的分析方法中,用实体关系图表达系统中的对象及其进展,在实体关系图中,表达对象和实体关系之间的关联有三种类型:一对一联系,一对多联系,多对多联系。
软件需求分析的任务,不应包括结构化程序设计,进行需求分析可使用多种工具,但判定表是不适用的,在需求分析中,分析员要从用户那里解决的最重要的问题是要让软件做什么。
规格说明书的内容不应当包括对算法详细功能性描述,该文档在开发中具有重要的作用,但其作用不应包括软件可行性分析的依据。
原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于需求不确定性高的系统,它从用户界面的开发入手,首先形成系统界面原型,用户运行用户界面原型,并就同意什么和不同意什么提出意见。
一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。
一组语句在程序中多处出现,为了节省内存空间,把这些语句放在一个模块中,该模块的内聚性是偶然内聚的。
将几个逻辑上相似的成份,放在同一个模块中,通过模块入口的一个推断决定执行哪一个功能,该模块的内聚性是逻辑内聚的。
模块中所有成份引用共同的数据,该模块的内聚性是通信内聚的。
模块内的某成份的输出是另一些成份的输入,该模块的内聚性是顺序内聚的。
模块中所有成份结合起来完成一项任务,该模块的内聚是功能内聚。
模块化程序设计:1.便于由多人分工编制大型程序。
2.软件功能易于扩充。
第4章 详细设计(4.5-4.6)

武汉纺织大学数学与计算机学院
三层应用体系结构模型图
武汉纺织大学数学与计算机学院
三层应用体系结构 用户层 用户层用于向用户显示系统中的数据允许用户输入和编辑数 据。 业务层 业务层用于执行业务和制定数据规则。业务层为用户提供服 务,不与任何特定的用户捆绑在一起,而面向所有的应用。业务 层不应该知道它所操纵数据是如何存储和位置,业务层不依赖于 数据层的数据存取服务完成实际的数据存取操作。 数据层 在数据层,数据存储子层通常就是某个或某些数据库管理系 统用来对数据库进行实质性的存储、检索和更新操作。 某个或某些数据系统的一部分不是以数据库形式而是以文件 或其他形式实现,可以实现对文件等进行实质性的存储、检索和 更新操作。
武汉纺织大学数学与计算机学院
组件技术的特点
真正的软件重用和高度的互操作性 接口的可靠性 可扩充服务 具有强有力的基础设施 具有构建和胶合组件的工具
武汉纺织大学数学与计算机学院
4.6.1 三层应用体系结构
应用体系结构是软件系统组织的一些重要决 策,它是软件体系结构的一个概念性表示 选择组成系统的结构元素和接口; 由这些元素之间的协作决定的系统的行为; 将这些元素和行为组合成更大的子系统; 指导系统组织的体系结构模式;
武汉纺织大学数学与计算机学院
CORBA定义了一系列API,通信协议和服务使得异 构的应用程序能够互相操作,这些应用程序用不 同的程序语言编写,运行在不同的平台上。是真 正跨平台的,平台独立性。它通过一种叫IDL (Interface Definition Language)的接口定义 语言,能做到语言无关。也就是说,任何语言都 能制作CORBA组件,而CORBA组件能在任何语言下 使用。 CORBA为这些定义明确的程序提供了平台和位置的 透明性,这些程序是分布式计算平台的基础。 CORBA一种异构平台下的语言无关的对象互操作模 型。
数据结构基础
else { // a[k],…,a[n-1] 的排列大于1,递归生成 for ( i = k; i < n; i++) { char temp = a[k]; a[k] = a[i]; a[i] = temp; // 交换a[k] // 和 a[i] perm(a,k+1,n); // 生成 a[k+1],…,a[n-1]的全排列 temp = a[k]; a[k] = a[i]; a[i] = temp; // 再次交换 a[k] 和 // a[i] , 恢复原顺序 } } // else结束 } // per句的程序步数详见教科书。
• 可以通过列出各个语句的程序步数确定整个程序 的程序步数。 例1.5 程序sum:
1 float sum (float *a, const int n) { 2 float s = 0; 3 for (int i = 0; i < n; i++) 4 s += a[i]; 5 return s; 6}
14
• 程序和算法不同,程序可以不满足有限性。例 如,一个软件的总控程序在未接受新的任务之前 一直处于“等待”循环中。
• 实现数据结构操作的程序总是可结束的,因此, 后面将不再严格区分算法和程序这两个术语。 • 必须保证指令的有效性,例如,指令“if (哥德 巴赫猜想是真)then x = y;”是无效的。
通过调用perm(a, 0, n),可以生成n个元素的全 排列。
22
用n = 3 和 a[0..2] = (a, b, c)调用perm的示意如下:
23
• 当算法操作的数据结构是递归定义的时候也适合 使用递归。后面将有许多此类的重要例子。
作业:P25—5,6
软件工程导论第五版复习资料全
软件危机的表现
1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个
数量级、 实际进度比计划进度拖延几个月甚至几年的现象,
从而降低了开发商的信誉, 引起
用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作
读输入
计算最佳解
编辑结果
编辑输入
输出结果
解 格式化 的解
结果格式化
格式化 的解
显示结果
.专业 .整理 .
下载可编辑
M
M
A
B
A
B
C
a.选择调用
b.循环调用
7、面向数据流的设计方法 变换分析
变换分析是一系列设计步骤的总称, 确定的模式映射成软件结构。
经过这些步骤把具有变换流特点的数据流图按预先
1)重画数据流图;确定其具有变换流特征。
设: i 表示年利率,现在存入 P 元, n 年后的价值为 F 元,
则有:
F=P
(1 + i )n
如果 n 年后能收入 F 元,这些钱折算成现在的价值称为折现值,折现公式为:
P=F/
(1 + i )n
2)纯收入。 是指在整个生存周期系统的累计收入的折现值
PT 与总成本折现值 S T 之差,
以 T 表示,则有:
3)深度、宽度、扇出和扇入都应适当
4)模块的作用围应在控制围之
5)力争降低模块接口的复杂程度 6)设计单入口单出口的模块
7)模块功能应该可以预测
6、描绘软件结构的图形工具(层次图、 HIPO 图、结构图)
软件工程第4章概要设计
通常,通信内聚模块是通过数据流图来定义的。
5.通信内聚(2)
6.功能内聚
一个模块中各个部分都是完成某一具体功能 必不可少的组成部分 或者说该模块中所有部分都是为了完成一项 具体功能而协同工作,紧密联系,不可分割 的 软件结构中应多使用功能内聚类型的模块
内聚类型汇总
5.标记耦合
如果一组模块通过参数表传递信息 这个参数是: 数据结构 字符串 记录 不是简单变量
标记耦合举例 计算水电费
住户情况
计算水费
水费
住户情况
电费
计算电费
“住户情况”是一个数据结构,图中模块都 与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.
4.2.2 软件结构风格与策略
1.软件结构风格取决于 程序的模块结构表明了程序各个模块的 组织情况,是软件的过程表示 数据的结构表明各个数据之间的关系和 各个数据元素的约束,是软件的信息表 示
2.软件结构的独立性风格
(1).独立性 软件系统中每个模块只涉及软件要求的 具体的子功能, 而和软件系统中其它的 模块的接口是简单的 一个模块和其它模块的独立程度是评价 一个模块设计好坏的重要度量尺度。
例如初始化模块和终止模块。
4.过程内聚
一个模块内部的处理成分是相关的,而且这些处 理必须以特定的次序执行
函数A 函数B 函数C
例如,把流程结构中的循环部分、判定部分、计 算部分分成一个模块,这三个任务组成的模块是 过程内聚模块。
5.通信内聚
如果一个模块内各功能部分都使用了相同的输入数 据,或产生了相同的输出数据,则称之为通信内聚 模块。
数据结构、算法和程序之间关系分析
数据结构、算法和程序之间关系分析作者:范玉红来源:《中国新通信》 2017年第18期一、数据结构的研究内容1、数据结构的概念。
随着软件技术的发展,数据结构与算法已经成为软件开发工程师必备的程序设计是数据结构的基础和实现方法。
数据是人们将文字符号、数字符号和其他规定符号表述为现实中发生的事情和产生的活动的一种描述。
在生活中,我们所使用的文字和数字来表示我们的世界,例如商品的价格会用货币数量来表示。
在计算机的世界里,数据就扮演了这个角色,将数据输入到电脑中,电脑就能自动的识别信息,完成工作。
数据结构相对于数据来说是表述数据之间的关系的一种集合,数据结构完全可以只讲数据的存储方法和算法的逻辑逻辑过程,可以不涉及具体实现过程,在实现一种数据的存储和一个算法的求解过程时。
数据结构在应用中,可以选择应用不同的程序设计语言来达到目的,同一个算法,既可以使用VB 实现,也可以选择C、C++、JAVA、或者C# 来实现,而在选定某一工具来实现算法时,程序设计的具体指令和方法是由所选择的程序设计语言的语法决定。
2、数据结构的分类。
在进行数据结构研究时,一般来说包括下面的几个部分:1)数据元素间的逻辑关系;2)数据元素的储存关系;3)数据元素的储存方式;4)数据结构上的运算方法。
在数据结构中,较为常见的结构有集合、线性结构、树形结构、图形结构几种,常见的数据储存结构有顺序存储结构、索引存储结构等等。
二、算法分析1、算法的意义。
算法是研究实际问题中按照一定的编写步骤得到结果的过程,一般来说分为有解和无解两种结果形式,算法在计算机技术中占有重要的地位,是计算机解决问题时必不可少的过程。
当我们进行某个实际问题的计算时,通过计算机进行对实际问题的解决办法、解决思路的理清,需要通过算法来进一步实现。
在解决问题时,算法中包含的等待执行的命令和运算过程是解决问题的基本,计算机在进行计算时通过对算法中各步骤的要求遵循算法的计算过程和方法,计算机不需要对操作进行理解就能够实现解决问题得出相应的结果。