2、 需求分析和需求工程的困难性
? ? ?
3、 面向对象需求模型组成
用例图、用例规约、补充规约、术语表
4、 用例规约应该包含哪些内容?基本流和备选流的概念及区别(P117)
客户说不清楚需求 分析人员或客户理解有误 需求自身经常变动
六、面向对象分析
1、 面向对象分析的主要任务(P138)
首先要理解用户的需求,包括全面理解和分析用户需求,明确所开发的软件系统的职责,形成文件并规范地加以表述。
然后进行分析,提取类和对象,并结合分析进行建模。其基本步骤是:标识类,定义属性和方法;刻画类的层次;表示对象以及对象与对象之间的关系;为对象的行为建模。这些步骤肯反复进行,直至完成建模。
2、 面向对象分析的模型组成
5
3、 软件设计的任务是什么?概要设计和详细设计的主要工作
? ?
任务:将软件分析模型转变为考虑具体实现技术和平台的软件设计模型。
概要设计(结构设计):把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。 基本任务: 1) 2) 3) 4) ?
设计软件系统结构
进行数据结构及数据库的设计 编写概要设计的文档 评审
详细设计:为SC图中的每个模块确定采用的算法和块内数据结构,用选定的表达工具(流程图、N-S图、PAD图、伪代码)给出清晰的描述。 基本任务: 1) 2) 3) 4) 5) 6)
为每个模块进行详细的算法设计 为模块内的数据结构进行设计 对数据库进行物理设计 其他设计
编写详细设计说明书 评审
七、软件设计 1、 模块的定义
? ?
模块是一个拥有明确定义的 、输出和特性的程序实体。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。 ?
2、 什么是模块独立性?用什么来度量(低内聚高耦合)?
? ?
3、 耦合、内聚的定义,几种类型(P171)
? ? ? ?
4、 扇入、扇出的定义
扇入:一个模块被其他模块调用的个数 扇出:一个模块调用其他模块的个数
内聚:从功能的角度对模块内部聚合能力的量度
低内聚(偶然性内聚、逻辑性内聚、时间性内聚),中内聚(过程性内聚、通信性内聚),高内聚(顺序性内聚、功能性内聚) 耦合:对软件内部块间联系得到度量
弱耦合(非直接耦合、数据耦合、特征耦合),中耦合(控制耦合),较强耦合(外部耦合、公共耦合),强耦合(内容耦合)
模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
独立性可以从两个方面来度量:模块本身的内聚性(Cohesion)和模块之间的耦合(Coupling)。 模块化设计是把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块。但又相互关联的模块。
6
八、编码和测试
1、 四代语言的特点和典型代表
?
第一代也称机器语言,是计算机能直接识别和执行的语言。优点是无需翻译,占用内存少、执行速度快。缺点是随机而异,通用性差,而且因指令和数据都是二进制代码形式,难于阅读和记忆,编码工作量大,难以维护。 ? ? ?
第二代语言也叫汇编语言,是用助记符号来表示机器指令的符号指令的符号语言。优点是比机器语言易记。缺点同机器语言。
第三代语言还称高级语言,容易学习,通用性强,书写出的程序比较短,便于推广和交流,是很理想的一种程序设计语言。代表有C语言,C#语言。
第四代语言又叫面向应用的语言。主要特点是:非过程性、采用图形窗口和人机对话形式、基于数据库和“面向对象”技术,易编程、易理解、易使用、易维护。代表有SQL关系数据查询语言,UNIX系统的shell语言。
2、 变量命名规则
3、 软件测试的基本任务
程序测试的是为了发现错误而执行程序的过程。 目的:发现程序的错误
任务:通过在计算机上执行程序,暴露程序中潜在的错误。
4、 软件测试要经过哪些步骤(P254)?这些测试与软件开发各阶段之间有什么关系?
软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。 ? ? ? ?
5、 测试与纠错有哪些区别?
? ? ?
6、 程序员保证代码质量的手段?
编译器 → 静态检查工具 → 代码走查 → 单元测试
7、 面向对象软件的测试策略(P261)
九、软件维护
1、 软件维护的目的(P271)
软件维护的最终目的,是满足用户对已开发产品的性能与运行环境的不断提高的需求,进而延长软件
测试的目的是发现程序错误;测试的任务是通过在计算机上执行程序,暴露程序中潜在的错误。 纠错的目的是定位和纠正错误;纠错的任务是软件故障,保证程序的可靠运行。
通常把一次程序执行需要的测试数据成为一个测试用例,每个测试用例产生一个相应的测试结果,如果它与期望结果不符,便说明程序中存在错误,需要用纠错来改正。
单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。
确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。
7
的寿命。
2、 软件维护的种类(P271)
完善性维护 适应性维护 纠错性维护 预防性维护
3、 软件配置管理的概念(p278)
配置管理能够系统地处理变更,从而使得软件系统可以随时保持其完整性。故配置管理也可以称为‘变更控制’,用来评估提出的变更要求,跟踪变更,并保存系统不同时间点上的状态。
4、 纠错和纠错性维护有哪些异同?
纠错的目的是定位和纠正错误;纠错的任务是软件故障,保证程序的可靠运行。
纠错性维护是由于软件测试的不彻底性,任何大型软件交付使用后,都会继续发现潜在的错误,对它们进行诊断和改正。目的在于纠正在开发期间未能发现的遗留错误。
十一、软件工程管理 1、 软件成本估计(P302)
2、 PERT图和Gantt图的特点
(1)Gantt(甘特)图:
用水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。
优点:能清晰地描述每个任务从何时开始,到何时结束以及各个任务之间的并行性。
缺点:不能清晰地反映出个任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分。
(2)PERT图:
PERT图是一个有向图,图中的有向弧表示任务,它可以标上完成该任务所需的时间;图中的结点表示流入结点的任务的结束,并开始流出结点的任务,这里把结点称为事件。只有当流入该结点的所有任务都结束时,结点所表示的事件才出现,流出结点的任务才可以开始。事件本身不消耗时间和资源,它仅表示某个时间点。每个事件有一个事件号和出现该事件的最早时刻和最迟时刻。每个任务还有一个松弛时间,表示在不影响整个工期的前提下,完成该任务有多少机动余地。松弛时间为0的任务构成了完成整个工程的关键路径。
PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关
8
相关推荐: