软件复用课后题

合集下载

清华大学软件工程课程讲义软件复用

清华大学软件工程课程讲义软件复用
? 为此,首先要界定可复用的“资产” , 然后创建这些资产,对它们打包,编制 相关文档;其次,开发组织必须 建立新 的系统工程过程 ,使开发者有机会确定 复用方案,有机会挑选可复用的构件。
16
1) 创建过程 界定和提供可复用资产, 以满足复用者的需要。可复用资产的 来源可以是新开发的、再工程的、购 置的。
第八章 软件复用
8.1 软件复用概念与复用分类 8.2 软件复用的过程 8.3 领域工程与应用工程 8.4 可复用构件的构造原则和质量标准 8.5 软件构件与可复用构件库
8.6 软件构件的复用
8.7 面向对象的软件复用技术
1
8.1 软件复用概念与复用分类
? 对建立软件目标系统而言,所谓复用, 就是 利用某些早先开发的对建立新软 件系统有用的软件元素来生产新系统 。
4
?这些可复用的软件元素作为软件构件创 建,并以软件构件的方式集成到新应用 系统中。
?所谓构件,是在一个系统中有价值的, 近似独立的,可替换的系统成分。它可 在仔细定义的体系结构环境中履行一个 显式定义的功能。
?所谓软件构件则是一个具有按契约定义 的、依赖上下文环境的组装单元。
5
软件复用需要解决的问题
? 可以从不同角度,对软件复用的形式进 行分类: ? 根据复用活动所跨越的领域,可以分 为横向复用和纵向复用。 ? 根据实现复用的途径,可以分为组装 式复用和生成式复用。 ? 根据复用的方式,可以分为黑盒复用 和白盒复用。
12
? 横向复用和纵向复用: ? 横向复用是复用不同应用领域中的软 件元素,如数据结构、排序算法、人 机界面构件等。为此建立标准函数库。 ? 纵向复用是在一类具有较多公共性的 应用领域之间复用软件构件。
产品需求与现有软件

软件复用课后题

软件复用课后题

软件复用课后题1软件复用与传统软件开发的重用的差异?软件复用是指重复使用“为了复用目的而设计的软件”的过程。

相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用1 分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装) ,其中,构件是核心和基础,“复用”是必需的手段.2软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因2影响软件可复用性的因素软件构件技术(Software component technology)领域工程(Domain Engineering)软件构架(Software Architecture)软件再工程(Software Reengineering)开放系统(Open system)软件过程(Software Process)CASE技术等以及各种非技术因素。

3、什么是领域工程?领域工程对软件复用的影响表现在那些方面?领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动.领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域领域工程包括三个主要的阶段.(1)领域分析(2)领域设计(3)领域实现领域工程作为软件复用的核心技术之一其主要目的是实现对特定领域中可复用成分的分析、生产和管理。

领域工程的萌芽最早可以追溯到帕尔纳斯 Parnas 在1976年提出的“程序家族Program Family ”的概念[12]。

其基本思想是把一组具有显著共性的程序作为一个整体/家族并对其共性进行分析其动机则是为了简化一组相似程序的开发和维护。

后来提出出了“领域分析”的概念[11] 用来指代“识别特定问题域中一组相似系统所包含的对象和操作的活动”。

南京工程学院软件工程复习题答案

南京工程学院软件工程复习题答案

