1、1 期末总复习题 2009-06-10 【一】判断题(在括号中回答 Y 或 N) 1. 软件工程的作用,主要是告诉你怎么写文档。( N ) 2. 参加 ACM 程序设计比赛时,选手“只写代码行不写注解行”这一事实,确实说明了注解行不重要, 在源程序中可有可无。( N ) 3. 在软件项目开发的后期,为了加快开发进度,可以多增加几个开发人员。(N) 4. 在软件项目开发的早期,为了加快开发进度,可以多增加几个开发人员。(Y) 5规范化的概要设计文档比需求分析文档更重要,因为有了概要设计文档就可以进行详细设计。( N ) 6. 规范的详细设计文档比源程序更重要,因为有了文档就可以写出源程序。(Y)
2、 7. 模块间的耦合越强,则表明模块里面的内聚性越强。(N) 8. 模块的内聚越强,则表明模块之间的耦合越弱。(Y) 9. CMM 是 CMMI 的祖先,CMMI 是 CMM 的后续。(Y) 10. ISO9000 是 ISO9001 的祖先,ISO9001 是 ISO9000 的后续。(Y) 11. 软件配置管理就等于软件版本管理。(N) 12. 软件版本管理是软件配置管理的研究课题。(Y) 13. 敏捷开发模型就等于结对编程。(N) 14. 敏捷开发模型就是快速原型法。(N) 2 15. 面向元数据的开发方法就是传统意义下的 Jackson 方法。(N) 16. 面向过程的开发方法就是结构
3、化方法。(Y) 17. 数据流图 DFD 就等于 PAD 图。(N) 18. 数据流图 DFD 就等于程序设计流程图。(N) 19. “接口和实现分离”是软件设计原理之一。(Y) 20. “单入口和单出口”是程序设计原则之一。(Y) 21. 程序测试不仅能证明错误的存在,也能证明错误的不存在。(N) 22. 编译系统不认识、也不编译源程序中的注解行这一事实,确实说明了注解行不重要,在源程序 中可有可无。(N) 23. 若两个实体之间存在多对多的关系,则应该将第三个实体插入其中,使原来的一个多对多关系 变为现在的两个一对多关系,这里的第三个实体,实际上是一个复杂的关系,也是笛卡尔积的子集。 (Y
4、) 24. 质量来源于过程,过程需要改进,改进是无止境的,这就是 CMMI 精神。(Y) 25. 测试只能发现程序中的错误,不能发现文档中的问题。(N) 26. 敏捷模型是轻载模型,CMMI 模型是重载模型。(Y) 27. 高内聚低耦合是软件设计原理或原则之一。(Y) 28软件测试的目的是改正软件中的错误。(N) 应该是发现软件中的错误 29同行评审会议中的同行专家,一般都是从公司外面聘请的。(N) 30软件策划应该在需求分析之前。(N) 31需求分析就是分析元数据与中间数据的关系。 (N) 太片面 32信息系统需求分析主要是分析元数据与中间数据的关系。 (Y) 3 33项目经理的主要职责就是
5、进行数据库设计。 (N) 34编码阶段结束后,测试经理就应该立即着手编写测试计划。(N) 35软件设计就是数据库设计。 (N) 40软件实现就是编程序。 (N) 41软件实现主要是编程序。 (Y) 42. CMMI 就是解决项目管理的工作规范化问题。(N) 43. 制定软件测试计划,一项重要工作是要将用户需求分解为测试需求,然后再将测试需求转化为 测试用例。(Y) 44. 软件测试与软件调试是一回事。(N) 45渐增式测试是逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加 入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。(Y) 45面向对象设计是运用类的思想,把分
6、析阶段得到的需求转变成符合成本和质量要求的、抽象 的系统实现方案的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。(Y) 46结构化设计(SD)是面向数据流的设计,它是以需求分析阶段产生的数据流图 DFD 为基础,按 一定的步骤映射成为系统的软件结构。(Y) 47信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据) ,对于不需要这 些信息的其它模块来说,是不能访问的。(Y) 48抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特征而暂不考虑它的细 节,不考虑其它非本质的因素。(Y) 49路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路
7、径。(Y) 50判定/条件覆盖是指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出 现一次,并使每个判定表达式所有可能的结果也至少出现一次。(Y) 51条件组合覆盖是指设计足够的测试用例,使的每个判定表达式中条件的各种可能的值的组合都 4 至多出现一次,条件组合覆盖是比较强的覆盖标准。(Y) 52条件覆盖是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至多出现一次。 满足条件覆盖并不一定满足判定覆盖。(Y) 53软件工程是为了克服软件危机。(Y) 54软件工程是完全克服了软件危机。(N) 太绝对 【二】名词解释 1元数据 元数据是关于数据的数据,组织数据的数据。
8、如数据库概念设计中的实体名和属性名,数据库物理设计中的表名 和字段名等都是元数据。 2. 软件工作产品(注:软件工作产品和15.软件产品的异同软件产品是最后一个阶段的软件工作产品。 ) 软件工作产品是指开发过程中每个阶段的文档、数据和程序,即每个开发阶段的输出制品。 3评审与审计 评审是对软件工作产品而言的,它针对软件工作产品的开会(评审)或汇签(评审)活动,是一次集体行为。 审计是复查软件活动的程序是否遵守规则,是否合法。它本身是审计员的一次个人行为。 4. 不符合项 不符合项是指没有满足要求的项。 5. 黑盒测试 黑盒测试又称功能测试。在这里,盒子指的是被测试的软件, “黑盒”就是只知道被
9、测试软件的外部情况,主要是 界面和接口,被测试软件的内部逻辑结构和数据结构,对测试人员来说是不可见的,主要关注被测试软件的功能实现。 6. 白盒测试 白盒测试就是对程序执行路径的测试,又叫做玻璃盒测试(Glass Box Testing) 、透明盒测试(Clear Box Testing) 、结构化测试(Structured Testing) 、开放盒测试(Open Box Testing) 、基于代码的测试(Code-Based Testing)等等。 7. 项目 P.326 项目是一次性的多任务工作,它具有确定的开始日期、结束日期、工作范围、经费预算、质量标准,以及特定的 功能、性能和接口
10、要求。 5 8. 项目管理 P.326 项目管理是为了实现项目目标,运用相关的知识、技能、方法与工具,对项目的计划、进度、质量、成本、资源 进行管理和控制的活动。 或 ( 项目管理是指“在软件项目管理活动中,运用专门的知识、技能、工具和方法,使项目能够如期或提前实现。 ” ) 9. 客户化 客户化是指按照客户的实际情况,对软件产品的功能、性能、接口做适当的改动。 10. 初始化 初始化是指按照客户的实际情况,对软件产品的代码表(又称数据字典)进行初始化,即将客户的各种信息编码 录入到相应的代码表中。 11.CMM 与 CMMI CMM 是指“能力成熟度模型” ,是对于软件组织在定义、实施、度量
11、、控制和改善其软件过程的实践中各个发展阶 段的描述。 (即评估软件能力与成熟度等级的一套标准) CMMI 的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。CMMI 是 CMM 模型的最新版 本。 (CMMI 是 CMM 的继承与发展,CMM 只适用于软件企业,CMMI 适合于所有的 IT 企业) 12. KPA 与 PA 关键过程域(KPA,Key Process Area ),它指出了企业需要集中力量改进的软件过程。同时,也指明了为了要达 到该能力成熟度等级所需要解决的具体问题。 项目管理员(PA,Project Administr
12、ator)。 13. 敏捷模型或敏捷方法 敏捷方法是在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品的方法。其特点是对软件生 产率的高度重视,主要适用于需求模糊或快速变化下的、小型项目组的开发。 14软件 软件的定义:软件 = 程序 + 数据 + 文档。现在有一种新提法正在引起关注,这种提法是:软件 = 知识 + 程序 + 数据 + 文档。 15. 软件产品 软件产品是指不局限于特定业务领域、能被广大用户直接使用的软件系统(或 软件产品是指软件开发与测试工 作已经完工、并且可投入市场销售的软件产品) ,如操作系统、编译系统、工具系统、通用财务系统等。 16可行性分析与软件立项
13、(P.63) 可行性分析是世界上普遍采用的一种研究工程项目是否可行的科学。它通过各种有效的方法,对工程项目进行分 析,从技术、经济、财务等方面加以评价,最终给投资决策者提供是否选择该项目进行投资的依据。可行性分析是立项 6 的前提,立项是可行性分析的结果。对于软件企业,一般不叫项目可行性分析而叫立项,只有在学校、机关、科研所等 单位,才叫项目可行性分析。 17. 软件生存周期 软件生存周期是指软件的使用寿命,即生产周期加上使用周期。 18. CASE 工具 CASE(Computer Aided(or Assisted)Software Engineering 计算机辅助软件工程。CASE 是
14、能够提供一组能够 自动覆盖软件开发生命周期各个阶段的集成的、减少劳动力的,并可以加快开发速度,提高应用软件生产率并保证应用 软件的可靠品质的工具。 19. 集成测试 集成测试是指检测此前测试过的单个模块或组件,是否能完好地融入系统,与其他模块或组件正确地一起运行。 20. 结构化维护 P.257 软件产品或软件项目有完善的文档,并且文档与程序代码互相匹配,两者完全一致。对这种软件产品或软件项目 的维护称为结构化维护。 21. SQA P.308 软件质量保证(SQA,Software Quality Assurance)是一套有计划、有系统的用于向管理层保证拟定出的标准、 步骤、实践和方法能够
15、正确地被所有项目所采用的方法。 22. 客户与用户 客户是软件企业合同的签约方,是软件产品的销售对象。客户是顾客的一部分。 用户是软件产品的最终使用者,用户是客户的一部分。 23. 软件质量 所谓软件质量,就是供方提供的软件产品满足用户明确和隐含需求的能力特性的总和。 24. 软件测试 V 模型 P.222 软件测试 V 模型是由开发阶段和测试阶段构成的最典型的测试模型。开发阶段先从定义软件需求开始,然后要把 这些需求不断地转换到概要设计和详细设计中去,最后形成程序代码;测试阶段是在代码编写完成以后,先做单元测试 开始,然后是集成测试、系统测试和验收测试。 25顾客、客户和用户 顾客的范围比“
16、客户”的范围更广泛一些,它包括潜在的客户。 客户是软件企业合同的签约方,是软件产品的销售对象。客户是顾客的一部分。 用户是软件产品的最终使用者,用户是客户的一部分。 7 26软件配置项 软件配置管理中的基本单元,称为软件配置项。 27软件功能、性能和接口 软件功能指的是软件的作用,即使用软件所能达到的目的; 软件性能指的是完成软件功能的效率; 软件接口指的是软件不同部分之间的交互接口。通常就是所谓的 API应用程序编程接口,其表现形式是源代码。 28软件过程 所谓软件过程,就是根据选定的生存周期模型,规定软件的开发阶段,及每一阶段的工作步骤和文档标准等内容。 29软件里程碑和基线 P.67 里
17、程碑是一个标记,之需要经过内部评审。一个里程碑是一个检查点,但不一定是基线。 基线是软件工作产品,它是经内部和外部评审过的,并且是下一阶段工作的基础。一根基线是一个里程碑或一个 检查点。 30信息系统 利用计算机网络技术、数字通信技术与数据库技术实现信息采集和处理的系统,称为当代信息系统。 31集成测试 集成测试是指检测此前测试过的单个模块或组件,是否能完好地融入系统,与其他模块或组件正确地一起运行。 32Bug Bug 是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出现的错误、漏洞。 33. ER 图 E-R 图也即实体-联系图(Entity Relationship
18、 Diagram),提供了表示实体型、属性和联系的方法,用来描述现实 世界的概念模型。 34. 概念数据模型 概念数据模型(CDM)也称信息模型,它以实体联系(Entity-RelationShip, 简称 E-R)理论为基础,并对这一 理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。 概念数据模型 CDM,就是数据库的逻辑设计,即 E-R 图。 35. 物理数据模型 物理数据模型(PDM)就是数据库的物理设计,即物理表。 8 36原型模型 以某个软件原型为参照模型的开发方法,叫做原型法。 37UML UML 是一种面向对象的图形化的建模语言,主要用于软件的分析与
19、设计 38RUP 统一软件开发过程(RUP,Rational Unified Process)又称为统一软件过程,是一个面向对象且基于网络的程序 开发方法论。 【三】简答题 1. 软件工程中的理论、方法、标准、规范,主要来自于哪里?即:软件工程的源头或基础是什么? 【答】软件工程中的理论、方法、标准、规范,主要来自于 IT 企业软件研发的工作思路与步骤以及面向工 程实践案例。 信息产业的核心是芯片与软件,软件工程是软件开发、生产、服务和管理的科学。所以可以说软件工程是以信息产 业的飞速发展为源头或基础的。 2软件开发文档包括哪些具体文档? 【答】开发文档包括目标程序 、 源程序 、 详细设计说
20、明书 、 概要设计说明书 、 需求规格说明书 、 用户需求报告 、 软件合同 。 3. 软件管理文档包括哪些具体文档? 【答】管理文档包括项目开发计划书 、 测试计划 、 测试报告 、 工作日报 、 会议记录 、 开发进度 报告 、 开发总结报告 ,其中开发进度报告又分为开发进度周报和开发进度月报 。 4请详细解释软件的定义和程序的定义。 【答】软件的定义:软件 = 程序 + 数据 + 文档。这里的程序是指程序系统。这里的数据不仅包括初始化数 据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据 中的大量决策原始记录数据。这里的文档指的是软件开发过
21、程中的分析、设计、实现、测试、维护文档、管理文 档。 现在有一种新提法正在引起关注,这种提法是:软件 = 知识 + 程序 + 数据 + 文档。 程序是计算机为完成特定任务而执行的指令的有序集合。从应用的角度可理解为: 面向过程的程序 = 算法 + 数据结构 面向对象的程序 = 对象 + 信息 面向构件的程序 = 构件 + 构架。 5 “四种开发方法”和“五个面向实施理论”的提法对吗?为什么? 【答】 “四种开发方法”和“五个面向实施理论”的提法对,并且既精彩又实用。 9 首先, “四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法” ,面向过 程的方法来源于面向过程
22、的程序设计,面向对象的方法来源于面向对象的程序设计,面向数据的方法就是面向元 数据的方法,它来源于关系数据库程序设计,形式化方法来源于离散数学中的集合运算和逻辑运算。四种方法各 适用于不同的场合,各有优缺点,互相促进,构成一个开发方法论的多极化世界。 其次, “五个面向实施理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程 管理” ,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。 6 “图书馆信息系统”的开发选用什么模型合适?为什么? 【答】 “图书馆信息系统”的开发选用瀑布模型比较合适。因为瀑布模型开发阶段清晰,便于评审、审记
23、、跟 踪、管理和控制,而且“图书馆信息系统”在一定程度上符合瀑布模型的条件: (1)它在开发时间内需求没有变化或很少变化。 (2)分析设计人员对应用领域很熟悉。 (3)低风险项目。 (4)用户使用环境比较稳定。 (5)用户提出需求以外,很少参与开发工作。 7. “精品课程网站”的开发选用什么模型合适?为什么? 【答】 “精品课程网站”的开发选用原型模型比较合适。因为现在“精品课程网站”比较普及,很容易找到 一个可以事先给客户展示的产品原型,让客户试用,在使用中收集客户意见,根据意见立刻修改原型。原型模型 开发速度快,用户意见反馈实时,有利于开发商在短时间内推广并实施多个客户,而且 “精品课程网
24、站”在一定 程度上符合原型模型的条件: (1) 已有产品/产品原型,只需客户化的项目。 (2) 简单而熟悉的行业或领域。 (3) 有快速原型开发工具。 (4) 进行产品移植或升级。 8什么叫风险分析?技能风险和技术风险有何区别? 【答】这里的风险分析是指软件立项过程中对产品开发、销售等可能出现的风险进行分析。分析方法就是将 一个大风险化解好多个小风险,然后一个个克服小风险。 技术风险是指采用新技术的风险程度。技能风险是指项目组成员掌握新技术的风险程度。二者的区别在于一 个是说新技术(如新的开发工具,新的设计思想)本身的风险,一个是说人员要掌握这种新技术的风险。 9为什么需求分析特别重要、又特别
25、难? P.66 【答】需求分析特别重要,是因为: (1)许多大型应用系统的失败,最后均归结到需求分析:要么获取需求的方法不当,使得需求分析不到位或 不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致 客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。 (2)需求分析的输出文档是用户需求报告 ,它既是软件生存周期中的第一个里程碑,又是客户、软件开 10 发人员和项目管理人员三者必须遵守的一根基线,是三者共同工作的基础,是项目 Alpha 测试和 Beta 测试的准则, 是供方交付产品和需方验收产品的依据。 (3)需求分析要
26、占用整个软件开发时间或工作量的 30%左右。 (4)需求获取中的错误,属于软件开发中的早期错误,它会在后续的设计和实现中进行发散式的传播。 根据以上四项原因,IT 企业的高层经理,对需求分析特别重视,常常派经验最丰富的人员去作项目需求。正 因为如此, “系统分析员”才是软件行业中的最高技术职称。 需求分析特别难,是因为: (1)用户需求具有动态性,即需求的不稳定性:在整个软件生存周期内,应用软件的需求会随着时间的进展 而有所变化,个别用户甚至会朝三暮四地变化; (2)用户需求具有模糊性,即需求的不准确性:由于用户的素质不是很高,业务流程不很规范,所以需求表 达不很清楚也不够明确。 (3)开发者
27、和用户要对需求达成完全一致的认识,用户要在需求报告上签字,要承担责任; (4)中国的国有企业正处于变动期(体制改革与企业重组) ,中国的民营企业正处于成长期(发展壮大与不 完全成熟) 。而处于变动期和成长期的企业需求是不成熟、不稳定和不规范的,这就给信息系统的需求分析增加了 难度系数。 10需求分析为什么是面向流程的? 【答】系统的功能、性能、接口、界面都是在流程中动态实时的反映出来。在所有的流程(物流、人流、资 金流、信息流、单据流、报表流、数据流)中,数据流最重要,也最具有代表性。因为在计算机网络系统内,一 切流程都表现为数据流,或者说是数据流在不同方向的投影。而流程是动态的、实时的。所以
28、说,需求分析是面 向流程的。 11软件概要设计与软件详细设有什么联系与区别? 【答】 概要设计说明书 ,一是要覆盖需求规格说明书的全部内容,二是要作为指导详细设计的依据。 它注重框架上的设计,它是软件系统的总体结构设计,全局数据库(包括数据结构)设计,外部接口设计,功能 部件分配设计,部件之间的内部接口设计,它要覆盖需求规格说明书中的功能点列表,性能点列表,借口列表。 详细设计说明书 ,一是要覆盖概要设计说明书的全部内容,二是要作为指导程序设计的依据,它注重微观 上和框架内的设计,它是各子系统的公用部件实现设计,专用部件实现设计,存储过程实现设计,触发器实现设 计,外部接口实现设计,部门角色授
29、权设计,其他详细设计等。 两者的设计者不同,在一般情况下, 概要设计说明书是由系统设计师负责, 详细设计说明书则由高级 程序员负责。 12软件企业为什么要对员工进行培训?怎么进行培训? 【答】 P320 内部培训、外部培训 13什么叫软件发布?软件发布要做哪些准备工作? P.252 【答】软件发布是指将软件产品投入市场,并得到回报的一个过程。 11 软件发布前的准备工作: (1)编写培训教材; (2)产品包装设计; (3)产品母盘制作; (4)产品光盘刻录; (5)软件资料印刷; (6)销售人员培训; (7)发布产品检验; (8)发布产品交付; (9)确定发布方式。 14怎样理解“优秀的项目经
30、理主要是干出来的,不是学出来的;是带出来的,不是教出来的”? 【答】一个人要成长为一名合格的项目经理主要不是靠学,而是靠干,当然学也很重要。只学不干,是绝对 出不来项目经理的。光干不学,有可能会出现的情况是:其能力本来可以做一个大项目经理,但现在只能做一个 小项目经理,因为他只是一个经验主义者,缺乏理论指导,有些问题的认识可能上不去,所以不能成为大器。总 之,项目经理必须通过干才能成熟起来,只要通过学才能提高起来, “干”字当头,学在其中,干学并用,互相促 进,这就是项目经理成长的道路。 15请用树型结构图来表示软件工程研究的主要内容与方法. 【答】 软 件 工 程 软 件 开 发 模 型 软
31、 件 开 发 方 法 软 件 支 持 过 程 软 件 管 理 过 程 瀑 布 模 型 增 量 模 型 原 型 模 型 迭 代 模 型 面 向 过 程 的 方 法 C A S E 工 具 R o s e I S O 9 0 0 0 面 向 数 据 的 方 法 面 向 对 象 的 方 法 形 式 化 方 法 北 大 青 鸟 系 统 P o w e r D e s i g n e r E r w i n C M M I 软 件 企 业 文 化 敏 捷 ( X P ) 文 化 现 象 12 16. 为什么中国人实施 CMMI 有做秀嫌疑,而印度人一般没有做秀嫌疑? CMMI 的全称为:Capabili
32、ty Maturity Model Integration,即能力成熟度模型集成。CMM/CMMI 仅仅是一个体系, 一个框架,他仅仅从过程和产品上对开发行为进行规范,而不是给你提供了完整的方法。在这个框架下面,你可 以选用最适合自己的过程,最有效的开发技术。至于什么过程和什么方法,并不是最重要的。CMM/CMMI 仅仅表示 你往生产好的软件走出了重要的一步,但并不是全部。CMM/CMMI 本身是一套非常有价值的过程模型,但简单的将 其图腾化却是不正确的。 印度人能够把软件整体结构把握得很好,能够完成大型复杂的软件,能够形成相当好的设计与实现文档,能够 在国际外包市场上占据很大比 例。而中国人
33、整天在那里琢磨着的是数据结构、算法花样和界面花招,到最后只能 成为 Code 高手,而不是一个庞大团队。这些高手虽然对某些特定的开发工具非 常精通,比如.net 和 J2EE 开发平 台。但就是不能按质、按量、按时把一个大型软件稳妥而完整地开发出来。 招聘印度人,给应聘者出了一份与国内差不多的试卷,有基础概念和编程题目。等到他们完成后,我们这些中 国的自认高手惊呆了! 他们的编程题目简直像是抄袭的!程序结构、注释、变量命名就不说了吧,全部都是极其 类似!反观中国的牛人和高手,每个人都有自己的一套。到了新的岗位,先 把前任的程序贬损一通,然后自己再 开发更多的问题代码来代替它。我们公司统计,一个
34、软件中有 4 个以上版本,每个人都觉得别人做得差,自己再 搞一套。中国 人,就是这个样子,还会辩解说:“我们这样是创新” 。其实软件的发展,早就走过了求伯君(20 世纪 90 年代的编程开才、WPS 的发明人、现任金山软件股份 有限公司董事长兼总裁)那个编码英雄的年代,程序 员已经是个坐办公室的蓝领了。你具备拧好一个螺丝钉的能力就可以了,因为 Code 是最低级的事情了。所以说中 国人实施 CMMI 更多的时候有作秀的嫌疑。 软件公司需要的软件人才,主要是系统需求分析、系统架构设计、系统测试、过程改进与过程管 理、程度编 码的人才,即应用型人才!难怪国内一些博士生不适应在企业工作,软件公司将他
35、们轰走的事常有发生。 这揭示出我们与与印度软件企业的差距!差距不仅仅在于软件公司的规模,而在于软件人员的职业素质与道 德规范! 13 究其原因,在于软件组织内部的 CMM/CMMI 管理水平。印度人做 CMM/CMMI 是真正做给自己用的,即自己的软件组 织过程改进。中国人做 CMM/CMMI 有时是做给别人看的,比如在招标或投标中装装门面,在广告中壮壮声势,而不 是专门为了实现自己的软件组织过程改进! (以上大家可以自行删减 但是体现比较印度和中国的语句 还是写进试卷里) 此上为小山整合观点,如果有不同意见或是瞧不上小山本人查找,请不要将这些写在你的试卷上,因为对谁都是 种煎熬,谢谢合作,预
36、祝大家好成绩。 17软件设计要遵守哪些原理或原则? P.119 【答】(1)抽象;(2)分解与模块化;(3)低耦合高内聚;(4)封装;(5)接口和实现分离。 18. 详细设计有哪些描述工具? P.123 【答】面向过程详细设计的描述工具有:(1)流程图;(2)N-S 图;(3)程序设计语言;(4)决策表。 面向数据详细设计的描述工具主要有:(1)概念数据模型(CDM);(2)物理数据模型(PDM);(3)存储过程。 面向对象详细设计的描述工具主要有:(1)类图;(2)顺序图;(3)状态图;(4)部件图;(5)部署图。 19. 需求分析有哪些描述工具? 【答】需求分析描述的工具包括数据流图、业务
37、流程图、用况图、时序图、用户交互图、数据模型图和功能 需求列表、性能需求列表、接口需求列表、界面需求列表等。 20. 请各举一例,说明面向过程、面向元数据、面向对象的编程代表语言各是什么语言? 【答】 Pascal、BISIC、C 语言等 Oracle、Sybase 等 Java、C+等 21. 请各举一例,说明面向过程、面向元数据、面向对象的编程方法,各用在什么地方? 【答】 在军事上的实时跟踪监控系统中有很好的应用。如我方侦察卫星发射后其飞行轨迹的捕获、测量、跟踪 和预报导弹防御系统中敌方导弹发射后飞行轨迹的捕获、测量、跟踪和预报,其软件系统都是采用面向过程的 方法设计和实现的; 适合数据
38、层(数据库服务器)设计与实现。在电子商务中的应用。网站后台数据库服务器上的数据处理和 数据传输,其软件都是利用面向数据的方法设计与实现的; 在两层结构(C/S)的客户层上,在三层结构(B/A/S)的表示层和业务逻辑层上,进行详细设计和编程实现 时,要采用面向对象的方法。在电子商务中的应用有:网站前台界面的制作,信息的发布和处理,用户在网上 浏览和录入信息等应用软件都是利用面向对象的方法设计与实现的。 22. 软件工程中有哪几种不同的数据字典? 【答】主要有一下四种数据字典: (1)数据流图中的数据字典:是对数据流图 DFD 的补充。用数据字典说明每个数据流的组成、每个数据文件的 14 内容以及
39、每个数据项的定义等; (2)数据库中的数据字典:就是数据库中的元数据,例如表名、字段名、索引名、主键名等; (3)数据库管理系统中的系统数据字典:它分为系统数据字典和用户数据字典两部分,用这些字典来管理数据 库; (4)信息系统用户初始化中的用户数据字典:就是一些科目代码、单位代码等等。 23你怎么用“Check outEditCheck in”对配置管理中的软件开发库进行具体操作? 【答】 “Check outEditCheck in”,这是配置管理工具的基本操作,这种操作是对 3 个库而言的,对每 一个库中的内容进行操作(比如增、删、改) ,要先将操作内容从库中取出,放入内存缓冲区,这一动
40、作叫做 “Check out”。当操作(Edit )完成后,又要将本次操作的内容放入相应的库中,这一动作叫做“Check in”。值 得注意的是,每次 Check out 后,相应库中原来的内容仍然保留着。每次 Check in 后,也不会覆盖原来的内容。 这就自动保存了可供追踪的轨迹。 以“Check outEditCheck in”操作为基础,以版本控制为中心、进行软件配置项的标识、跟踪与管理的 电子工具,就是配置管理工具。 程序员只能在软件开发库上作“Check outEditCheck in”操作。 【四】应用题 1. 如果要成为一位优秀的程序员,你认为要具备什么素质? 【答】 (1)
41、团队协作精神的训练和要求; (2)数据结构分析与设计能力的训练和要求; (3)文档习惯的训练和要求; (4)规范化的代码编写能力训练和要求; (5)复用性能力的训练和要求; (6)写构件能力的训练和要求; (7)测试习惯的训练和要求; (8)学习和总结能的训练和要求; 2. 如果你是软件公司的专职配置管理员,你将怎样开展公司的软件配置工作? 【答】P.301 (1) 与项目经理一起,识别出项目的所有基线,并标识出这些基线及其所属的配置项,再根据有关规范和规 程制定配置管理计划; (2) 在配置管理服务器上建立配置管理库,作为配置管理的工作仓库,并对仓库进行管理和维护; (3) 配置项变更控制。
42、它包括变更申请、评审和批准、实行变更、测试变更对其他配置项的影响、变更验证 和入库; (4) 基线变更控制。工作程序与配置项变更控制相同; (5) 最终软件版本产品生成的控制。最终软件版本产品由软件基线库中的配置项组装而成,在配置组装之前, 15 必须冻结该产品的所有配置项。生成之后,将此产品入库到软件产品库,并对其实行冻结; (6) 对配置项、基线、软件版本产品进行跟踪和审计,并编制配置管理活动报告,供相关组和个人阅读; (7) 定期或事件驱动,对软件开发人员进行配置管理知识培训; (8) 配置管理工具的安装,配置管理服务器的日常维护。 3如果你是软件公司的专职软件质量保证员,你将怎样管理公
43、司的软件项目或软件产品的质量? 【答】 (1) 事先的预防措施:制订软件过程开发规范和软件产品质量标准,对软件开发和管理人员进行这方面知识 和技能的定向培训(规范是对行为的约束、标准是对产品的约束、规程是对操作的约束);事中的跟踪监控措施: 按照 CMM/CMMI 或 ISO9000 的过程管理思想,对软件过程和软件产品的质量控制提供可视性管理;事后的纠错措施: 对软件工作产品和软件产品加强评审和检测。评审是在宏观上框住您,在微观上挑剔您,找出不符合项。检测是 为了发现 Bug,改正错误。 (2) 从 4 个方面来改进软件质量:力图从编程语言上实现突破;力图从 CASE 工具上实现突破;力图从
44、软件过 程管上实现突破;力图从测试与纠错上实现突破。先后出现了各种测试方法、工具和纠错手段。 (3)管理人员还需要做到:行为规范化,报告制度化,报表统一化,数据标准化,信息网络化,管理可视化, 错世即时化。 (4)最后还需要建立“五报一例制度” ,即日报表,周报表,月报表,里程碑报表,重大事件报表和例会制度。 4. 如果你是软件公司的软件分析师,你将怎样进行需求分析? 【答】 系统分析师应对用户进行需求分析培训;用户应参加业务需求分析的全过程;向用户发放需求调查表格;召 开需求调研会;深入到重点岗位了解需求;必要时参加实际的业务工作;边分析边整理文档,边征求修改意 见;定期向用户中的操作层、管
45、理层、决策层分别汇报,演示目标系统的流程、功能、接口及界面调度需求。 1) 面向流程分析; 2) 找出元数据: 元数据是组织数据的数据,元数据就是信息系统中实体名及其属性名的集合; 3) 找出中间数据: 中间数据蕴藏在信息系统的输出报表中,报表名称及其内部的数据项名称,一般就是中间数据; 4) 找出元数据与中间数据之间的关系; 5) 找出单据中的流程: a) 该单据的上游是什么? b) 同一个单据内部的数据项之间,也存在一个先后次序的问题? c) 该单据的下游是什么? 6) 历史上存在三种需求分析方法:面向功能分析,面向对象分析,面向数据分析; 7) 分析与设计要同时考虑: 因为许多问题在分析
46、“目标系统是什么”的时候发现不了,到了设计时才会暴露出来。分析与设计 同时考虑,也符合迭代模型的思想,即:复杂的需求是个需求迭代的过程。 16 8) 需求分析艺术: a) 需求分析师双打项目。宏观上和微观上都要以流程为主,不能偏听偏信。 b) 决策层提出宏观上的统计、查询、决策需求,管理层提出业务管理和作业控制需求,操作层提出录 入、修改、提交、处理、打印、界面、传输、通信、时间与速度等方面的操作需求。 9) 提取需求技术: 会谈、场景、原型、实地观察 10) 提取对象、属性和方法的技术 a) 对象在哪里?属性在哪里?方法在哪里? 11) 实时系统需求分析法 汇报两三次,知道客户确认位置,同时
47、要与客户交朋友。 5. 如果你是软件公司的软件设计师,你将怎样进行软件架构设计? 【答】 首先要进行架构建模: 1) 捕获早期的设计决策; 2) 捕获软件运行环境; 3) 为底层实现提供限制条件; 4) 为开发团队的结构组成提供依据; 5) 设计系统满足可靠性、可维护性、其他性能等; 6) 方便开发团队间的交流; 软件架构设计要包含以下几个方面: 1) 软件系统中包含了哪些子系统/部件; 2) 每个子系统/部件都完成了哪些功能; 3) 子系统/部件对外提供或使用外部的哪些接口; 4) 子系统/部件间的依赖关系。以及对实现和测试的影响; 5) 系统式如何部署的; 6. 如果你是软件公司的主程序员
48、,你将怎样进行软件详细设计? 【答】 1) 基本任务是怎样具体地实现这个系统。主要任务是设计出程序的“蓝图” ,供程序员日后根据这个蓝图编 写出实际的程序代码。 2) 基本步骤是:确定模块如何实现;编写详细设计说明书;制定单元测试计划;评审详细设计。 3) 对于 B/S 的系统, “面向数据方法用在数据库服务器层次上系统的设计与实现,面向对象方法用在除数据 库服务层次之外的其他层上的系统的设计与实现,面向过程方法用在其他两种方法本身内部函数的设计 与实现” 。 4) 在实施的过程中,在宏观上仍然要遵守“五个面向”的实施理论,即:“面向流程分析、面向数据设计、 面向对象实现、面向功能测试、面向过
49、程管理” 。 7. 如果你是项目经理,你怎么用 4 种不同的方法,对软件产品的规模进行量化估计? 【答】 1) 希腊古都法:在没有历史数据的情况下,这种方式适用于评定过去和将来。这个技术要求有多种软件相 17 关经验人的参与,互相说服对方。希腊古都法的步骤如下: a) 协调人向各专家提供项目规格和估计报表 b) 协调人召集小组会,各专家讨论与规模相关的因素 c) 各专家匿名填写迭代表格 d) 协调人整理出一个估计总结,以迭代表的形式返回专家 e) 协调人召集小组会,讨论较大的估计差异 f) 专家复查估计,总结并在迭代表上提交另一个匿名估计 g) 重复 d)- f) ,直到达到最低估计和最高估计一致。 2) 类比法:适合评估一些历史项目