




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件过程模型 软件工程 软件过程与软件过程模型软件工程方法面向功能的方法面向对象方法 内容提要 软件过程 软件过程是指开发软件产品的一组活动及其结果 即是人们用于开发和维护软件及其相关过程的一系列活动 包括软件工程活动和软件管理活动 软件过程模型 软件过程模型是从一特定角度提出的软件过程的简化描述 模型的本质在于简化 软件过程模型就是对描述的实际过程的抽象 它包括构成软件过程的各种活动 软件产品及软件工程人员参与的不同角色 软件过程模型的分类 以软件需求完全确定为基础的瀑布模型 在开发初期仅给出基本需求的渐进式模型 如原型模型 螺旋模型 喷泉模型等 以形式化开发方法为基础的变换模型 基于四代技术的模型 4G模型 基于知识的智能模型等等 在实际开发时 应根据项目的特点和现有的条件选取合适的模型 也可以把几种模型组合起来使用以便充分利用各模型的优点 瀑布模型 瀑布模型 waterfallmodel 是由W Royce于1970年提出来的 又称为软件生存周期模型 瀑布模型严格按照软件生存周期各个阶段来进行开发 上一阶段的输出即是下一阶段的输入 并强调每一阶段的严格性 它规定了各阶段的任务和应提交的成果及文档 每一阶段的任务完成后 都必须对其阶段性产品 主要是文档 进行评审 通过后才能开始下一阶段的工作 因此 它是一种以文档作为驱动的模型 瀑布模型 验收测试 组装测试 实现 详细设计 概要设计 需求分析 退役 可行性研究 使用与维护 特点 阶段间具有顺序性和依赖性推迟实现的观点质量保证的观点 瀑布模型的优点 可强迫开发人员采用的规范方法 严格规定了每一阶段必须提交的文档 要求每一阶段交付之产品都必须经过质量保证小组的仔细审查 清晰区分了逻辑设计与物理设计 尽可能推迟程序的物理实现 一种文档驱动的模型 提供了软件开发的基本框架 有利于大型软件开发过程中人员的组织 管理 有利于软件开发方法和工具的研究与使用 因此 在软件工程中占有重要的地位 瀑布模型的不足 它将项目生硬的分解为确切的阶段 委托事项一定要在过程的早期阶段清晰给出 这意味着对用户需求变更响应困难 因为生成和确认文档成本很高且很费时 因此经过少量的反复后 要冻结部分开发过程 继续进行后面的开发阶段 这种对需求的冻结使需求相当不成熟 系统不能满足用户需求 作为整体开发的瀑布模型 由于不支持产品的演化 缺乏灵活性 对开发过程中很难发现错误 只有在最终产品运行时才能暴露出来 从而使软件产品难以维护 瀑布模型的适应场合 瀑布模型一般适用于功能 性能明确 完整 无重大变化的软件系统的开发 例如操作系统 编译系统 数据库管理系统等系统软件的开发 应用有一定的局限性 原型模型 原型模型 prototypingmodel 的基本框架是软件开发人员根据用户提出的软件基本需求快速开发一个原型 以便向用户展示软件系统应有的部分或全部功能和性能 在征求用户对原型的评价意见后 进一步使需求精确化 完全化 并据此改进 完善原型 如此迭代 直到软件开发人员和用户都确认软件系统的需求并达成一致的理解为止 软件需求确定后 便可进行设计 编码 测试等以后的各个开发步骤 快速原型方法 用户 客户给出软件产品的一般需求开发小组和用户共同定义软件总体目标 标识已知需求对界面 功能 人机交互方式等 进行设计并建造原型强调 快速 釆用基于构件的软件开发方法 尽量缩短软件开发周期 不宜釆用过多的新技术用户 客户对原型进行评估修改需求 更新设计 完善原型直至确定需求 原型模型示意图 快速原型的开发途径 仅模拟软件系统的人机界面和人机交互方式 开发一个工作模型 实现软件系统中重要的或容易产生误解的功能 利用一个或几个类似的正在运行的软件向用户展示软件需求中的部分或全部功能 建造原型应尽量采用相应的软件工具和环境 并尽量采用软件重用技术 在运行效率方面可做出让步 以便尽快提供 同时 原型应充分展示软件系统的可见部分 如人机界面 数据的输入方式和输出格式等 采用原型模型的软件生命周期 生成原型 原型模型的优点 原型模型比瀑布模型更符合人们认识事物的过程和规律 是一种较实用的开发框架 它产生的正式需求文挡 是软件开发的基础 如果开发的原型是可运行的 它的若干高质量的程序片段和开发工具可用于工作程序的开发 原型的开发和评审是系统分析员和用户 客户共同参予的迭代过程 每个迭代循环都是线性过程 原型模型的缺点 对于大型软件项目 原型模型需要足够的人力资源以建立足够的原型组 原型模型要求开发者和客户在一段时间内共同完成原型系统的开发 如果任何一方没有实现承诺 会导致原型开发的失败 如果系统难以模块化 建造原型所需构件就有问题 如果高性能是一个指标 原型模型也可能不奏效 原型模型不适合采用很多新技术的项目 原型模型的适应场合 它适合于那些不能预先确切定义需求的软件系统的开发 更适合于那些项目组成员 包括分析员 设计员 程序员和用户 不能很好交流或通信有困难的情况 螺旋模型 螺旋模型 spiralmodel 是B Boehm于1988年提出的 它综合了瀑布模型和原型模型的优点 即将两者结合 并加入了风险分析机制 螺旋模型的基本框架如图 螺旋模型 第一圈产生产品规格说明 第二圈产生一个用于开发的原型 第三圈产生软件产品的初始版本 第四圈产生软件产品比较完善的新版本 原型1 原型2 原型3 风险分析 风险分析 风险分析 风险分析 操作原型 评审 需求计划和生存周期计划 操作的概念 软件需求 需求有效性验证 预估可选方案 明确并解决风险 验收测试计划 组装测试计划 规划下阶段工作 设计验证与确认 产品设计 详细设计 编码 单元测试 组装测试 验收测试 运行维护 开发验证下一级产品 对目标 可选方案和约束的确定 提交线 制定计划 风险分析 实施工程 客户评估 建模 模拟 评价 需求评价 需求精化计划 开发计划 实现计划 顺时针为进展方向 螺旋模型 螺旋模型的每一个周期都包括计划 需求定义 风险分析 工程实现和评审4个阶段 1 计划 需求定义 首先开始利用需求分析技术理解应用领域 获取初步用户需求 制定项目开发计划 即整个软件生命周期计划 和需求分析计划 然后根据用户和开发人员对上一周期工作成果评价和评审 修改 完善需求 明确下一周期软件开发的目标 约束条件 并据此制定新一轮的软件开发计划 螺旋模型 2 风险分析根据本轮制定的开发计划 进行风险分析 评估可选方案 并构造原型进一步分析风险 给出消除或减少风险的途径 此时根据风险分析的结果决策项目是否继续 所以 螺旋模型是一个风险驱动的模型 3 工程实现利用构造的原型进行需求建模或进行系统模拟 直至实现软件系统 螺旋模型 4 用户评价与阶段评审将原型提交用户使用并征求改进意见 开发人员应在用户的密切配合下进一步完善用户需求 直到用户认为原型可满足需求 或对软件产品设计进行评价或确认等 螺旋模型从第一个周期的计划开始 一个周期 一个周期地不断迭代 直到整个软件系统开发完成 螺旋模型的优点 支持用户需求的动态变化 支持软件系统的可维护性 每次维护过程只是沿螺旋模型继续多走一两个周期 这符合人们认识现实世界和软件开发的客观规律 原型可看作形式的可执行的需求规格说明 易于为用户和开发人员共同理解 还可作为继续开发的基础 并为用户参与所有关键决策提供了方便 开发者和用户共同参与软件开发 可尽早发现软件中的错误 螺旋模型特别强调原型的可扩充性和可修改性 原型的进化贯穿整个软件生存周期 这将有助于目标软件的适应能力 既保持瀑布模型的系统性 阶段性 又可利用原型评估降低开发风险 螺旋模型为项目管理人员及时调整管理决策提供了方便 进而可降低开发风险 螺旋模型的缺点 如果每次迭代的效率不高 致使迭代次数过多 将会增加成本并推迟提交时间 使用该模型需要有相当丰富的风险评估经验和专门知识 要求开发队伍水平较高 螺旋模型适应场合 支持需求不明确 特别是大型软件系统的开发 并支持面向规格说明 面向过程 面向对象等多种软件开发方法 是一种具有广阔前景的模型 变换模型 变换模型是基于形式化规格说明语言以及程序变换技术的软件系统开发模型 它主要用于软件的形式化开发方法 在软件需求分析确定以后 便用形式化的规格说明语言将其描述为 形式化软件规格说明 然后对其进行一系列自动或半自动的变换 最终得到软件系统的目标程序 变换模型 形式化软件规格说明 M0 模型检查 需求分析 形式化软件设计说明 M1 M2 目标程序 M 变换 变换模型 变换模型也应引入迭代机制 即将第一次用变换模型得来的目标程序作为 原型 让用户评价 以便使用户需求精确化 完全化 再把精化后的需求作为输入 第二次用变换模型进行变换 等等 以形式化开发方法为基础的变换模型需要逻辑 代数等严格的数学理论和诸如形式化的需求规格说明语言 程序变换工具 定理证明工具等一整套开发环境的支持 形式化开发方法提出的比较早 但到目前为止 其在理论和实践等方面离工程实际应用还有较长一段距离 喷泉模型 喷泉模型是近几年提出来的软件生存周期模型 它是以面向对象的软件开发方法为基础 以用户需求为动力 以对象来驱动的模型 喷泉模型的特点 软件系统可维护性较好 各阶段相互重叠 表明了面向对象开发方法各阶段间的交叉和无缝过渡 整个模型是一个迭代的过程 包括一个阶段内部的迭代和跨阶段的迭代 模型具有增量开发特性 即能做到分析一点 设计一点 实现一点 测试一点 使相关功能随之加入到演化的系统中 模型是对象驱动的 对象是各阶段活动的主体 也是项目管理的基本内容 该模型很自然地支持软部件的重用 软件工程方法 软件工程方法是完成软件工程项目的技术手段 它支持软件开发与维护的全部过程 软件工程方法划分为 面向功能的方法结构化分析方法Jackson方法Warnier方法面向对象方法UML 软件工程方法是软件开发的结构化方法软件工程过程是方法的使用活动 结构化分析方法 一种面向数据流的开发方法 图形表示方法为数据流图 DFD 和模块层次结构图 SC 现有的软件开发方法中最成熟 应用最广泛的方法 主要特点是快速 自然和方便 结构化方法总的指导思想自顶向下 逐步求精 分解成若干个具有合适大小和功能的模块并对各个模块进行定义和描述 其实质就是功能分解和抽象 结构化方法的发展 70年代初结构化程序设计方法SP法 StructuredProgram 70年代中结构化设计方法SD法 StructuredDesign 70年代末结构化分析方法SA法 StructuredAnalysis SA SD SP法相互衔接 形成了一整套开发方法 若将SA SD法结合起来 又称为结构化分析与设计技术 即SDAT技术 Jackson方法 Jackson方法是最典型的面向数据结构的设计方法 它首先分析数据的层次结构 生成输入 输出数据结构图 把处理模块化 并在此基础上进行详细设计和编程 Jackson方法有JSP JacksonStructureProgramming 和改进的JSD JacksonSystemdevelopment 方法 Jackson方法的发展 二十世纪七十年代Jackson提出了软件工程领域中著名的Jackson方法 当时它只用于软件设计 二十世纪八十年代初 Jackson又对它进行了多方面的扩充和完善 最终发展成为一种需求分析方法 Jackson方法的核心思想是 根据作用于数据的行为序列的结构 顺序 选择与重复 建立目标软件系统的模型 然后在软件设计阶段将模型演化为相应的程序结构 Jackson方法的主要步骤 分析并确定输入数据和输出数据的逻辑结构 找出输入数据结构和输出数据结构中有对应关系的数据单元 从描述数据结构的Jackson图导出描述程序结构的Jackson图 列出所有的操作和条件 并把他们分配到程序结构图中去 Jackson图的基本类型 顺序结构 重复结构 选择结构 Jackson的伪代码 1 顺序结构顺序结构的伪码如下 其中 seq 和 end 是关键字 AseqBCDAend Jackson的伪代码 2 选择结构 select or 和 end 是关键字 cond1 cond2和cond3分别是执行B C或D的条件 选择结构对应的伪码如下 Aselectcond1BAorcond2CAorcond3DAend Jackson的伪代码 3 重复结构 iter until while 和 end 是关键字 重复结构有until和while两种形式 cond是条件 重复结构对应的伪码图象 Aiteruntil 或while condBAend Warnier方法 它也是一种面向数据结构的设计方法 它将软件系统当做模型来进行描述 再逐步转换成目标系统 Warnier方法与Jackson方法差别如下 它们使用的图形工具不同 分别使用Warnier图和Jackson图 使用的伪码不同 最主要的差别是在构造程序框架时 Warnier方法仅考虑输入数据结构 而Jackson方法不仅考虑输入数据结构 而且还考虑输出数据结构 Warnier方法的图元素 表示属于数据结构的同一层次 表示在一定条件下才出现 几个数据只能出现一个 指明这类数据重复出现的次数 例 面向对象方法 面向对象方法学是20世纪90年代发展起来的软件分析设计方法 该方法把客观世界的事物或实体都看成对象 把对象作为分析设计的基本元素 把所有对象都划分成对象类 类可以派生和继承 对每个对象类都定义一组数据和方法 面向对象方法包括面向对象分析 面向对象设计和面向对象实现 是近年来取得迅速发展并具有强大生命力的软件开发方法 被誉为90年代软件的核心技术之一 一些软件工程专家在提出自己的OO方法时 也提出了自己的建模语言 用户并不了解不同建模语言的优缺点 在实际工作中很难选择合适的建模语言 不同建模语言之间存在的细微差别极大地妨碍了用户之间的交流 OO要健康发展 必须在精心比较不同建模语言优缺点的基础上 把建模语言同一起来 Booch Rumbaugh和Jacobson经过合作研究 于1996年提出了统一建模语言UML 1997年11月 国际对象管理组织OMG批准把UML作为OO技术的标准建模语言 UML 统一建模语言 UML 统一建模语言 UML是为了简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 23595.1-2025LED用稀土荧光粉试验方法第1部分:光谱的测定
- 包装回收合同范例
- 北京合伙合同范本培训
- 中介代办合同范例
- 个人汽车置换合同范本
- 办公住宿出租合同范本
- 出租铺面合同范本
- 三方合伙范本合同范本
- 履约反担保合同范本
- 单位职工租房合同范例
- 西师版小学数学二年级(下)表格式全册教案
- 娱乐场所安全承诺声明
- 2025届广东省广州市番禺区数学高一下期末检测试题含解析
- 2024年镇江市高等专科学校单招职业适应性测试题库完美版
- 珠海市高级技工学校校企合作管理办法修订
- GB 31825-2024制浆造纸单位产品能源消耗限额
- 消防设施操作员报名工作证明(操作员)
- MOOC 量子信息原理与应用-南京大学 中国大学慕课答案
- 医保基金监管培训课件
- 参地益肾口服液作用机制研究
- 供应商开发流程及质量要求
评论
0/150
提交评论