复习题第一章选择题:1,2,3,4,6,7,8,9 判断题:1,2,3,4,5第二章选择题:1,2,3,4,5,7,8 判断题:1,2,3,4,5,6第三章选择题:1,2,3, 5,6 ,7 判断题:1,2,3,4,5第四章选择题:5,6,7 ,8,9 判断题:5,6,7,8, 9,10第五章选择题:4,5,6,7,8,9,10 判断题:1,2,3,4,5,6,7,8第八章选择题:1,2,3,4,5第九章选择题:1,2,3,4第十二章选择题:1,2,3简答题:1.什么是软件危机其产生的主要原因是什么2.结构化程序设计的指导原则是什么它有哪三种基本控制结构红色为没有答案的3.什么是软件生存周期模型软件生命周期分为哪六个阶段并对每个阶段作简要说明.4.如何画分层数据流图5.简述UML.实际建模过程.6.在UML中的状态图、协作图、活动图、序列图在系统分析中各起到了什么作用7.什么是软件复用8.单元测试的功能是什么主要采用什么方法列举一个常用单元测试的工具. 9.什么是α测试和β测试10.自顶而下增值与自底而上增值各有何优、缺点11.请简单的谈一下安全测试12.为什么要进行软件维护13.提高软件可维护性的方法有哪些14.影响软件质量的因素有哪些15.什么是CMMCMM将软件过程的成熟度分为哪几个级别案例分析题1.画出给定实例的数据流图.并能给出其数据流条目,及对其中某一文件给出文件条目,对某数据项给出数据项条目,对某加工加工给出加工条目.2.画出某系统的用例图,及子用例图,对用例图作简要说明;用UML状态图说明状态的变迁情况及说明.习题答案习题一答案一、选择题1. 软件的主要特性是A B C.A 无形B 高成本C 包括程序和文档D 可独立构成计算机系统2. 软件工程三要素是B.A 技术、方法和工具B 方法、工具和过程C 方法、对象和类D 过程、模型、方法3. 包含风险分析的软件工程模型是A.A 螺旋模型B 瀑布模型C 增量模型D 喷泉模型4. 软件工程的主要目标是C.A 软件需求B 软件设计C 风险分析D 软件实现5. 下列属于面向对象开发方法的是A B C D.A BoochB UMLC CoadD OMT6. 软件危机的主要表现是B D.A 软件成本太高B 软件产品的质量低劣C 软件开发人员明显不足D 软件生产率低下7. 软件开发方法的主要工作模型有A B CA 螺旋模型B 循环模型C 瀑布模型D 专家模型8. 软件工程的目标有A B C.A 易于维护B 低的开发成本C 高性能D 短的开发期9. 软件工程学的目的和意义是A D.A 应用科学的方法和工程化的规范管理来指导软件开发B 克服软件危机C 作好软件开发的培训工作D 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序.×2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰.×3. 结构化方法的工作模型是使用螺旋模型进行开发.×4. 结构化方法和OO方法都是一种面向过程的软件开发方法.×5. 原型化开发方法包括生成原型和实现原型两个步骤.×习题二答案一、选择题1. 需求分析的主要目的是B C.A 系统开发的具体方案B 进一步确定用户的需求C 解决系统是“做什么”的问题D 解决系统是“如何做”的问题2. 需求分析的主要方法有C D.A 形式化分析方法B PAD图描述C 结构化分析SA方法D OOA法3. 面向对象的分析方法主要是建立三类模型,即D.A 系统模型、E-R模型、应用模型B 对象模型、动态模型、应用模型C E-R模型、对象模型、功能模型D 对象模型、动态模型、功能模型4. SA法的主要描述手段有B.A)系统流程图和模块图B DFD图、数据词典、加工说明C 软件结构图、加工说明D 功能结构图、加工说明5. 画分层DFD图的基本原则有A C D.A 数据守恒原则B 分解的可靠性原则C 子、父图平衡的原则D 数据流封闭的原则7. 画DFD图的主要目的是A D.A 作为需求分析阶段用户与开发者之间交流信息的工具B 对系统的数据结构进行描述C 对目标系统的层次结构进行描述D 作为分析和设计的工具8. 数据字典是数据流图中所有元素的定义的集合,一般由 C 四类条目组成.A 数据说明条目、控制流条目、加工条目、数据存储条目B)数据流条目、数据项条目、文件条目、加工条目C 数据源条目、数据流条目、数据处理条目、数据文件条目D 数据流条目、数据文件条目、数据池条目、加工条目二、判断题1. 在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案.×2. SA法是面向数据流,建立在数据封闭原则上的需求分析方法.√3. 需求管理主要是对需求变化的管理,即如何有效控制和适应需求的变化.√4. 在面向对象的需求分析方法中,建立动态模型是最主要的任务.×5. 加工小说明是对系统流程图中的加工进行说明.×6. 判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件.×习题三答案一、选择题1. 模块的基本特征是A C.A 外部特征输入/输出、功能B 内部特征输入/输出、功能C 内部特征局部数据、代码D 外部特征局部数据、代码2. SD方法的设计总则是C D.A 程序简洁、操作方便B 结构清晰、合理C 模块内聚性强D 模块之间耦合度低3. 软件设计的主要任务是A B D.A 将分析阶段获得的需求说明转换为计算机中可实现的系统;B 完成系统的数据结构和程序结构设计C 完成模块的编码和测试D 对模块内部的过程进行设计5. 从工程管理的角度来看,软件设计分D两步完成.A 系统分析、模块设计B 详细设计、总体设计C 模块设计、详细设计D 总体设计、详细设计6. 模块独立性准则定性指标B D来衡量.A 分解度B 耦合度C 屏蔽性D 内聚性7. 用户界面设计的任务包括A B C.A 确定用户界面类型B 建立任务模型C 建立用户模型D 建立功能模型二、判断题1. 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好.×2. 在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中常常被使用.×3. 信息隐蔽原则有利于提高模块的内聚性.√4. 中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使用事务分析技术得到初始的模块结构图.×5. SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应. ×习题四答案一、选择题5. 一个类属性依其特征划分,其类型有ABCD.A 描述型B 定义型C 派生型D 参考型6. 在进行面向对象分析时,所采用的模型有ABC.A 对象模型B 动态模型C 静态模型D 功能模型7. 状态是对象属性的值的一种抽象,它的性质有AB.A 时间性B 持续性C 有序性D 有穷性8. 数据流图中的处理必须用对象中的操作来实现,常见的操作有ABCD.A 查询B 动作C 活动D 访问9. 建立继承关系时所采用的方式有AC.A 自顶向下B 从内到外C 自底向上D 从复杂到简单二、判断题5. 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程.√6. 面向对象设计的主要目标是提高生产效率,提高质量和提高可维护性.√7. 对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系.√8. 面向对象的分析是用面向对象的方法对目标系统的问题域空间进行理解、分析和反映.通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构.√9. 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系.√10. 复用也叫重用或再用,面向对象技术中的“类”是比较理想的可重用软构件,它有三种重用方式:实例重用、继承重用、多态重用.√习题五答案一、选择题4. 下列各种图可用于动态建模的有ACD.A 状态图B 类图C 序列图D 活动图5. 下列属于状态的组成部分的有AB.A 名称B 活动C 条件D 事件6. UML中包括的事件有ABCD.A 条件为真B 收到另一对象的信号C 收到操作调用D 时间表达式7. 属性的可见性有ABD.A 公有的B 私有的C 私有保护的D 保护的8. 用例之间的关系有BCD.A 友元B 扩展C 使用D 组合9. 应用于通用化约束的方式有ABCD.A 完整B 不相交C 不完整D 覆盖10. 消息的类型有ABCA 同步B 异步C 简单D 复杂二、判断题1. UML建模语言是由视图、图、模型元素和通用机制构成的层次关系来描述的. √2. UML是一种建模语言,是一种标准的表示,是一种方法. ×3. 泳道是一种分组机制,它描述了状态图中对象所执行的活动. ×4. 同步消息和异步消息的主要区别是:同步消息的发送对象在消息发送后,不必等待消息处理,可立即继续执行,而异步消息则发送对象必须等待接收对象完成消息处理后,才能继续执行.×5. 类图中的角色是用于描述该类在关联中所扮演的角色和职责的. √6. 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述.×7. 用例模型的基本组成部件是用例、角色和用例之间的联系. √8. 用例之间有扩展、使用、组合等几种关系. √习题七答案5.什么是软件复用答:软件复用是指重复使用已有的软件产品来开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的.在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等.将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理.习题八答案一、选择题1. 软件测试的主要特点是A C.A 软件测试的开销大B 软件测试要依靠工具C 软件不能进行“穷举”测试D 软件测试要依靠人工2. 整体测试又称为组装测试,其主要内容包括C D.A 对整体的性能进行测试B 用白盒法设计测试用例进行测试C 确定组装策略和次序D 对组装过程进行测试3. 渐增式是将模块一个一个地连入系统,每连入一个模块C.A 只需要对新连入的模块进行测试B 都不需要再进行测试C 要对新子系统进行测试D 都要进行回归测试4. 静态测试是以人工的、非形式化的方法对程序进行分析和测试.常用的静态测试方法有 B C D.A 运行程序并分析运行结果B 桌前检查与代码会审C 数据流分析图D 调用图5. 集成过程的原则是B C.A 按照模块的大小集成B 尽早测试包含I/O的模块C 尽早测试关键模块D 按照“输入—处理—输出”的次序进行集成习题九答案一、选择题1. 软件维护的类型有A B C D.A 完善性维护B 纠错性维护C 适应性维护D 预防性维护2. 各种软件维护的类型中最重要的是A B.A 完善性维护B 纠错性维护C 适应性维护D 预防性维护3. 以下属于完善性维护的有B D.A 解决开发时未能测试各种可能条件带来的问题B 增加联机求助命令C 缩短系统的应答时间,使其达到特定要求D 为软件的运行增加监控设施4. 进行系统修改时可能会产生维护的副作用,它们可能有A B C.A 修改数据的副作用B 修改错误后,又引入了新的错误C 修改代码的副作用D 文档资料的副作用习题十二答案一、选择题1. CMM表示 A .A 软件能力成熟度模型B 软件过程工业化控制C 国际软件质量认证D 软件统一性标准2. 软件过程和产品质量有详细的度量标准,并且得到了定量的认识和控制.以下具有上述特征.A 可重复级B 已定义级C 已管理级D 优化级3. CMM是开发高效率、高质量和低成本软件时,普遍采用的软件生产过程标准,它的主要用途不包括 C .A 软件过程评估B 软件过程改进C 软件过程控制D 软件能力评价简答题1.什么是软件危机其产生的原因是什么答:“软件危机”Software Crisis的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大.而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要.致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折.软件危机主要表现在两个方面:1 软件产品质量低劣,甚至开发过程就夭折.2 软件生产率低,不能满足需要.2. 如何画分层数据流图有哪些基本原则答:总的原则是:至顶而下,逐层分解画分层数据流图.逐层分解的画法可以控制每一层的复杂度.顶层:将整个系统作为一个加工,描述系统边界输入与输出.中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解.底层:由不再进行分解的基本加工组成.画分层数据流图的基本原则有:①数据守恒与数据封闭原则.②加工分解的原则.③子图与父图“平衡”的原则.④合理使用文件的原则.3. 简述UML实际建模过程.答:UML建模过程是一个迭代过程.每次迭代都建立相应的模型.分为以下几个阶段:①分析阶段.建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系.常以用例图为首选模型.②设计阶段.建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案.常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等动态模型.③实现阶段.主要工作就是进行编码,同时对已构造的模型作相应的修正.④配置阶段.通过模型描述所开发系统的软硬件配置情况建立配置模型.⑤测试阶段.使用前几个阶段所构造的模型来指导和协助测试工作.4. 在UML中,状态图、协作图、活动图、顺序图在系统分析中各起到了什么作用答:状态图State Diagram用来描述一个特定对象在其生存周期或在某段时间内的所有可能的状态及其引起状态转移的事件.一个状态图包括一系列的状态以及状态之间的改变.例如订单的状态变化等,在实时系统中用得较多,还可以用于辅助设计用户界面.顺序图Sequence Diagram 清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间顺序,所以顺序图在实时系统中被大量使用.当参与交互的对象数目增加,交互关系复杂时用顺序图描述会显得杂乱,协作图Collaboration Diagram从另一个角度来更好地描述相互协作的对象间的交互关系和链接Link关系.着重体现交互对象间的静态链接关系和协作关系.协作图也可以从顺序图生成.活动图Activity Diagram是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动组成的.活动图可以有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML 图.5. 什么是软件复用答:软件复用是指重复使用已有的软件产品来开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的.在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等.将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理.6. 什么是α测试和β测试答:α测试是在开发机构的监督下,在确认测试阶段后期由个别用户对软件进行测试,目的是评价软件的FLURPS功能、局域化、可使用性、可靠性、性能和支持性,注重界面和特色.β测试是在进行了α测试的基础上,由支持软件预发行的客户对FLURPS进行测试,主要目的是测试系统的可支持性,是在软件产品正式发布前的测试.7.单元测试的功能是什么主要采取什么方法例举一个常用单元测试的工具单元测试.完成每个模块的测试,尽可能发现模块内部的错误.单元测试主要采用白盒测试法.工具:自己看下书呢8. 为什么要进行软件维护答:软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程.一个中等规模的软件,如果其开发过程需要一两年时间,则它投入使用以后,其运行时间可能持续5~10年之久.在这个维护阶段中,人们需要着手解决开发阶段尚未解决的问题,同时,还解决维护工作本身所产生的问题.做好软件的维护工作不仅能够排除软件中存在的错误,使它能够正常工作,而且还可以使它扩充功能,提高性能,为用户带来新的效益.维护阶段的花费约占整个软件生存周期花费的67%.因此,应充分认识到维护现有软件的重要意义.9. . 提高可维护性的方法有哪些答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审.在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明.在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面.在软件设计的复审中,应从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备.在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素.在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示.在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审.为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术.10. 影响软件质量的因素有哪些答:影响软件质量的因素如下表所示.11.什么是CMMCMM将软件过程的成熟度分为哪几个级别答:1看下书.2初始级、可重复级、已定义级、已管理级和优化级.12. 自顶向下渐增与自底而上渐增各有何优、缺点答:①自顶向下渐增优点:能够尽早发现系统主控方面的问题,并尽早测试系统结构的问题.缺点:需要编写桩模块,由于下属模块往往不止一个,也不止一层,加之模块接口的复杂性,桩模块很难模拟各下层模块之间的调用关系,也无法验证桩模块是否完全模拟了下属模块的功能.因此很难尽早查出底层容易出错的复杂模块中的错误,所以导致过多的回归测试.②自底向上渐增优点:需要编写驱动模块.驱动模块是模拟主程序或者调用模块的功能,处于被测试模块的上层,所以驱动模块只需模拟向被测模块传递数据,接收或打印从被测模块返回的数据等功能,比编写桩模块容易.还能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误.缺点:只有当系统所有模块全部组装完成,才能看到系统完整的结构,才能测试系统的主控功能.。

