1、随堂测试讲解练习一 什么是软件开发过程?你觉得采用软件过程管理可能存在的缺点? 软件开发过程是ISO/IEC 12207 标准中定义的软件生存周期中可以开展的5个基本过程其中之一,包括需求分析、结构设计、详细设计、编码和测试、软件安装等活动。 采用软件过程管理存在的缺点是效率低下,需求变动大的时候成本过高。不适合中小型软件项目。练习一 简述软件开发的原型模型?你认为这种模型可能应用在哪类项目? 原型是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是快速、低成本的给予用户使用体验以便收集用户反馈意见,进而对原型进行改进使其更接近用户要求的系统
2、。 适用于在开发初期难以得到完整、准确的需求规格说明的系统。练习二 在进行需求分析时要求“不要限制用户对问题的回答”,你觉得合理吗?为什么? 完全不加限制是不合理的,因为用户往往不了解什么信息对系统开发人员是有价值的,不限制回答造成低效率以及开发者的负担。在进行需求分析时,不应该“限制回答”,而应该由需求分析人员提出有技巧的问题来引导用户给出有价值的回答。练习二 你觉得在需求分析时,用户参加联合小组的应该有哪些? 软件系统的利益相关人(stockholders)应该参与到联合小组,一般有:软件的操作用户代表,用户公司IT部门人员,与软件直接相关部门主管或经理。练习三 接口设计时除了模块间接口和
3、人机接口外,还有什么类型的接口?请举例说明。 还有软件与协作系统(或外部实体)间交互接口。例如,学校财务系统可以提供接口供选课系统读取学生缴费信息,根据缴费信息控制学生选课。练习三 你觉得在设计准则中要求“设计出的结构应该是分层”的原因是什么? 分层结构逻辑清晰易于理解。 体现“分而治之”的思想,有利于进行模块化设计 不同层次对应了不同的抽象级别,清晰的表达了不同单元之间的控制关系 层次之间耦合度低,易于维护和软件演化练习四 状态图中状态中可以定义状态变量,该状态变量和事件是否有关系?请举例说明 有关系,事件可以用状态变量的变化来描述。比如一个状态有一个变量记录等待时候,当当前等待时间超过了一
4、个超时时间就可以是一个事件,当该事件发生,状态发生迁移练习四 UML中包括了静态视图和动态视图,你认为未将该二类视图合一的原因是什么? 两种视图刻画系统时有不同的侧重点,静态视图着重刻画结构性信息而动态视图着重刻画系统的行为(运行流程、交互等,和时间有关)。两种视图分开可以帮助从不同角度理解系统,而不会产生混淆。练习五 数据流图中的文件和数据流的差异是什么? 数据流是暂时的(类似编程时的局部变量),经加工以后原来数据流就消失了,而文件中的数据是持久性的。从数据量上讲,数据流只是一组待处理的特定数据,而文件中保护一个完整的数据集合。练习五 可以用文件来表示数据流吗?举例说明 用文件替代数据流是不
5、行的,文件是持久性的、全局的,而数据流是暂时的、局部的。不过可以让一个数据流流入文件(写数据),再从相应文件流出一个相同数据流(读数据)。练习六 如何理解“结构化分析和结构化设计之间存在一个鸿沟”? DFD向结构图转换时过于依赖于人的创造性思维,如划定输入流和输出流的边界、确定物理输入输出或逻辑输入输出、确定事务中心等,缺乏规范的工程化方法。因此结构化分析的结果除了为结构化设计提供参考概念外,没有其他的实际帮助。练习六 程序结构图是否就是结构化设计的结果?为什么? 不是,在结构化方法中,软件设计分为概要设计和详细设计两个步骤。概要设计阶段采用结构化设计方法,得到系统结构图。详细设计阶段是对模块
6、实现细节的设计,采用结构化程序设计方法。程序结构图仅是结构化设计概要设计阶段的产物。练习七 如果你是一个操作员,每天负责录入大量的图书预订信息,你觉得用户界面的设计原则是什么?如果你是店长,你的原则又是什么? 如果是操作员,希望支持设置默认值,能方便查询已录入的内容,减少记忆负担;如果是店长,希望界面提供良好的导航性和帮助信息,信息以较好的可视化形式展现出来,如统计图表等,并且系统操作简洁,如从一个功能跳到另一个功能所需要的操作布尽可能少。练习七 你觉得多核时代程序设计语言应该在哪个方面有较大的发展? 提供更多并行设计的抽象,方便程序员编程是提高程序的并行性和设计并行计算算法。并且要提供并行程
7、序的调试支持。练习八 你认为可以使用回归测试的条件是什么? 回归测试就是对已经进行过的测试的子集的重新执行,以确保对程序的改变和修改,没有传播非故意的副作用。因此,使用回归测试有两种情况:已经过测试的系统增加新的模块或功能,使得原本经过测试确保正确的功能重新有了出错的可能;发现错误以后修改了程序或维护的时候对代码的重构修改了原有代码。练习八 举例说明你采用过的程序调试的方法 设置断点单步跟踪 使用控制台打印语句 分析出错可能位置,设计测试数据逐个排除练习九 通常我们太愿意修改他人编制的系统,从你自己来说,其原因是什么? 命名习惯不同造成的理解障碍 不良编程习惯造成的理解障碍,如不加注释信息、不注意代码结构 不良设计引起的理解障碍,如不好的面向对象设计,不好的类职责划分,过长的方法 缺乏文档造成对需求和设计的不理解,需要读代码来猜需求练习九 是否采用了高级程序设计语言C编制的程序就有了可移植性?为什么? 不是,可移植性取决于程序对底层硬件平台的依赖性,在代码中体现在程序功能模块和系统模块之间的耦合度。一方面由程序功能觉得,一方面由设计来决定。另外C语言本身有缺陷,阻碍了C语言程序的可移植性,如C语言中的int型变量长度由底层系统来决定。