软件工程题目.doc_第1页
软件工程题目.doc_第2页
软件工程题目.doc_第3页
软件工程题目.doc_第4页
软件工程题目.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

问答题1 请补充12个关于软件的错误观点,并对其进行分析和解释。观点一:开放软件源代码就一定好。观点二:软件质量问题可通过软件测试得到彻底解决。 2 试说明软件生存周期的概念。3 当沿着螺旋模型的过程流路径向外移时,你认为正在开发或维护的软件发生了什么变化?答案1、观点一:开放软件源代码就一定好。 分 析:一般人都认为开放源代码对一个软件系统的完善有很好的促进作用,因为这样可以集合很多人的智慧,但这种观点并不完全正确。大家赞同开放源码,其实很大程度上是因为先有了Linux成功的例子,而Linux的出现和成功是有它一定的背景的,很大程度上是因为不支持源码开放的代表-微软的缘故。开放源代码对促进全球软件和信息技术行业的快速发展是很有益处的,但是关于源代码的GPL授权方式目前还看不到它对软件企业发展的好处。一味强调过度开放源代码,在现在盗版泛滥的时代,拥有源代码的公司如何得到回报,没有回报就没有进一步研发资金,软件的发展从何而来。 观点二:软件质量问题可通过软件测试得到彻底解决。 分 析:为了克服软件危机和提高软件质量,人们进行了大量的研究和实践。最初的重点是着眼于技术革新,从各种软件工具(如编辑、编译、调试工具等等)研制开始,发展成为对开发各阶段进行全面支持的计算机辅助软件工程(CASE)环境。同时,注重软件开发模型研究,也就是如何划分软件开发过程的不同阶段,并针对不同阶段开展了有关技术和方法的研究如需求工程、设计工程、程序设计方法学、软件测试等等。 通过长期的实践发现,仅仅依靠这些工具环境、模型及方法学来提高效率和质量,并未达到预期的目标。同时,人们逐渐认识到,如果能够同时对软件开发过程的质量加以控制,则可以大幅度的提高软件质量。只有从一开始就在开发过程中严格贯彻质量管理,软件产品的质量才有保证。否则,开发工作一旦进行到后期,无论怎样通过测试和补漏洞,都会无济于事。这就是近年来国际上十分重视的软件过程管理思想。这种思想并非凭空想象,而是借鉴了在硬件领域成功实施全面质量管理的经验,对软件开发实行相应的质量保证工作,并已取得了成功的经验。 2、软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。(1) 计划阶段:确定待开发系统的总体目标和范围,研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。软件计划的主要内容包括所采用的软件生命周期模型、开发人员的组织、系统解决方案、管理的目标与级别、所用的技术与工具,以及开发的进度、预算和资源分配。 (2) 分析阶段:分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。通过评审需求规格说明,确保对用户需求达到共同的理解与认识。需求规格说明明确地描述了软件的功能,列出软件必须满足的所有约束条件,并定义软件的输入和输出接口。 (3) 设计阶段:设计阶段的目标是决定软件怎么做,设计人员依据软件需求规格说明文档,确定软件的体系结构,进而确定每个模块的实现算法、数据结构和接口等,编写设计说明书,并组织进行设计评审。 (4) 实现阶段:实现阶段是将所设计的各个模块编写成计算机可接受的程序代码,与实现相关的文档就是源程序以及合适的注释。 (5) 测试阶段:在设计测试用例的基础上,测试软件的各个组成模块。然后,将各个模块集成起来,测试整个产品的功能和性能是否满足已有的规格说明。 (6) 维护阶段:一旦产品已交付运行之后,对产品所做的任何修改就是维护。维护是软件过程的一个组成部分,应当在软件的设计和实现阶段充分考虑软件的可维护性。维护阶段需要测试是否正确地实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。3、在使用螺旋模型开发软件的过程中,从核心开始,螺旋的第一圈可能产生软件的规格说明,接下来的螺旋可能用于开发一个原型,随后是软件的更完善的版本。经过计划区域的每一圈是为了调整项目计划,基于从用户评估得到的反馈,调整费用和进度。沿螺旋线自内向外每旋转一圈,便开发出一个更为完善的、新的软件版本。1、 运行正确的程序就是高质量的程序吗?请加以解释。2、一个程序能够既正确又不可靠吗?请加以解释。3、 怎样理解质量是免费的这句话? 4、 软件质量保证的任务是什么?它涉及到哪几类人员? 5、 试说明CMM模型的框架结构。答案:1、运行正确的程序不见得就是高质量的程序。这个程序也许运行速度很低并且浪费内存,也许代码写得一塌糊涂,除了开发者本人谁也看不懂也不会使用。应该说,正确性只是反映软件质量的一个因素而已。 2、软件的功能正确并不代表软件是可靠的。可靠性是指在一定的环境下,在给定的时间内系统不发生故障的概率。由于无法对软件尽心彻底的测试,因此即使软件的某个功能是正确的,软件中潜在的错误也可能导致其不可靠,如2000年问题就是如此。3、质量管理的基本思想不是尽量减少错误,而是争取第一次把事情完全做好,从而实现零缺陷。我们常常会出现不符合质量标准的问题,也就是有些工作没有做到第一次就做好,为此需要进行一系列的补救,从而产生了额外的支出,包括时间、金钱和精力,由此产生了质量损失。如果我们能够第一次就将事情做好,那么就避免了质量损失。 4、软件质量保证(SQA,Software Quality Assurance)的任务主要包括以下方面:(1) 制定项目的SQA计划,包括需要的评价和评审、项目采用的标准、错误的报告与跟踪、SQA的文档等; (2) 参与开发项目的软件过程描述,为软件开发选择合适的过程; (3) 复审各项软件工程活动,识别、记录和跟踪各种偏差,并核实是否已经纠正; (4) 检查指定的软件产品,识别、记录和跟踪各种偏差,并核实是否已经纠正; (5) 记录软件过程和软件产品的所有不合格,将其报告给高级管理者,并跟踪直至纠正; (6) 协调变更的控制和管理,帮助收集和分析软件度量信息。 这些活动与两种人员相关: (1) 做技术工作的软件工程师; (2) 负责质量保证的计划、监督、记录、分析和报告工作的SQA小组。 5、CMM模型是为了指导软件开发组织,通过确定当前过程的成熟度,并识别出执行软件过程的薄弱环节,通过解决对软件质量和过程改进至关重要的若干问题来形成对其过程的改进策略,通过关注并认真实施一组有限的关键实践活动,稳步地改善其全组织的软件过程,使全组织的软件过程能力持续增长。 CMM模型将软件过程从无序到有序的进化过程分成几个阶段,并将这些阶段排序,形成一个逐层提高的平台,使在每个平台上的改进能为达到下一个平台奠定基础。 CMM模型由5个成熟度等级构成,且每一个等级形成了一个必要的基础,从此基础出发才能达到下一个等级,因此软件能力成熟度等级的提高是一个循序渐进的过程。除第一级之外,CMM的每个等级都是按完全相同的结构构成的,每一级包含了实现这一级目标的若干关键过程域,每个关键过程域进一步包含若干关键实施活动,当关键过程域的这些关键实践都得到实施时,就能够实现该关键过程域的目标。过程能力等级特点关键过程域1 初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力;管理是反应式(消防式)。2 可重复级 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得成功。 需求管理 软件项目计划 软件项目跟踪和监督 软件子合同管理 软件质量保证 软件配置管理3 已定义级 已将软件管理和工程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。 组织过程定义组织过程焦点 培训程序 集成软件管理 软件产品工程 组间协调 同级评审 4 已管理级 收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。定量过程管理 软件质量管理 5 优化级过程的量化反馈和先进的新思想、新技术促进过程不断改进。缺陷预防 技术变更管理 过程变更管理 1、 需求工程包括哪些基本活动?每一项活动的主要任务是什么? 2、 原型化方法主要用于解决什么问题?试说明这种方法的主要优缺点。3、 一个考务处理系统的要求如下,试画出该系统的数据流图。 (1) 对考生送来的报名表进行检查; (2) 对合格的报名表编好准考证号码后将准考证送给考生,并将汇总后的考生名单送给阅卷站; (3) 对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者; (4) 填写考生通知单(内容包含考试成绩及合格不合格标志),送给考生; (5) 按地区、年龄、文化程度、职业、考试级别等进行成绩分类统计及试题难度分析,产生统计分析表。答案:1、 需求工程分为需求开发和需求管理两个部分,而需求开发又可进一步分为需求获取、需求分析、规格说明和需求验证四个阶段。这些基本活动的主要任务包括: (1) 需求获取(问题识别):采集、识别和提取用户的需求,对问题和需求形成文档化的描述,使各种人员达成一致的理解和认可。 (2) 需求分析:分析和综合所采集的信息,建立系统的详细逻辑模型。 (3) 需求规格说明:编写软件需求规格说明书,明确、完整和准确地描述已确定的需求。 (4) 需求验证:评审软件需求规格说明,以保证其正确性、一致性、完备性、准确性和清晰性。 (5) 需求管理:定义需求基线,在整个项目过程中跟踪需求状态及其变更情况。 2、原型化方法主要用于解决在产品开发的早期阶段需求不确定的问题,用户、经理和其他非技术项目风险承担者发现在确定和开发产品时,原型可以使他们的想象更具体化。 这种方法的主要优点如下: (1) 明确并完善需求 原型作为一种需求工具,它初步实现所理解的系统的一部分,用户对原型的评价可以指出需求中的许多问题。 (2) 探索设计选择方案 原型作为一种设计工具,可以探索不同的用户界面技术,使系统达到最佳的可用性,并且可以评价可能的技术方案。 (3) 发展为最终的产品 原型作为一种构造工具,是产品最初子集的完整功能实现,通过一系列小规模的开发循环,你可以完成整个产品的开发。 这种方法的主要缺点包括: (1) 用户看到一个正在运行的原型便以为产品即将完成,他们会要求不再进行产品重建,而只是对原型进行一些修改就交付。由于原型没有考虑软件的总体质量和可维护性,交付原型往往造成欲速则不达的情况。 (2) 开发人员为了快速构造原型,可能会采用不合适的操作系统或程序设计语言,也可能使用一些效率低的算法。在一段时间的开发之后,他们往往已经习惯了这些选择,于是便在系统中参杂了这些不理想的选择。 3、(1)顶层数据流图(2) 第1层数据流图(3) 第2层数据流图 加工1子图:加工2子图:一、 填空题(1)在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是 关系。(2)类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是 关系。(3)接口及其实现类或构件之间是 关系。(4)一个汽车有四个轮子,那么类汽车和轮子之间的关系是 关系。(5)学生与研究生之间是 关系。答案:(1)关联 (2)依赖 (3)实现 (4)聚合 (5)泛化1 解释下列术语,并举例说明之。 对象、类、属性、操作、关联、泛化、聚合、依赖 2 简要说明类图和时序图的构成。3 在系统开发过程中为什么需要建立模型? 4 与传统的结构化方法相比,面向对象开发方法具有什么优点? 5 根据下面描述,画出相应的用例图。 在医生的办公室里,接待员、护士和医生使用病人记录和计划安排系统。当病人第一次来这里看病时,接待员使用该系统来输入病人信息,并且安排所有的预约。护士使用系统来跟踪病人每次看病的结果并输入护理病人的信息,如医疗和诊断。护士也可以访问这些信息以打印病人诊断结果或病人看病历史。医生主要用这个系统来查看病人的病史,偶尔也输入病人医疗信息,但通常让护士输入这些信息。答案:1、(1) 对象(Object) 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。例如,中国就是一个对象。 (2) 类(Class) 类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。例如,学生、人、树木等都是类。 (3) 属性(Attribute) 属性是用来描述对象静态特征的一个数据项。例如,学生具有姓名、性别、年龄等属性。 (4) 操作(Operation) 操作是类的实例被要求执行的服务,具有名字和参数列表。例如,学生具有入学注册、选课等操作。 (5) 关联(Association) 关联是一种结构关系,说明一个事物的对象与另一个事物的对象之间的联系。例如,学生与课程之间的关系就是关联,一个学生可以选修多门课程,一门课程也可以被多个学生选修。 (6) 泛化(Generalization) 泛化是一种一般事物(父类)和特殊事物(子类)之间的关系。例如,学生与研究生之间是泛化关系,研究生是一类特殊的学生。 (7) 聚合(Aggregation) 聚合是一种特殊类型的关联,描述了整体和部分间的结构关系。例如,学校和系之间存在聚合关系,系是学校的一个组成部分。 (8) 依赖(Dependency) 依赖是一种使用关系,描述了一个事物发生变化会影响到另一个使用它的事物。例如,课程表使用课程,二者之间是依赖关系。2、在系统中,类图由类、类的属性和操作以及类之间的各种联系所组成。下图显示了计算机及其组成部分,如处理器、内存、键盘、硬盘、显示器等。时序图表示对象之间的交互顺序,它由角色、对象、生命线和消息组成,其中角色代表与系统交互的外部事物。下图显示了时序图的一种通用表示方法。3、 在系统开发过程中,建立模型的一个重要原因在于描述系统的复杂性。信息系统十分复杂,而且系统的某些部分难以明了。系统各个部分的模型有助于问题的简化,并能够使分析人员的精力一次只集中在系统的几个方面上。同时,分析人员需要收集和处理大量的信息,模型提供了以一种容易理解的形式为后期使用存储信息的方法。建立模型的另一个主要原因是便于交流。开发人员可以使用模型讨论和交流系统的设计方案,用户可以从模型中更好地理解新系统所能提供的各种可能的功能,因此,模型在支持小组人员之间和与用户的交流过程中起着重要的作用。 最后,模型为以后的软件维护和升级提供了文档。 由于系统的复杂性,需要建立多个模型来涵盖细节信息,还需要使用许多不同类型的模型在不同的细节层次(或不同抽象层次)上表现系统,既包括在高层次上对系统的概括,也包括针对系统某一方面的细节描述。4、面向对象方法与传统的软件开发方法相比,具有许多显著的优点,其主要优点如下: (1) 按照人类的自然思维方式,面对客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流。 (2) 在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡。 (3) 对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用。对象类可以派生出新类,类可以产生实例对象,从而实现了对象类的数据结构和操作代码的软构件的复用。另外,面向对象程序设计语言的开发环境一般预定义了系统动态连接库,提供大量公用程序代码,避免重复编写,提高了开发效率和质量。 (4) 在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。这样的系统一旦出错,容易定位和修改,系统的可维护性好。 5、 一、 判断题(1) 测试是为了验证软件已正确地实现了用户的要求。(2) 白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求。 (3) 黑盒测试的测试用例是根据程序内部逻辑设计的。 (4) 为了快速完成集成测试, 采用一次性集成方式是适宜的。 (5) 在软件开发过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。 答案1、错。测试的目的是尽可能多地发现软件中的错误,其附带的收获才是验证该软件已正确地实现了用户的要求。2、对 3、错。黑盒测试主要是根据程序的有关功能规格说明和覆盖准则来设计测试用例,进行测试的,不是根据程序的内部逻辑来设计测试用例。 4、错。采用一次性集成方式进行模块组装,往往成功率很低,而且出现错误时,不容易确定问题出现在什么地方,因此应采用增量式集成方式,可以把出错的范围局限到少数模块之中。5、错。在软件开发过程中,发现错误越早,则为修复和改正错误所花费的代价就越低。反之,发现错误越晚,则为修复和改正错误所花费的代价就越高。1 什么是软件测试?软件测试与调试有什么区别? 2 软件测试包括哪些类型的测试?这些测试之间的区别是什么?3 针对以下问题:某一种8位计算机,其十六进制常数的定义是以0x或0X开头的十六进制整数,其取值范围为7f7f(不区分大小写字母),如0x13、0x6A、0x3c。请采用等价类划分的方法设计测试用例。问答题答案1、软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。 软件测试与调试在目的、技术和方法等方面存在很大的区别,主要表现在如下方面: (1) 测试是为了发现软件中存在的错误;调试是为了证明软件开发的正确性。 (2) 测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。 (3) 测试是有计划的,需要进行测试设计;调试是不受时间约束的。 (4) 测试经历发现错误、改正错误、重新测试的过程;调试是一个推理的过程。 (5) 测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的飞跃。 (6) 测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。 (7) 大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。 2、软件测试包括单元测试、集成测试、确认测试和系统测试等。单元测试集中于单个模块的功能和结构的检验;集成测试集中于模块组合的功能和软件结构检验;确认测试主要检查软件是否符合合同要求,包括需求规格说明、设计规格说明和用户手册等;系统测试集中检验系统所有元素之间协作是否合适,整个系统的性能和功能是否达到。3、输入条件有效等价类无效等价类开头字符由0x或0X开头(1)以字母开头 以非0数字开头(2)(3)数值字符数字或AF的字母 (4)AF以外的字母(5)数值字符个数1个(6)0个(7)数值-7f且7f (8)7f7f(9)(10) 用例1:0x7F, 覆盖等价类(1)(4)(6)(8) 用例2:-0Xb, 覆盖等价类(1)(4)(6)(8) 用例3:0X0, 覆盖等价类(1)(4)(6)(8) 用例4:0x, 覆盖等价类(1)(7) 用例5:A7, 覆盖等价类(2) 用例6:-1A, 覆盖等价类(3) 用例7:0X8h, 覆盖等价类(1)(5) 用例8:0x80, 覆盖等价类(1)(4)(10) 用例9:-0XaB, 覆盖等价类(1)(4)(9) 用例1:0x7F, 覆盖等价类(1)(4)(6)(8) 用例2:-0Xb, 覆盖等价类(1)(4)(6)(8) 用例3:0X0, 覆盖等价类(1)(4)(6)(8) 用例4:0x, 覆盖等价类(1)(7) 用例5:A7, 覆盖等价类(2) 用例6:-1A, 覆盖等价类(3) 用例7:0X8h, 覆盖等价类(1)(5) 用例8:0x80, 覆盖等价类(1)(4)(10) 用例9:-0XaB, 覆盖等价类(1)(4)(9) 用例1:0x7F, 覆盖等价类(1)(4)(6)(8) 用例2:-0Xb, 覆盖等价类(1)(4)(6)(8) 用例3:0X0, 覆盖等价类(1)(4)(6)(8) 用例4:0x, 覆盖等价类(1)(7) 用例5:A7, 覆盖等价类(2) 用例6:-1A, 覆盖等价类(3) 用例7:0X8h, 覆盖等价类(1)(5) 用例8:0x80, 覆盖等价类(1)(4)(10) 用例9:-0XaB, 覆盖等价类(1)(4)(9) 用例1:0x7F, 覆盖等价类(1)(4)(6)(8) 用例2:-0Xb, 覆盖等价类(1)(4)(6)(8) 用例3:0X0, 覆盖等价类(1)(4)(6)(8) 用例4:0x, 覆盖等价类(1)(7) 用例5:A7, 覆盖等价类(2) 用例6:-1A, 覆盖等价类(3) 用例7:0X8h, 覆盖等价类(1)(5) 用例8:0x80, 覆盖等价类(1)(4)(10) 用例9:-0XaB, 覆盖等价类(1)(4)(9) 用例1:0x7F, 覆盖等价类(1)(4)(6)(8) 用例2:-0Xb, 覆盖等价类(1)(4)(6)(8) 用例3:0X0, 覆盖等价类(1)(4)(6)(8) 用例4:0x, 覆盖等价类(1)(7) 用例5:A7, 覆盖等价类(2) 用例6:-1A, 覆盖等价类(3) 用例7:0X8h, 覆盖等价类(1)(5) 用例8:0x80, 覆盖等价类(1)(4)(10) 用例9:-0XaB, 覆盖等价类(1)(4)(9) 窗体顶端问答题1、 为什么软件需要维护?简述软件维护的过程。2、 为什么说软件维护是一项困难的工作? 3、 改正性维护与排错(调试)是否是一回事?为什么? 4、 什么是软件再工程?软件再工程的意义是什么? 问答题答案1、在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。 软件维护的类型有4种:改正性维护、适应性维护、完善性维护和预防性维护。 (1) 改正性维护是要改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷; (2) 适应性维护是要在软件使用过程中数据环境发生变化或处理环境发生变化时修改软件以适应这种变化; (3) 完善性维护是在用户和数据处理人员使用软件过程中提出改进现有功能,增加新的功能,以及改善总体性能的要求后,修改软件以把这些要求纳入到软件之中; (4) 预防性维护是为了提高软件的可维护性、可靠性等,事先采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,为以后进一步改进软件打下良好基础。 软件维护的过程如图所示。首先是确认维护要求,这需要维护人员与用户反复协商,弄清错误概况以及对业务的影响大小,以及用户希望做什么样的修改,并把这些情况存入故障数据库。然后由维护组织管理员确认维护类型,根据不同的维护类型实施不同的维护过程。 (1) 对于改正性维护申请,从评价错误的严重性开始。如果存在严重的错误,则必须安排人员,在系统监督员的指导下,进行问题分析,寻找错误发生的原因,进行救火性的紧急维护;对于不严重的错误,可根据任务、机时情况、视轻重缓急,进行排队,统一安排时间。 (2) 对于适应性维护和完善性维护申请,需要先确定每项申请的优先次序。若某项申请的优先级非常高,就可立即开始维护工作,否则,维护申请和其它的开发工作一样,进行排队,统一安排时间。 (3) 并不是所有的完善性维护申请都必须承担,因为进行完善性维护等于是做二次开发,工作量很大,所以需要根据商业需要、可利用资源的情况、目前和将来软件的发展方向、以及其它的考虑,决定是否承担。 尽管维护申请的类型不同,但都要进行同样的技术工作。这些工作包括:修改软件需求说明、修改软件设计、设计评审、对源程序做必要的修改、单元测试、集成测试(回归测试)、确认测试、软件配置评审等。在每次软件维护任务完成后,最好进行一次情况评审,对以下问题进行总结: 在目前情况下,设计、编码、测试中的哪一方面可以改进? 哪些维护资源应该有但没有? 工作中主要的或次要的障碍是什么? 从维护申请的类型来看是否应当有预防性维护? 情况评审对将来的维护工作如何进行会产生重要的影响,并可为软件机构的有效管理提供重要的反馈信息。 2、软件维护是一件十分困难的工作,由于软件需求分析和开发方法产生软件的缺陷,加上软件开发过程中没有严格而又科学的管理和规划,便会引起软件运行时的维护困难。 软件维护不是一件吸引人的工作,由于维护工作的困难性,维护经常遭受挫折,而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做。 软件维护工作的困难主要表现在以下几个方面: (1) 读懂别人的程序是很困难的,而文档的不足更增加了这种难度。一般开发人员都有这样的体会,修改别人的程序还不如自己重新编写程序。 (2) 文档的不一致性是软件维护困难的又一个因素,主要表现在各种文档之间的不一致以及文档与程序之间的不一致性,从而导致维护人员不知所措,不知怎样进行修改。这种不一致性是由于开发过程中文档管理不严造成的,开发中经常会出现修改程序而忘了修改相关的文档,或者某一个文档修改了,却没有修改与之相关的其他文档等现象,解决文档不一致性的方法就是要加强开发工作中文档的版本管理。 (3) 软件开发和软件维护在人员和时间上存在差异。如果软件维护工作是由该软件的开发人员完成,则维护工作相对比较容易,因为这些人员熟悉软件的功能和结构等。但是,通常开发人员和维护人员是不同的,况且维护阶段持续时间很长,可能是1020年的时间,原来的开发工具、方法和技术与当前有很大的差异,这也造成了维护的困难。 (4) 软件维护不是一件吸引人的工作。由于维护工作的困难性,维护经常遭受挫折,而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做。 3、 改错性维护与排错(调试)不是一个概念。 (1) 调试是作为测试的后续工作而出现的,在测试发现软件中的错误之后,开发人员通过调试进一步诊断和改正程序中潜在的错误;在软件交付使用后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来,这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。改正性维护是为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用所进行的诊断和改正错误的过程。 (2) 调试在程序编码阶段、测试阶段、运行和维护阶段都可以发挥作用,它实际上是一种工具或手段;在软件交付运行之后,用户实际充当了测试员的角色,一旦发现软件运行中的错误或缺陷,就会将问题报告通报软件提供商,申请软件维护。软件维护人员可以利用调试手段来诊断和改正软件中存在的错误,这时可能涉及的范围不只包括程序,还有文档和数据,不仅可能修改程序代码,而且可能需要修改设计甚至需求,所以改正性维护是在更大范围中做工作。 4、软件再工程是一种软件工程,它从已有的程序中重新获得设计信息,并能够使用这些信息改建或重构现有的系统,以改进其综合质量。 软件再工程的意义在于: (1) 帮助软件组织降低软件演化的风险。当改进原有软件时必须频繁地对软件实施变更,从而降低了软件的可靠性,而软件再工程可以降低变更带来的风险。 (2) 开发一个新的软件系统需要花费大量的资金和人力,如果采用再工程,而不是扔掉原来的软件,可以部分补偿在软件上的投资。 (3) 再工程可使得程序员更容易理解程序,更容易对其开展工作,从而提高维护工作的生产效率。 (4) 再生程对已有软件进行全部或部分的改造,改进软件的功能和提高其性能,赋予软件新的活力。 1、 简单说明软件项目管理的过程。2、 如果你负责开发一个75KDSI(千条交付源指令)的嵌入式产品,该产品各方面均正常,但数据库规模很大,所用的软件工具很低级,试用中级COCOMO模型确定估计的工作量(单位:人月)。答案:1、软件项目管理的对象包括进度、系统规模及工作量估算、经费、组织机构和人员、风险、质量、作业和环境配置等,这种管理在技术工作开始之前就应开始,而在软件从概念到实现的过程中继续进行,并且只有当软件开发工作最后结束时才终止,覆盖了整个软件生存期。 软件项目管理的主要过程如下: (1) 软件项目的启动 在制定软件项目计划之前,必须先明确项目的目标和范围、考虑候选的解决方案、标明技术和管理上的要求。 (2) 项目计划的制定 估算所需人力、项目持续时间、成本等。 作出进度安排,分配资源,建立项目组织及人员,根据规模和工作量的估算分配任务。 进行风险分析,包括风险识别、风险估计、风险优化、风险驾驭策略、风险解决和风险监督,这些步骤贯穿在软件工程过程中。 制定质量管理指标,包括识别任务、度量过程、建立里程碑等。 编制预算和成本。 准备环境和基础设施等。 (3) 计划的跟踪和控制 由项目管理人员负责在过程执行时监督过程的实施,提供过程进展的内部报告,并按合同规定向需方提供外部报告。同时,根据情况适时地控制和调整项目的进度。 (4) 评审和评价计划的完成程度 项目管理人员应对计划完成程度进行评审,对项目进行评价。并对计划和项目进行检查, 使之在变更或完成后保持完整性和一致性。 (5) 编写管理文档 项目管理人员根据合同确定软件开发过程是否完成。如果完成,应从完整性方面检查项目完成的结果和记录,并把这些结果和记录编写成文档并存档。 2、根据中级COCOMO模型的估算公式,可以得到名义工作量为 根据产品的性质,选择影响因子如下:影响工作量因素(fi)取值软件可靠性1.00数据库规模1.16产品复杂性1.00执行时间限制1.00存储限制1.00虚拟机易变性1.00环境周转时间1.00分析员能力1.00应用论域实际经验1.00程序员能力1.00虚拟机使用经验1.00程序语言使用经验1.00现代程序设计技术1.00软件工具的使用1.24开发进度限制1.00程序实际工作量为模拟试题一窗体顶端一、 判断(A表对,B表错)1、文档是软件产品的一部分,没有文档的软件就不称其为软件。 2、在需求分析过程中,分析员要从用户那里解决的最重要的问题是给该软件提供哪些信息。 3、需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。 4、建立用例模型的步骤包括确定角色、确定用例和绘制用例图。5、数据流图建立系统的功能模型,它由数据流、加工和数据存贮组成。 6、软件配置管理是一组标识、组织和控制修改源程序的活动。 7、UML是一种直观化、明确化、构建和文档化软件产物的通用语言。 8、好的测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。9、边界值分析方法是取输入/输出等价类的边界值作为测试用例。 10、面向对象的分析是面向计算机系统建立软件系统的对象模型。 答案1、 A2、 B3、 B4、 B5、B6、 B7、 B8、 A9、 A10、B11、 ( )是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。 A 软件过程 B 软件测试 C 软件生存周期 D 软件工程 12、 ISO9000是由ISO/TC176制定的关于( )和质量保证的国际标准。 A 质量控制 B 质量管理 C 质量策划 D 质量改进 13、 CMM提供了一个框架,将软件过程改进的进化步骤组织成5个成熟度等级。除第1级外,每个等级都包含了实现该成熟度等级目标的若干( )。 A 关键实践 B 关键过程域 C 软件过程能力 D 软件过程 14、 在软件开发的各种资源中,( )是最重要的资源。 A 开发工具 B 方法 C 硬件环境 D 人员 15、 软件的复杂性是( ),它引起人员通信困难、开发费用超支、开发时间超时等问题。 A 固有的 B 人为的 C 可消除的 D 不可降低的 16、 在各种不同的软件需求中,( )描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明。 A 业务需求 B 功能需求 C 非功能需求 D 用户需求 17、 原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于( )系统。 A 需求不确定的 B 需求确定的 C 管理信息 D 决策支持 18、( )意味着一个操作在不同的类中可以有不同的实现方式。 A 多态性 B 多继承C 类的可复用 D 信息隐蔽 19、 时序图反映对象之间发送消息的时间顺序,它与( )是同构的。 A 用例图 B 类图 C 活动图 D 协作图 20、 单元测试的测试用例主要根据( )的结果来设计。 A 需求分析 B 源程序 C 概要设计 D 详细设计 答案:11、D12、B13、B14、D15、A16、D17、A18、A19、D20、D窗体顶端二、 填空题1、 在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是 关系。2、 类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是 关系。3、 用例及其协作之间是 关系。4、 接口及其实现类或构件之间是 关系。5、 动物与老虎之间是 关系。填空题答案1、关联2、依赖3、实现4、实现5、泛化三、 问答题1、 软件复用的范围不仅仅涉及源程序代码,请至少列出5种可能复用的软件元素。2、 传统瀑布模型的主要缺陷是什么?试说明造成缺陷的原因。3、某学校需要开发一个学生成绩管理系统,教务人员可以通过该系统维护学生信息、课程信息和成绩信息,学生可以随时查询自己的成绩单,该系统的实体关系图如下所示:请问图中是否应该增加教务人员?试说明理由。4、下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。int GetMax(int n, int datalist ) int k=0; for ( int j=1; j datalistk ) k=j;return k; (1) 画出该程序的控制流图,并计算其McCabe环路复杂性。 (2) 用基本路径覆盖法给出测试路径。 (3) 为各测试路径设计测试用例。 5、下图显示了某个学校课程管理系统的部分类图,其中一个学生(student)可以知道所有注册课程的教师(instructor),一个教师也可以知道所有注册课程的学生。 现在提出一个新的需求:一个教师也可以是某些课程的学生,那么下面设计AC中哪一个是最好的?为什么? 设计A:设计B:设计C:6、 所谓分层体系结构是按层组织软件的一种软件体系结构,其中每层软件建立在低一层的软件层上,下图显示了一种分层体系结构。请选择正确的答案,将其对应的序号填入图中的( )。供选择的答案: 高效性 通用性 保密性 专用性 系统软件 中间件 应用软件 支撑软件 特定业务 子系统 问答题答案1、 可复用的软件元素包括(选5种): 项目计划、成本估计、体系结构、需求模型和规格说明、设计、用户文档和技术文档、用户界面、数据结构、测试用例。 2、 传统瀑布模型的主要缺陷及其原因: 在项目的早期,用户常常很难清楚地给出所有需求,瀑布模型却要求如此。由于瀑布模型的特点,早期的错误直到开发晚期才能被发现,开发的风险较大。 3、 不应该增加教务人员,因为教务人员只是该系统的一个使用者,系统不处理其属性信息。4、 1.控制流图如下,McCabe环路复杂性为3。2. 测试路径:Path1: Path2: Path3: 3. 测试用例: Path1: 取n=1,datalist0 = 1, 预期结果:k=0 Path2: 取n=2,datalist0 = 1,datalist1 = 0, 预期结果:k=0 Path3: 取n=2,datalist0 = 0,datalist1 = 1, 预期结果:k=1 5、答题要点 设计B是最好的。学生和教员均可以从Candidate类继承而来;抽象出Role类,使Candidate类与Role类之间形成多对多的关联关系,实现了一个人既是教师又是某门课的学生这个需求。 6、模拟试题二一、 选择 、( )是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。 A 软件过程B 软件工具C质量保证D 软件工程、( )是以追求更高的效益和效率为目标的持续性活动。A 质量策划B 质量控制C 质量保证D 质量改进、CMM提供了一个框架,将软件过程改进的进化步骤组织成5个成熟度等级。除第1级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过程域又包含若干( )。A 关键实践B 软件过程性能 C 软件过程能力 D 软件过程 、在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,( )是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。 A 业务需求 B 功能要求C 非功能需求D 用户需求、( )意味着一个操作在不同的类中可以有不同的实现方式。A 多态性B 多继承C 类的复用D 封装、在面向对象的系统中,系统责任的良好分配原则是( )。A 在类之间均匀分配B 集中分配在少数控制类中C 根据交互图的消息进行分配D 根据个人喜好进行分配、软件配置项是软件配置管理的对象,即软件工程过程中产生的( )。 A 接口 B 软件环境 C 信息项 D 版本 、软件测试计划开始于需求分析阶段,完成于( )阶段。 A 需求分析 B 软件设计 C 软件实现 D 软件测试 选择题答案 1a 2d 3a 4c 5a 6b 7c 8b二、问答题、判断下列叙述的正确性,将结果(正确,错误)填入( )中,并改正错误的说法。(1).( )在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。 改正:_(2).( )在需求分析中,分析员要从用户那里解决的最重要的问题是明确软件做什么。 改正:_ (3).( )软件需求规格说明书在软件开发中具有重要的作用,是软件可行性分析的依据。 改正:_(4).( )模型是对现实的简化,建模是为了更好地理解所开发的系统。 改正:_(5).( )UML语言支持面向对象的主要概念,并与具体的开发过程相关。 改正:_(6).( )用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。 改正:_(7).(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论