软件体系结构课后习题参考答案

软件体系结构课后习题参考答案

软件体系结构第四章作业题1.请把基于体系结构的软件开发模型与其他软件开发模型进行比较。

答:一、基于体系结构为基础的基于构件组装的软件开发模型,如基于构件的开发模型和基于体系结构的开发模型等。

基于体系结构的开发模型是以软件体系结构为核心,以基于构件的开发方法为基础。

然后采用迭代增量方式进行分析和设计,将功能设计空间映射到结构设计空间,再由结构设计空间映射到系统设计空间的过程。

该开发模型把软件生命周期分为软件定义、需求分析和定义、体系结构设计、软件系统设计和软件实现5个阶段.特点:是利用需求分析结果设计出软件的总体结构,通过基于构件的组装方法来构造软件系统。

优点:基于构件的开发方法使得软件开发不再一切从头开发,开发的过程就是构件组装的过程,维护的过程就是构件升级、替换和扩充的过程。

构件组装模型导致了软件的复用,提高了软件开发的效率。

软件体系结构的出现使得软件的结构框架更清晰,有利于系统的设计、开发和维护。

并且软件复用从代码级的复用提升到构件和体系结构级的复用。

缺点:由于采用自定义的组装结构标准,缺乏通用的组装结构标准,因而引入了较大的风险。

可重用性和软件高效性不易协调,需要精干的有经验的分析和开发人员,一般开发人员插不上手。

客户的满意度低,并且由于过分依赖于构件,所以构件库的质量影响着产品质量。

二、以软件需求完全确定为前提软件开发模型,如瀑布模型等。

特点:软件需求在开发阶段已经被完全确定,将生命周期的各项活动依顺序固定,强调开发的阶段性;优点:开发流程简单。

缺点:是开发后期要改正早期存在的问题需要付出很高的代价,用户需要等待较长时间才能够看到软件产品,增加了风险系数。

并且如果在开发过程存在阻塞问题,则影响开发效率。

三、在开始阶段只能提供基本需求的渐进式开发模型,如螺旋模型和原型实现软件开发模型等。

特点:软件开发开始阶段只有基本的需求,软件开发过程的各个活动是迭代的。

通过迭代过程实现软件的逐步演化,最终得到软件产品。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案软件工程课后习题参考答案1. 第一章规约与软件工程概述1.1 规约的定义规约是软件开发过程中明确要求的描述,包含了对软件需求、设计、实现、测试、部署和维护等各个阶段的要求和约束。

1.2 软件工程的概述软件工程是一门涉及对软件的开发、运行和维护的学科。

它通过应用工程原则和方法,以系统化、规范化、可靠化、经济化和高质量的方式来开发和维护软件。

2. 第二章软件需求规约2.1 软件需求规约的作用软件需求规约是对软件系统所需功能和性能的具体描述和说明,是软件开发的基础和依据。

它指导着开发团队的工作,确保软件的功能和性能符合用户的需求。

2.2 软件需求规约的要素软件需求规约包括功能需求、非功能需求和约束条件。

功能需求描述了软件系统应该具备的功能,非功能需求描述了软件系统的性能要求和质量特性,约束条件描述了软件系统所受限制的条件。

3. 第三章软件设计规约3.1 软件设计规约的目标软件设计规约是对软件系统进行结构化和模块化设计的过程,其目标是确保软件系统具备可靠性、可维护性、可扩展性和可重用性。

3.2 软件设计规约的方法软件设计规约采用面向对象设计、结构化设计和模块化设计等方法。

面向对象设计强调将问题领域的概念和对象转化为软件系统的类和对象,结构化设计强调将系统分解为模块,模块化设计强调模块间的接口和通信。

4. 第四章软件实现规约4.1 软件实现规约的目的软件实现规约是指将软件设计阶段得到的设计规约转化为计算机可执行的程序代码,其目的是确保软件系统的正确性、可靠性、可维护性和可测试性。

4.2 软件实现规约的技术软件实现规约采用编程语言、软件开发工具和软件开发环境等技术。

编程语言提供了描述算法和数据结构的语法和语义,软件开发工具提供了代码编辑、编译、调试和测试等功能,软件开发环境提供了开发的整体支持。

5. 第五章软件测试规约5.1 软件测试规约的目的软件测试规约是对软件系统进行功能、性能和质量等方面的验证和检测,其目的是找出软件系统的错误和缺陷,并修复和改进。

软件工程课后习题答案中文翻译版(第八版)

软件工程课后习题答案中文翻译版(第八版)

软件工程课后习题:1.解释为什么专业化软件不仅仅包括为用户所开发程序?专业化软件在开发上与在与软件就有所不同。

专业软件通常是由团队开发而非个人,除了开发者外还有其他的用户使用。

如果你的软件有别的用户,别的工程师会去修改的话,你就必须提供除了程序源码之外的其它附带信息。

因此,系统通常除了包含一些单独的程序还有用于这些程序的配置文件,可能还包括描述系统结构的系统文档和解释如何使用该系统的用户文档,以及告知用户下载最新产品的Web站点。

2.通用软件产品开发和定制软件开发直接有什么不同?这在实际应用中对通用软件产品用户意味着什么?(1)重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定开发者必须按客户要求进行开发。

(2)意味着通用软件很难满足通用软件客户的特殊需求。

如可靠性、安全性、快捷性。

3.软件产品应该具有与的4重要属性是那些?另外列举出4个可能有意义的属性。

重要属性:可维护性、可依赖性和安全性、有效性和可用性。

可能有意义的属性:可复用性、可分发性、可移植性和互用性。

4.除了异质性挑战、业务和社会的变革、安全和可信,说出软件工程在21世纪的可能面临的其它问题和挑战。

交付上的挑战:许多传统的软件工程技术需要耗费大量的时间,用于提高软件质量。

而今天的软件制作必须响应快、更换迅速,支持软件也必须同样快地进行更换。

交付上的挑战是:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。

5.参论的应用类型,照1.1.2节讨举例介绍为什么设计和开发不同类型的应用需要专门的软件技术。

如汽车上年的嵌入式控制系统对安全性要求极高,在车上安装是要烧制到ROM 中在这里的交互在这里是很少的(或许根本就没有)。

基于Web式系统更适合用于迭代式开发和交互。

而基于Web的系统编程使用的如Ruby一类的脚本语言,完全不适合嵌入式系统工程。

6.解释为什么软件工程的基本思想适用于所有的软件系统。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案软件工程课后习题参考答案1.简答题1.1 什么是软件工程?软件工程是一门研究和应用如何以系统化、规范化、可量化的方式开发和维护软件的学科,涉及到软件的设计、构建、测试、部署和维护等全生命周期的过程。

1.2 软件工程的目标是什么?软件工程的目标是提高软件开发过程的效率和质量,确保软件项目按时、按需求交付,并且能够满足用户的期望。

1.3 软件生命周期有哪些阶段?常见的软件生命周期包括需求分析、系统设计、详细设计、编码、测试、部署和维护等阶段。

1.4 什么是软件需求?软件需求是指对于软件系统所需满足的问题或需求的描述,包括功能需求、性能需求、接口需求等。

1.5 软件开发过程有哪些模型?常见的软件开发过程模型包括瀑布模型、迭代模型、螺旋模型、敏捷开发等。

2.客观题2.1 软件测试的目的是什么?a) 发现软件中的错误和缺陷b) 验证软件是否符合需求和规格c) 提高软件的可靠性和质量d) 以上皆是答案:d) 以上皆是2.2 瀑布模型的特点是什么?a) 瀑布模型是一种线性顺序的软件开发过程模型b) 各个开发阶段是相互独立的c) 开发过程按照需求分析、设计、编码、测试等顺序进行d) 以上皆是答案:d) 以上皆是2.3 敏捷开发的原则是什么?a) 个体和交互胜过流程和工具b) 可工作的软件胜过详尽的文档c) 客户合作胜过合同谈判d) 响应变化胜过遵循计划e) 以上皆是答案:e) 以上皆是3.计算题3.1 请计算以下代码的覆盖率:(假设代码行数为100行,已执行代码行数为80行)覆盖率 = 已执行代码行数 / 代码行数 100% = 80 / 100 100% = 80%3.2 请计算以下缺陷密度的值:(假设代码行数为1000行,代码中的缺陷数为10个)缺陷密度 = 缺陷数 / 代码行数 1000 = 10 / 1000 1000 = 103.3 请计算以下代码的复杂度:(假设代码中包含的判断语句有20个,循环语句有5个)复杂度 = 判断语句数 2 + 循环语句数 3 = 20 2 + 5 3 = 40 + 15 = 554.附件本文档涉及附件:无5.法律名词及注释本文涉及的法律名词及注释:无。

软件设计与体系结构课后练习部分答案

软件设计与体系结构课后练习部分答案

软件设计与体系结构课后练习部分答案第一篇:软件设计与体系结构课后练习部分答案第一章作业6、简要叙述软件设计在软件工程中所处的位置和重要性。

答:所处的位置:软件需求分析◊需求规格说明◊软件设计◊设计文档◊软件编码。

重要性:(1)是对软件需求的直接体现;(2)为软件实现提供直接依据;(3)将综合考虑软件系统的各种约束条件并给出相应方案;(4)软件设计的质量将决定最终软件系统的质量;(5)及早发现软件设计中存在的错误将极大减少软件修复和维护所需的成本。

7、软件设计应该包含哪些要素?答:软件设计应该包含:目标描述、设计约束、产品描述、设计原理、开发规划、使用描述。

8、软件体系结构与软件设计有何关系?软件体系结构的出现有何必然性和重要意义?答:软件体系结构与软件设计的关系:软件体系结构设计作为软件设计过程中的活动之一,能在较为抽象的级别上描述整个软件系统的结构,成为大规模、复杂软件系统设计中必不可少的步骤。

软件体系结构的意义:软件体系结构将构件以及构件之间的连接作为软件体系结构的基本组成部分。

软件体系结构使软件复用从代码复用发展到设计复用和过程复用,为不同的人提供了共同的语言,体现了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享与复用,基于体系结构的软件开发提供了有力的支持。

第二章作业1、简述UML的特点和用途。

答:UML的发起者在最初制定UML时,充分考虑了各种需求、方法和语言的特点使UML在表达能力、对新技术的包容能力和扩张性等方面具有显著的优势:(1)为使用者提供了统一的、表达能力强大的可视化建模语言,以描述应用问题的需求模型、设计模型和实现模型。

(2)提供对核心概念的扩展机制,用户可加入核心概念中没有的概念和符号,可为特定应用领域提出具体的概念、符号表示和约束。

(3)独立于实现语言和方法学,但支持所有的方法学,覆盖了面向对象分析和设计的相关概念和方法学。

(4)独立于任何开发过程,但支持软件开发全过程。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案一、概述软件工程作为一门跨学科的学科,涉及到软件开发的各个方面,对培养软件工程师的能力具有重要意义。

课后习题是巩固和深化学生对课程知识的理解和应用的重要途径。

本文将为软件工程课后习题提供一些参考答案,供学生参考和自我评估。

二、需求分析与规格说明1. 什么是软件需求?软件需求分析的目的是什么?软件需求是对问题域中用户对软件所期望的功能和性能的描述。

软件需求分析的目的是识别、理解、规范和管理软件系统开发的需求。

2. 软件需求分析的基本步骤是什么?软件需求分析的基本步骤包括需求获取、需求建模、需求验证和需求管理。

3. 什么是功能需求?什么是非功能需求?功能需求描述的是软件系统应具备的具体功能和行为。

非功能需求则描述了软件系统的其他属性,例如性能、安全性、可靠性等。

4. 举例说明一些常见的软件需求验证方法。

常见的软件需求验证方法包括需求审查、原型验证、测试和模型检查等。

三、软件设计与架构1. 什么是软件架构?软件架构的重要性是什么?软件架构是软件系统的基础结构和组织方式,决定了软件系统的可扩展性、可维护性和可演化性。

软件架构的合理设计能够降低开发和维护的难度。

2. 请简要介绍常见的软件架构模式。

常见的软件架构模式包括分层架构、客户-服务器架构、面向对象架构和微服务架构等。

3. 什么是设计模式?列举几个常见的设计模式。

设计模式是针对软件设计中的常见问题所提出的解决方案。

常见的设计模式包括单例模式、观察者模式、工厂模式和策略模式等。

4. 请简要介绍面向对象设计的原则。

面向对象设计的原则包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则等。

四、软件测试与质量保证1. 软件测试的目的是什么?请简要介绍测试驱动开发(TDD)。

软件测试的目的是发现软件产品中的错误和缺陷。

测试驱动开发是先编写测试用例,再根据用例编写代码的开发模式。

2. 请简要介绍黑盒测试和白盒测试。

黑盒测试是基于软件外部行为和需求的测试,不考虑软件的内部实现。

课后练习及答案7

课后练习及答案7

软件体系结构设计(习题与参考答案)[选择题]1. ()系统体系结构的最佳表示形式是一个可执行的软件原型。

(B)A. 真B. 假2. ()软件体系结构描述是不同项目相关人员之间进行沟通的使能器。

(A)A. 真B. 假3. ()良好的分层体系结构有利于系统的扩展与维护。

(A)A. 真B. 假4. ()消除两个包之间出现的循环依赖在技术上是不可行的。

(B)A. 真B. 假5. ()设计模式是从大量成功实践中总结出来且被广泛公认的实践和知识。

(A)A. 真B. 假6. 程序编译器的体系结构适合使用()。

(A)A. 仓库体系结构B. 模型-视图-控制器结构C. 客户机/服务器结构D. 以上选项都不是7. 网站系统是一个典型的()。

(C)A. 仓库体系结构B. 胖客户机/服务器结构C. 瘦客户机/服务器结构D. 以上选项都不是8. 在分层体系结构中,()实现与实体对象相关的业务逻辑。

(D)A. 表示层B. 持久层C. 实体层D. 控制层9. ()可以帮助人们简单方便地复用已经成功的设计或体系结构。

(B)A. 商业组件B. 设计模式C. 遗留系统D. 需求规格说明10. ()用于封装具体的平台,从而使应用程序可以在不同的平台上运行。

(A)A. 抽象工厂模式B. 外观模式C. 观察者模式D. 以上选项都不是[练习题]1. 良好的软件体系结构设计有什么好处?答案要点:软件体系结构设计过程的核心在于建立系统的一个基本框架,即识别出系统的主要组件以及这些组件之间的通信。

良好的体系结构设计具有以下主要好处:y项目相关人员之间的沟通:软件体系结构是系统的一种高层表示,它可以成为不同项目相关人员之间沟通的使能器;y系统分析:在系统分析过程中确定系统的初步体系结构,将对系统是否满足关键性需求(如性能、可靠性和可维护性等)产生很大的影响;y大规模复用:体系结构可以在具有相似需求的系统之间互用,从而支持大规模的复用。

2. 消除包之间的循环依赖性有哪两种主要方法?参考答案:将PackageA中的循环依赖元素提取到PackageC中(1)PackageC 中的循环依赖PackageD 中(2)3. 给下面的系统设计一个适当的体系结构:参考火车站自动售票系统客户机模型,其中自动售票机作为客户机负责处理应用逻辑并实现(2) MVC 结构,其中模型是三维几何形体的边界表示,视图将模型中的几(3) 三层体系结构,其中一个数据服务器管理客户的帐户数据库,一个Web 服务4. 什么是三层体系结构?它的优缺点是什么?结构将系统划分成表示层、应用逻辑层和数据存储层,其中表示层由客户机上的浏览器处y 之间是松耦合关系,二者通过标准的HTML 语言进行交互,客户端的维y 务器之间是松耦合关系,应用服务器可以通过标准的数据访问接口(如(1) 火车站自动售票系统(2) 三维几何造型系统(3) 网上银行系统答案:(1) 这是一个典型的胖与系统的交互,服务器是一个大型主机,运行火车票的数据库。

软件复用与组件化考核试卷

软件复用与组件化考核试卷
2.组件化开发的核心思想是将系统分解为独立、可替换的组件,以实现高内聚、低耦合。其优势包括易于维护、可扩展性强、提高开发效率等。挑战包括组件间依赖管理、接口一致性保证等。解决方案包括使用依赖注入、接口标准化、组件版本管理等。
3.组件的独立性指组件在功能、结构和部署上的自主性。设计上应遵循单一职责原则,实现上应减少对外部环境的依赖,测试上应进行全面的单元测试和集成测试。这样可以提高组件的复用性和可维护性。
7.依赖注入是一种编程技巧,它可以在运行时动态地注入组件的依赖关系。()
8.组件化开发中,所有的组件都应该进行集成测试。()
9.组件化开发要求组件必须是用同一种编程语言实现的。()
10.在组件化开发中,组件的单一职责原则有助于提高组件的可维护性。()
五、主观题(本题共4小题,每题10分,共40分)
1.请简述软件复用的概念及其在软件开发中的重要性。并举例说明如何在实际项目中应用软件复用。
C.提高软件质量
D. A、B和C
2.下列哪个不是软件复用的基本原则?()
A.模块化
B.组件化
C.可配置性
D.封闭性
3.组件化开发可以提高()
A.软件可维护性
B.软件可扩展性
C.软件可移植性
D. A、B和C
4.以下哪种语言不支持组件化开发?()
A. Java
B. C#
C. Python
D. C++
5.在软件复用中,以下哪个环节是最关键的?()
A.组件设计
B.组件实现
C.组件测试
D.组件部署
16.以下哪个不是组件化的优点?()
A.提高开发效率
B.降低软件缺陷
C.提高软件的可维护性
D.提高软件的兼容性

软件工程课后题目

软件工程课后题目

软件工程课后题目第四章软件项目估计P109 19、20、21、23、24、2719、已知一个软件项目的记录,开发人员M=3人,其代码行数=12.1KLOC,工作量E=24PM,成本S=168000美元,错误数N=29,文档页数Pd=365页。

试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。

0201解:1.软件开发的生产率P为:P = L / E = 12.1×103LOC / 24PM = 504 LOC/PM2.开发每行代码的平均成本C为:C = S / L = 168000美元/ 12100LOC=13.9美元/LOC3.代码出错率EQR为:EQR = N / L = 29个/12.1KLOC=2.4个/KLOC4.软件的文档率D为:D = Pd / L = 365页/ 12.1KLOC = 30页/ KLOC20、使用COCOMOⅡ模型来估算建造一个简单的ATM软件(产生12个屏幕、10个报表、大约需要80个软件构件)所需的工作量。

假设平均复杂度(即屏幕的权为2,报表的权为5,构件的权为10)和平均开发者/环境成熟度(即平均生产率为13NOP/人.月),复用的百分比为40%。

使用基于对象点的应用组装模型。

试完成以下计算:1) 计算项目新的对象点数NOP。

(NOP=对象点×(1-复用%))2) 根据NOP值进行工作量估算(人月)。

3) 软件人员劳动力平均价格是每月4000人民币,求每个NOP的成本。

(5分)971) 对象点=12×2+10×5+80×10=874NOP=874×(1-40%)=524.42) 估算工作量=NOP/PROD=524.4/13=40(人月)3) 每个NOP成本=4000/13=308(元/NOP)21假设各项加权因子均为5,不考虑复杂度调整值(即)试完成以下计算1)计算项目的功能点的总计数值FP2)设平均生产率为10FP/pm,软件人员劳动力平均价格是每月5000人民币,求每个FP 的成本3)根据FP值计算总的项目成本,并进行工作量估算(人月)【答】1)FP=(10+12+15+8+8)*5*0.65=172.252)5000/10=500(人民币)3)500*172.25=86125人民币(总项目成本)172.3/10=17.2(人月)23、下表是某公司的一个项目的历史数据,假设评价时间为08年4月1日,试计算获得值分析(10分):试计算:(1)预计工作的预算成本BCWS=【答】BCWS=5+20=25(2)已完成工作的预算成本BCWP=【答】BCWP=5+20+40=65(3)完成工作的预算成本BAC=【答】BAC=5+20+50+40+60+80=255(4)已完成工作的实际成本ACWP=【答】ACWP=10+15+50=7525、某个固定资产投资项目需要原始投资1000万元,有A、B、C、D 四个互相排斥的备选方案可供选择,各方案的净现值指标分别为420.89万元,511.72万元,620.60万元和556.26万元。

软工题第八章

软工题第八章

第八章习题一、选择题1.软件复用的目的是要使软件开发工作进行得( A )。

软件复用的实际效益除了( B )之外,在企业的经营管理方面也可望达到理想的效益。

新的应用软件开发技术和工具是以( C )作为关键,复用大粒度的( D ),为的是快速开发应用软件。

这些新技术包括微软的( E )、( F )、( G ),SUN公司的Java,OMG公司的CORBA、IDL等。

供选择的答案:A. ①更简捷②更方便③更快、更好、更省④更丰富B. ①复用率②功能扩充③效率④空间利用率C, D. ①软件②固件③构件④属性⑤对象⑥事物⑦数据⑧代码E~G. ① office ② Visual Basic ③ Active X ④ Photoshop⑤ OLE ⑥ Fortran ⑦ COBOL ⑧ Delphi2. 以往的软件工程技术不能满足复用的需要,体现在工程、( A )、( B )、经营业务等4个方面。

“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可复用的( E ),缺乏实施复用的工具。

供选择的答案:A, B. ①需求②过程③环境④组织管理C ~ E. ①复用②可靠性③灵活性④界定⑤工具⑥互连性3. 软件体系设计的一个中心问题是能否( A ),以及采用何种软件体系结构风格。

有原则地使用体系结构风格可带来一些实际的好处:(1) 它促进了对设计的( B );(2) 它可以带来显著的( C )(体系结构风格的不变部分使它们可以共享同一个实现代码);(3) 只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构;(4) 对标准或规范风格的使用也支持了( D ),例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;(5) 在限制了设计空间的情况下体系结构风格通常允许进行特殊的与风格有关的分析;(6) 通常可以对特定的风格提供( E )手段。

供选择的答案:A ~ C. ①使用特定的体系模式②使用重复的体系模式③复用④专用⑤代码复用⑥结构复用D ~ E. ①可视化②构件③互操作性④可移植性⑤可调度性⑥框架4. 软件复用可分为以下三个层次:( A ),例如软件工程知识的复用。

软件工程及应用课后习题(第1、2章)

软件工程及应用课后习题(第1、2章)

第1章1、解释术语(1)软件: 软件是指计算机系统中的程序及其文档。

P16(2)软件工程:软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科。

P15(3)软件危机:软件生产率、软件质量远远满足不了社会发展的需求,成为社会,经济发展的制约因素,人们通常把这一现象称为“软件危机”。

P152、简答题(1)简述软件开发的本质。

答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。

P19(2)简述实施软件开发的基本途径。

答:实施软件开发的基本途径是系统建模。

所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。

P19(3)简述何谓模型以及软件开发中所涉及的模型。

答:模型是一个抽象。

该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。

软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。

P19(4).简述软件开发所涉及的两大类技术。

答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。

