第1个回答 2010-05-24
一. 简答题:
1.软件工程的定义 P4
答:软件工程师一门工程学科,涉及软件生成的各个方面,从最初的系统描述一直到使用后的系统维护,都属于其学科范畴。
2.软件工程所面临的主要问题 P3表格
答:多样性的挑战:必须开发出新技术,制作可靠的软件,从而足以灵活应对这种多样性。
交付上的挑战:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。
信任的挑战:研究能说明软件可信的技术。
3.社会技术系统定义及主要特征 P12-13
答:定义:一个包含有人、软件和硬件在内的系统。
特征:它们都有其整体特性
他们通常是不确定的
系统支持机构目标的程度和范围不仅仅依赖于系统本身
4.瀑布模型的概念及其包含阶段 P39-40
答:概念:这个模型采用一些基本的过程活动,即描述、开发、有效性验证和进化,并且使 用单独的过程阶段(如需求描述、软件设计、实现和测试等阶段)表现这些活动
包含阶段:需求分析和定义、系统和软件设计、实现和单元测试、集成和系统测试、运行和维护
5.增量式开发的概念 P43
答:增量式开发是一种集中了这些模型的优点的体重综合方法。每一步增量实现了一个或多个最终用户功能。每一步增量包含所有早期的已开发的功能集加上一些新的功能;系统在逐步累积的增量中增长。就是一步一步渐增式的开发。
6.软件工程的四个基本过程活动 P38
答:软件描述、软件设计和实现、软件有效性验证、软件进化
7.介绍软件工程的功能需求,非功能需求和领域需求 P73
答:功能需求:包括对系统应该提供的服务、如何对输入作出反应以及系统在特定条件下的行为的描述。在某些情况下,功能需求可能还需明确声明系统不应该做什么。
非功能需求:对系统提供的服务或功能给出的约束。包括时间约束、开发过程的约束、标准等。非功能需求常用于整个系统。通常不用在单个系统或服务中。
领域需求:这是来自系统的应用领域的需求,反应了该领域的特点。他们也可能是功能需求或非公能需求。
8.客户机/服务器模型及优缺点 P152-153
答: 客户机/服务器体系结构的模型是一个分布式系统模型,系统由一组服务及相关的服务器组成,客户机访问并使用这些服务。
优点:它是一个分布式体系结构。由许多分布式处理器构成网络系统可提供更有效的使用。添加一台服务器或更新服务器很容易而且是透明的,不会影响系统的其他部分。
缺点:在系统中集成一台服务器需要改变现存的客户机和服务器以便获得性能提升。要为每个服务器建立专门的数据模型以便优化其性能。
9.分层模型及优缺点 P153-154
答: 把系统组织成一系列的层次,每一层提供一组服务。每一层定义一个抽象机,每个抽象机是由其下层的源机的代码构成的。
优点:支持系统的增量式开发。抽象机转换到其他机器上实现比较容易。
缺点:顶层上的用户服务可能会需要穿过其相邻层来获取由更低层所提供的服务。性能也是一个问题。
10.数据处理系统及特点 P181
答:系统是以数据为中心的,它们的数据库要比系统本身大很多个数量级。
特点:是批处理系统,数据的输入和输出时成批地从文件或数据库中取出,也是成批地存入文件或数据库中的,而不是对用户终端进行输入和输出。
11.编译器一般体系结构中包含的组件 P188-189
答:词法分析器、符号表、语法分析器、语法树、语义分析器、代码生成器。
12.面向对象设计中,并发对象的实现方式和工作方式 P194-195
答:实现方式与工作方式:
服务器 对象被实现为一个并行进程,它的方法对应为定义的对象操作。在收到外部时间后方法被启动,方法的执行与其他对象上的方法是并行的。当对象完成了自身的操作时,对象中止,等待进一步的服务请求。
主动对象 对象状态的改变可以来自对象内部操作的执行。代表对象的进程不停地执行这些操作,从不挂起。
13.用户界面设计过程中的核心活动 P230
答:用户分析:理解用户所做的任务、工作环境、使用的其他系统、如何在工作中与他人交互等。
系统原型开发:开发原型系统并展示给用户看,让他们指导界面的进化。
界面评估:一个更正式的评估活动,在评估中收集有关用户对界面的真实体验信息。
14.极限编程适合敏捷方法原则 P244
答:(1)增量式开发时通过系统的小的频繁发布的版本来支持的,其间所采用的需求描述方法是基于客户情节或脚本的,这样的客户情节或脚本可以成为过程规划的根据。
(2)客户的参与是通过全时雇佣到开发团队的方式。客户代表参与开发并负责定义系统的接受测试。
(3)人是通过结对编程、集体对系统代码所有权、可以忍受的开发过程而无需超频的工作小时来运作的。
(4)变更是通过经常性的系统版本、测试优先的开发以及连续的集成来支持的。
通过持续的再分解来改善代码质量并使用不预期系统将来的变更的简单设计,来支持简洁性的维护。
15.极限编程测试的关键特性 P246
答: XP当中的测试的关键特性:
(1)测试优先的开发。(2)来自脚本的增量式测试开发。
(3)用户参与到测试开发和有效性验证中。(4)自动测试系统的使用。
16.软件原型在软件开发过程中的使用方式
答:(1)在需求工程过程中,原型可以帮助导出系统需求并验证系统需求的有效性。
(2)在系统设计阶段,原型可以用来探索特殊的软件解决方案和支持用户界面设计。
(3)在测试阶段,原型可以用来对准备移交给客户的系统运行背对背的测试。
17.在规划软件复用时需要考虑的相关约束
答:软件开发进度表 所预计的软件生命期 开发团队的背景,技术和经验
软件的危险程度和它的非功能性需求
应用领域 系统运行平台
18.在集成商业限制系统中面临的问题
答:对功能和性能缺乏控制
商业现成系统间的互操作问题
无法控制系统的进化
COTS产品厂商的支持
19.组件与对象之间有什么区别
答:组件是可部署的实体
组件不定义类型
组件实现是不透明的
组件是独立于语言的
组件是标准化的
20.基于组件的软件开发过程与传统的软件开发过程有什么不同
答:(1)最初对用户需求的开发只需要是概要性的而不用十分详细,且鼓励信息持有者在定
义他们的需求时尽可能地灵活。
(2)在过程的早期阶段根据可利用的组件来细化和修改需求。
(3)在系统体系结构设计完成后,会有一个进一步的组件搜索及设计精炼的活动。
(4)开发就是将已发现的组件集成在一起的组成过程。
21.列举软件维护费用高的原因
答:团队稳定性,合同责任 人员技术水平 程序年龄和结构
22.对软件可维护性评估有用的过程度量包括哪些
答:纠正性维护请求的数目
影响分析所需的平均时间
实现一个变更请求的平均时间
突出的变更请求的数目
23.系统再工程过程中的行为有哪些
答:源代码转换 反向工程 程序结构改善 程序模块化 数据再工程本回答被提问者采纳