- 到目前为止,软件生产的发展阶段经过了三个阶段,即 程序设计时代、程序系统时代、软件工程时代。
- 软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。在软件开发技术方面,主要研究 软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理方面,主要研究 软件管理学、软件经济学、软件心理学。
- 软件工程过程包括了 开发过程、管理过程、供应过程、获取过程、操作过程、维护过程、支持过程。
- 喷泉模型是一种以 用户需求 为动力,以 对象 作为驱动的模型,适合于 面向对象 的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型在开发过程中具有 迭代性 和无间隙性。
- 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内分为如下四个工作步骤。
第一步:制定计划,确定目标,选定实施方案,明确开发限制条件。
第二步:风险分析,分析所选方案,识别风险,通过原型消除风险。
第三步:开发实施,实施软件开发。
第四步:用户评估,评价开发工作,提出修改意见,建立下一个周期的计划。
- 可行性研究需要从 经济可行性、技术可行性、社会可行性、操作可行性 四个方面分析研究每种解决方法的可行性。
- 社会可行性所涉及的范围包括 合同、责任、侵权、用户组织的管理模式及规范和其他一些技术人员常常不了解的陷阱等。
- 典型的可行性研究有下列步骤:系统定义、对于现行系统进行分析研究、导出新系统的逻辑模型、设计方案、推荐可行的方案和编写可行性研究报告。
- 数据流图有四个基本部分:数据流、加工(又称为数据处理)、数据存储、数据的源点或终点。
- SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们的形成需求说明书中的重要组成部分,这些描述工具是 数据流图、数据字典、描述加工逻辑的结构化语言、判定表、判定树。
- 数据字典就是用来定义数据流图中的 各个成分的具体含义 的。它和数据流图共同构成了系统的 逻辑模型,是 需求说明书 的主要组成部分。
- 模板之间的相互关系主要由三种:并行的超状态间的关系、子模块、父模块之间的关系、模板(组件)同外部环境之间的交互。
- 软件结构的设计是以 模块 为基础,以需求分析的结果为依据,从实现的角度经进一步划分为 模块,并组成模块的层次结构。
- 软件设计是把一 软件需求 转换为 软件表示 的过程。包括总体设计和详细设计。
- 变换型DFD由 输入、变换(或称处理)、和输出三部分组成。
- 软件的生存周期由 软件的定义时期、软件的开发时期、软件的维护时期组成。
- 结构化方法由:结构化分析、结构化设计、结构化编程组成。
- 投资回收期:累计收回的经济效益等同于最初的投资费用所需的时间。
- 常见的软件概要设计方法有三大类:以数据流图为基础构造模块结构的 结构化设计方法 ,以数据结构为基础构造模块的 Jackson方法 ,以对象、类、继承和通信为基础的 面向对象设计方法。
- 实用的白盒测试覆盖技术有 4 种:语句覆盖、条件覆盖、分支 (或判定) 覆盖和组合覆盖。
- 传统软件维护一般分为 4 大类,分别是纠错性维护、适应性维护、完善性维护和预防性维护。
- 计算机软件的定义
软件是计算机运行所需要的各种程序和数据的总称,包括操作系统、汇编程序、编译程序、数据库、文字编辑以及维护使用手册等。软件是计算机系统的重要组成部分。
- 软件工程的原则
- 抽象
- 信息隐藏
- 局部性
- 完整性
- 一致性
- 模块化
- 可验证性
- 软件工程的七条基本原则
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采纳现代程序设计技术
- 结果应能清楚的审查
- 开发小组的人员应少而精
- 承认不断改进软件工程实践的必要性
- 作为系统分析员具备的能力
- 掌握抽象概念,并能把其整理为逻辑划分
- 有能弄清用户环境的能力
- 有从冲突或混沌中吸取恰当事实的能力
- 有用较好的书面或口头形式进行通信的能力
- 有把硬件和软件系统用于用户环境的能力
- 有”从树木见森林”的能力
- 结构化方法
结构化方法是分析、设计到实现都使用结构化思想的软件开发方法,实际上它是由三部分组成:结构化分析、结构化设计和结构化程序设计。它是一种实用的软件开发方法。
- 信息域
信息域是一个信息字或一组信息中的特定部分,信息域中的内容通常被作为一个整体来处理,它包括三种不同方面的数据和控制:信息内容、信息结构、信息流。每个方面都由计算机程序处理。
- 模块化具有以下基本属性
- 接口:指模块的输入与输出
- 功能:指模块实现什么有利的作用
- 逻辑:描述内部如何实现要求的功能及所需要的数据
- 状态:指该模块的运行环境,即模块的调用与被调用的关系
- 功能、状态、接口反映模块的外部特征,逻辑反映它的内部特征
- 软件生命周期的定义
软件生命周期是指一个软件从提出开发要求开始直到软件报废为止的整个时期。
- 过程抽象
过程抽象是指一个命名的指令序列,它具有特定的和受限的功能。
- 控制抽象
控制抽象是软件设计中的第三种抽象形式,控制抽象隐含了程序控制机制,而不必说明它的内部细节。
- Jackson方法
Jackson方法把问题分解为三种基本结构形式表示的各部分层次结构。这三种基本结构形式就是顺序、选择和重复。Jackson方法提出一种与数据结构层次图非常相似的数据结构表示法,并提出一组基于这种数据结构到程序结构的映射和转换过程。
- 软件危机的表现
- 对于软件开发的成本和进度的评估不准确。
- 开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。
- 开发的软件可靠性差。
- 软件没有适合的文档资料。
- 软件的可维护性差。
- 软件开发生产效率提高的速度远远跟不上计算机应用普及深入的趋势。
- 软件危机的原因
- 软件的规模日益庞大。
- 软件开发的管理困难。
- 软件本身的独有特点确实给开发和维护造成一些客观的困难。
- 软件开发和维护中的许多错误认识和方法的形成可以归结于计算机发展早期软件开发的个体化特点。
- 软件开发技术落后。
- 生产方式落后。
- 开发工具落后,生产效率提高缓慢。
- 软件开发方法
- 结构化方法
- Jackson方法
- 维也纳开发方法
- 面向对象的开发方法
- 软件生命周期模型
- 瀑布模型
- 原型模型
- 增量模型
- 螺旋模型
- 喷泉模型
- 变换模型
- 基于知识的模型
- 喷泉模型的优缺点
优点:喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
- 瀑布模型的优缺点
优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
缺点:1)开发过程一般不能逆转,否则代价太大;
2)实际的项目开发很难严格按该模型进行;
3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。
4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。
- 软件开发方法
软件开发方法是一种使用早已定义好是技术集及符号表示习惯组织软件生产过程的方法。
- 软件工程的定义
(1) 将系统的、规范的、可量化的工程化方法应用于软件的开发、运行和维护的过程;
(2) 及上述方法的研究。
- 以下活动中哪些是项目,哪些不是项目,并请说明理由。
(1)打字员打印文件不是项目,因为它只是一个简单的重复工作,没有明确的目标和计划。
(2)报考软件学院软件工程硕士生是一个项目,因为它有明确的目标和计划,需要完成特定是学术任务和研究。
(3)购买家用轿车不是项目,因为它是一个消费行为,没有明确目标和计划。
(4)每天骑车上班不是项目,因为它只是一个个人行为,没有明确的目标和计划,也不一定需要特定的资源和时间来完成。
(5)升级某政府部门的办公化系统是项目,因为它具有明确的目标和可衡量的成果,需要完成特定的任务和功能,通常需要进行规划、执行和监控。
- 软件评审的意义及其作用
- 提高软件质量:通过对软件进行评审,发现软件中的缺陷和问题,并及时进行修复,从而提高软件的质量,减少软件出现问题的概率。
- 降低软件成本:通过评审,可以发现一些不必要的功能货值不符合要求的需求,从而避免不必要的开发成本和时间成本。
- 提高开发效率:评审过程中可以发现一些代码问题或者设计问题,从而避免后续重复开发和修改,提高开发效率。
- 促进团队协作:评审过程中需要各个成员之间沟通和协作,从而促进团队成员之间的交流和合作,提高团队整体效率。
- 符合标准规范:评审过程中需要遵循一定的标准规范,从而保证软件的符合性和规范性,符合行业标准和法规要求。
- 总之,软件评审是一个非常重要的过程,它可以帮助我们提高软件的质量,降低成本,提高开发效率,促进团队协作,并且符合标准规范,是保证软件质量和项目成功的重要手段。
- 数据字典
eg1:某宾馆的电话服务如下:可以拨分机号和外线号。分机号从7201到7209;拨外线需要先按9,然后是市话号码或长话号码;长话号码是由区号和市话号码组成的;区号是44、55中任意一个号码;市话号码是由局号和分局号组成的;局号可以是455、466、888、552中任意一个号码;分局号是长度为4的数字串。请写出在数据字典中,电话号码的数据条目的定义及组成。
电话号码 = [分机号|外线号]
分机号 = [7201 | 7202 | 7203 | 7204 | 7205 | 7206 | 7207 | 7208 | 7209]
外线号 = 9+[市话号码|长话号码|]
长话号码 = 区号 + 市话号码
区号 = [44 | 55 ]
市话号码 = 局号 + 分局号
局号 = [455|466|888|552]
分局号 =4{数字}4
数字 =[0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
eg2:北京某高校可用的电话号码有以下几种分类:校内电话由4位数字组成,第一位数字不是0;校外的电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则借着拨8位数字(第一位不是0),若是外地电话则再拨3位区码再拨8位电话(第一位不是0)
用定义数据的办法定义上述电话号码:
电话号码 = [校内电话 | 校外电话]
校内电话 = 非零数字 + 3位数字
校外电话 = [本市号码 | 外地号码]
本市号码 = 数字0 + 8位数字
外地号码 = 数字0 + 3位数字 + 8位数字
非零数字 = [1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9]
数字0 = 0
3位数字 = 3 {数字}3
8位数字 = 非零数字 +=7位数字
7位数字 = 7{数字}7
数字 = [0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
34.白盒测试
语句覆盖 - 让被测对象中所有语句得到测试覆盖
判定覆盖 - 让被测对象中所有判定得到测试覆盖
条件覆盖 - 让被测对象中所有条件得到测试覆盖
路径覆盖 - 让被测对象中所有路径得到测试覆盖
例1、语句覆盖
int a,b;
double c;
if(a>0&&b>0)
c=c/a;
if(a>1||c>1)
c=c+1;
c=c+b;
- 流程图
a>0 and b>0 |
a>1 or c>1 |
c=b+c |
c=c/a |
c=c+1 |
2、路径和判断、语句
1. 路径
P1:(1-2-4) P2:(1-2-5) P3:(1-3-4) P4:(1-3-5)
2、判断
条件:M={a>0 and b>0} N={a>1 or c>1}
语句:0={c=c/a} P={c=c+1} Q={c=b+c}
语句覆盖测试表
例2:设计语句覆盖和分支覆盖
if(x>0 and y>0) then z=z/x end if
if(x>1 or z>1) then z=z+1 end if
z=y+z
语句覆盖 A=2,B=0
分支覆盖 A=2,B=0 A=0,B=0
例3:
void DoWork(int x,int y,int z)
{
int k=0,j=0;
if((x>3)&&(z<10))
{
k=x*y-1;
j=sqrt(k);
}
if((x==4)||(y>5))
{
j=x*y+10;
}
j=j%3;
}
k=0, j=0 |
x>3 and z<10 |
x=4 or y>5 |
k=x*y-1 j=sqrt(k) |
j=x*y+10 |
j=j%3 |
由这个流程图可以看出,该程序模块有4条不同的路径:
P1:(a-c-e) P2:(a-c-d) P3:(a-b-e) P4:(a-b-d)
将里面的判定条件和过程记录如下:
判定条件M={x>3 and z<10} 判定条件N={x=4 or y>5}
1、语句覆盖
2、判定覆盖
3、条件覆盖
对于M:x>3取真时T1,取假时F1; z<10取真时T2,取假时F2;
对于N:x=4取真时T3,取假时F3; y>5取真时T4,取假时F4。
条件:x>3,z<10,x=4,y>5 条件:x<=3,z>=10,x!=4,y<=5
根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示:
4、组合覆盖
条件组合 1) x>3,z<10 2) x>3,z>=10 3) x<=3,z<10 4) x<=3,z>=10
5) x=4,y>5 6) x=4,y<=5 7) x!=4,y>5 8) x!=4,y<=5
例4:起泡排序
#include<stdio.h>
main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<=9;j++)
{
for(i=0;i<10-j;i++)
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
temp=a[i] a[i]=a[i+1] a[i+1]=temp |
定义变量i,j,temp,a[10] |
i=0, j=0 |
输入要排序的一组元素 |
j<9 |
i<10-j |
a[i]>a[i+1] |
j=j+1 |
i=i+1 |
结束 |
语句覆盖
判定覆盖
条件覆盖
路径覆盖
35. 软件测试——程序控制流图、环形复杂度与独立路径
根据程序流程图,完成: (1) 画出相应的程序控制流图; (2) 给出控制流图的邻接矩阵; (3) 计算 McCabe 环形复杂度; (4) 找出程序的一个独立路径集合。
1. 画出相应的程序控制流图
3. 计算 McCabe 环形复杂度
一个程序模块的环路复杂度用来衡量模块中判定结构的复杂程度,数量上可以表现为程序控制流图中从开始点到终结点的独立路径条数,相当于合理预防错误所 需测试的最少路径条数。
计算方法:
- 单入单出程序控制流图 G 的 McCabe 环路复杂度计算公式: V(G) = m - n + 2p ◌ m 是 G 的边数目 ◌ n 是 G 的顶点数目 ◌ p 是 G 的连通分支数
- 简单程序控制流图是连通图,p = 1,此时: V(G) = m - n + 2
- G 是平面图时,由欧拉公式,V(G) = R。其中 R 是平面被控制流图划分成的区域数目 (包括外部面)。
- 对于简单的单入单出结构化模块,V(G) 值等于程序控制流图中的单条件判断节点的个数 +1。多条件判断条件可以先转化为单条件复合结构再应用本结论。
计算:
- 解1:图中 m = 10,n = 7,故 V(G) = m - n + 2 = 10 – 7 + 2 = 5
- 解2:图是平面的且有5个面,故 V(G) = 5
- 解3:图中有4个单条件判定节点1, 2, 4, 5, 故 V(G) = 4 + 1 = 5
4. 找出程序的一个独立路径集合
独立路径:至少沿一条新的边移动的路径。对所有独立路径的遍历使得程序 中的所有语句至少被执行一次。
5条独立的基本路径:
- 1-2-3-4-5-6-7
- 1-3-4-5-6-7
- 1-2-4-5-6-7
- 1-2-3-4-7
- 1-2-3-4-5-7
36. 数据流图
1.处理借书过程是:前台接待员接受读者交的索书单,首先查看读者记录进行读者鉴别,并存储借阅记录文件。然后由图书管理员查询图书文件,进行存书查询,如果图书未借出,交书库管理员向书库发出库单,并由书库管理员修改借阅记录文件和图书文件;如果图书已借出,向读者发图书有人借阅通知。
2.计算教师讲课费的过程是:各教研室交来课时统计表,先录入到讲课费存储文档,然后根据讲课费标准文件计算讲课费,再依据税率文件产生讲课费报表,并将税后讲课费计算结果返回讲课费存储文档,将报表送财务处,将讲课费明细表返回教研室。
3.某银行储蓄所存(取)款过程如下:储户将填好的存(取)单及存折送交分类处理处分类处理处,按三种不同情况分别处理。如果存折不符或存(取)单不合格,则将存折及存(取)单直接退还储户重新填写:如果是存款,则将存折及存款单送交存款处处理。存款处理处取出底账登记后,将存折退还给户;如果是取款则将存折及取款单送交取款处理处,该服务台取出底账及现金,记账后将存折与现金退给储户。从而完成存(取)款处理过程。试按此画出数据流程图。
4.已知订单处理的处理过程如下:验收订单。顾客发来订单后进行验收处理,将填写不清的订单和无法供应的订单退回顾客,将合格的订单送到下一“处理“。
确定发货量。査库存台账,根库存情况将订单分为两类,分别送至下一“处理”。开发货单、修改库存、记应收账和将订单存档。填写缺货订单。对未满足的订货填写缺货订单(即等有货后发货的发货单)。
对照缺货订单。接到采购部门到货通知后应对照缺货订单。如可发货,则执行开发货单和修改库存处理。
5.某商店为及时了解各种商品的销售库存情况,拟建立一个销售库存统计系统。采购商品入库时,仓库管理员及时输入入库量及入库金额;售货员售货时,即输入售货数和销售收入系统能使经理了解每种商品的日销售额,每周、每月的累计销售额和库存情况。请画此系统的顶层数据流程图(必须给图上所有成分命名)。
6.运动会成绩处理过程是接受项目裁判送来的比赛成绩单,使用项目文件和运动员文件,将成绩录入到比赛成绩文件。成绩询时根据运动员文件和比赛成绩文件产生项目比赛成绩,送大会秘书处绘制运动会成绩处理的数据流程图。
7.学生成绩管理的处理过程如下:教务处接收教师交来班级学生成绩单对照教学计划和学生名册进行核对。核对正确后登录学生成绩表从学生成绩表对成绩进行鉴定,确定补考和留级学生名单,将补考和留级学生名单交给学生所在院系办公室,将留级学生名单报学生处。画出处理的数据流程图。
8.教学管理的主要工作过程是:系办输入班级和教学时间,査看教学计划表,确定本学期教学任务。根据本学期教学任务,查看教师表制作开课任务书和班级教学计划表。査询时,教师输入教师姓名和时间,査询本人的教学任务,学生输入班级和时间,查询班级教学计划画出教学管理的数据流程图
- 软件生存周期一般可以划分为,问题定义、___可行性研究_________、__需求分析__________、设计、编码、测试和___维护_________。
- 基于软件的功能划分,软件可以划分成____系统软件______、___支撑软件_______、____应用软件______三种。
- 可行性研究,应从 法律可行性 、技术可行性、运行可行性、 经济可行性 和开放方案可行性等方面研究。
- 系统流程图是描绘 物理系统 的传统工具。它的基本思想是用图形符号以 黑盒子形式
描绘系统里面的每个部件。
- 数据流图的基本四种成分:数据输入的源点和数据输出汇点、 加工 、
数据流 和 数据存储文件 。
- 结构化分析方法是面向____数据流 数据流图____________进行需求分析的方法。结构化分析方法使用______数据字典__________与_____系统流程图___________来描述。
- 继承、继承性 是自动地共享类、子类和对象中的方法和数据的机制。
- 软件详细设计工具可分为3类,即_______图示工具_________、____设计语言____________和______表格工具__________。
- 为了在软件开发过程中保证软件的质量,主要采取下述措施:______审查__________、复查和管理复审、______测试__________。
- 大型软件测试包括 单元测试 、 集成测试 、确认测试和 系统测试
四个步骤。
- 单项选择题(每小题2分,共20分)
-
- 软件设计中划分模块的一个准则是( C )。
- 低内聚低耦合
- 低内聚高耦合
- 高内聚低耦合
- 高内聚高耦合
- Jackson设计方法是由英国的M. Jackson提出的,它是一种面向( C )的软件设计方法。
- 对象
- 数据流
- 数据结构
- 控制结构
- 试判断下列叙述中,哪 个(些)是正确的( C )。
a、软件系统中所有的信息流都可以认为是事务流
b、软件系统中所有的信息流都可以认为是变换流
c、事务分析和变换分析的设计步骤是基本相似的
A、a B、b C、c D、b和c
-
- ( A )是用户和设计交换最频繁的方法。
- 原型化方法 B、瀑布模型方法
C、 螺旋模型方法 D、构件组装模型
-
- 软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( C )。
- 硬件环境 B、软件开发的环境
-
-
- 软件开发工具和软件开发的环境 D、 开发人员的素质
-
- 20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言( D )。
- PASCAL B、 VISUAL BASIC
-
C、 C++ D、 汇编语言
-
- 软件测试的目的是?( C )
- 证明软件的正确性
- 找出软件系统中存在的所有错误
- 证明软件系统中存在错误
- 尽可能多的发现软件系统中的错误
- 使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。
- 软件测试的目的是?( C )
A、程序的内部逻辑 B、程序的复杂程度
C、该软件的编辑人员 D、程序的功能
-
- 软件维护工作的最主要部分是( C )。
- 校正性维护 B、适应性维护
- 软件维护工作的最主要部分是( C )。
C、完善性维护 D、预防性维护
-
- PDL是( B )语言。
- 高级程序设计语言 B、伪码式
- PDL是( B )语言。
C、中级程序设计语言 D、低级程序设计语言
- 判断题(正确的在括号内打上“√”,错误的打上“×”。每题2分,共20分)
- 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。( 错 )白盒测试
- 发现错误多的程序模块,残留在模块中的错误也多。( 对 )
- 为了加快软件维护作业的进度,应尽可能增加维护人员的数目。( 错 )
- 软件维护就是改正软件中的错误。( 错 )
- 质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织的活动。( 对 )
- 软件开发的主要任务是写程序。 ( 错 )
- 测试只能证明程序有错误,不能证明程序没有错误。( 对 )
- 模块化程序设计中,模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以下。( 错 )
- 在编制程序时,首先应该对程序的结构充分考虑,不要急于开始编码,而要像写软件文档那样,很好地琢磨程序具有什么样的功能,这些功能如何安排,等等。( 错 )
- 程序设计风格指导原则提出,尽量多使用临时变量。( 错 )
- 简答题(每题5分,共20分)
- 什么是软件工程?
软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
-
- 耦合性和内聚性有几种类型? 其耦合度、内聚强度的顺序如何?
低:非直接耦合® 数据耦合®标记耦合® 控制耦合®外部耦合® 公共耦合®内容耦合 :高
强:功能内聚® 信息内聚® 通信内聚® 过程内聚® 时间内聚® 逻辑内聚® 巧合内聚:弱
-
- 简述需求分析工作可以分成哪四个方面?软件需求分析的有哪三个基本原则?
:需求分析阶段分成四个方面:对问题的识别、分析与综合、制定规格说明和评审。三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;要给出系统的逻辑视图和物理视图。
-
- 什么是黑盒测试法?
黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据,产生正确地输出信息。
就程序设计语言的工程特性而言,对程序编码有哪些要求?
- 程序设计与算法描述题(共15分)
- 根据下面的伪代码程序,完成相应要求。(8分)
START
IF C1
THEN
WHILE C2 DO
f
ENDDO
ELSE
BLOCK
g
p
ENDBLOCK
ENDIF
REPEAT UNTIL C3
q
r
ENDREP
STOP
- 画出程序流程图(4分)
- 用N—S图描述(4分)
-
- 有下列伪码程序:
START
INPUT (M,N)
IF M>=10
THEN X=10
ELSE X=l
ENDIF
IF N>=20
THEN Y=20
ELSE Y=2
ENDIF
PRINT(X,Y)
STOP
设计该程序的语句覆盖和路径覆盖测试用例。(7分)
一,单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的横线上。
1.可行性研究要进行一次__C___需求分析。
A.详细的 B.全面的 C.简化的、压缩的 D.彻底的
2.系统流程图用于可行性分析中的__A___的描述。
A.当前运行系统 B.当前逻辑模型 C.目标系统 D.新系统
3.系统流程图是描述___C__的工具。
A.逻辑系统 B.程序系统 C.体系结构 D.物理系统
4.____D___工具在软件详细设计过程中不采用。
A.判定表 B.IPO图 C.PDL D.DFD图
5.程序的三种基本控制结构是 B
A.过程、子程序和分程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和转移
6.程序的三种基本控制结构的共同特点是 D
A.不能嵌套使用 B.只能用来写简单程序 C.已经用硬件实现 D.只有一个入口和一个出口
7.产生软件维护的副作用,是指 D
A.开发时的错误 B.隐含的错误 C.因修改软件而造成的错误 D.运行时误操作
8.维护中,因误删除一个标识符而引起的错误是____C_____副作用。
A.文档 B.数据 C.编码 D.设计
9.可维护性的特性中相互促进的是 A
A.可理解性和可测试性 B.效率和可移植性 C.效率和可修改性 D.效率和结构好
10.汽车有一个发动机。汽车和发动机之间的关系是__B___关系。
A.一般具体 B.整体部分 C.分类关系 D.主从关系
11.在变更控制中,___B___可以用来确保由不同用户所执行的并发变更。
A.异步控制 B.同步控制 C.存取控制 D.基线控制
12.变更控制是一项最重要的软件配置任务,其中“检出”和____A__处理实现了两个重要的变更控制要素,即存取控制和同步控制。
A.登入 B.管理 C.填写变更要求 D.审查
13.提高软件质量和可靠的技术大致可分为两大类:其中一类就是避开错误技术,但避开错误技术无法做到完美无缺和绝无错误,这就需要 B
A.消除错误 B.检测错误 C.避开错误 D.容错
14.___D__是以提高软件质量为目的的技术活动。
A.技术创新 B.测试 C.技术创造 D.技术评审
15.面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过程。因此面向对象方法有许多特征,如软件系统是由对象组成的;________;对象彼此之间仅能通过传递消息互相联系;层次结构的继承。
A.开发过程基于功能分析和功能分解 B.强调需求分析重要性
C.把对象划分成类,每个对象类都定义一组数据和方法 D.对既存类进行调整
16.软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫 D
A.生存期 B.面向对象设计 C.面向对象程序设计 D.面向对象分析
17.原型化方法是用户和设计者之间执行的一种交互构成,适用于___A___系统。
A.需求不确定性高的 B.需求确定的 C.管理信息 D.实时
18.原型化方法是一种___A____型的设计过程。
A.自外向内 B.自顶向下 C.自内向外 D.自底向上
19.为了提高测试的效率,应该 D
A.随机地选取测试数据 B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划 D.选择发现错误可能性大的数据作为测试数据
20.使用白盒测试方法时,确定测试数据应根据____A___和指定的覆盖标准。
A.程序的内部逻辑 B.程序的复杂结构 C.使用说明书 D.程序的功能
二,填空题(本大题共10小题,每小题2分,共20分)
21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素表达了系统中各种元素之间的( 信息流动 )情况。
22.成本效益分析的目的是从( 经济 )角度评价开发一个项目是否可行。
23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和( 宽度优先 ) 。
24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条( 在其他独立路径中未有过 )的边的路径。
25.汇编语言是面向( 机器 ) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。
26.在JSP方法中解决结构冲突的具体办法是( 中间数据结构或中间文件 )。
27.详细设计的任务是确定每个模块的内部特性,即模块的算法、( 使用数据 )。
28.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题 )报告。
29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向维护的技术;在维护阶段用来提高维护的效率和质量的( 维护支援 )技术。
30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选择的语言有:( FORTRAN语言 )、PASCAL语言、C语言和PL/1语言。
三,名词解释(本大题共5小题,每小题3分,共15分)
31.经济可行性
解:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
32.社会可行性
解:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
33.投资回收期
解:投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。
34.对应关系
解:即有直接因果关系在程序中可以同时处理。
35.结构冲突
解:输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。
四,简答题(本大题共4小题,每小题5分,共20分)
36.可行性研究报告的主要内容有哪些?
解:一个可行性研究报告的主要内容如下:
(1)引言:说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。
(2)可行性研究前提:说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。
(3)对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。
(4)所建议系统的技术可行性分析:所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。
(5)所建议系统的经济可行性分析:说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。
(6)社会因素可行性分析:说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。
(7)其他可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。
(8)结论意见:说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。
[解析]做软件的可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发,其中的问题能否解决,报告共分为八个基本内容。
37.系统设计的内容是什么?
解:系统设计阶段先从高层入手,然后细化。系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供了基础。
(1)系统分解。系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类、关联、操作、时间和约束的集合。每次分解的各子系统数目不能太多,最底层子系统称为模块。
(2)确定并发性。分析模型、现实世界及硬件中不少对象均是并发的。系统设计的一个重要目标就是确定哪些是必须同时动作的对象,哪些不是同时动作的对象。后者可以放在一起,而综合成单个控制线或任务。
(3)处理器及任务分配。各并发子系统必须分配给单个硬件单元,要么是一个一般的处理器,要么是一个具体的功能单元,必须完成下面的工作:估计性能要求和资源需求,选择实现子系统的硬软件,将软件子系统分配给各处理器以满足性能要求和极小化处理器之间的通信,决定实现各子系统的各物理单元的连接。
(4)数据存储管理。系统中的内部数据和外部数据的存储管理是一项重要的任务。通常各数据存储可以将数据结构、文件、数据库组合在一起,不同数据存储要在费用、访问时间、容量以及可靠性之间做折中考虑。
(5)全局资源的处理。必须确定全局资源,并且制定访问全局资源的策略。全局资源包括:物理资源,如处理器、驱动器等;空间,如盘空间、工作站屏等;逻辑名字,如对象标识符、类名、文件名等。
如果资源是物理对象,则可以通过建立协议实现对并发系统的访问,以达到自身控制;如果资源是逻辑实体,如对象标识符,那么在共享环境中有冲突访问的可能,如独立的事务可能同时使用同一个对象标识符,则各个全局资源都必须有一个保护对象,由保护对象来控制对该资源的访问。
(6)选择软件控制机制。分析模型中所有交互行为都表示为对象之间的事件。系统设计必须从多种方法中选择某种方法来实现软件的控制。
(7)人机交互接口设计。设计中的大部分工作都与稳定的状态行为有关,但必须考虑用户使用系统的交互接口。
38.什么是软件危机?软件危机的表现是什么?其产生的原因是什么?
解:软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
软件危机表现在以下四个方面:
(1)经费预算经常突破,完成时间一再拖延。由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。主观盲目制定计划,执行起来与实际情况有很大差距,使得开发经费一再突破。由于对工作量估计不足,对开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。
(2)开发的软件不能满足用户要求。开发初期对用户的要求了解不够明确,未能得到明确的表达。开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的要求,因而导致开发失败。
(3)开发的软件可维护性差。开发过程中没有同意的、公认的规范,软件开发人员按各自的风格工作,各行其是,开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行时发现错误也很难修改,导致维护性差。
(4)开发的软件可靠性差。由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。
造成软件危机的原因是:
(1)软件的规模越来越大,结构越来越复杂。(2)软件开发管理困难而复杂。(3)软件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。6)开发工具落后,生产率提高缓慢。
39.软件质量保证应做好哪几方面的工作?
解:软件质量保证是软件工程管理的重要内容,软件质量保证应做好以下几方面的工作:
(1)采用技术手段和工具。质量保证活动要贯彻开发过程始终,必须采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。
(2)组织正式技术评审。在软件开发的每一个阶段结束时,都要组织正式的技术评审。国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。
(3)加强软件测试。软件测试是质量保证的重要手段,因为测试可发现软件中大多数潜在错误。
(4)推行软件工程规范(标准)。用户可以自己制定软件工程规范(标准),但标准一旦确认就应贯彻执行。
(5)对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。
(6)对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。
[解析]软件的质量保证是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,是软件工程管理中的重要内容。
五,论述题(本大题共3小题,第40小题7分,第41小题8分,第42小题10分,共25分)
40.请使用PAD图和PDL语言描述在数组A(1)~A(10)中找最大数的算法。
解:PDL语言:
N=1
WHILE N<=10 DO
IF A(N)<=A(N+1) MAX =A(N+1);
ELSE MAX =A(N) ENDIF;
N=N+1;
ENDWHILE;
PAD图:
[解析]人工查找时,是从第一个元素开始查找,用当前元素与下一个元素比较,将较大者作为当前元素又与下一元素比较,如此循环,直到数组末尾。
41.根据下列条件使用等价类划分法设计测试用例。
某一8位微机,其八进制常数定义为:以零开头的数是八进制整数,其值的范围是-177~177,如05,0127,-065
解:(1)划分等价类并编号,如下表示:(4分)
(2)为合理等价类设计测试用例,表中有两个合理等价类,设计两个例子(2分)
(3)为不合理等价类测试用例,至少设计一个测试用例(2分)
[解析]等价类划分属于黑盒测试的一种,它将输入数据域按有效的或无效的划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试,这样用少量有代表性的例子代替大量测试目的相同的例子,可以有效提高测试效率。本题划分了3个合理等价类,9个不合理等价类进行测试,取到了预期的效果。
42.某电器集团公司下属的厂包括技术科、生产科等基层单位。现在想建立一个计算机辅助企业管理系统,其中:
生产科的任务是:
(1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。
(2)根据车间实际生产日报表、周报表调整月生产计划
3)以月生产计划为以及,制定产品设计(结构、工艺)及产品组装月计划。
(4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下达给车间
技术科的任务是:
(1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。
(2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。 试写出以上系统中生产科和技术科处理的软件结构图。
解:
画出生产科图的给6分,画出技术科的给4分。
[解析]软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系,软件结构往往用树状或网状结构的图形来表示,其主要内容有模块及模块的控制关系,根据题意,可绘制出生产科和技术科的软件结构图,其中生产科的结构图深度和宽度均为4,技术科的结构图的深度和宽度均为3。
1)系统流程图:(可用软件:ProcessOn画图)
A、系统流程图: 描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据
库、表格、人工过程等),表达信息在各个部件之间流动的情况。
B、基本元素:
C、例图(机房收费系统):
(2)数据流程图(Data FlowDiagram,DFD/Data FlowChart)
A、数据流程图:是描述系统数据流程的工具,它将数据独立抽象出来,通过图形方式描述信息的来龙去脉和实际流程。
B、基本元素:
C、例图(机房收费系统):
(3)IPO 图(也叫输入输出图):
A、说明:
在计算机领域IPO是指结构化设计中变换型结构的输入(Input)、加工(Processing)、输出(Output)。IPO图是对每个模块
进行详细设计的工具,它是输入加工输出(INPUT PROCESS OUTPUT)图的简称。在系统的模块结构图形成过程中,产生了大量的模块,在进行详细设
计时开发者应为每一个模块写一份说明。
IPO图就是用来说明每个模块的输入、输出数据和数据加工的重要工具
B、基本元素:可根据系统流程图中基本元素看,包括输入,处理,输出。
C、例图(机房收费系统以操作员为例):
条件 if else
if
条件
处理
1
else
处理
2
endif
当型while
while
条件
循环体
endwhile
直到型until
repeat
循环体
until
条件
while 对应 while
until 对应 do while
盒图N-S
顺序结构
先执行A再执行B
选择结构
if else
当型循环
直到型循环
示例
PAD图
顺序:
条件:
if else
循环:
示例:
判定表
一组条件取值的组合 ==》 加工逻辑的动作
一般形式:
条件 条件1 条件取值的组合
条件2
···
条件n
动作 动作1 动作
动作2
···
动作m
根据实际问题灵活构造判定表。
【eg】 某单位工资制度规定如下:
技术干部的职务工资规定:
技术员5k元;助理工程师7k元;
工程师9k元;高级工程师12k元;
工龄<10年并受聘为高级工程师职务工资为14k元。
工龄补助:
10年以下:补助1k元;
10到20年:补助2k元;
20年以上:补助3k元。
判定表1:
条件 技术员 √ √ √
助理工程师 √ √ √
工程师 √ √ √
高级工程师 √ √ √
工龄<10 √ √ √ √
10≤工龄≤20 √ √ √ √
工龄>20 √ √ √ √
动作 工资 6k 7k 8k 8k 9k 10k 10k 11k 12k 15k 14k 15k
判定表2:
技术员 助理工程师 工程师 高级工程师
工龄<10 √ √ √ √
10≤工龄≤20 √ √ √ √
工龄>20 √ √ √ √
工资 6k 7k 8k 8k 9k 10k 10k 11k 12k 15k 14k 15k
判定树
判定树是判定表的一种变形。
【eg】