山东大学-软件工程复习重点整理
第一章第一章 1.11.1 软件工程(软件工程(SESE)的定义、方向、作用:)的定义、方向、作用: SE:在将有关软件开发与应用的概念科学体系化的基础上,研究如何有计划、有效率、 经 济的开发和利用能在就算机上正确运行的软件的理论和技术的工程方法学, 一些开发和维护 软 件的方法、过程、原则。是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和 参与者的管理。 SE 的方向:面向对象模式,结构化模式,基于过程的模式等 SE 的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件 易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。 1.21.2 开发模式:开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发 全过程,明确要完成的主要活动,任务和开发策略。 1.31.3 说明错误、故障和失效的含义及联系(并举例)说明错误、故障和失效的含义及联系(并举例):: 错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误) 故障: 是在功能实现过程中产生的问题; 是错误导致的结果, 是在软件中一个错误的表现 (一 个错误可能产生多个缺陷,静态存在的) 失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的) 联系:当一个开发者编写程序时,会在代码中出现错误。当这个程序被编译或集成到一个系 统中时,系统就存在故障。当你运行这个系统时,可能会导致失效,即人们产生错误,故障是 错误的结果(内部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从 用户角度看到的问题)。并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。 1.41.4 软件质量应从哪几个方面衡量,论述之:软件质量应从哪几个方面衡量,论述之: (1 产品的质量)(2 过程的质量)(3 商业环境背景下的质量) (1)产品的质量:用户从失败的数目和类型等外部特征进行评价, 如果软件具有足够的功能 并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等内部特征来 作为产品质量的依据。 (2)过程的质量:有 很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质 量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。 (3)商业环境背景下的软件质量:将技术价值和商业价值统一起来。 1.51.5 软件系统的系统组成(系统的要素有哪些):软件系统的系统组成(系统的要素有哪些): 对象(实体)+ 活动 + 关系 + 系统边界 活动:活动是发生在系统中的某些事情,通常描述为由某个触发器引发的事件,活动通过改 变属性把一个事物变成另一个事物。 对象:活动中涉及的元素称为对象。 关系:是指活动与对象之间的关系。 系统边界:即系统包含的功能与系统不包含的功能之间的界限。 1.61.6 现代软件工程大致包含几个阶段及各个阶段的文档:现代软件工程大致包含几个阶段及各个阶段的文档: (1)需求分析:主要包括问题定义、可行性分析、需求分析《需求规格说明书》 (2)系统设计:主要包括用户界面和软件结构图 (3)程序设计:包括模块功能算法与数据描述 (4)程序实现:主要包括编程的代码和注释 (5)单元测试:模块测试与性能测试 (6)集成测试:按照结构图进行测试产生测试报告 (7)系统测试:按 SRS 对系统总体功能进行测试 (8)系统提交:交付产品 (9)系统维修:修改软件的过程,为满足改错或新需求 1.71.7 使现代软件工程实践发生变化的关键因素是什么?使现代软件工程实践发生变化的关键因素是什么? (1)商用产品投入市场时间的紧迫性 (2)计算技术在经济中的转变:更低的硬件成本,更高的开发、维护成本 (3)功能强大的桌面计算的可用性 (4)广泛的局域网和广域网 (5)面向对象技术的采用及其有效性 (6)使用窗口、图标、菜单和指示器的图形用户界面 (7)软件开发瀑布模型的不可预测性 1.81.8 什么是什么是抽象抽象?? 抽象是在某种概括层次上对问题的描述, 使得我们能够集中于问题的关键方面而不陷入细节, 也就是对细节的隐藏。 1.91.9 什么是重(什么是重(复)用复)用?? 重(复)用采用以前开发的软件系统中具有共性的部件,用到新的开发项目中去。(这里的 重用不仅仅是代码的重用。) 1.101.10 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与 维护过程中出现一系列严重问题的现象。 典型表现:(1) 对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成”软件系统不满意的现象经常发生。 (3) 软件产品的质量往往靠不住。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。 (6) 软件成本在计算机系统总成本中所占的比例逐年上升。 (7) 软件开发生产率提高的速度,远跟不上计算机应用迅速普及深入的趋势 出现的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有 关。(1)软件缺乏“可见性”,管理和控制软件开发过程相当困难(2)软件规模庞大,而且 程序复杂性将随着程序规模的增加而呈指数上升(3) 开发时期引入错误,导致软件维护通常 意味着改正或修改原来的设计,客观上使得软件较难维护 (4)软件专业人员对软件开发和维护 中或多或少地采用了错误的方法和技术 1.111.11开发队伍的组成角色有哪些?开发队伍的组成角色有哪些? 需求分析人员、设计人员、程序员、测试人员、培训人员、维护人员、资料员、配置管 理人员 CMM 是指“能力成熟度模型”,其英文全称为 Capability Maturity Model for Software,英文缩 写为 SW-CMM,简称 CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程 的实践中各个发展阶段的描述。CMM 的核心是把软件开发视为一个过程。 SRS(Software Requirements Specification), 软件需求说明书的编制是为了使用户和软件开发者双 方对该软件的初始规定有一个共同的理解, 使之成为整个开发工作的基础。包含硬件、功能、 性能、输入输出、接口界面、警示信息、保密安全、数据与数据库、文档和法规的要求。 第二章第二章 2.12.1 什么叫什么叫过程过程(生命周期)?(生命周期)? 过程是一组有序的任务,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的 输出。我们有时也把涉及产品构建的这种过程称为生命周期。因此,有时把软件开发过程称为 软件生命周期。 2.22.2 什么是软件过程,软件过程的重要性是什么?什么是软件过程,软件过程的重要性是什么? 软件过程:将软件开发中的一组有序的任务称为软件过程,它涉及活动、约束和资源使用的 一系列步骤,用于产生某种想要的输出。 重要性: (1)它强制活动具有一致性和一定的结构,使程序的集合组合起来以产生满足目标 和标准的产品,(2)过程结构允许我们分析、理解、控制和改进组成过程的活动 ,并以此来