软工复习材料范文_第1页
软工复习材料范文_第2页
软工复习材料范文_第3页
软工复习材料范文_第4页
软工复习材料范文_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软工复习材料范文软工复习材料范文 2 1软件工程 软件过程概述 什么是软件 软件的特点软件是在计 算机系统支持下 能够完成特定功能和性能的程序 数据和相关的 文档 书本 软件是计算机程序 规程以及运行计算机系统可能需要的 相关文档和数据 课件 软件 知识 程序 数据 文档 书本 软件 程序 规程 数据 文档 课件 软件的特点软件是抽象的逻辑产品 而不是物理产品 灵活性和不会磨损和老化 1 软件开发更依赖于开发人员的业务素质 智力 人员的组织 合 作和管理 2 软件存在潜伏错误 硬件错误一般能排除 3 软件开发成后 只需对原版进行复制 4 软件在使用过程中维护复杂 1 纠错性维护 改正运行期间发现的潜伏错误 2 完善性维护 提高或完善软件的性能 3 适应性维护 修改软件 以适应软硬件环境的变化 4 预防性维护 改进软件未来的可维护性和可靠性 5 软件不会磨损和老化 什么是软件危机 软件危机的表现软件危机是指在软件开发和维 护中所遇到的一系列严重的问题 软件危机的表现 1 对软件开发成本和进度的估计常常很不准确 2 用户对已完成的软件不满意的现象时有发生 3 软件产品的质量往往是靠不住的 4 软件常常是不可维护的 5 软件通常没有适当的文档资料 软件工程的定义 目标及原则定义是1将系统化的 规范化的 可 量化的的方法应用于软件的开发 运行和维护的过程 2对1中所述 方法的研究目标是在给定成本 进度的前提下 开发出满足用户或 市场需求的高质量的软件产品 原则抽象 信息隐藏 模块化 局部化 一致性 完全性和可验证 性 软件质量要素产品转移可移植性 可重用性 互操作性产品运行 正确性 可靠性 效率 完整性 实用性产品校正可维护性 灵活 性 可测试性8个质量要素 1 正确性 2 可用性 3 可靠性 4 有效性 5 可维护性 6 可移植性 7 安全性 8 可复用性 人月神话 1 缺乏合理的时间进度是造成项目滞后的最主要原因 它比其他所 有因素加起来影响还大 2 良好的烹饪需要时间 某些任务无法在不损害结果的情况下加快 速度 3 所有的编程人员都是乐观主义者 一切都将运作良好 4 由于编程人员通过纯粹的思维活动来开发 所以我们期待在实现 过程中不会碰到困难 5 但是 我们的构思是有缺陷的 因此总会有bug 6 我们围绕成本核算的估计技术 混淆了工作量和项目进展 人月是危险和带有欺骗性的神话 因为它暗示人员数量和时间是可 以相互替换的 7 在若干人员中分解任务会引发额外的沟通工作量 培训和相互沟通 8 关于进度安排 我的经验是为1 3计划 1 6编码 1 4构件测试 以及1 4系统测试 9 作为一个学科 我们缺乏数据估计 10 因为我们对自己的估计技术不确定 所以在管理和客户的压力 下 我们常常缺乏坚持的勇气 11 Brook法则向进度落后的项目中增加人手 只会使进度更加落后 12 向软件项目中增派人手从三个方面增加了项目必要的总体工作 量任务重新分配本身和所造成的工作中断 培训新人员 额外的相 互沟通 瀑布模型 快速原型 增量模型 螺旋模型 通用软件过程模型 等软件过程模型的特点 适用范围瀑布模型的特点1 阶段间具有顺 序性和依赖性2推迟实现的观点3 质量保证的观点瀑布模型的缺点1 各个阶段的划分完全固定 阶段之间产生大量的文档 极大地增加 了工作量 2 开发过程中很难响应客户的变更要求 3 早期的错误 可能要等到开发后期的测试阶段才能发现 进而带来严重的后果 瀑布模型的适用于1 需求是预知的2软件实现方法是成熟的3项目周 期较短4 在开发的早期阶段软件需求被完整确定 快速原型目的尽早与用户见面 减少开发风险和需求不确定性 快速原型需要迅速建造一个可以运行的软件原型 以便理解和澄清 问题 使开发人员与用户达成共识 原型是软件的一个早期可运行的版本 它反映了最终系统的部分重 要特性 快速原型的缺点1 原型系统的内部结构可能不好 2 开发人员需要掌握建立快速原型的开发技术和工具 快速原型的适用于1 小型或中等规模的交互式系统 2 大型系统的某些部分 例如用户界面3 生命周期较短的系统 增量模型的特点1 能在较短时间内向用户提交可完成部分工作的产 品 2 逐步增加产品功能可以使用户有效充裕的时间学习和适应新产品 从而减少一恶搞全新的软件可能给用户组织带来的冲击 增量模型的优点1 整个产品被分解成若干个构件逐步交付 用户可 以不断地看到所开发软件的可运行中间版本 2 将早期增量作为原型有助于明确后期增量的需求3 降低开发风险4 重要功能被首先交付 从而使其得到最多的测试 增量模型的缺点1 需要软件具备开发式的体系结构 2 需求难以在 增量实现之前详细定义 因此增量与需求的准确映射以及所有增量 的有效集成可能会比较困难 3 容易退化为边改方式 使软件过程的控制失去整体性 螺旋模型的优点1 关注软件的重用 2 关注早期错误的消除3 将质 量目标放在首位 4 边学习 边建模 边开发 边使用 边开进 螺旋模型的缺点1 风险分析需要成本 影响收益 所以只适用于大 规模软件项目 2 客户未必能接受 所以往往适应于内部的大规模 软件开发 3 需要风险评估的经验 否则会带来更大风险 通用软件过程模型形式化方法模型是采用形式化的数学方法将系统 描述转化成可执行的程序 形式化适用特别适合于那些对安全性 可靠性和保密性要求极高的 软件系统 这些系统需要在投入运行前进行验证 形式化优点 由于数学方法具有严密性和准确性 形式化方法开发过 程所交付的软件系统具有较少的缺陷和较高的安全性形式化缺点1 开发人员需要具备一定技能并经过特殊训练2 形式化描述和转换是 一项费时费力的工作3 现实应用的系统大多数是交互性强的软件 但是这些系统难以用形式化方法进行描述 任务思维与过程思维思维过程包括分析 综合 比较 抽象 概 括判断和推理等基本过程 RUP软件过程的基本特点 阶段划分 主要工作流RUP阶段划分1 初始阶段2 细化阶段3 构造阶段4 移交阶段5 生产阶段主要工作流1 业务建模工作流2 需求工作流3 设计工作流4 实现工作流5 验证和 确认 V V 工作流6 部署工作流7 配置和变更管理工作流8 项目管 理工作流9 环境工作流2 2SA OO结构化分析方法的特点 数据流图 作用 对象 类 接口 封装 继承 多态 消息 关联 组合 聚合 依赖 实现对象是现实世界中个体或事物的抽象标识 是其 属性和相关操作的封装 类是某些对象的共同特征 属性和操作 的标识 继承 类之间的继承关系是现实世界中遗传关系的直接模拟 它表 示类之间的内在联系以及对属性和操作的共享 即子类可以沿用父 类 被继承类 的某些特征 聚合部分与整体的关系 多态是指在父类及其子类中 对外接口的定义形式相同 却可以对 应多种接口的实现形态 消息传递是对象与其外部世界相互关联的唯一途径 概念 用途 画法用例图 类图 对象图 状态图 活动图 顺 序图 协作图 类的关系 用例的关系类的关系常见的关系有继承 Inheritance 关联关系 Association 聚合关系 Aggrega tion 复合关系 Composition 依赖关系 Dependency 用例的关系 包含关系 基本用例的行为包含了另一个用例的行为 2 3需求工程业务需求 用户需求 功能需求和非功能需求 系统需 求的基本概念业务需求就是系统目标 它必须是业务导向 可度量 合理 可行的 就是说你做的东西 用户能做什么 对用户有什么帮助 他的价值 用户需求是从用户角度描述的系统功能需求和非功能需求 通常只 涉及系统的外部行为 而不涉及系统的内部特性 用户需求的描述原则应该易于用户的理解 一般不采用技术性很强的语言 而是采用自然语言和直观图形相结 合的方式 用例图 用例描述 活动图 领域概念模型 进行描述 问题自然语言表达容易含糊和不准确 系统需求是更加详细地描述系统应该做什么 通常包括许多不同的 分析模型 用例图 交互图 分析类图 状态图 系统需求主要是面向开发人员进行描述 是开发人员进行软件设计 的基础 功能需求描述系统应该提供的功能或服务 通常涉及用户或外部系 统与该系统之间的交互 一般不考虑系统的实现细节 非功能需求从各个角度对系统的约束和限制 反映了应用对软件系 统质量和特性的额外要求 例如响应时间 数据精度 可靠性 开 发过程的标准等 举例 1 系统应在20秒之内响应所有的请求 2 系统每周7天 每天24小时都可以使用 3 对于一个没有经验的用户而言 经过两个小时的培训就可以使 用系统的所有功能 需求工程的过程模型 每个环节的主要任务 1 需求工程策划 2 需求获取 3 需求分析 4 需求规范化 5 需求验证 6 总结 需求获取的过程模型 每个环节的主要任务 1 定义软件问题 2 创建框架用例 3 精化用例 4 评审用例模型 主要项目干系人的角色及作用 需求调研的常 见方法 优缺点 注意事项 什么是用例 正确识别Actor及用例 用例识别的误区用例描述了一个完整的系统事件流程 其重点在于 参与者与系统之间的交互而不是内在的系统活动 并对参与者产生 有价值的可观测结果 用例分析以参与者为中心 用例粒度以完成参与者目的为依据 框架用例的作用业务用例业务建模阶段 每个用例以能说明一件 完整的事情 可以描述一项完整的业务流程 概念用例概念建模阶段 每个用例一能描述一个完整的事件流为宜 可以描述一项完整业务中的一个步骤 系统用例系统建模阶段 每个用例以能够描述操作者与计算机的一 次完整交互为宜 一个系统的业务用例定义在多于10个 不超过30个之间 在同一个需求阶段 所有用例的粒度应该是同一量级的 粒度选择的问题本质上是因为边界认定不同而产生的 构建完整用例的步骤 1 重新研究用例名称 用例目标 标识所有执行者 2 标识触发条件和前置条件 3 描述或精化原有的基本交互动作序列 4 提炼并描述扩展的交互动作序列 5 描述用户与系统交互过程中传递的信息项 6 标识后置条件 可行性分析的主要关注点 需求分析的过程模 型 每个环节的主要任务 1 需求优先级分析为每项需求确定优先级 功能性需求 非功能需 求 安排待分析用例的优先次序据此编排调整软件开发计划对重要 紧迫的需求 给予更多关注 分配更多的开发资源 确保其优先 实现 确保实现质量 2 用例分析不断加深理解用例模型 更深入理解软件需求用更精确 uml语言表述需求 删除需求的模糊性 检查需求的一致性 消除需 求的冗余性 引入用例功能的逻辑设计方案 检查需求的可实现性 识别需求的实现风险 提高需求的可验证性 3 构建快速原型纠结的问题 自然语言可能存在的模糊性 不一致 性 UML语言用户理解可能有难度 用户说不出心中所想 开发人员解释 不清系统模样 4 分析模型评审评审用例模型 正确性 完全性 可行性 需求 优先级概念 什么是分析模型 分析模型的作用 领域概念模型精 化领域概念模型的方法需求获取 领域模型 用例描述 术语词典 领域概念模型发现表象下的本源 找出最基本的对象及相互间关系 描绘出它们如何交互而形成要分析的问题领域 领域就是分析问题时将整体分解以后的相对独立的部分 针对项目成败影响最为关键的部分建模 针对核心业务建模 适用 二八原则 针对系统难点建模 关注非功能性需求 特殊应用环境 客户特殊 要求 建立领域概念模型必须首先标识关键概念 包括需求描述与用例 说明 业务领域中的相关规范 标准和术语定义 反映业务领域知 识的既往经验 UML类图是表示领域概念模型的适当机制 边界类 实体类 控制类的概念 如何识别边界类 实体类 控 制类边界类描述外部的参与者与系统之间的交互 控制类描述一个用例所具有的事件流控制行为 实体类描述必须存贮的信息及其相关行为 识别边界类应当注意的问题 1 边界类应关注于参与者与用例之间交互的信息或者相应的事件 不要描述窗口组件等界面的组成元素 2 在分析阶段 力求使用用户的术语描述界面 3 边界类实例的生命周期并不仅限于用例的事件流 如果两个用例 同时与一个参与者交互 那么它们有可能会公用一个边界类 如听 课 听音乐 以便增加边界类的复用性 识别控制类当用例比较复杂时 特别是产生分支事件流的情况下 一个用例可以有多个控制类 每个类负责用例的某项子功能 在某 些情况下 用例事件流的逻辑结构十分简单 这是没有必要使用控 制类 边界类可以实现用例的行为 如果不同用例包含的任务间存在着比较密切的联系 则这些用例可 以使用一个控制类 其目的是复用相似部分以便降低复杂性 通常情况下 应该按照一个用例对应一个控制类的方法识别出多个 控制类 再分析这些控制类找出它们之间的共同之处 识别实体类实体类通常是用例中的参与对象 对应着现实世界中的 事物 需要开发人员进一步理解应用领域用例描述 词汇表 领 域概念模型是具有持久意义的信息项 软件需求规格说明的内容 作用 需求验证的作用 要点 需求变化的理解 需求变更控制过程2 4 软件设计 软件设计基本原则抽象与逐步求精 模块化 信息隐藏 关注点分离 耦合度和内聚性的概念耦合度表示两个子系统 或 类之间的关联程度 内聚性是子系统内部的相关程度耦合表示两个 子系统 或类 之间的关联程度 当一个子系统 或类 发生变化时对另一个子系统 或类 的影响 很小 则称它们是松散耦合的 反之 如果变化的影响很大时 则 称它们是紧密耦合的 块间联系的大小可从三个方面衡量 方式 作用 数据 耦合性几 种类型 内容耦合 公共耦合 控制耦合 复合耦合 数据耦合 内聚内聚性是子系统内部的相关程度 高内聚子系统中彼此相关的多个对象执行类似的任务 低内聚子系统内的多个对象彼此不相关时 高内聚的方法做且仅做一件事 这会很容易理解与维护 高内聚的类表示且仅表示一种类型的对象 偶然型 逻辑型 瞬时型 通信型 顺序型 功能型 内聚性弱到 强 软件设计的过程模型 每个环节的主要任务 单一职责 开 闭原则 里氏互换 依赖反转 接口隔离 迪米特法则单一职责可 以看做是低耦合 高内聚在面向对象原则上的引申里氏互换任何基 类出现的地方 子类一定可以出现 软件体系结构定义 软件体系 结构主要包括哪些视图 每种视图的作用逻辑视图 开发视图 物 理视图 运行视图 数据视图 包的划分原则 包的依赖及消除 软件构件的概念 体系结构设 计的过程模型 每个环节的主要任务3简答题 35分 3 1软件工程 软件过程概述 关于人月神话的一些思考 掌握常见几种软件生命周期的特点 适用范围 能够针对给定的 一些软件项目 选择相应的生命周期模型 并简要陈述理由 辩证看待程序语言 开发工具 编程技巧以及软件工程方法在成 功进行软件开发中所起的作用 麦当劳薯条生产的思考 3 2软件需求 关于李大嘴做月饼的思考 理解软件需求的质量正确性 无二义性 完整性 可验证性 一 致性 可修改性 可跟踪性 能够针对给定的需求陈述语句 判断 需求描述是否满足质量要求 能够识别错误的用例描述 并予以改正 能够识别给定用例图的错误 理解软件需求在软件开发中的重要作用 理解软件开发中需求管理困难的原因 理解软件需求确认的内涵及作用 理解软件需求变更控制的基本策略 需求工程的过程模型中主要包括哪些设计活动 3 3软件设计 能 够识别类之间的关系并予绘制 如何消除包的依赖关系 理解软件结构的形态要求 软件设计的 过程模型中主要包括哪些设计活动 软件分析设计的思想原则 1 用户需求远比技术重要 2 需求其实很少改变 改变的是对需求的理解 3 接受变化 4 不要低估软件规模的需求 5 在软件设计中没有捷径可以走 6 任何设计模式 体系结构都有优缺点 7 沟通对设计质量的的提高同样重要 8 工具知识手段 不能代替一切 9 理解完整的软件开发过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论