《软件工程》.docx
《《软件工程》.docx》由会员分享,可在线阅读,更多相关《《软件工程》.docx(48页珍藏版)》请在冰豆网上搜索。
![《软件工程》.docx](https://file1.bdocx.com/fileroot1/2022-11/23/6d36a502-348a-40ee-9c5e-54b591f7f2dc/6d36a502-348a-40ee-9c5e-54b591f7f2dc1.gif)
《软件工程》
一、名词解释
1、软件危机——指在计算机软件的开发和维护过程中所遇到的一系列严重问题
2、需求分析
3、答:
需求分析是指开发人员要准确理解用户的需求,进行细致的调查分析,将用户非形式的需求陈述转化成完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
4、Alpha测试
答:
用户在开发者的场所进行测试,并且在开发者的指导下进行,测试在受控环境中进行,开发者记录发现的错误和问题
Beta测试
答:
用户在一个或多个客户场所进行测试,不受开发者控制,测试者记录发现的问题和错误,定期将问题报告发送给开发者。
5、数据字典——是关于数据信息的集合,具体来说是指描述和说明数据流图中各元素的词条集合
6、面向对象方法中的“类(Class)”
答:
面向对象方法中的“类(Class)”就是对具有相同数据和相同操作的一组相似对象的定义。
7、面向对象中的“重载(Overloading)”
答:
有两种重载:
(1)函数重载
指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。
(2)运算符重载
指同一运算符可以施加于不同类型的操作数上面。
当被操作数类型不同时,运算符的含义是不同的。
8、动态模型
答:
动态模型是与时间和变化有关的系统性质。
该模型描述了系统的控制结构,他表示了瞬时的、行为化的系统控制性质。
它关心的是系统的控制,操作的执行顺序。
它从对象的事件和状态的角度出发,表现了对象的相互行为。
9、软件模块设计中的“内聚”
答:
一个模块内部各个元素彼此结合的紧密程度。
它是衡量一个模块内部组成部分间整体统一性的度量。
10、面向数据流的设计方法中的“事务流”
答:
事务型数据流图中存在一个事务中心(也就是数据处理、加工中心),它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径,这类数据流就是事务流。
11、软件模块设计中的“耦合”
答:
软件模块设计中的“耦合”是指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。
12、面向数据流的设计方法中的“变换流”
答:
具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。
13、模块——是数据说明,可执行语句等程序对象的集合.
14、原型——是使用样机,使用户通过实践获得对未来系统的的概念,可以更准确提出要求.
15、经济可行性——进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发.
16、社会可行性——要开发的项目是否存在任何侵犯,妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度,人员素质,操作方式是否可行.
17、投资回收期——解:
投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.
18、数据流图(DFD)——数据流图(DataFlowDiagram,简称DFD)是以图形方式刻画各种业务数据处理过程。
10、软件可重用
18、内聚性——是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
19、面向对象技术中的“类”
答:
在面向对象的软件技术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。
20、面向对象技术中的“封装”
答:
在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。
一个对象好像是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码与局部数据,都被封装在黑盒子里面,从外面是看不见的,更不能从外面直接访问或修改这些数据和代码。
使用一个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算法。
21、对象的形式化定义
答:
对象∷=〈ID,MS,DS,MI〉。
其中,ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合(即对外接口)。
22、面向对象技术中的“封装”
答:
面向对象技术中,封装是把数据和实现操作的代码集中起来放在对象内部。
一个对象好像是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码与局部数据,都被封装在黑盒子里面,从外面是看不见的,更不能从外面直接访问或修改这些数据和代码。
使用一个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算法
23、面向对象技术中的“多态”
答:
在面向对象的软件技术中,多态是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。
也就是说,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。
当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。
24、面向对象技术中的“继承”
答:
广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。
一个类直接继承其父类的全部描述(数据和操作)。
24、软件维护
25、
答:
所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
25、软件的可靠性
答:
对于软件可靠性有许多不同的定义,其中多数人承认的一个定义是:
软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。
26、对象模型中的泛化
答:
UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。
具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息。
27、系统设计说明书
答:
系统设计说明书是从系统总体的角度出发对系统建设中各主要技术方面的设计进行说明,是系统设计阶段的产物,其着重点在于阐述系统设计的指导思想以及所采用的技术路线和方法,编写系统设计说明书将为后续的系统开发工作从技术和指导思想上提供必要的保证。
28、结构化分析
答:
结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据图来建立系统的功能模型,从而完成需求分析工作
可执行的规格说明
答:
这是一种使要求说明过程自动化的技术,通过可执行的规格说明语言来描述预期的行为“做什么”,人们可以从直接观察中用规格说明语言来规定任何系统行为。
29、黑盒测试法
答:
该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依照需求规格说明书,检查程序是否满足功能要求。
因此,黑盒测试又称为功能测试或数据驱动测试。
30、白盒测试法
答:
该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
白盒法也不可能进行穷举测试。
五、简答题
1.需求分析阶段的基本任务是什么?
需求分析阶段的基本任务是要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。
本阶段要进行以下几方面的工作:
⑴问题识别。
双方确定对问题的综合需求,这些需求包括:
功能需求、性能需求、环境需求、用户界面需求,另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。
⑵分析与综合,导出软件的逻辑模型。
分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。
这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成份,并用图文结合的形式,建立起新系统的逻辑模型。
⑶编写文档。
编写“需求规格说明书”、编写初步用户使用手册、编写确认测试计划、修改完善软件开发计划。
2.数据流图简称DFD,是SA方法中用于表示系统逻辑模型的一种工具。
它以图形的方式描述数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。
数据流图有四种基本图形符号:
“→”箭头表示数据流;“○”圆或椭圆表述加工;“=”双杠表示数据存储;方框表示数据的源点或终点。
(3分)
2、什么是软件危机?
其产生的原因是什么?
答:
当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
主要表现为:
(1)经费预算经常突破,完成时间一再拖延;
(2)开发的软件不能满足用户要求;
(3)开发的软件可维护性差;
(4)开发的软件可靠性差。
造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。
共产生原因主要有以下几方面:
(1)软件的规模越来越大,结构越来越复杂;
(2)软件开发管理困难而复杂;
(3)软件开发费用不断增加;
(4)软件开发技术落后;
(5)生产方式落后;
(6)开发工具落后,生产率提高缓慢。
3、.说明结构化程序设计的主要思想是什么?
答:
(1)自顶向下、逐步求精的程序设计方法
(2)使用3种基本控制结构、单入口、单出口来构造程序。
4、.软件测试包括哪些步骤?
说明这些步骤的测试对象是什么?
答:
(1)单元测试,测试对象对单元模块
(2)集成测试,测试对象为组装后的程序模块(3)确认测试,测试对象为可运行的目标软件系统
5、需求分析与软件设计二个阶段任务的主要区别是什么?
答:
需求分析定义软件的用户需求,即定义待开发软件能做什么
软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。
6、软件开发成本估算方法有哪几种?
答:
(1)自顶向下估算方法。
估算人员参照以前完成的项目所耗费的总成本(或总工作量),来推算将要开发的软件的总成本(或总工作量),然后把它们按阶段、步骤和工作单元进行分配,这样方法称为自顶向下的估算方法。
(1分)
(2)自底向上估算方法。
自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发量。
(1分)
(3)差别估算方法。
差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找出与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。
(1分)
(4)专家估算法。
依靠一个或多个专家对要求的项目做出估算。
(1分)
(5)类推估算法。
(0.5分)
(6)经验公式估算法。
(0.5分)
7、说明软件测试和调试的目的有何区别?
答:
测试的目的是判断和发现软件是否有错误,调试的目的是定位软件错误并纠正错误。
8、什么是确认测试?
该阶段有哪些工作?
答:
确认测试又称有效性测试。
它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。
确认测试阶段有两项工作,进行确认测试与软件配置审查:
(1)确认测试一般是在模拟环境中运用黑盒测试方法,由专门测试人员和用户参加的测试。
(2)软件配置审查的任务是检查软件的所有文档资料的完整性、正确性。
如果发现遗漏和错误,应补充和改正,同时要编排好目录,为以后的软件维护工作奠定基础。
9、如何做好软件质量保证工作?
软件质量保证工作是软件工程管理的重要内容,软件质量保证应做好以下几个方面的工作:
(1)采用技术手段和工具。
质量保证活动要贯彻开发过程始终,必须从采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。
(2)组织正式技术评审,在软件开发的第一个阶段结束时,都要组织正式的技术评审。
国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。
(3)加强软件测试。
软件测试是质量保证的重要手段,因为测试可发现软件可发现软件中大多数潜在错误。
(4)推选软件工程规范(标准)。
用户可以自己指定软件工程规范(标准),但标准一旦确认就应贯彻执行。
(5)对软件的变更进行控制。
软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。
(6)对软件质量进行度量。
即对软件质量进行跟踪,及时记录和报告软件质量情况。
10、简述建立对象模型的过程。
答:
典型的工作步骤是:
(1)首先确定对象类和关联(因为它们影响系统整体结构和解决问题的方法);
(2)对于大型复杂问题还要进一步划分出若干个主题;
(3)然后给类和关联增添属性,以进一步描述它们;
(4)接下来利用适当的继承关系进一步合并和组织类;
(5)由于经过一次建模过程很难得到完全正确的对象模型,所以需要反复修改。
11.一般来讲,开发一个软件系统首先应该遵循的基本原则是什么?
(无解释给3分,有解释满分)
答:
开发一个软件系统首先应该遵循的基本原则:
(1)首先要建立一个领导子:
①能调动资源的行政领导
②有经验的系统开发工程师
③用户(专家)
④软件开发人员
(2)软件系统开发严格按软件生命周期分阶段进行:
①可行性分析
②需求(系统)分析
③总体(概要)设计
④软件系统的详细设计
⑤软件系统的实施
(3)要有用户的观点
(4)要加强文档资料的管理
12.简述软件再工程的过程(无解释给3分,有解释满分)?
答:
(1)库存目录分析;
包含每个应用系统的信息,如:
名称、构建日期、修改次数、过去18个月报告的错误、用户数量、文档质量、预期寿命,等。
从中选出再工程的候选者。
(2)文档重构;
①如果一个程序走向生命终点,不再经历变化,则保持现状;②重构只针对当前正在修改的软件部分。
(3)逆向工程;
逆向工程是一个恢复设计结果的过程,从程序代码中抽取数据结构、体系结构和处理过程的设计信息。
(4)代码重构;
分析源代码,标注出与结构化程序设计概念不符的部分,重构它的代码,测试重构代码并更新代码。
(5)数据重构;
当数据结构较差时,进行再工程。
如以文件方式保存数据变为以数据库方式存储。
(6)正向工程。
也称革新或改造,即应用软件工程的原理、概念、技术和方法来重新开发现有系统。
13.简述提高软件可维护性的方法。
(每项1分)
(1)建立明确的软件质量标准;
(2)使用先进软件开发技术和工具;
(3)建立明确的软件质量保证工作;
(4)选择可维护的程序设计语言;
(5)改进程序文档。
14、简述软件需求说明书(软件规格说明书)中包含的内容?
(每项1分)
答:
(1)软件系统的开发背景资料(主要相关人、财、物或设备);
(2)所开发软件的功能、性能、用户界面及运行环境等作出详细的说明;
(3)软件系统详细的逻辑模型:
数据流图(DFD)+数据词典(DD)或面向对象的三大模型(对象模型、动态模型和功能模型)等
(4)系统开发计划表
(5)所有附加文档:
调查问卷信息、BPFD等
15、 在测试中,如何估计软件中故障总数ET?
(无解释3分,有解释满分)
答:
(1)Halstead估算方法:
(1分)
Halstead预测程序中包含错误个数的公式ET=Nlog2(n1+n2)/3000
(2)经验法:
(1分)
单位长度里的故障数ET/IT近似为常数。
一些统计数字表明,通常有:
0.5×10-2≤ET/IT≤2×10-2。
(3)植入故障法(1分)
假设人为地植入的故障数为Ns,经过一段时间的测试之后发现ns个植入的故障,同时还发现了n个原有的故障,则可以估计出程序中原有的故障总数:
(4)分别测试法(2分)
分别测试法随机把程序中一部分原有错误加上标记,根据测试发现的有标记和无标记错误的比例,估计程序错误总数。
分别测试法使用两个测试员,独立地测试同一个程序的两个副本,由另一名分析员分析他们的测试结果,把其中一个测试员发现的故障作为有标记的故障。
每隔一定时间,分析员分析两名测试员的测试结果,来估计错误总数。
几次估计结果差不多时,用其平均值作为错误总数的估计值。
16、简述面向对象分析的主要步骤。
(无解释3分,有解释满分)
答:
(1)需求陈述
(2)寻找类与对象
(3)识别结构,确定对象之间的关联
(4)识别主题
(5)定义属性
(6)建立动态模型
(7)建立功能模型
(8)定义服务。
17、简述建立动态模型的步骤。
答:
动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。
通常,用UML提供的状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)(2分)
建立动态模型的步骤:
第一步,是编写典型交互行为的脚本。
虽然脚本中不可能包括每个偶然事件,但是,至少必须保证不遗漏常见的交互行为。
第二步,从脚本中提取出事件,确定触发每个事件的动作对象以及接受事件的目标对象。
第三步,排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用状态图描绘它们。
最后,比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配。
(3分)
18、快速原型技术的基本思想是什么?
答:
在软件开发的早期,快速开发一个目标软件系统的原型,让用户对其进行评价并提出修改意见,然后开发人员根据用户的意见对原型进行改进。
六、综合题(每题10分,共20分)
(一)请使用流程图和PDL语言描述在数组A
(1)~A(10)中找最大数的算法。
(二)某电器集团公司下属的厂包括技术科、生产科等基层单位。
现在想建立一个计算机辅助企业管理系统,其中:
生产科的任务是:
(1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。
(2)根据车间实际生产日报表、周报表调整月生产计划
(3)以月生产计划为以及,制定产品设计(结构、工艺)及产品组装月计划。
(4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下达给车间
技术科的任务是:
(1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。
(2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。
试写出以上系统中生产科和技术科处理的软件结构图。
解:
[解析]软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系,软件结构往往用树状或网状结构的图形来表示,其主要内容有模块及模块的控制关系,根据题意,可绘制出生产科和技术科的软件结构图,其中生产科的结构图深度和宽度均为4,技术科的结构图的深度和宽度均为3。
(三)对以下程序进行测试:
PROCEDUREEX(A,B:
REAL;VARX:
REAL);
BEGIN
IF(A=3)OR(B>1)THENX:
=A×B
IF(A>2)AND(B=0)THENX:
=A-3
END
先画出程序流程图。
再按语句覆盖法设计测试数据。
(四)工资计算系统中的一个子系统有如下功能:
(1)计算扣除部分—由基本工资计算出应扣除(比如水电费、缺勤)的部分;
(2)计算奖金部分—根据职工的出勤情况计算出奖励金;
(3)计算工资总额部分—根据输入的扣除额及奖金计算出总额;
(4)计算税金部分—由工资总额中计算出应扣除各种税金;
(5)生成工资表—根据计算总额部分和计算税金部分传递来的有关职工工资的详细信息生成工资表。
试根据要求画出该问题的数据流程图,并把其转换为软件结构图。
(五)已知一个软件项目的记录,开发人员M=3人,其代码行数=12.1KLOC,工作量E=24PM,成本S=168000美元,错误数N=29,文档页数Pd=365页。
试计算开发该软件项目的生产率P(=L/E)、平均成本C(=S/L)、代码出错率EQR(=N/L)和文档率D(=Pd/L)。
(4分)
解:
(1)软件开发的生产率P为:
P=L/E=12.1×103LOC/24PM=504LOC/PM
(2)开发每行代码的平均成本C为:
C=S/L=168000美元/12100LOC=13.9美元/LOC
(3)代码出错率EQR为:
EQR=N/L=29个/12.1KLOC=2.4个/KLOC
(4)软件的文档率D为:
D=Pd/L=365页/12.1KLOC=30页/KLOC
2.根据下列程序流程图,设计不超过2组的测试用例,使之满足语句覆盖,要求给出每组测试数据的执行路径、输入值、输出值及两个判定(3)和(5)的判定结果。
(6分)
解:
因答案不唯一,略
(六)根据下列变换型的数据流图,设计出初始软件结构图。
解:
只按教材(或我的PPT)上只画模块可得6分,加上信息流可得满分
(七)根据下列事务型的数据流图,设计出初始软件结构图
解:
只按教材(或我的PPT)上只画模块可得6分,加信息流可得满分
(八)将下列PDL程序翻译成McCabe流图,并计算出该程序的复杂度(6分)
PDL
Procedure:
sort
1:
dowhilerecordsremain
2:
readrecord;
Ifrecordfiled1=0
3:
thenprocessrecord;
storeinbuffer;
incrementcounter;
4:
elseifrecordfield2=0
5:
thenresetcounter;
6:
elseprocessrecord;
Storeinfile;
7a:
endif
endif
7b:
enddo
8:
end
解:
由于教材和PPT上都有答案,所以略
(九)某市招干考试,分法律、行政、财经三个专业,每个专业考生参加两门基础课、一门专业课考试。
考生报名后,招生委员会做统一考前处理,并登记考生情况。
考试后,输入考生成绩,计算考生成绩总分,输出考生成绩单。
录用时,各专业考生按总分排序,由高分到低分录用,录用结束后,对考生情况统计分析。
1.试画出数据流图
2.试画出IPO图
3.画出系统结构图
解:
1.数据流图
2.IPO图
3.画出系统结构图
(十)变量的命名规则一般规定如下:
变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合。
1.划分等价类
2.设计测试用例
1.划分等价类(略)
2.设计测试用例
测试数据
测试范围
期望结果
(1)s_name12
等价类
(1),(3),(4)
有效
(2)a1b2c3d4e5f6g7h8i9j1k2l3m4n5o6p7q8r9s_tr
等价类
(2),(3),(4)
有效
(3)a1b2c3d4e5f6g7h8i9j1k2l3m4n5o6p7q8r9s_trff
等价类(5)
无效
(4)234name
等价类(6)
无效
(5)abgh
等价类(7)
无效
(6)ab!
2f
等价类(8)
无效
(7)fg+ghh
等价类(9)
无效
(8)H@gh
等价类(10)
无效
(十一)对以下程序进行测试:
PROCEDUREEX(A,B:
REAL;VARX:
REAL);
BEGIN
IF(A=3)OR(B>1