1、1.软件工程三要素 方法、工具、过程2.类图不能用于动态建模的有。用例模型的基本组成部件是用例、角色和用例之间的联系。3.数据流图的组成元素包括 数据的源点或终点,数据的处理,数据流和数据存储数据字典的组成元素包括 数据流,数据流分量,数据存储和处理 4.技术可行性的主要内容:研究现有技术、资源及限制能否支持和实现系统的功能、性能,主要是技术风险问题。5软件测试的基本原则:所有的测试都应追溯到用户需求、应该在测试工作真正开始前的较长时间内就进行测试计划、Pareto 原则应用于软件测试、测试应从 “ 小规模 “ 开始,逐步转向 “ 大规模 “ 穷举测试是不可能的、为了达到最佳效果,应该由独立的
2、第三方来构造测试6模型元素有 关联 、聚合 、依赖 7维护: 所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。维护的过程:维护组织,维护报告。软件的可理解性,可测试性,可修改性,可移植性和可重用性是决定软件可维护性的基本因素8.软件复杂性度量: McCabe 方法,Halstead 方法。9、软件的开发模型有 瀑布模型、快速原型模型,增量模型,螺旋模型,喷泉模型。二、简答1.软件产品的特性? 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。在软件的运行和使用
3、期间,没有硬件那样的机械磨损、老化问题。软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。2.如何检查数据流图的正确性和提高它的易理解性?可从以下几个角度来检查数据流图的正确性:数据守恒、文件的使用;父图和子图的平衡等;提高数据流图的易理解性可从以下几方面进行:简化加工间的联系、注意分解的均匀、适当地命名等。3BROOKS 定律?定义:向一个已经延期的项目增加人力,只会使得它更加延期。原因:1)当小组变得更大时,每个人需要用更多时间与组内其他成员讨论问题、协调工作,因此增加了通信开销。2)如果在开发过程中增加小组人员,则最初一段时间内项目组总生产率不仅不会提高反而会下
4、降。这是因为新成员在开始时不仅不是生产力,而且在他们学习期间还需要花费小组其他成员的时间。4.软件生命周期可分为哪三个时期?GB 8567 中规定可分为哪几个阶段? 定义时期:问题的定义(客户需求) 、可行性研究(为什么做) ;开发时期:需求分析(做什么) 、总体设计(怎么做抽象) 、详细设计(怎样实现具体) 、编码(程序设计语实现)测试;运行时期:软件维护。5、衡量模块独立性的两个标准是什么?它们各表示什么?答案:模块独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此间结合的紧密程度。在设计时应尽量
5、做到高内聚低耦合,从而获得较高的模块独立性6.为什么软件测试不应该由程序的编写人员来做?软件测试的目的是为了发现程序中的错误而执行程序的过程。正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。7.可行性分析的任务是什么?可行性分析的任务至少应该从以下三方面的可行性进行研究。技术上可行性:研究现有技术、资源及限制能否支持和实现系统的功能、性能,主要是技
6、术风险问题。经济上的可行性:进行成本估算及效益评估,确定项目是否值得开发。操作可行性:系统的操作方式在这个用户组织内行得通么?必要时还应该从法律、社会效益等更广泛的方面研究各种解法的可行性。8. 什么是软件工程? 概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够做到的最好的技术方法结合起来。以经济地开发出高质量的软件并有效地维护它,这就是软件工程。9.什么是编码风格?为什么要强调编码风格?编码风格又称程序设计风格或编程风格。编码的目标从强调效率转变为强调清晰。良好的编码风格能在一定程度上弥
7、补语言存在的缺陷,而如果不注意风格就很难写出高质量的程序。尤其当多个程序员合作编写一个很大的程序时,需要强凋良好而一致的编码风格,以便相互通讯,减少因不协调而引起的问题。总之,良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。10、详细设计的基本任务?有哪几种描述方法答:详细设计即过程设计,通过对结构表示进行细化,得到软件详细的数据结构和算法,其基本目就是回答“详尽、精确地描述系统个模块的具体实现方法” 。描述方法有:程序流程图、盒图、PAD 图、判定表、判定树、jackson 图、warnier 图。11、软件测试的两种基本测试方法答:基本测试方法有黑
8、盒试和白盒测试。黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试;白盒测试法把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试12、生命周期各阶段的基本任务是及描述方法1)问题描述:问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”2)
9、可行性研究:这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”3)需求分析:准确确定“为了解决这个问题,目标系统必须做什么” ,主要是确定目标系统必须具备哪些功能。描述方法:数据流图、数据字典得分 评分人4)总体设计:这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”描述方法:系统流程图、层次图5)详细设计:也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。描述方法:程序流程图、盒图6)编码和单元测试:这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。7)综合测试:这个阶段的关键任务是通过各种类型的测
10、试使软件达到预定的要求。三、分析与设计(每小题 7 分,共 28 分)1. 确定软件生命周期模型。关于向 M 公司副总写一份报告关于快速原型对公司的软件开发更加优越答:瀑布模型的一条重要的指导思想是清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。最显著的特点是阶段间具有顺序性和依赖性,即必须等待前一阶段的工作完成之后,才能开始后一阶段的工作;前一阶段的输出文档就是后一阶段的输入文档。但在可行的软件产品交付给用户之前,了解用户只能通过文档来产品是什么样的。但是,仅仅通过写在纸上的静态的规格说明很难全面正确地认识动态的软件产品。快速原型是快速建立起来的可以在计算机上运行的程序,它能完成的功
11、能往往是最终产品能完成的功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上适用它,通过实践来了解目标系统的概貌。通过原型开发人员可以快速获知用户的真正需求,可以加速软件开发过程,节约软件开发成本。2. 绘制 DFD 图及数据流条目。请描述绘制 DFD 图画出银行取款过程 DFD 图,问题描述为储户用户存折取款,首先填写取款单,依据账卡中的信息,检验取款单与存折,若有问题反馈给储户,否则登陆储户存款数据库,修改相应数据并更新账卡,那时发出付款通知。画出 DFD 图并写出数据字典中的数据流条目自学考试报名过程中有报名单处理,该处理主要是根据报名表姓名(
12、姓名,性别,身份证号,课程名) ,和开考课程(课程名,开考时间) ,经检验,编号填写输出准考证给报名者,同时记录到考生名册中(准考证号,姓名,课程)DFD 图数据流条目报名单=姓名+性别+身份证号+课程名开考课程=课程名+开考时间考生名册=准考证号+姓名+课程3. 判定表及判定树依描述绘制判定表假设某航空公司规定,乘客可以免费托运重量不超过 30kg 的行李。当行李重量超过 30kg 时,对头等舱的国内乘客超重部分每公斤收费 4 元,对其他舱的国内乘客超重部分每公斤收费 6 元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。(判定树表示)4. 由伪
13、码程序画出程序流程图和盒图。画出下列伪码程序的程序流程图和盒图STARTIF p THENWHILE q DOFEND DOELSEBLOCKG nEND BLOCKEND IFSTOP 流程图 盒图5. 设计各种逻辑覆盖测试用例。设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT (A, B, C)/判定表达式 1IF A5 THEN X=10 ELSEX=1END IF/判定表达式 2IF B10 THENY=20ELSE Y=2END IF/判定表达式 3IF C15 THENZ=30ELSE Z=3END IFPRINT (X, Y, Z)STOP解:语句覆盖的测试用例
14、 判定 输入 预期的输出序号 1 2 3 A B C X Y Z1 F F F 1 1 1 1 2 32 T T T 20 40 60 10 20 30五、应用题1变换分析和事务分析数字仪表板题目答案答:第一级分解:第二级分解: 未经精化的输入结构未经精化的变换结构未经精化的输出结构精化后的数字仪表板系统的软件结构Jackson 方法 1、一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计:1. 每个记录中空格字符的个数,2. 以及文件中空格字符的总个数。要求的输出数据格式是:1. 每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,2. 最后印出文件中空格的总个数。答:表示
15、输入输出数据结构的 Jackson 图:描绘统计空格程序结构的 Jackson 图用伪码表示程序处理过程统计空格 seq打开文件读入字符串totalsum=0程序体 iter until 文件结束处理字符串 seq印字符串 seq印出字符串印字符串 endsum=0pointer=1分析字符串 iter until 字符串结束分析字符 select 字符是空格处理空格 seqsum=sum+1pointer=pointer+1处理空格 end分析字符 or 字符不是空格处理非空格 seqpointer=pointer+1处理非空格 end分析字符 end分析字符串 end印空格数 seq印出空
16、格数目印空格数 endtotalsum=totalsum+sum读入字符串处理字符串 end程序体 end印总数 seq印出空格总数印总数 end关闭文件停止统计空格 end2、有两个输入文件:考生基本情况文件(简称考生情况文件 )和考生高考成绩文件(简称考分文件)如下:试用 Jackson 方法完成下列工作(1)用 Jackson 图表示输入与输出结构,找出它们之间的对应单元;(2)画出用 Jackson 图表示的程序结构;(3)列出程序所需要的操作,并加到上一步画出的程序结构图上;(4)用 Jackson 伪代码写出与程序结构图对应的过程性表示。答案:(4)用 Jackson 伪代码写出上
17、述程序的过程表示。产生新文件 seq打开两个输入文件建立输出文件从输入文件中各读一条记录分析考生记录 iter until 文件结束处理考生记录 seq产生准靠证号产生姓名产生通讯地址产生考分生成一条新记录将新记录写入输出文件从输入文件中各读一条记录处理考生记录 end关闭全部文件停止产生新文件 end4、下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。(3)在(2)题的设计中你使用附加的标志变量 flag 吗?若没用,请再设计一个使用 flag 的程序;若用了,再设计一个不用 flag 的程序(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。(2)使用附加的标志变量 flag,至少有两种方法可以把该程序改造为等价的结构化程序,图示盒图描绘了等价的结构化程序。3)不使用 flag 把该程序改造为等价的结构化程序的方法如图所示。