软件工程之第1章_软件工程学(第五版)(张海潘编著)案例分析.ppt

软件工程之第1章_软件工程学(第五版)(张海潘编著)案例分析.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对软件的认识: 1950:程序 1960:程序+文档(不包括管理文档) 1970:程序+文档+数据 1984:软件管理是过程管理,CMM1.0能力成熟度模型 1996:UML统一建模语言 软件工程的代表性定义: Fritz Bauer:软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。 IEEE:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(2)(1)中所述方法的研究。 计算机科学技术百科全书:软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。 软件工程的划代(无公认的定义): ①1970年末之前,传统软件工程,瀑布模型。 ②1980年后,面向对象软件工程,面向对象语言以Smalltalk-80的出现为标志。 ③1984年后,软件过程工程,掀起软件过程运动,1991年出现的CMM是典型代表。 ④1990年后,构件工程,基于构件的软件开发方法,可重用的构件组装成新系统。 软件四化: 构架平台化 组建业务化 编码自动化 管理工厂化 以面向对象技术为手段,以可重用软件构件化和体系架构为基础,以工业化生产方式和管理支撑体系为核心的软件新变革。 根据原型的不同作用,有三类原型模型: 探索型原型——用于开发的需求分析阶段 实验型原型——主要用于设计阶段 演化型原型——用于及早向用户提交一个原型系统 快速原型模型的运用方式: 抛弃策略——探索型和实验型采用此策略 附加策略——演化型快速原型采用此策略 1.4.3 增量模型 增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。 增量模型适用于: 适用于需求经常改变的软件开发过程。 如果在项目既定的商业要求期限之前不可能找到足够的开发人员,在这种情况下,增量模型显得特别有用。 螺旋模型的缺点: 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。 过多的迭代次数会增加开发成本,延迟提交时间。 螺旋模型适用于: 特别适用于庞大、复杂并具有高风险的系统。 适用于内部开发的大规模软件项目。 喷泉模型的优点: 该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。 多次反复地增加或明确目标系统,而不是本质性的改动,降低错误的可能性。 喷泉模型的缺点: 由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理。 要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 喷泉模型适用于: 适用于面向对象的软件开发过程。 基于构件的开发模型: 支持软件复用。利用预先包装好的软件构件来构造应用系统。 形式化方法模型: 形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。 3. 需求分析 任务:必须做什么 主要是确定目标系统必须具备哪些功能。 系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。 结果: 系统的逻辑模型(数据流图、数据字典、简要的算法描述) 用规格说明书准确地记录对目标系统的需求 4. 总体设计 任务:如何解决已提出的问题 设计出实现目标系统的几种可能的方案(低、中、高成本)。 用适当的表达工具描述每种方案,分析优缺点,推荐一个最佳方案,制定出实现最佳方案的详细计划。设计程序的体系结构。 结果: 可能的解法(系统流程图、成本效益分析) 推荐的系统体系结构(层次图或结构图) 5. 详细设计 任务:怎样具体实现该系统 详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。 结果: 每个模块的算法和数据结构(程序流程图、PAD图、N-S图等)。 6. 编码和单元测试 任务:得到正确的程序模块 选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序; 并且仔细测试编写出的每一个模块。 结果: 代码和测试报告 7. 综合测试 任务:得到符合要求的软件 通过集成测试、验收测试、现场测试、平行运行等方法对目标系统进一步测试检验。 通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决定测试和调试过程什么时候可以结束。 结果: 测试计划、详细测试方案以及实际测试结果 完整一致的软件配置 8. 软件维护 任务:使系统持久地满足用户的需要 改正性维护,诊断和改正在使用过程中发现的软件错误; 适应性

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档