内、外部接口的一致,系统规格说明与系统行为的一致等。
· 完备性 : 软件系统不丢失任何重要成分,可以完全实现系统所要求功能。
· 可验证性 : 开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。 11、软件工程的基本原理有哪些?试说明之。
答:软件工程的基本原理是:
· 按软件生存期分阶段制定计划并认真实施。在软件生存期中需要完成许多不同性质的工作,所以应把软件生存期划分为若干阶段,并相应制定出可行的计划,且按照计划对软件的开发和维护活动进行管理。不同层次的管理人员都必须严格按照计划各尽其职地管理软件的开发和维护工作。
· 坚持进行阶段评审。软件的质量保证工作不能等到编码阶段结束之后再进行。错误发现得越晚,为改正它所需付出的代价就越大。因此,在每个阶段都要进行严格的评审,以尽早发现在软件开发过程中产生的错误。
· 坚持严格的产品控制。在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。但由于外界环境的变化或软件工作范围的变化,在软件开发过程中改变需求又是难免的,不能硬性规定禁止客户改变需求,只能依靠科学的产品变更控制技术来顺应需求的变更。其中主要是实施基线配置管理。
· 使用现代程序设计技术。实践表明,采用先进的技术可提高软件开发的生产率,还可提高软件的可维护性。其中包括结构化程序设计技术,Jackson程序设计技术,面向对象程序设计技术等。
· 明确责任。软件产品是看不见摸不着的逻辑产品。为了提高软件开发过程的可见性,有效地进行管理,应当根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使得工作结果能够得到清楚的审查。
· 用人少而精。合理安排软件开发小组人员的原则是参与人员应当少而精,即小组的成员应当具有较高的素质,且人数不应过多。人员素质高能大大提高软件开发的生产率,明显减少软件中的错误。软件开发小组人员少而精可以减少因交流开发进展情况和讨论遇到的问题而造成的通信开销。
· 不断改进开发过程。必须不断地灵活地改进软件工程过程,积极主动地采用新的软件技术,注意不断总结经验。此外,需要注意收集和积累出错类型、问题报告等数据,用以评估软件技术的效果和软件人员的能力,确定必须着重开发的软件工具和应当优先研究的技术。 12、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请解释你的回答。
答:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。这个说法是对的。在1970年代,GTE、TRW和IBM等三家公司对此问题做了独立研究,最后它们得到相似的结
论:
从表中可以看出,在需求分析阶段检查和修复一个错误所需的代价只有编码阶段所需代价的1/5到1/10,而在维护阶段做同样的工作所付出的代价却是编码阶段的20倍。
项目管理
一、填空题
1、要成功地完成软件开发工作的一个主要的决定性因素是项目管理 。
2、软件过程是软件生存期中的一系列相关工程活动集合。
3、所有的软件开发都可以看成是一个问题循环解决过程,其中包括4个截然不同的阶段:状态捕捉、问题定义、技术开发和方案综合。
4、在制定软件项目计划之前,必须先明确项目的目标和范围。项目的目标标明了软件项目的目的但不涉及如何去达到这些目的。
5、对软件进行度量,是为了表明软件产品的质量,弄清软件开发人员的生产率,建立项目估算的基线,帮助调整对新的工具和附加培训的要求。
6、软件质量的事后度量包括正确性、可维护性、完整性和可使用性。其中完整性包括危险性和安全性。 7、软件范围包括功能、性能、限制、接口和可靠性。
8、软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。资源包括人与工具。 9、对于一个大型的软件项目,要进行一系列的估算处理。主要靠分解和类推的手段进行。
10、基本COCOMO模型是一个静态单变量模型,它用一个已估算出的源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。
11、成本-效益分析的目的,是从经济角度评价开发一个新的软件项目是否可行。
12、风险估计从两个方面估价风险。一是估计一个风险发生的可能性。一是估价与风险相关的问题出现后将会产生的结果。
13、一个软件任务由一个人单独开发,生产率最高。
14、在与软件成本相关的影响因素中,人员的能力是最大影响因素。
15、软件开发所需的人力随开发的进展逐渐增加,在编码与单元测试阶段达到高峰,以后又逐渐减少。 16、在建立项目组织时应注意的原则有三:① 尽早落实责任 ,指定专人负责;② 减少接口,要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失;③责权均衡。
17、风险出现概率可以使用从过去项目、直觉或其它信息收集来的度量数据进行统计分析估算出来。 18、用各种不同的方法对风险进行分类是可能的。从宏观上来看,可将风险分为项目风险、技术风险和商业风险。 二、选择题
1、所有的软件开发都可以看成是一个问题B过程。 A. 顺序解决 B. 循环解决C. 分类解决 D. 分组解决 2、软件项目管理所涉及的范围覆盖了整个软件D。 A. 开发过程 B. 运行与维护过程 C. 定义过程 D. 生存期
3、为使软件开发获得成功,一个关键问题是必须对软件范围、风险、资源、任务、里程碑、成本,进度等做到心中有数,而C可以提供这些信息。
A. 计算机辅助工程 B. 软件开发工具C. 软件项目管理 D. 软件估算 4、软件范围标明了软件要实现的基本功能,并尽量以A的方式界定这些功能。 A. 定量 B. 规范 C. 统一 D. 定性
5、只要事先建立特定的度量规程,很容易做到B开发软件所需要的成本和工作量、产生的代码行数等。 A. 间接度量 B. 直接度量C. 间接估算 D. 直接估算
6、为了计算特征点,可以像计算功能点那样,对信息域值进行计数和加权。此外,需要对一个新的软件特征A进行计数。
A. 算法 B. 计算误差C. 程序复杂性 D. 效率
7、对于软件的D,有一种简单的面向时间的度量,叫做平均变更等待时间MTTC(Mean Time To Change)。 这个时间包括开始分析变更要求、设计合适的修改、实现变更并测试它、以及把这种变更发送给所有的用户。
A. 可靠性 B. 可修改性C. 可测试性 D. 可维护性
8、软件的完整性是度量一个系统抗拒对它的C攻击(事故的和人为的)的能力。
A. 可靠性 B. 正确性C. 安全性 D. 容错性
9、对每一种软件资源,应说明4个特性:资源的描述,资源的有效性说明,资源在何时开始需要,使用资源的持续时间。最后两个特性统称为A。
A. 时间窗口 B. 时间安排C. 日程安排 D. 资源定义
10、业务系统计划工具借助特定的C建立一个组织的战略信息需求的模型,导出特定的信息系统。 A. 过程性语言 B. 形式化语言C. 元语言 D. 伪码
11、软件开发成本主要是指软件开发过程中所花费的B及相应的代价。 A. 劳动力 B. 工作量C. 资源 D. 持续时间
12、自顶向下估算软件成本的方法主要是从项目的整体出发进行B,即根据已完成项目的总成本(或总工作量),来推算待开发软件的总成本(或总工作量),然后按比例将它分配到各开发任务单元中去。 A. 分解 B. 类推C. 推导 D. 评估
13、自底向上估算软件成本的方法主要是把待开发软件A,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量。 A. 分解 B. 类推C. 推导 D. 评估
16、系统的经济效益B因使用新系统而增加的收入加上使用新系统可以节省的运行费用。 A. 大于 B. 等于C. 小于 D. 不等于
17、项目复杂性、规模和结构的不确定性构成C(估算)风险因素。 A. 技术 B. 经济C. 项目 D. 商业
18、识别风险的一种最好的方法就是利用一组A来帮助人们了解在项目和技术方面有哪些风险。因此,Boehm建议使用一个“风险项目检查表”。 A. 提问 B. 项目C. 脚本 D. 场景
19、在做风险评价时常采用的一个非常有效的方法就是定义D。 A. 风险评价标准 B. 风险影响因子C. 风险调整因素 D. 风险参照水准
21、当几个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的A问题,即所谓通信问题。 A. 接口 B. 衔接C. 调用 D. 控制
22、假设一个人单独开发软件,生产率是5000行/人年。若4个人组成一个小组共同开发这个软件,在每条通信路径上耗费的工作量是250行/人年。则组中每人的生产率降低为C A. 4200 B. 4350 C. 4675 D. 4375
23、PERT技术叫做 B技术,它是采用网络图来描述一个项目的任务网络,安排开发进度,制定软件开发计划的最常用的方法。
A. 日程安排 B. 计划评审C. 关键路径 D. 因果图
24、在进度压力下赶任务,其成果往往是以B产品的质量为代价的。 A. 浪费 B. 牺牲C. 抵押 D. 维持 三、选择填空题
1、从供选择的答案中选出与下列有关软件过程叙述相对应的正确答案,将其编号填入到相应的括弧内。 软件过程是软件(4)中的一系列相关软件工程(3)的集合。每一个软件过程又是由一组(6)、项目(8)、软件工程产品和交付物以及质量保证(SQA)点等组成。一个软件过程可以用右图的形式来表示。首先建立一个(2)过程框架,其中定义了少量可适用于所有软件项目的框架(3),再给出各个框架(3)的任务集合,最后是保护伞活动,如软件质量保证、软件配置管理以及测量等。软件过程模型的选择基于项目和应用的特点、采用的(5)和工具、要求的控制和需交付的产品。
A.④ B.③ C.⑥ D. ⑧ E. ② F. ⑤
供选择的答案:A~F.?① 工程 ② 公共 ③ 活动 ④ 生存期 ⑤ 方法 ⑥ 工作任务 ⑦ 功能 ⑧ 里程碑 2、从供选择的答案中选出与下列有关软件项目管理叙述相对应的正确答案,将其编号填入到相应的括弧内。
?由于软件工程有如下的特点,使软件管理比其它工程的管理更为困难。软件产品(2)。(6)标准的过程。大型软件项目往往是(3)项目。(2)的作用是为有效地定量地进行管理,把握软件工程过程的实际情况和它所产生的产品质量。在制定计划时,应当对人力、项目持续时间、成本作出(4);(5)实际上就是贯穿于软件工程过程中一系列风险管理步骤。最后,每一个软件项目都要制定一个(1),一旦(6)制定出来,就可以开始着手(5)。
供选择的答案:A. ② B. ⑥ C. ③ D. ② E. ④ F. ① G. ⑥ H. ⑤
A~C. ①可见的 ②不可见的 ③“一次性”④“多次”⑤存在 ⑥不存在
D~H.?①进度安排 ②度量 ③风险分析 ④估算 ⑤追踪和控制 ⑥开发计划
3、从供选择的答案中选出与下列有关软件度量叙述相对应的正确答案,将其编号填入到相应的括弧内。 ?软件的度量包括( A1 )和( B4 )。软件产品的( A 1 )包括产生的代码行数、执行速度等。软件产品的( B )则包括若干质量特性。我们还可进一步将软件度量如右图所示那样分类。软件( C )度量主要关注软件工程过程的结果;( D )度量则指明了软件适应明确和不明确的用户要求到什么程度;( E )度量主要关注软件的一些特性而不是软件开发的全过程。从图中还可看到另一种分类方法:面向( F )的度量用于收集与直接度量有关软件工程输出的信息和质量信息。面向( G )的度量提供直接度量的尺度。面向( H )的度量则收集有关人们开发软件所用方式的信息和人们理解有关工具和方法的效率的信息。
A. ① B. ④ C. ④ D. ① E. ② F. ⑤ G. ⑦ H. ③
③成本 ④生产率 F~H.?①过程 ②对象 ③人 ④存取 ⑤规模 ⑥进程 ⑦功能 ⑧数据
4、从供选择的答案中选出与下列有关软件估算叙述相对应的正确答案,将其编号填入到相应的括弧内。 估算资源、成本和进度时需要经验、有用的历史信息、足够的定量数据和作定量度量的勇气。通常估算本身带有( A )。项目的复杂性越高,规模越大,开发工作量( B ),估算的( A )就( C )。项目的结构化程度提高,进行精确估算的能力就能( D ),而风险将( E )。有用的历史信息( F ),总的风
供选择的答案:A~B.?①直接度量 ②尺度度量 ③二元度量 ④间接度量 C~E.?①质量 ②技术
险会减少。
供选择的答案:A. ③ B. ② C. ⑦ D. ① E. ③ F. ②
A. ①风范(范型)②风格 ③风险 ④度量 B~F.?①增加 ②越多 ③降低 ④不变 ⑤越少 ⑥越高 ⑦越大
5、从供选择的答案中选出与下列有关软件估算叙述相对应的正确答案,将其编号填入到相应的括弧内。 ?在软件项目估算时,将代码行LOC和功能点FP数据在两个方面使用:一是作为一个估算变量,度量软件每一个( A )的大小;一是联合使用从过去的项目中收集到的( B )和其它估算变量,进行成本和( C )估算。LOC和FP是两种不同的估算技术,但两者有许多共同的特征,只是LOC和FP技术对于分解所需要的( D )不同。当用( E )作为估算变量时,功能分解是绝对必要且应达到很详细的程度,而用( F )作为估算变量时,分解程度可以不很详细。( E )是直接估算,( F )是间接估算。若计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出LOC或FP估计值,记作a, m, b,则LOC或FP 的期望值E的公式为( G ),m是加权的最可能的估计值,遵循( H )。
供选择的答案:A. ③, B. ⑦, C. ⑤, D. ①, E. ②, F. ①, G. ②, H. ③。
A~C.①模块 ②软件项目 ③分量 ④持续时间 ⑤工作量 ⑥进度 ⑦基线数据 ⑧改进数据 D.①详细程度 ②分解要求 ③改进过程 ④使用方法 E,F.①FP ②LOC G.①E = (a+m+b)/3 ②E = (a+4m+b)/6 ③E = (2a+3m+4b)/3 ④
H.①χ概率 ②γ概率 ③β概率 ④泊松
6、从供选择的答案中选出与下列有关软件估算叙述相对应的正确答案,将其编号填入到相应的括弧内。 ?在考虑各种软件开发资源时,( A )是最重要的资源。如果把软件开发所需的资源画成一个金字塔形:在塔的上层是最基本的资源( A ),在底部为( B )。( B )包括硬件资源和软件资源。( C )、( D )和其它硬件设备属于硬件资源。IPSE工具属于软件资源中的( E )。为了提高软件的生产率和软件产品的质量,可建立( F )。
供选择的答案:A. ② B. ③ C. ② D. ④ E. ⑥ F. ⑤
A, B.① 方法 ②人力 ③工具 ④上下文环境 C, D.?①虚拟机 ②目标机 ③自动机 ④宿主机 E, F.①维护工具 ②分析设计工具 ③支持工具 ④编程工具 ⑤可复用构件库 ⑥框架工具 ⑦原型化模拟工具
7、从供选择的答案中选出与下列有关软件成本估算叙述相对应的正确答案,将其编号填入到相应的括弧内。 ?定义一个人参加劳动时间的长短为( A ),其度量单位为PM(人月)或PY(人年)。而定义完成一个软件项目(或软件任务)所需的( A )为( B ),其度量单位是人月/项目(任务),记作PM(人月)。进一步地,定义单位( A )所能完成的软件( C )的数量为软件( D ),其度量单位为LOC/PM。它表明一般指( E )的一个平均值。例如,一个软件的开发工作量如下表所示。该软件共有源代码2900行,其中, 500行用于测试,2400行是执行( F )的源代码。则劳动生产率是( G ) (LOC/PM)。
供选择的答案:A. ④ B. ② C. ④ D. ① E. ① F. ② G. ④
A, B, D.①生产率 ②工作量 ③成本 ④劳动量E.①开发全过程 ②某开发阶段 ③软件生存期 ④某开发任务
F, C.①软件 ②程序 ③进程 ④产品 G.①520 ②120 ③320 ④240
8、从供选择的答案中选出与下列有关软件成本估算叙述相对应的正确答案,将其编号填入到相应的括弧内。 ?对于一个大型的软件项目,由于项目的复杂性,需要进行一系列的估算处理。主要按( A )和( B )手段进行。估算的方法分为三类:从项目的整体出发,进行( B )的方法称为( C )估算法。把待开发