P17第2章1、解释术语(1)软件需求软件需求以一种技术形式,描述了一个产品/系统应该具有的功能、性能和其它性质。

P23(2)功能需求功能需求规约了系统或系统构件必须执行的功能。

P24(3)非公能需求非公能需求是性能、外部接口、设计约束和质量属性这4类需求的统称。

P23(4) 需求规约需求规约是一个软件项/产品/系统所有需求陈述的正式文档,它表达了一个软件产品/系统的概念模型。

P282、简述需求与需求规约的基本性质。

答:需求的基本性质:1)必要的,该需求是用户所要求的。

2)无歧义的,该需求只能用一种方式解释。

3)可测的,该需求是可进行测试的。

《软件工程概论》题集

《软件工程概论》题集

《软件工程概论》题集一、选择题(每题2分,共20分)1.软件工程的目标是提高软件的( )。

A. 开发效率B. 维护效率C. 质量和生产率D. 可靠性和复用性答案:C2.在软件开发的生命周期中,需求分析阶段的主要任务是( )。

A. 确定软件开发方法B. 编写程序代码C. 确定软件系统的功能需求D.进行系统测试答案:C3.下列选项中,不属于软件设计原则的是( )。

A. 开闭原则B. 依赖倒转原则C. 迪米特法则D. 尽早编码原则答案:D4.在结构化分析方法中,数据流图(DFD)用于描述( )。

A. 数据在系统中的流动和处理过程B. 软件的模块结构C. 软件的层次结构D. 软件的控制流程答案:A5.白盒测试和黑盒测试的主要区别在于( )。

A. 测试者是否知道程序的内部结构B. 测试是否使用测试用例C. 测试是否在系统开发完成后进行D. 测试是否关注性能答案:A6.敏捷开发方法强调( )。

A. 严格遵循预先定义的计划B. 快速响应变化,交付可用的软件C. 详细的文档和过程控制D. 尽量避免与客户沟通答案:B7.下列哪项不是软件配置管理(SCM)的目标( )。

A. 标识变更B. 控制变更C. 确保变更的正确实施D. 消除所有错误答案:D8.在软件项目中,风险管理的目的是( )。

A. 消除所有风险B. 最小化风险对项目的影响C. 将风险转移给第三方D. 仅关注技术风险答案:B9.面向对象编程(OOP)的三大特征是( )。

A. 封装、继承、多态B. 数据抽象、过程控制、模块化C. 模块化、结构化、封装D. 过程控制、继承、多态答案:A10.软件复用是通过( )来提高软件开发效率的。

A. 使用已有的软件组件B. 增加开发人员数量C. 延长开发时间D. 采用新的开发工具答案:A继续二、填空题(每题2分,共14分)1.软件工程是一种(应用计算机科学、经济学、管理学和其他工程学科的知识和实践,以系统化、规范化、量化的方法开发、运行和维护软件的过程)。

电子科技大学2017年-林迪-软件体系结构课后习题

电子科技大学2017年-林迪-软件体系结构课后习题

目录第一章:软件体系结构概论 (4)1、就项目管理方面而言,软件重用项目与非重用项目有哪些不同之处。

(4)2、实际参与/组织一个软件重用项目的开发,然后总结你是如何组织该项目的开发的? (4)3、为什么要研究软件体系结构? (4)4、根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成? (5)5、在软件体系结构的研究和应用中,你认为还有哪些不足之处? (5)6、根据自己的经验,谈谈对软件危机的看法?(结合表现、原因、如何克服描述) .66.1、软件危机的表现? (6)6.2、软件危机的原因? (7)6.3、如何克服软件危机? (8)7、研究软件体系结构的意义是什么? (8)8、从哪些方面评估软件体系结构? (9)第二章:软件体系结构建模 (10)1、选择一个规模合适的系统,为其建立“4+1”模型。

(10)2、引入了软件体系结构以后,传统软件过程发生了哪些变化?这种变化有什么好处? (12)3、软件体系结构的生命周期模型与软件生命周期模型有什么关系? (13)第三章:软件体系结构风格 (13)1、层次系统结构和基于消息的层次系统结构有什么区别? (13)2、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。

(13)3、SIS和DSSA分别用在哪些场合? (14)4、在软件开发中,采用异构结构有什么好处,其负面影响有哪些? (15)第四章:软件体系结构描述 (15)1、体系结构描述有哪些?有哪些标准和规范? (15)2、体系结构描述语言与程序设计语言的区别? (16)3、选择一个规模适中的系统,使用UML为其建模。

(17)第五章:动态软件体系结构 (17)1、什么是动态软件体系结构?动态软件体系结构与静态软件体系结构有什么区别? (17)2、基于构件的动态软件体系结构模型的层次结构是什么? (17)第六章:Web服务体系结构和SOA (17)1、什么是Web服务体系结构?与传统的结构相比,使用Web服务有哪些好处?. 172、在Web服务中,如何实现其松散耦合的特点? (18)3、试分析服务提供者、服务请求者和服务代理三者的作用,以及它们之间的工作流程。

软件组建技术课后答案

软件组建技术课后答案

第1章1. 结构化分析方法是面向数据流进行需求分析的方法。

结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。

其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。

结构化分析方法体现在用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。

2. 结构化设计方法的基本思想是将系统划分成一些独立的功能模块,这些模块按照一定的组织层次构造起来形成软件结构,通过自顶向下逐步细化的方法将用数据流图表示的信息转换成程序结构的设计描述。

结构化分析方法是面向数据流进行需求分析的方法。

其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。

结构化分析方法体现在用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。

结构化设计是在结构化分析的基础上完成的。

结构化设计属于面向数据流的设计方法。

在需求分析阶段,通过结构化分析方法,解决了一个关键问题:信息流。

数据流是软件开发人员考虑问题的出发点和基础。

数据流从系统的输入端向输出端流动,要经历一系列的变换或处理。

用来表现这个过程的数据流图(DFD):实际上就是软件系统的逻辑模型。

结构化设计要解决的任务,就是在上述需求分析的基础上,将DFD图映射为软件系统的结构。

换句话说,这类设计方法允许把用DFD图表示的系统逻辑模型方便地转换成对于软件结构的初始设计描述。

从结构化分析到结构化设计工具的转变:结构化分析结果结构化设计结果数据流图初始结构图生存周期字典的数据部分设计数据字典伪码+实现方面伪码实体关系图+数据库性数据库设计事务框图分层/细化事务模型3. 模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名的而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1软件复用与传统软件开发的重用的差异?
软件复用是指重复使用“为了复用目的而设计的软件”的过程。

相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用
1 分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装) ,其中,构件是核心和基础,“复用”是必需的手段.
2软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因
2影响软件可复用性的因素
软件构件技术(Software component technology)
领域工程(Domain Engineering)
软件构架(Software Architecture)
软件再工程(Software Reengineering)
开放系统(Open system)
软件过程(Software Process)
CASE技术等以及各种非技术因素。

