1.3.请读者详细解释软件的定义和程序的定义。软件的定义:软件=程序+数据+文档。这里的程序是指程序系统。这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。现在有一种新提法正在引起关注,这种提法是:软件=知识+程序+数据+文档。程序是计算机为完成特定任务而执行的指令的有序集合。从应用的角度可理解为:面向过程的程序=算法+数据结构面向对象的程序=对象+信息面向构件的程序=构件+构架。1.5.读者同意“四种开发方法”和“五个面向理论”的提法吗?为什么?“四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法”,面向过程的方法来源于面向过程的程序设计,面向对象的方法来源于面向对象的程序设计,面向数据的方法就是面向元数据的方法,它来源于关系数据库程序设计,形式化方法来源于离散数学中的集合运算和逻辑运算。四种方法各适用于不同的场合,各有优缺点,互相促进,构成一个开发方法论的多极化世界。“五个面向理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。总之,上述提法既精彩又实用。2.1为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系?因为软件开发模型是软件工程研究的四大内容之一,它虽然不是软件工程研究的重点,但是在宏观上特别重要。软件公司的项目组在开发一个大项目或产品时,首先在技术上必须选择一个开发模型,使开发模型非常适合这个项目或产品的生存周期;随后通过对生存周期的裁减,来给出适合与本项目或产品的软件生存周期定义。软件的开发模型与软件生存周期有关:不同的开发模型,可能对应着不同的生存周期。生存周期不同,该软件的开发阶段划分、评审次数、基线标准都有所不同,甚至维护方法都有所区别。2.2简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。答案:表8-2开发模型优缺点:序号模型名称优点缺点1瀑布模型简单好学逆转性差2增量模型可以分阶段提交有时用户不同意3迭代模型克服瀑布模型的缺点对开发人员要求高4原型模型开发速度快不利于创新4.2需求分析的目的是什么?需求分析的难点在哪里?软件需求分析,其目的是用于说明软件产品或软件项目需要满足的条件和限制。在软件工程项目中首先要获取用户的需求,通过对软件需要的提取、分析、文档化以及验证,为进一步的设计和实现提供依据。需求分析的难点是:在系统的功能、性能和接口方面,开发者与客户达成完全一致的需求,让客户最终签字确认,并保证在项目验收前,需求相对稳定不变。万一需求有点变化,双方必须履行“需求变更管理程序”,而变更管理程序在签订合同时已经做了规定。要知道,合同是具有法律效力的。4.6解释术语:元数据、实体、中间数据。元数据是组织数据的数据,描述数据的数据,关于数据的数据。实体(指实体集或实体型),是一组相关元数据的集合。中间数据是组织统计数据的数据,描述统计数据的数据,关于统计数据的数据。5.13软件开发计划书应包括哪些内容?《软件开发计划书》是软件策划的输出文档,它包括如下10个方面的内容:(1)软件项目的目的、范围、目标和对象。(2)软件生存周期的选择与裁剪。(3)确定软件开发和维护的规范、方法和标准。(4)软件工作产品的确定。(5)对工作产品规模的估计。(6)对工作量和成本的估计。(7)关键计算机资源的估计和使用情况。(8)项目的进度、里程碑和评审计划。(9)风险的识别和评估。(10)项目工程设施和工具的计划。6.1软件设计的输入输出是什么?对于签订合同的项目,软件设计的输入时《用户需求报告》/《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。对于立项的项目,软件设计的输入时《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。6.8为什么软件设计要遵守“抽象,分解与模块化,低藕合高内聚,封装,接口和实现分离”的设计原理?当前,软件设计过程仍然是一个非确定性过程,经常是摸着石头过河。不同的设计人员对相同的问题可以得到不同的设计方案。由于设计过程是一个启发式过程,不是确定性过程,因此不可能得到一个完全预测的结果。为此,只能规定一些设计原理或原则,供设计人员共同遵守。这些原理或原则是“抽象,分解与模块化,低藕合高内聚,封装,接口和实现分离”。7.2请简述UML的宏观建模思想和微观建模思想。UML的宏观建模思想是:以“9个模型”和“5张视图”为纲,以“9种图”为目,建立系统的UML模型。“9个模型”包括:业务模型、领域模型、用例模型、分析模型、设计模型、过程模型、部署模型、实现模型、测试模型。“9种图”包括:类图、对象图、用例图、顺序图、协作图、状态图、活动图、构件图、实施图。“5张视图”包括:用例视图、设计视图、进程视图、实现视图、实施视图。UML的微观建模思想是:基本结构模型、高级结构模型、基本行为模型、高级行为模型、体系结构模型(5个方面,66个微观建模)。基本结构模型包括:对类建模、对关系建模、对公共机制建模、对图建模、对类图建模。高级结构模型包括:对类的语义建模,对关系网络建模,对接口、类型和角色建模,成组的元素建模,对体系结构视图建模,对具体实例、原型实例建模,对对象结构建模。基本行为模型包括:对交互建模、对用例建模、对用例图建模、对交互图建模、对活动图。高级行为模型包括:对信号族、异常情况建模、对状态机建模、对进程和线程建模、对时间空间建模、对状态图建模。体系结构模型包括:对构件建模、对实施建模、对协作建模、对模式和框架建模、对构件图建模、对实施图建模、对系统建模。一般而言,人们最常用的是建立系统的用例图、类图和顺序图。7.8请说明“三个模型”的定义,以及三者之间的关系。功能模型是描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。业务模型是描述系统在何时、何地、由何角色、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。数据模型是描述系统工作前的数据来自何处,工作中的数据存什么地方,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。功能模型和业务模型是在需求分析时建模,是两个基本点。数据模型是一个中心,在设计时建模。功能模型和业务模型给数据模型提供数据与维护数据,数据模型支持功能模型和业务模型的正常运行。通常,数据模型建模用PowerDesigner,ERwin或OracleDesigner工具实现;功能模型用功能点列表(或用况图)表示;业务模型用自然语言加上流程图(或顺序图)表示8.1软件实现的输入/输出是什么?软件实现的输入是《详细设计说明书》,输出是源程序、目标程序以及用户指南。8.5编码技术包括哪些内容?图8-4显示编码技术包括的内容:编码技术编码标准代码布局实体命名错误处理代码重构成对编程9.4试阐述软件测试V模型的思想、不足之处和改进方法?软件测试V模型的基本思想,如图8-5所示,我们可以初步了解,左侧是开发阶段,右侧是测试阶段。开发阶段先从定义软件需求开始,然后要把这些需求不断的转换到概要设计和详细设计中去,最后形成程序代码。测试阶段是在代码编写完成以后,先作单元测试开始,然后是集成测试、系统测试和验收测试。图8-5软件测试V模型对V模型的进一步阐述是:当需求分析完成后,验收测试计划也应完成。当概要设计完成后,系统测试计划也应完成。当详细设计完成后,集成测试计划也应完成。当编码完成后,单元测试计划也应完成。可见,V模型提高了测试的时间与地位。以上的测试V模型,好像只适合于瀑布开发模型,若是迭代开发模型,就显得不足了。实际工作中,V模型只是提高了测试工作的地位,具体测试方法,仍然是黑白两个盒子法。9.6试说出黑盒测试和白盒测试的区别和联系?黑盒测试又称功能测试。在这里,盒子指的是被测试的软件,“黑盒”就是只知道被测试软件的外部情况,主要是界面和接口,被测试软件的内部逻辑结构和数据结构,对测试人员来说是不可见的,主要关注被测试软件的功能实现。白盒测试就是对程序执行路径的测试,又叫做玻璃盒测(GlassBoxTesting)、透明盒测试(ClearBoxTesting)、结构化测试(StructuredTesting)、开放盒测试(OpenBoxTesting)、基于代码的测试(Code-BasedTesting)等等。说到黑盒测试和白盒测试的联系是:一般宏观上用黑盒测试,微观上用白盒测试,系统集成人员用黑盒测试方法对系统进行测试,构件开发人员用白盒测试方法对构件进行测试,这是常用的测试方法。