版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程理论知识软件工程基础知识精解一.什么是软件? 4二.软件危机以及产生软件危机的原因? 4三.有哪些流行的软件工程方法学及其要素? 4四.什么是软件生存周期?有哪些活动? 44.1软件生存周期 44.2开发活动 44.3各活动阶段主要文档 54.3.1可行性分析和项目开发计划 54.3.2需求分析中的文档 54.3.3概要设计阶段文档 54.4.4详细设计阶段 54.4.5编码 54.4.5测试 54.4.6系统测试阶段 5五.有哪些主要生存期模型? 55.1瀑布模型(传统的软件周期模型) 55.2原型模型 65.2.1快速原型模型 65.2.2演化模型 65.2.3增量模型(渐增式) 65.2.4原型模型小结 65.3螺旋模型 75.4喷泉模型 75.5迭代软件开发技术 75.6极限编程(XP) 8六.软件过程基础知识 96.1软件过程 96.2评估工具 9七.软件工程项目管理基本知识 97.1时间管理 97.1.1Gantt图 97.1.2PERT网图与关键路径 107.2成本管理 117.3风险管理 117.3.1风险的定义 117.3.2风险的类型 117.3.3风险管理活动 127.3.3风险曝光度 12八.模块化基本知识 128.1模块特性 128.1.1可分解性 128.1.2可组装性 138.1.3可理解性 138.1.4连续性 138.1.5保护性 138.2模块与模块的耦合性(7种) 138.2.1内容耦合 138.2.2公共耦合 138.2.3外部耦合 138.2.4控制耦合 138.2.5标记耦合 138.2.6数据耦合 138.2.7非直接耦合(无耦合) 138.3模块的内聚性 138.4模块的深度、宽度、扇出与扇入 148.5模块作用域和控制域 148.6模块化基础知识小结 14九.什么是软件开发方法?有哪些主要方法? 149.1结构化方法学 149.1.1数据流图(DFD图) 149.1.2数据字典 169.1.3结构化语言 169.1.4实体-关系图(E-R图) 169.2结构化设计 179.2.1概要设计 179.2.2详细设计 199.3Jackson方法 199.4面向对象分析方法(00A) 19十.软件工具 20十一.软件开发环境 20十二.软件质量管理基础知识 2012.1软件质量 2012.2软件质量保证 2012.3代码评审技术 21十三.成本-效益分析可用哪些指标进行度量? 21十四.第四代语言(4GL)的主要特征? 21十五.软件测试 2115.1软件测试经过的步骤 2115.2测试与软件开发各阶段的关系 2215.3白盒测试 2215.4黑盒测试 2315.4灰盒测试 2315.5回归测试 2315.6单元测试 2315.7集成测试 2315.8确认测试 2415.9系统测试 24十六.软件工程标准和软件文档 2417.1软件维护类型 2517.2软件的可维护性 25十八.软件的可靠性 25一.什么是软件?1.满足用户功能需求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;以上三部分的组合构成了软件二.软件危机以及产生软件危机的原因?1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。2.软件成本在计算机系统总成本中所占的比例逐年上升。“开发成本高”3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。4.软件产品的质量不容易保证。5.软件产品常常是不可维护的。6.软件产品的重用性差,同样的软件多次重复开发。7.软件通常没有适当的文档资料。产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。三.有哪些流行的软件工程方法学及其要素?1.使用最广泛的软件工程方法学是面向结构化方法学和面向对象的方法学(上世纪70-90年代,流行面向结构化方法学,上世纪90年代到现在,流行面向对象方法学)。2.要素:方法、工具和过程。四.什么是软件生存周期?有哪些活动?4.1软件生存周期一个软件从提出开发要求开始到软件废弃不用的整个过程。4.2开发活动可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行维护可行性分析和项目开发计划:用户、项目负责人和系统分析师搞清楚系统要解决的问题是什么?以及从技术、经济、时间等方面论证项目开发可行性。需求分析和定义:用户、项目负责人和系统分析师确定系统必须做什么?但不关心具体怎么做?要确定系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型,同时制定后期测试计划。软件设计-概要设计:系统分析师和软件设计师在需求定义的基础上,把各功能需求转换成需要的体系结构,即划分模块、模块的层次、模块之间的调用关系以及各模块的功能,同时设计应用系统的总体数据结构和数据库结构。软件设计-详细设计:软件设计师和程序员对概要设计阶段得出的各功能模块进行详细描述成精确的、结构化的过程描述,即各个功能模块具体怎么实现,用相应的工具把模块的控制结构表示出来,但还未进行编码。编码:由程序员详细设计阶段得出的各模块控制结构(图形)转变成计算机能识别的指令代码。测试:由另一部门(单位)的软件设计师或系统分析师花费最少的人力物力找出程序最多、最大的错误(bug)。维护:由用户和维护人员进行的软件生存周期中时间最长的阶段。4.3各活动阶段主要文档4.3.1可行性分析和项目开发计划可性行研究报告项目开发计划4.3.2需求分析中的文档需求规格说明书初步用户使用手册确认测试的测试计划修改完善的软件开发计划系统测试计划文档4.3.3概要设计阶段文档概要设计说明书数据库说明书用户手册修订的测试计划(测试的策略、方法、步骤)4.4.4详细设计阶段详细设计说明书4.4.5编码程序清单4.4.5测试完善的测试计划书软件测试报告4.4.6系统测试阶段系统测试报告2005年下半年应该在(7)阶段制定系统测试计划。(7)A.需求分析B.概要设计C.详细设计D.系统测试●(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。(29)A.概要设计说明书B.详细设计说明书C.用户手册D.用户需求说明书五.有哪些主要生存期模型?瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、基于知识的模型和变化模型。5.1瀑布模型(传统的软件周期模型)瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布,如下图所示。优点:以文档作为驱动,强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。与它最相适应的开发方法是结构化方法。缺点:不适应用户需求的改动。2004年下半年:●软件开发中的瀑布模型典型的刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是(9)。
(9)A.构件化方法B.结构化方法C.面向对象方法D.快速原型法5.2原型模型5.2.1快速原型模型快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。具有广泛技能水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验与才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。5.2.2演化模型在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。5.2.3增量模型(渐增式)增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品。其示意图如图4-2所示。5.2.4原型模型小结从下面的有关原型化方法的叙述中,选择出正确的叙述:(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。(5)使用原型化方法时应该使用第三代编程语言。(6)原型化加强了开发过程中用户的参与和决策。(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。(8)原型化方法大致可分为演化式和递增式。(9)采用原型化方法时,软件的开发成本较高。(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。5.3螺旋模型螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。5.4喷泉模型喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。迭代指的是开发活动常常需要重复多次,在不断的迭代中逐渐完善软件系统,无间歇性指在开发活动之间不存在明显的边界,允许各开发活动交叉、迭代地进行。5.5迭代软件开发技术Rational统一开发流程RUP(RationalUnifiedProcess)是一个通用的软件流程框架,它是一个以架构为中心、用例驱动的迭代化软件开发流程。RUP是从几千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,是软件开发行业事实上的行业标准。在RUP中,我们把软件开发生命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑(如下图所示)。这四个阶段主要是为了达到以下阶段性的目标里程碑:先启(Inception):确定项目开发的目标和范围精化(Elaboration):确定系统架构和明确需求构建(Construction):实现剩余的系统功能产品化(Transition):完成软件的产品化工作,将系统移交给客户2005年下半年:在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用(6)。(6)A.原型法B.瀑布模型C.V-模型D.螺旋模型2006年上半年:渐增式开发方法有利于(4)。
(4)A.获取软件需求B.快速开发软件C.大型团队开发D.商业软件开2006年下半年:常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中(5)模型适用于需求明确或很少变更的项目,(6)主要用来描述面向对象的软件开发过程。(5)A.瀑布模型B.演化模型C.螺旋模型D.喷泉模型(6)A.瀑布模型B.演化模型C.螺旋模型D.喷泉模型●统一过程(UP)的基本特征是“用例驱动,以架构为中心的和受控的迭代式增量开发”。UP将一个周期的开发过程化分为4个阶段,其中(26)提交结果包含了系统架构。(26)A.先启阶段B.精化阶段C.构建阶段D.提交阶段5.6极限编程(XP)一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方法。与其他方法对比,最大的不同在于:1.在更短的周期内,更早地提供具体、持续的反馈信息2.迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断地发展3.依赖于自动测试程序来监控开发进度,并及早地捕获缺陷4.依赖于口头交流,测试和源程序进行沟通5.倡导持续的演化式的设计6.依赖于开发团队内部的紧密协作7.尽可能达到程序员短期利益和项目长期利益的平衡如上图所示,xp由价值观、原则、实践和行为四个部分组成,它们彼此相互依赖、关联,并通过行为贯穿于整个生命周期。xp的核心是其总结的四大价值观:沟通、简单、反馈和勇气、它们是xp的基础,也是xp的灵魂。5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。在xp方法中,贯彻的是“小步快走”的开发原则,因此工作质量绝不可打折扣,通常采用测试先行的编码方式来提供支持。在xp中,继承了12个最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续继承、每周工作40小时,现场客户,编码标准。六.软件过程基础知识6.1软件过程软件过程是指人们用于开发和维护软件及相关产品的一系列活动,包括软件工程过程和软件管理过程。6.2评估工具软件过程的评估,通常采用软件能力成熟度模型(CapabilityMaturityModel,CMM)。CMM1.1的5个等级(由低级到高级):初始级软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。可重复级建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。已定义级已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。已管理级收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。优化级加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。巧记:初级程序员,可重复写程序,现已定义了管理策略来优化程序设计!2006年下半年:●软件能力成熟度模型(CMM)是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。该模型将软件能力成熟度自低到高依次划分为初始级、可重复级、已定义级、已管理级、优化级。从(17)开始,要求企业建立基本的项目管理过程的政策和管理规程,使项目管理过程有章可循。(17)A.初始级B.可重复级C.已定义级D.已管理级七.软件工程项目管理基本知识软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期。软件工程项目管理一般分为时间管理、成本管理、人力资源管理、风险管理。7.1时间管理7.1.1Gantt图是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。甘特图的优点:直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有缺点:(a)不能显示地描绘各项彼此间的依赖关系;(b)进度计划的关键部分不明显,难以判断哪些部分应当是主攻和主控的对象;(c)计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。2006年5月:●在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gantt图的描述中,不正确的是(5)。
A.Gantt图表现了各个活动的持续时间B.Gantt图表现了各个活动的起始时间
C.Gantt图反映了各个活动之间的依赖关系D.Gantt图表现了完成各个活动的进度7.1.2PERT网图与关键路径PERT网图是一个由箭头(标识任务)和结点(标识事件)组成的有向图。将网络方法用于工作计划安排的评审和检查。开发模块A、B、C模块的任务网络图PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的“关键路径”。关键路径(CriticalPath)是由一连串的任务所组成的链,距离最大的一条路径。软件项目的管理人员应该密切注视关键任务的进展情况。如果希望缩短工期,只有往关键任务中增加资源才会有效果。7.2成本管理一种常用的成本估算方法是先估计完成软件项目所需的工作量(人月数),然后根据每个人月的代价(金额)计算机软件的开发费用:开发费用=人月数×每个人月的代价另一种方法是估计软件的规模(通常指源代码行数),然后根据每行源代码的平均开发费用(包括分析、设计、编码、测试所花的费用),计算机软件的开发费用:开发费用=源代码行数×每行平均费用估算源代码行数时,可以请n为有经验的专家,每位专家对软件给出3个估计值:ai最少源代码行数(该软件可能的最小规模)bi最大源代码行数(该软件可能的最大规模)mi最可能的代码行数(该软件最可能的规模)然后计算出每位专家的估算期,n位专家的估算期望值的平均值就是代码行数的估算值。Putnam模型和COCOMO模型:Putnam模型和COCOMO模型是常用的成本估算模型。Putnam模型:是一种动态多变量模型,它是假设在软件开发的整个生存期中工作量的分布。COCOMO模型:是结构性成本模型,是最精确、最易于使用的成本估算模型之一。该模型可以分为:(1)基本COCOMO模型,是一个静态单变量模型,它是对整个软件系统进行估算。(2)中级COCOMO模型,是一个静态多变量模型。它将软件系统模型分为系统和部件两个层次,系统由部件构成,它把软件开发所需人力(成本)看作是程序大小和一系列“成本驱动属性”的函数。(3)详细COCOMO模型,它将软件系统模型分为系统、子系统和模块3个层次,它除包括中级模型所考虑的因素外,还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。2006年上半年:●使用LOC(linesofcode)度量软件规模的优点是(9)。
(9)A.容易计算B.与使用的编程语言相关C.与使用的开发模型有关D.在设计之前就可以计算出LOC●软件项目开发成本的估算依据,通常是开发成本估算模型,常用的模型有:①IBM模型②Putnam模型③基本COCOMO模型④中级COCOMO模型⑤高级OCOMO模型其中(18)都是静态单变量模型。(18)A.①②B.②④⑤C.①③D.③④⑤7.3风险管理7.3.1风险的定义1.关心未来:风险是否会导致软件项目失败?2.关心变化:在用户需求、开发技术、目标机器,以及所有其他与项目及时工作和全面完成有关的实体中会发生什么样的变化?3.关心选择:应采用什么方法和工具,应配置多少人力,在质量上强调到什么程度才能满足要求?7.3.2风险的类型1.项目风险:指潜在的预算、进度、人力(工作人员及组织)、资源、客户和需求等方面的问题以及它们对软件项目的影响。例如:项目复杂性、规模和结构不确定性等都是项目风险、项目风险威胁到项目计划,即如果项目风险变成现实,有可能会拖延项目的进度,增加项目的成本。2.技术风险:指潜在的设计、实现、接口、验证和维护等方面的问题。此外,规约的二义性、技术的不正确性,陈旧的技术和“先进的”技术也是技术风险因素。技术风险威胁到开发软件的质量及软件交付时间,如果技术风险比恩成现实,则开发工作可能变得很困难或根本不可能。3.商业风险:在信息系统项目中,商业风险威胁到要开发系统的生存能力。一般主要有5类商业风险:市场风险:开发了一个没有人真正需要的优秀产品或系统策略风险:开发的产品不再符合公司的整体商业策略销售风险:开发了一个销售部门不知道如何去卖的产品管理风险:由于重点的转移或人员的变动而失去了高级管理层的支持预算风险:没有得到预算或人力上的保证7.3.3风险管理活动1.风险识别:找的哦啊潜风险并将其文档化,它包括项目风险、技术风险和商业风险三种2.风险评估:可分为定量评估和定性评估。通过对各种风险发生的可能性和破坏性这两个方面进行评估,并将它们按优先级别进行排列。在进行软件工程分析时,项目管理人员要进行四种风险评估活动,包括建立表示风险概率的尺度,面熟风险引起的后果,估计风险影响的大小,确定风险估计的正确性3.风险驾驭:利用某种技术,如原型化、软件自动化、软件心理学、可靠性工程学等方法设法避开风险。统称可以把风险应对策略分为两种类型:防范策略和相应策略(1)风险防范策略规避策略:想方设法阻止风险的发生或消除风险发生的危害。避免策略如果成功则可以消除风险对项目的影响。例如:针对技术风险可以采取聘请技术专家、针对项目进度风险可以采取延长项目时间或缩减项目范围的办法。减轻策略:当风险很难避免或转移时,可以考虑采取减轻策略来降低风险发生的概率或减轻风险带来的损失。风险是一种不确定因素,可以通过前期的一些工作来降低风险发生的可能性;或者也可以通过一些准备来降低风险发生的损失。例如对于需求风险,如果认为需求变化可能很剧烈,那么可以考虑采用柔性设计的方法降低需求变更的代价。尤其对于IT项目而言,越早发现问题越容易解决,例如对于需求风险带来的问题,在设计阶段发现要好过编码阶段发现。针对这些特点,也可以采用尽早暴露风险的方法降低发生风险的损失。(2)制定风险相应策略注意,虽然我们采用了很多方法防范风险的发生,但风险本身就是一种不确定因素,不可能在项目中完全消除。我们还需要制定一些风险发生后的应急措施来解决风险带来的问题。例如:对于系统性能的风险,由于不清楚目前的系统是否能够满足用户的需求,可能在系统发布后出现系统性能不足的问题。对于这个风险,我们可以定义其风险响应策略为增加硬件资源以提高系统性能。风险响应策略与风险防范策略不同,无论风险是否发生,风险防范策略都需要体现在项目技术中,在项目过程中需求有人来执行对应的方法策略;而风险响应策略是在事件触发的,直到当风险发生后才会被执行,如果始终没有发生风险,则始终不会被安排到项目活动中。7.3.3风险曝光度风险曝光度(riskexposure)=风险损失*风险概率例如:正在开发的软件项目可能存在一个未将发现的错误,这个错误出现的概率是0.5%,给公司造成的损失将是100万元,那么这个错误的风险曝光度是5000元。八.模块化基本知识模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来访问的过程、函数、子程序或宏调用等。模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可独立地开发、测试,最后组装成完整的程序。8.1模块特性8.1.1可分解性如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。8.1.2可组装性如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。8.1.3可理解性如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。8.1.4连续性如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。8.1.5保护性如果模块内部出现异常情况,并且它的影响限制在模块内部,不会影响其他模块,则错误引起的副作用就会被最小化。注意“连续性”和“保护性”的区别!!8.2模块与模块的耦合性(7种)耦合是对一个软件结构内不同模块之间互连程度的度量。耦合可以分成下列几种,它们之间的耦合度由高到低排列。8.2.1内容耦合直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。8.2.2公共耦合多个模块引用同一全局数据区。例如,C语言中的external数据类型、磁盘文件等都是全局数据区。8.2.3外部耦合模块与软件以外的环境有关联。例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。8.2.4控制耦合一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。8.2.5标记耦合两个模块之间通过传递公共指针或地址相互作用的耦合。8.2.6数据耦合模块间通过传递数据交换信息。8.2.7非直接耦合(无耦合)模块间无任何关系,独立工作 原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。总结:内公不好,家外被控了,标志数年心血白非了!(内功不好,家外被控了,标志数年心血白费了!)8.3模块的内聚性内聚是指一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部的概念的自然扩展。设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。1)偶然内聚:一个模块的各成分之间毫无关系。比如:一组语句在程序的多处出现,为了节省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。 2)逻辑内聚:把几种逻辑上相关的功能组放在同一模块中。 3)瞬时内聚(时间内聚):一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。 4)过程内聚:一个模块的处理元素是相关的,而且必须按特定的次序执行。 5)通信内聚:一个模块的所有成分都结合在同一个数据结构上。 6)顺序内聚:模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。 7)功能内聚:模块内的所有成分属于一个整体,完成单一的功能。在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。 模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。巧记:偶然逻辑混乱,瞬间遗忘过程,打电话(通信)询问,顺序清楚,功能也搞定!8.4模块的深度、宽度、扇出与扇入深度:表示软件结构中控制的层数。宽度是软件结构中同一个层次上的模块总数的最大值一个模块的扇入是指直接调用该模块的上级模块的个数。设计原则:低扇出、高扇入。8.5模块作用域和控制域软件设计时,模块的作用域应在控制域之内。8.6模块化基础知识小结通过模块的合并和分解,降低模块的耦合度。模块的扇入应尽量大,扇出应尽量小。一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的重用性高,利用率高。扇出大表示模块的复杂度高。所以要高扇入,低扇出。要将模块的作用范围限制在模块的控制范围之内。降低模块之间的复杂性,避免“病态连接”。2006年上半年:●模块的耦合度描述了(16)。
(16)A.模块内各种元素结合的程度B.模块内多个功能之间的接口
C.模块之间公共数据的数量D.模块之间相互关联的程度●内聚是一种指标,表示一个模块(17)。
(17)A.代码优化的程度B.代码功能的集中程度C.完成任务时及时程度D.为了与其他模块连接所要完成的工作量九.什么是软件开发方法?有哪些主要方法?软件开发方法:使用已定义好的技术集及符号表示习惯组织软件生产的过程。结构化方法、面向对象方法、JACKSON方法、维也纳开发方法(VDM)等。9.1结构化方法学结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。它的基本思想是自顶向下逐层分解。为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构与问题结构相对应。 常用工具:数据流图(DFD)、数据字典(DD)、实例—关系图(E-R图)及描述加工处理的结构化语言、判定表、判定树。9.1.1数据流图(DFD图)DFD的基本成分数据流图主要由4种成分组成,如下表所示:数据流(dataflow):由一组固定成分的数据组成,表示数据的流向。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流向另一个加工。通常每个数据流必须有一个合适的名字,一方面是为了区别,另一方面也给人一个直观的印象,使人容易理解这个数据流的含义。但流向文件或从文件流出的数据流不必命名,因为这种数据流的组成部分就是相应文件的组成部分。加工(process):描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流。每个加工有一个名字和一个编号。编号反映了该加工位于分层DFD的哪个层次和哪张图中以及它是哪个加工分解出来的子加工。文件(file):可以表示数据文件,也可以表示一个数据记录。流向文件的数据流表示写文件,流出文件的数据流表示读文件,双向箭头表示对文件既读又写。每个文件都有一个文件名。源/宿(source/sink):源是指系统所需数据的发源地,宿(也称数据池)是指系统所产生的数据的归宿地。无论源或宿,均对应于外部实体,在框内应加注实体的名字,在一个软件各级软件系统中,有些源和宿可以是一个外部实体,外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生数据的归宿地。分层数据流图一套分层的的数据流图由顶层、底层、和中间层组成。画分层数据流图基本原则与注意事项a.自外向内,自顶向下,逐层细化,完善求精。b.保持父图与子图的平衡。也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和意义上相同。c.保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。c.加工细节隐藏。根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。d.简化加工间关系。在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。e.均匀分解。应该使一个数据流中的各个加工分解层次大致相同。f.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。g.忽略枝节。应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题。h.表现的是数据流而不是控制流。i.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读。小结:一个软件系统,其数据流图往往有多层。如果父图有N个加工(Process),则父图允许有0~N张子图,但是每张子图只能对应一张父图。在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同。DFD信息流大致可分为两类:交换流和事务流。2006年上半年:●在绘制数据流图时,要遵循的一个原则是父图与子图的平衡,所谓平衡是指___(31)___。
(31)A.父图和子图都不得改变数据流的性质B.子图不改变父图数据流的—致性
C.父图的输入/输出数据流与子图的输入/输出数据流一致
D.子图的输出数据流完全由父图的输入数据流确定9.1.2数据字典数据字典是关于数据的信息的集合也就是对数据流图中包含的所有元素的定义的集合。组成部分:a.数据项条目b.数据流条目c.文件条目d.加工条目加工条目是对数据流图中每一个不能再分解的基本加工的精确说明。对于加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树和判定表。9.1.3结构化语言结构化语言实际上是一种半形式化语言,它的结构通常可分为内外两层。外层接近于形式化语言,而内层近似于自然语言的描述。9.1.4实体-关系图(E-R图)实体-关系图(Entity-RelabionshipDiagram),简称E-R图,包含实体、关系和属性等3种基本成分。通常用矩形框代表实体,并用直线把实体(或关系)与其属性连接起来。E-R图通常用于数据库应用系统。9.2结构化设计 结构化设计通常可分为概要设计和详细设计,但是主要用于概要设计阶段。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口以及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。9.2.1概要设计 经过需求分析阶段的工作,系统必须“做什么”已经清楚了,概要设计的基本目的就是回答“概括地说,系统应该如实现?”这个问题。概要设计的重要任务:将一个复杂的系统按功能化分为模块、确定每个模块的功能、确定模块之间的调用关系、确定模块之间的接口(模块之间传递的信息)、评价模块的结构质量。1.软件结构图形工具 结构化设计方法(SD)方法采用结构图(StructureChart)、层次图和HIPO图描述软件结构。 结构图的主要成分有模块、调用和数据,结构图中的模块用矩形表示,在矩形框内可标上模块的名字。模块间如有箭头或直线相连,表明它们之间有调用关系。层次图用来描绘软件的层次结构.层次图中一个矩形框代表一个模块,方框间的连线表示模块间的调用关系.HIPO图实际上就是层次图加输入/处理/输出图.HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”,是在层次图里出了最顶层的方框之外,每个方框都加了编号。编号规则和数据流图的编号规则一样。2.概要设计中的信息流变换流:信息沿着输入通道进入系统,然后通过变换中心(也称主加工)处理,再沿着输出通道离开系统.具有这一特性的信息流称为变换流.具有变换流型的数据流图可明显地分成输入、变换(主加工)、输出三大部分。事务流:信息流沿着输入通道到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务流有明显的事务中心,各活动以事务中心为起点呈辐射状流出。9.2.2详细设计概要设计已经确定了每个模块的功能和接口,详细设计的任务就是为每个模块设计其实现的细节。详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,得出对目标系统的精确描述。1.详细设计阶段的内容为每个模块进行详细的算法设计。为模块内部的数据结构进行设计。对数据库进行物理设计。其他详细设计工具主要包括程序流程图(系统流程图)、盒图(N-S图)、PAD图和伪码(PDL)。2.人机界面设计人机界面的设计质量,直接影响用户对软件产品的评价。界面的美观、灵活和风格都很重要,但人机界面设计中最重要的也是最基本的目标是软件的易操作性。人机界面设计主要包括系统响应时间、用户帮助设计、出错信息处理和命令交互设计等几个方面。9.3Jackson方法上面讲的结构化设计方法是面向数据流的,另外还有一种面向数据结构的设计方法,Jackson方法是最著名的面向数据结构的设计方法,而不是面向数据流的设计方法。Jackson方法的基本步骤是:建立系统的数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构适当的模块中。9.4面向对象分析方法(00A)OTM方法的三个模型,分别从三个不同侧面描述了所要开发的系统:功能模型指明了系统应该“做什么”;动态模型明确了什么时候做;对象模型则定义了做事情的实体。对象模型描述了系统中对象的静态结构及对象间的联系,用对象模型图来表示。动态模型描述了与时间和操作次序有关的系统属性。动态模型由多张状态图组成。各个类的状态图通过共享事件组成系统的动态模型。功能模型描述系统内数据值的变化,它由数据流图组成。数据流图说明数据流是如何从外部输入、经过操作和内部存储而得到输出的。十.软件工具软件工具是指用于辅助软件开发、运行、维护、管理、支持等过程中的活动的软件。通常也称为CASE(ComputerAidedSoftwareEngineering,计算机辅助软件工程)工具。按软件过程的活动分为软件开发工具、软件维护工具和软件管理工具等。十一.软件开发环境集成型开发环境通常可由工具集和环境集成机制两部分组成。这种环境应具有开放性和可裁减性。环境集成机制主要有数据集成机制、控制集成机制和界面集成机制。十二.软件质量管理基础知识12.1软件质量ISO/IEC9126软件质量模型可从软件功能性、可靠性、可用性、效率、可维护性、可移植性6个方面来衡量。(1).功能性与功能及其指定的性质的一组软件属性。(2)可靠性 软件在规定的一段时间内和规定的条件下保持其性能水平有关的一组软件属性。也可以称为在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率。(3)可用性 与使用的难易程度及规定或隐含用户对使用方式所做的评价有关的软件属性。 (4)效率 与在规定条件的性能水平与所用资源量之间的关系有关的一组软件属性。(5)可维护性 与软件维护的难易程序有关的一组软件属性。(6)可移植性 软件可从某一环境转移到另一环境的能力有关的一组属性。即软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件的可移植性。为了提高可移植性,应注意提高软件的设备独立性。采用表格驱动程序有助于提高设备独立性。为了提高可移植性,还应有完备的文档资料。使用C语言开发的系统软件具有较好的可移植性。2006年下半年:●按照ISO/IEC9126软件质量度量模型定义,一个软件可靠性的子特性包括(28):(28)A.容错性和安全性B.容错性和适应性C.容错性和易恢复性D.易恢复性和安全性●某软件在运行初期运行在WindowsNT环境中,现因某种原因,该软件需要在UNIX环境中运行,而且必须完成同样的功能。为适应这个要求,软件本身需要进行修改,而所需的工作量取决于该软件的(27)(27)A.可扩充性B.可靠性C.复用性D.可移植性2005年5月:●下列叙述中,与提高软件可移植性相关的是(18)A.选择时间效率高的算B.尽可能减少注释C.选择空间效率高的算法D.尽量用高级语言编写系统中对效率要求不高的部分12.2软件质量保证软件质量保证的主要困难表现在以下几个方面:1)软件开发的管理人员往往关心项目开发的成本与进度。因为成本和进度是显而易见的,而软件质量则难以度量。如果软件开发的管理人员对交付的软件含有多少隐患并不必负什么责任,他们必定没有太高的热情去控制开发的质量,更不必说保证质量并不容易且代价昂贵。开发人员的习惯一旦形成难以改变,他们的形为也难于控制,而高质量的软件产品,又主要取决于参与开发的人员。复杂的软件项目需要许多技术人员和管理人员参与,对问题的不同认识和误解如不能及时消除必然影响软件质量。软件开发人员的频繁流动,特别是骨干开发人员的流失,也会使软件质量受到一定的影响。软件质量的保证手段:开发初期制定质量保证计划,并在开发中坚持实行。开发前选定或制定开发标准或开发规范,并遵照实施。从开始就选择分析设计方法和工具,形成高质量的分析模型和设计模型。严格执行阶段评审,以便及时发现问题。各个开发阶段的测试。对软件的每次“变动”都要经过申请、评估、批准、实施等步骤。软件质量特性的度量化。软件生存期的各阶段都要完整的文档。12.3代码评审技术常用方法有代码走查和代码审查技术。代码走查程序员和测试员组成审查小组,通过逻辑运行程序。第一步:小组成员提前阅读设计规格书、程序文本等相关文档;第二步:利用测试用例,使程序逻辑运行,记录程序的踪迹,发现、讨论、解决问题代码审查程序员和测试员组成审查小组。第一步:小组成员提前阅读设计规格书、程序文本等相关文档;第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题。两者的区别代码审查是一种正式的评审活动,而代码走查的讨论过程是非正式的。十三.成本-效益分析可用哪些指标进行度量?投资回收率:通常把建立系统若干年后所取得的收益折算成现在的价值和开发系统所需的费用进行比较得出投资回收率。投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间。纯收入:整个软件生命周期之内的累计经济效益(折成现在值)与投资之差。十四.第四代语言(4GL)的主要特征?友好的用户界面兼有过程性和非过程性两种特性高效的程序代码完备的数据库应用程序生成器十五.软件测试软件测试的费用已经超过软件开发费用的30%左右。“高产”测试是指用少量的测试用例,发现被测试程序尽可能多的错误。15.1软件测试经过的步骤单元测试->集成测试->确认测试->系统测试15.2测试与软件开发各阶段的关系单元测试对程序中每一个程序单元进行测试,检查各个模块是否都实现规定的功能,从而发现模块在编码中或算法中的错误,该阶段涉及编码和详细设计文档。集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。确认测试主要是检查已实现的软件是否满足需求规格说明书中已确定了的各种需求。系统测试是把已确认的软件与其他系统元素(如硬件,其他支持软件、数据、人工等)结合在一起进行测试,以确定软件是否可以支付使用。15.3白盒测试白盒测试又称为结构测试。可以把程序看成装在一个透明盒子里,测试者(一般为编程者)完全知道程序的结构和处理算法。按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否能按预定要求正常工作。白盒测试多用于单元测试阶段。逻辑覆盖是主要的白盒测试技术。白盒测试时,确定测试数据应根据程序的内部逻辑和指定的覆盖方式。采用以下几种逻辑覆盖标准:语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖满足条件组合覆盖测试用例,也一定满足判定条件覆盖。因此,条件组合覆盖是上述五种覆盖标准中最强的一种。2006年下半年:给定C语句程序intfoo(intx,inty,intd){if(x!=0){if(y==0)d=d/x;elsed=d/(x*y);}else{if(y==0)d=0;elsed=d/y;}returnd;}当用路径覆盖法测试时,至少需要设计(31)个测试用例。(31)A.3B.4C.5D.82007年下半年:●对于如下的程序流程,当采用语句覆盖法设计测试案例时,至少需要设计(34)个测试案例。(34)A.1 B.2 C.3 D.415.4黑盒测试黑盒测试,又称为功能测试。把软件看做是一个不透明的黑盒子,完全不考虑(或不了解)软件内部结构和处理算法,它只检测软件功能是否能按照软件需求说明书的要求正常使用,软件是否能适当的接受输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息(例如文件和数据库)的完整性等。常用的黑盒测试技术包括等价类划分,边值分析、错误推测和因果图等。其中等价类划分和边界值分析法方法最常用。如果两者结合使用,更有可能发现软件中的错误。15.4灰盒测试灰盒测试介于白盒测试和黑盒测试之间,它把软件看做是一个半透明的灰盒子,结合考虑软件的内部结构和外部功能设计测试用例15.5回归测试纠正了程序中的错误之后,选择部分或全部原先已测试过的测试用例,对修改后程序重新测试以验证对软件修改后有没有引出新的错误,称为回归测试。15.6单元测试单元测试(Unittesting)也称为模块测试或结构测试,通常可放在编程阶段(实现阶段),主要采用逻辑覆盖技术,由程序员对自己编写的模块自行测试,检查模块是否能实现了详细设计说明书中规定的功能和算法。单元测试主要发现编程和详细设计中产生的错误。测试一个模块时需要为该模块编写一个驱动模块和若干个桩(stub)模块。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。在进行单元测试时,常用的方法是白盒测试(采用逻辑覆盖的测试技术),辅之以黑盒测试。15.7集成测试集成测试(integrationtesting)也称为组装测试,在单元测试的基础之上,把所有的模块组装成一个系统进行测试。主要测试设计阶段产生的错误,集成测试计划应该在概要设计阶段制定。非渐增式集成测试首先将每个模块分别进行单元测试,再把所有的模块组装成一个完整的系统进行测试。目前在进行集成测试时已普遍采用渐增式集成。渐增式集成测试又可以分为自顶向下集成和自底向上集成。自顶向下集成先测试上层模块,再测试下层模块,由于测试下层模块时上层模块已经测试过,所以不必要另外编写驱动模块。自底向上集成,先测试下层模块,再测试上层模块同样。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。软件的集成测试最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。三明治测试从系统的三个角往中间包围测试的方法。15.8确认测试在系统验收测试中,验证测试是在模拟的环境中进行强度测试的基础上进行,主要依据软件需求说明书检测软件的功能,性能及其他特征是否与用户的要求一致,而确认测试是在一个实际环境中使用真实数据运行系统。确认测试计划应该在需求分析阶段制定。α测试由用户在开发者的场所进行,并且在开发者的指导下进行测试。开发者负责纪录发现的错误和使用中遇到的问题,也就是说α测试是在受控的环境中进行的。β测试是在一个或多个用户的现场由该软件的最终用户实施的,开发者通常不在现场,用户负责记录发现的错误和使用中遇到的问题并把这些问题报告给开发者。也就是说,β测试是在受控的环境中进行的。经过确认测试之后的软件通常就可以交付使用了。15.9系统测试系统测试是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。包括以下的测试:恢复测试:监测系统的容错能力安全性测试:监测系统的安全机制、保密措施是否完善等防范能力。强度测试:测试软件的异常情况的处理能力。性能测试:监测系统系统是否满足系统设计方案说明书对性能的要求。可靠性测试:从平均失效间隔是否超过了规定的时限,因故障而停机的时间在一年中不应超过的时间来进行检测。安装测试:监测软件在安装过程中是否有错误、是否容易操作等。注意:系统测试计划在需求分析阶段制定。2006年下半年:●软件的测试通常分为单元测试、组装测试、确认测试、系统测试四个阶段进行。(32)属于确认测试阶段的活动。(32)A.设计评审B.代码审查C.结构测试D.可靠性测试十六.软件工程标准和软件文档GB/T8566-2001,GB/T12504-1990,GB/T12505-1990是我国现阶段最重要的三个软件开发规范标准。国家标准局1988年1月批准并发布的《GB/T8567-1988计算机软件产品开发文件编制指南》规定在一项软件开发过程中应该产生14中文件可行性研究报告项目开发计划软件需求说明书数据要求说明书概要设计说明书详细设计说明书数据库设计说明书用户手册操作手册模块开发卷宗测试计划测试分析报告开发进度月报项目开发总结报告软件运行和维护基础知识管理人员主要使用:项目开发计划、可行性研究报告、模块开发卷宗、开发进度月报、项目开发总结报告。开发人员:项目开发计划、可行性研究报告、软件需求说明书、数据要求说明书、数据库设计说明书、概要设计说明书、详细设计说明书、测试计划、测试分析报告。维护人员:概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗、测试分析报告、维护报告。用户:用户手册、操作手册。2006年下半年:●(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。(29)A.概要设计说明书B.详细设计说明书C.用户手册D.用户需求说明书十七.软件维护用于软件维护的花费约为整个软件生命周期花费的75%(或60%~80%之间)而且还在逐年上升。17.1软件维护类型根据引起软件维护的原因,软件维护可分为以下四种类型(1)改正性维护:使用过程中发现了隐蔽的错误后,为了诊断和改正这些隐蔽错误而修改软件的活动(2)适应性维护:为了适应环境的变化而修改软件的活动(3)完善性维护:为了扩充或完善原有软件的功能或性能而修改软件的活动。(4)预防性维护:预防性维护是指为了提高软件的可维护性和可靠性,为未来的进一步改进打下基础而修改软件的活动。2006年下半年:●各类软件维护活动中,(30)维护占整个维护工作的比重最大。(30)A.完善性B.改正性C.适应性D.预防性17.2软件的可维护性通常影响软件可维护性的因素有可理解性,可测试性和可修改性。(1)可理解性可理解性是指维护人员理解软件的结构,接口,功能和内部过程的难易程度。采用良好的编程风格有助于提高软件的易理解性。(2)可测试性:可测试性是指测试和诊断软件错误的难易程度。(3)可修改性:可修改性是指修改软件的难易程度。怎样提高软件的可维护性?在软件生命周期的各个阶段都必须充分考虑维护问题。结构化设计的几条主要原则,如模块化,信息隐藏,高内聚,低耦合等,对于提高软件的可理解性,可测试性和可修改性也都有重要的作用。书写详细正确的文档,书写源文件的内部注解,使用良好的编程语言,具有良好的程序设计风格,也有助于提高软件的可理解性。使用先进的测试工具,保存以前的测试过程和测试用例,则有助于提高软件的可测试性。十八.软件的可靠性在给定的时间内,在给定的环境条件下系统完成所指定工作的概率。衡量的标准是:平均失效等待时间MTTF和平均失效间隔时间MTBF。软件工程练习题1.软件测试在软件生命周期中横跨两个阶段,单元测试(模块测试)通常在__A__阶段完成。单元测试主要采用__B__技术,一般由__C__完成。测试一个模块时需要为该模块编写一个驱动模块和若干个__D__。渐进式集成测试是将单元测试和集成测试合并到一起,__E__集成测试中不必编写驱动模块。A=1\*GB3①设计=2\*GB3②编程=3\*GB3③测试=4\*GB3④维护B=1\*GB3①逻辑覆盖=2\*GB3②因果图=3\*GB3③等价类划分=4\*GB3④边值分析C=1\*GB3①课题负责人=2\*GB3②编程者本人=3\*GB3③专业测试人员=4\*GB3④用户D=1\*GB3①被测模块=2\*GB3②上层模块=3\*GB3③桩模块=4\*GB3④等价模块E=1\*GB3①自顶向下=2\*GB3②自底向上=3\*GB3③双向的=4\*GB3④反向的2.版本控制包括版本管理、系统发行、版本标志和发行管理。其中,__A__是指对系统不同版本进行标志和跟踪的过程,__B__是指系统发行策略的制定和执行。A~B=1\*GB3①版本管理=2\*GB3②系统发行=3\*GB3③版本标志=4\*GB3④发行管理3.软件质量保证的主要困难在以下几个方面:软件开发管理人员更关心项目开发的1,而没有太高的热情去控制开发的2;开发人员的习惯一旦形成,难以改变,他们的行为往往3;不同开发人员对问题的不同认识4;项目组中骨干开发人员的5等。1.A.成本和进度B.规范化C.质量 D.性能价格比2.A.费用B.时间C.效率 D.质量3.A.易于控制B.难于控制C.无需控制 D.应该信任4.A.易于沟通B.难于及时消除C.应该保留 D.可频繁交流5.A.密切合作B.难于独立C.频繁流失 D.认证资格4.用来辅助软件维护过程中的活动的软件称为软件维护工具。其中,用来存储、更新、恢复和管理软件版本的工具为A工具,用来对软件开发过程中形成的文档进行分析的工具称为B工具,用来维护软件项目开发信息的工具称为C工具,用来辅助软件人员进行逆向工程活动的工具称为D工具,用来支持重构一个功能和性能更为完善的软件系统的工具称为E工具。A~E:1.再工程工具2.软件配置工具3.版本控制工具4.集成工具5.开发信息库工具6.项目管理工具7.软件评价工具8.逆向工程工具9.静态分析工具10.文档分析工具5.确定算法是解决问题的关键步骤之一。算法的计算工作量大小和实现算法所需的存储单元多少,分别称为计算的_A_和_B_。编写程序时,_C_和_D_是应采纳的原则之一。_E_是调试程序的主要工作之一。
供选择的答案B:①可实现性②时间复杂度③空间复杂度④困难度⑤高效性⑥计算有效性C:①程序的结构化②程序越短越好③尽可能节省存储单元④尽可能减少注解行D:①使用有实际意义的名字②使用长度短而无实际含义的名字③表达式中尽量少用括号④尽量使用化简了的逻辑表达式E:①调度②证明程序正确③人员安排④排错6.软件测试的目的是__(16)__,通常可分为白盒测试和黑盒测试。白盒测试是根据程序的__(17)__来设计测试用例,黑盒测试是根据软件的规格说明来设计测试用例。常用的黑盒测试方法有边值分析、等价类划分、错误猜测、因果图等。其中,__(18)__经常与其它方法结合起来使用。软件测试的步骤主要有单元测试、集成测试和确认测试。如果一个软件作为产品被许多客户使用的话,在确认测试时通常要经过α测试和β测试的过程。其中,α测试是__(19)__进行的一种测试。在软件设计和编码时,采取__(20)__等措施都有利于提高软件的可测试性。(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.书写详细正确的文档,采用良好的程序结构7.软件是一种(2)的产品。为了软件产业的健康发展,应对软件产品的(3)进行保护。(2)A、易复制B、易损坏C、易开发D、易使用(3)A、技术B、版权C、开发D、使用说明8.白盒测试方法一般适合用于(21)测试。(21)A、单元B、系统C、集成D、确认9.瀑布模型(WaterfallModel)突出的缺点是不适应(22)的变动。(22)A、算法B、平台C、程序语言D、用户需求10.在数据流图中,表示(23),表示(24)。(23)A、加工B、外部实体C、数据流D、存储(24)A、加工B、外部实体C、数据流D、存储11.结构化分析方法(SA)的一个重要指导思想是(25)。(25)A.自顶向下,逐步抽象B.自底向上,逐步抽象C.自顶向下,逐步分解D.自底向上,逐步分解12.软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件(26)。在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率称为(27)。(26)A、兼容性B、可移植性C、可转换性D、可接近性(27)A、可使用性B、可接近性C、可靠性D、稳定性13.Jackson设计方法是由英国的M.Jackson提出的,它是一种面向(28)的软件设计方法。(28)A.对象B.数据流C.数据结构D.控制结构14.模块的控制范围包括它本身及它所有的从属模块,模块的作用范围是指模块内一个判定的作用范围,凡是受到这个判定影响的所有模块都属于这个判定的作用范围,理想的情况是__(27)__。(27)A.模块的作用范围应在控制范围之内B.模块的控制范围应在作用范围之内C.模块的作用范围与控制范围交叉D.模块的作用范围与控制范围分离15.关于模块设计的原则,以下叙述中正确的是(28)(28)A.模块的内聚性高,模块之间的耦合度高B.模块的内聚性高,模块之间的耦合度低C.模块的内聚性低,模块之间的耦合度高D.模块的内聚性低,模块之间的耦合度低
16.软件的用户界面作为人机接口起着越来越重要的作用,用户界面的___(29)___是用户界面设计中最重要的也是最基本的目标。(29)A.灵活性 B.风格多样性C.美观性 D.易操作性
17.软件测试的目的是__(30)__。在进行单元测试时,常用的方法是__(31)__·(30)A.证明软件系统中存在错误B.找出软件系统中存在的所有错误C.尽可能多地发现软件系统中的错误和缺陷D.证明软件的正确性(31)A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只使用白盒测D.只使用黑盒测试
18.原型化方法是一种动态定义需求的方法,__(32)___不具有原型化方法的特征。(32)A.简化项目管理 B.尽快建立初步需求C.加强用户参与和决策 D.提供严格定义的文档19.系统软件是__(25)__的软件.
(25)A.向应用软件提供系统调用等服务B.与具体硬件逻辑功能无关C.在应用软件基础上开发D.并不具体提供人机界面20.软件的复杂性与许多因素有关。__(32)__不属于软件的复杂性参数。(32)A.源程序的代码行数B.程序的结构C.算法的难易程度D.程序中注释的多少21.在结构化分析与设计方法中,为了在需求改变时对软件的影响较小,应该使__(33)__。
(33)A.程序结构与问题结构相对应B.程序结构与问题结构相独立C.程序结构与用户界面相对应D.程序结构与用户界面相独立22.系统的硬件环境、软件环境和数据环境发生变化时需要对系统进行维护,这种维护属于__(34)__。(34)A.校正性维护B.适应性维护C.完善性维护D.预防性维护23.软件开发环境是支持软件产品开发的软件系统,它由_(49)_和环境集成机制构成,环境集成机制包括数据集成、控制集成和界面集成。(49)A.软件工具集B.软件测试工具集C.软件管理工具集D.软件设计工具集
24.源程序清单是在软件生存周期的_(50)_阶段产生的文档。(50)A.软件概要设计B.编码C.软件详细设计D.测试
25.黑盒测试也称为功能测试。黑盒测试不能发现_(51)_。(51)A.终止性错误B.输入是否正确接收C.界面是否有误D.是否存在冗余代码
26.通常,在软件的输入输出设计中,合理的要求是:_(52)_。(52)A.数据尽量由用户来输入,以便给用户提供更大的自主性B.输入过程应尽量容易,以减少错误的发生C.不能在输入过程中检验数据的正确D.在输入过程中,为了不干扰用户,应尽量避免提示信息27.一般地,可以将软件开发的生命周期划分为软件项目计划、(50)、软件设计、编码、测试和运行/维护6个阶段。(50)A、可行性分析B、初始调查C、需求分析与定义D、问题分析28.软件的(51)是指软件从一种计算机系统转换到另一种计算机系统运行的难易程度。在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率称为(52)。(51)A、兼容性B、可移植性C、可转换性D、可扩展性(52)A、可扩展性B、可接近性C、可靠性D、稳定性29.以下关于程序测试的叙述,正确的是(55)。(55)A、程序测试的目的是为了证明程序的正确性B、白盒测试也称为功能测试C、黑盒测试也称为结构测试D、程序测试要注意检验程序是否有多余的功能30.数据流图包含的成分有__(51)__。
(51)A.关系、实体和属性B.数据流、加工和数据存储C.数据流、数据源和数据实体D.数据流、属性、数据存储和加工31.如果用户对系统的目标不是很清楚,需求难以定义,这时最好使用__(53)__进行系统开发。
(53)A.原型B.瀑布模型C.V-模型D.螺旋模型32.在软件开发的各个阶段中,对软件开发成败影响最大的是__(54)__。
(54)A.需求分析B.概要设计C.详细设计D.编码33.系统测试计划应该在软件开发的__(55)__阶段制定。
(55)A.需求分析B.概要设计C.详细设计D.系统测试34.从下面有关原型化方法的叙述,选出5条正确的叙述,并按编号依次填写在A~E栏内。=1\*GB3①快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。=2\*GB3②在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。=3\*GB3③在用户没有明确的肯定其需求时,应该使用原型化方法。=4\*GB3④在用户不希望把自己的时间花在软件开发过程的时候,应该使用原型化方法。=5\*GB3⑤使用原型化方法时应使用第三代编程语言。=6\*GB3⑥原型化方法加强了开发过程中用户的参与和决策。=7\*GB2⑺原型化方法大致可分为三类:抛弃式、演化式,递增式。=8\*GB3⑧原型化方法大致可分为演化式和递增式=9\*GB3⑨采用原型化方法时,软件的开发成本较高。=10\*GB3⑩采用原型化方法时,关键的原因是建立原型的速度,而不是原型运行的效率。35.模块内聚度用于衡量模块内部各成分之间彼此结合的紧密程度。1、一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是__A__的。2、将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是__B__的。3、模块中所有成分引用共同的数据,该模块的内聚度是__C__的。4、模块内的某成分的输出是另一些成分的输入,该模块的内聚度是__D__的。5、模块中所有成分结合起来完成一项任务,该模块的内聚度是__E__的。它具有简明的外部界面,由它构成的软件易于理解、测试和维护。
供选择的答案A~E:①功能性②顺序性③通信性④过程性⑤偶然性⑥瞬时性⑦逻辑性1991年试题试题5从供选择的答案中,选出应填入__n__内的正确答案,把编号写在答卷的对应栏内。软件设计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能__A__。三种可能的模块耦合是:__B__。例如,一个模块直接引用另一模块中的数据。__C__。例如,一个模块把开关量作为参数传送给另一模块。__D__。例如,一个模块把一个数值量做为参数传送给另一模块。其中__E__的耦合性最强。
供选择的答案B~E:①公共耦台②数据耦合③逻辑耦合④外部耦合⑤内容耦合⑥控制耦合1992年试题试题3Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向__A__的设计方法,主要适用于规模适
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级上册数学教育教学反思
- 质量管理工作总结(20篇)
- 设备销售协议模板
- 评课稿地理教学探究
- 诚信经营共谋发展
- 语文学习攻略与经验分享
- 质押合同解除协议格式示例
- 质量问题退换货保证
- 购货合同购销合同的合同解除
- 购销合同有效期内的合同解除
- 【课件】第四章+运动和力的关系+大单元说课课件高一上学期物理人教版(2019)必修第一册
- 红色文化十讲第四讲PPT
- 放射科专科护理知识考试模拟题与参考答案
- 高考日语基础归纳总结与练习(一轮复习)
- 道德与法律辩论(合集7篇)
- 校园欺凌排查台账
- 大学生心理健康教育(第二版)PPT全套完整教学课件
- 汽车式起重机吊装安全专项施工方案
- 《伊利乳业集团营运能力研究(论文)》12000字
- 红土镍矿烧结工艺试验研究
- 招待所安全管理制度
评论
0/150
提交评论