3、什么是领域工程?领域工程对软件复用的影响表现在那些方面?
领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动.领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域领域工程包括三个主要的阶段.
(1)领域分析
(2)领域设计
(3)领域实现
领域工程作为软件复用的核心技术之一其主要目的是实现对特定领域中可复用成分的分析、生产和管理。

领域工程的萌芽最早可以追溯到帕尔纳斯Parnas在1976年提出的“程序家族Program Family”的概念[12]。

其基本思想是把一组具有显著共性的程序作为一个整体/家族并对其共性进行分析其动机则是为了简化一组相似程序的开发和维护。

后来提出出了“领域分析”的概念[11]用来指代“识别特定问题域中一组相似系统所包含的对象和操作的活动”。

他还对领域分析和软件系统分析这两种活动进行了对比提出了“领域分析员”的概念并分析了在软件复用活动中领域分析的必要性和可行性。

或者通过领域工程获得软件构件/构架面向领域的构件数目大面向领域的构架更具体面向领域的复用复用程度高因此:领域工程是获取构件/构架的主要途径。

4、你认为软件复用成功的因素都包括那些方面?
1软件越来越多地渗透到生活的各个方面,对于许多工业和商业企业来说,他们的目标有多种:是顾客满意、提供及时的产品和服务、降低成本等。

提高业务能力通常意味者他们必须提高他们的软件开发能力。

在这种情况下,成功意味着他们的软件必须:Faster BetterCheaper “Reuse”。

The “Holy Grail”of today’s IT environment
2如何达到这个目标?两条途径:1提高软件产品的生产效率2软件复用许多公司都在试图提高他们的软件开发能力,对象和构件的复用成为他们软件工程的策略
3构件系统的思想也从简单的代码扩展到需求、分析模型、设计和测试。

所有这些软件开发过程的步骤都围绕着
4复用的成功例子1984-Hewlett-Packard achieved 25% to 50% reuse levels in firmware(固件,
韧件‘软硬结合’)。

5、结构、过程、组织几个方面是如何影响复用的?
传统的软件开发过程缺乏有计划的复用缺乏机会来鼓励复用。

系统化的复用实践非常少
1一般在某个时间都是把开发的焦点集中到一个项目上管理小组需要向前看,把着眼点放在覆盖一个应用范围内的一系列项目上。

2需要以一个领域为焦点项目和领域的固有冲突
3缺乏软件复用的知识管理者:组织复用知识开发者:复用过程的知识
6、探讨复用业务的建立与管理?
1 最佳方式是通过系统化地使用业务流程再造的方法,具体地说就是面向对象的业务工程方法(Jacobson,1994).重新设计现有的软件开发模式。

2 随着复用业务的建立,相应设置了组织机构、管理策略和规划。

一旦建立了复用业务,就需要进行管理和优化。

3 复用业务整体的管理涉及单个项目和过程管理之上的责任。

这些责任中第一位的可能是保证未来计划的制定和执行,以及与上层管理者的沟通。

4 为了解决组织和系统的复杂性和规模问题,RSEB必须以系统化方式管理风险。

解决规模问题的一种主要方法是采用渐进模式,即连续不断地扩充系统、过程和组织的不同部件
5 RSEB 需要的的管理功能
确定谁将拥有和维护特定的组件系统;
收集指标数据以管理和优化复用业务;
确定在所规划的业务中,需要多少工作人员,并安排招聘、培训和工资事宜;
综合考虑管理要素,例如产品上市时间、成本、功能和质量,并解决资源和进度方面的冲突;
6 复用业务的采用有的种极端的方式——一个是把整个当前机构、过程和人员小步转移到新的模式上;另一个是构建全新的复用业务机构,而让现有的软件开发机构继续进行日常话动。

7 有些公司已经成功地选择了个新机构的单一工作,然后渐进地在新机构中添加新的领域和人员,让老的机构逐渐衰退。

这种新的机构就足RSEB一个实例.
7、构件概念及特点
定义1:
一个软件构件是一个可独立交付的软件单元,封装了设计和实现的内容,并向外提供接口,通过接口与其它构件组装成更大的整体;
定义2:
一个软件构件是一个仅通过契约化的接口和显式的语境依赖进行组装的单元,能够被独立地部署和由第三方组装;
定义3:
一个构件是体现一个目标问题域的语义,并独立于复杂的实现技术;
定义4:
一个构件代表一个自包含(Self-Contained)的实体,能够向其环境输出功能并可通过定义明确的开放的接口从环境输入功能;
定义5:
一个构件由一个动态变化的对象集组成,这些对象既可以在构件的内部也可能是其接口的一
部分。

构件间既可以直接交互,也可以通过独立的对象进行胶合。

这是从对象实现技术的角度给出的构件定义;
定义6:
一个通过接口向外提供服务的软件包。

这是Microsoft的技术文档给出的定义。

2 狭义的构件
–软件系统中具有相对独立功能、可以明确辨识、接口
由契约指定、和语境有明显依赖关系、可独立部署、
且多由第三方提供的可组装软件实体。

–既包括以EJB,COM/DCOM,ActiveX,Web Services
等形式存在的可运行二进制程序,也包括经过封装的
源代码程序。

3 广义的构件
–随着对软件复用理解的不断深入,软件构件概念的外
延也在扩展。

–从构件实体到需求规约、系统构架、设计文档、测试
案例等各种具有复用价值的软件资源都可称为构件。

8、构件的特点
上述定义的共同要素是:软件构件是可以独立交付、发布的二进制功能单元,符合构件模型(或具有规范接口),不同构件开发机构开发的构件能够按应用的需要进行组装。

构件具有多种形态
类、类树、框架、构架等
构件具有多种层次
分析件、设计件、代码件、运行件等
构件需要多方面描述
名称、属性、对外接口、所需接口等
9、基于构件的软件开发方法。

基于构件技术的软件开发方法的基本思想和目的基于构件技术的软件开发方法的基本思想是将需要设计的软件分解成一些有基本功能的“构件”,在开发过程中不必重新设计这些基本功能模块,只需从现有构件库中寻找合适的构件组装成软件,这种软件工业化的思想无疑将大大提高软件的可复用性[4]。

基于构件技术的软件开发不仅使软件产品在客户需求吻合度、上线时间、软件质量上领先于同类产品,提高项目的成功率,而且对软件的开发和维护变得十分简单,客户可以随时随地应对商业环境变化和IT技术变化以实现“快速定制”。

基于构件技术的软件开发方法的基本目的是以构件组装方式进行应用系统开发,这种组装基于那些以独立服务的形式开发出来的构件来进行,构件的服务通过在某种通用的基础设施上调用某种通用的服务进行信息交互的。

因此,基于构件技术的软件开发具备以下要素:由构件组装的应用程序、独立服务提供、公共的构件基础设施及使用通用服务。

10、中间件概念及特点:
1 中间件是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。

人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,因此,
定义:中间件=平台+通信
这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。

2 IDC(互联网数据中心)给出的一个定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

特点:
·中间件是一类软件,而非一种软件;
·中间件不仅仅实现互连,还要实现应用之间的互操作;
·中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。

相关文档
最新文档