chap2-软件工程.ppt_第1页
chap2-软件工程.ppt_第2页
chap2-软件工程.ppt_第3页
chap2-软件工程.ppt_第4页
chap2-软件工程.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

上一张 下一张 结 束 软件工程 第 1 /85页 本章要点 本章将从软件工程的概念入手,阐述软件开发过 程的基本流程以及相关的技术、方法和手段。 软件工程概述软件工程概述 软件可行性与需求分析软件可行性与需求分析 软件设计与编码软件设计与编码 软件测试软件测试 软件维护软件维护 辅助软件开发环境辅助软件开发环境CASECASE 上一张 下一张 结 束 软件工程 第 2 /85页 2.1 软件工程概述 2.1.1 软件危机与软件工程定义 1软件危机 软件危机是指在计算机软件的开发和维护过程中所遇 到的一系列严重问题。 2软件工程的定义 软件工程就是研究和应用如何以系统化的、规范的、 可度量的方法去开发、运行和维护软件,即把工程化应 用到软件上。 在“软件工程”的概念提出后的几十年里,各种有 关软件的技术、思想、方法和概念层出不穷,典型的包 括结构化的方法、面向对象方法、软件开发模型和软件 开发过程等,软件工程逐步发展为一门独立的科学, 被称为“软件工程学”。 上一张 下一张 结 束 软件工程 第 3 /85页 上一张 下一张 结 束 软件工程 第 4 /85页 上一张 下一张 结 束 软件工程 第 5 /85页 2.1.2 软件生存周期与软件开发模型 1软件生存周期 软件生存周期是指软件产品从考虑其概念开始到该产 品交付使用,直至最终退役为止的整个过程,一般包 括计划、需求分析和定义、软件设计、程序编码、软 件测试、运行/维护等阶段。 2软件开发模型 软件开发模型是软件开发的全部过程、活动和任务 的结构框架。软件开发模型能清晰、直观地表达软件 开发全过程,明确规定了要完成的主要活动和任务, 用来作为软件项目开发的基础。 上一张 下一张 结 束 软件工程 第 6 /85页 软件开发模型 n(1)瀑布模型 上一张 下一张 结 束 软件工程 第 7 /85页 (2)快速原型模型(Rapid Prototype Model) (3)螺旋模型(Spiral Model) 上一张 下一张 结 束 软件工程 第 8 /85页 上一张 下一张 结 束 软件工程 第 9 /85页 2.1.3 软件开发的基本策略 上一张 下一张 结 束 软件工程 第 10 /85页 2.1.3 软件开发的基本策略 上一张 下一张 结 束 软件工程 第 11 /85页 2.1.3 软件开发的基本策略 上一张 下一张 结 束 软件工程 第 12 /85页 2.1.3 软件开发的基本策略 上一张 下一张 结 束 软件工程 第 13 /85页 2.1.3 软件开发的基本策略 上一张 下一张 结 束 软件工程 第 14 /85页 2.1.4 项目计划与质量管理 上一张 下一张 结 束 软件工程 第 15 /85页 2.2 软件可行性与需求分析 2.2.1 可行性研究的任务和步骤 1可行性研究的任务 软件可行性研究的目的是在尽可能短的时间里确定该 软件项目是否能够开发,是否值得开发。它是为软件 开发做准备、规划的阶段。主要是从以下几个方面考 虑: (1)经济可行性 (2)技术可行性 (3)运行可行性 (4)法律可行性 (5)开发方案可行性 上一张 下一张 结 束 软件工程 第 16 /85页 2可行性研究的步骤 (1)复查系统规模和目标 (2)研究当前系统 (3)建立新系统的高层逻辑模型 (4)导出和评价各种方案 (5)推荐可行方案 (6)编写可行性研究报告 上一张 下一张 结 束 软件工程 第 17 /85页 1需求分析的任务 (1)确定对系统的综合需求 (2)分析系统的数据需求 (3)导出系统的逻辑模型 (4)修正系统开发计划 (5)开发原型系统 2需求分析的步骤 需求分析是发现、求精、建模、规格说明和复审的过程。 (1)调查研究,获取需求 (2)分析和综合 (3)编写文档 (4)需求分析评审 2.2.3需求分析的任务和步骤 上一张 下一张 结 束 软件工程 第 18 /85页 2.2.4需求分析的内容 上一张 下一张 结 束 软件工程 第 19 /85页 2.2.4需求分析的内容 上一张 下一张 结 束 软件工程 第 20 /85页 2.2.5 需求分析方法 需求分析方法由对软件的数据域和功能域的系统分析过 程及其表示方法组成,它定义了表示系统逻辑视图和 物理视图的方式。 当前主要采用的软件开发方法有结构化方法、面向对象 方法,需求分析方法也分为结构化分析方法、面向对 象分析方法。 2.2.6 需求规格说明 上一张 下一张 结 束 软件工程 第 21 /85页 2.3 软件设计 软件系统设计 上一张 下一张 结 束 软件工程 第 22 /85页 上一张 下一张 结 束 软件工程 第 23 /85页 上一张 下一张 结 束 软件工程 第 24 /85页 上一张 下一张 结 束 软件工程 第 25 /85页 上一张 下一张 结 束 软件工程 第 26 /85页 上一张 下一张 结 束 软件工程 第 27 /85页 2.3.1 概要设计的任务和步骤 1概要设计的任务 软件设计包括概要设计和详细设计。而概要设计就是软 件设计最初形成的一个表示,它描述了软件的总的体 系结构。简单地说软件概要设计就是设计出软件的总 体结构框架,即建立系统的模块结构和数据结构。概 要设计的任务主要有四个方面: (1)设计软件系统结构(软件结构),把系统进一步划 分为模块以及模块的层次结构。 (2)数据结构及数据库设计,确定数据结构、文件结构 、数据库模式,确定测试方法与策略。 (3)编写概要设计文档,包括概要设计说明书、数据库 设计说明书、用户手册和修订测试计划。 (4)评审 上一张 下一张 结 束 软件工程 第 28 /85页 2.3.2 软件设计的原则 1模块化 在一个软件结构内,模块可以分为三类: 顺序(Sequential)模块:在引用与执行的过程中没有 明显的中断现象出现。 渐增(ncremental)模块:在执行过程中可以被中断, 然后再在中断点恢复执行。 并行(Parallel)模块:它是在并发多处理器环境中与 另一模块同步地执行。 2抽象 3信息隐蔽 4模块独立性 上一张 下一张 结 束 软件工程 第 29 /85页 5启发式规则 (1)模块的划分:要做到高内聚,低耦合,改进软件结 构提高模块独立性。 (2)模块的大小:选择合适的模块规模,模块规模应该 适中。 (3)形成的结构:模块的深度、宽度、扇出和扇入都应 适当。 (4)模块的控制:模块的作用域应该在控制域之内。 (5)模块的接口:力争降低模块接口的复杂程度。模块 的接口要简单、清晰、含义明确,便于理解、易于实 现、测试与维护。 (6)设计单入口单出口的模块,避免“病态连接”。 (7)模块功能应该可以预测,但也要防止模块功能过分 局限。 上一张 下一张 结 束 软件工程 第 30 /85页 上一张 下一张 结 束 软件工程 第 31 /85页 2.3.5 详细设计的任务和原则 详细设计是在概要设计的基础上确定每个模块的具体 执行过程,是软件设计的第二步。详细设计的任务, 是对概要设计阶段划分出的每个模块进行明确的算法 描述。详细设计根据概要设计提供的文档,确定每一 个模块的算法及数据组织,并选定合适的工具将其清 晰准确地表达出来。具体步骤如下: (1)确定每个模块的算法。选择适当的描述工具表达每 个模块算法的执行过程,写出模块的详细过程性描述 。 (2)确定每一个模块的数据组织。 (3)为每个模块设计一组测试用例。 (4)编写详细设计说明书。 上一张 下一张 结 束 软件工程 第 32 /85页 详细设计文档是给程序员看的,是程序编码的依据。 因此,详细设计过程中,应该遵循如下的原则: (1)模块的逻辑描述正确可靠,清晰易读。 (2)采用结构化程序设计方法,改善控制结构,降低程 序复杂度,提高程序的可读性、可测试性和可维护性 。 2.3.6 详细设计的方法 1程序流程图(Program Flowchart) 顺序型结构含有多个连续的加工步骤; 选择型结构由某个逻辑条件式的取值决定选择两个 加工中的一个; 当(while)型循环结构在控制条件成立时,重复 执行; 直到(until)型循环结构重复执行某些特定加工 ,直至控制条件成立; 多选择(case)型结构列举多种加工的情况,根据 某控制变量的取值,选择执行其中之一。 上一张 下一张 结 束 软件工程 第 33 /85页 上一张 下一张 结 束 软件工程 第 34 /85页 2NS图 (1)顺序型 如图5-5(a)所示,在顺序型中,先执行A,后执行B。 (2)选择型 如图5-5(b)所示,在选择型结构中,如果条件成立,则 可执行T下面的内容,当条件不成立时,则执行F下的 内容。 (3)While重复型 如图5-5(c)所示,在While重复型循环结构中,先判断 条件的值,再执行语句。其中“条件”是循环条件,“语 句”是循环体。 (4)Until重复型 如图5-5(d)所示,在Until重复型循环结构中,先执行 语句,后判断条件的值。 (5)多分支选择型 如图5-5(e)所示,给出了多出口的判断图形表示,“条 件”为控制条件,根据“条件”的取值,相应地执行其值 下面的各语句内容。 上一张 下一张 结 束 软件工程 第 35 /85页 (a)顺序型 语句A 语句B (b)选择型 T 条件 F 语句1语句2 (c)重复型 WHILE 语句 (d)UNTIL重复型 语句 UNTIL (e)多分支选择型 条件 =情况1 语句1语句2语句n =情况2=情况n 上一张 下一张 结 束 软件工程 第 36 /85页 上一张 下一张 结 束 软件工程 第 37 /85页 2.3.8 用户界面设计 上一张 下一张 结 束 软件工程 第 38 /85页 2.3.8 用户界面设计 上一张 下一张 结 束 软件工程 第 39 /85页 2.4 软件测试 2.4.1 软件测试的概念和原则 测试目标是:尽可能以最少的代价找出软件潜在的错误 和缺陷。为了达到上述的原则,那么需要注意以下几 点: (1)应当把“尽早和不断的测试”作为开发者的座右铭。 不应把软件测试仅仅看作是软件开发的独立阶段,而 应该把它贯穿到软件开发的各个阶段。 (2)程序员应该避免检查自己的程序,测试工作应由独 立的专业的软件测试机构来完成。 (3)设计测试用例时应该考虑到合法的输入和不合法的 输入以及各种边界条件,特殊情况下要制造极端状态 和意外状态,比如网络异常中断、电源断电等情况。 (4)一定要注意测试中的错误集中发生现象,这和程序 员编程水平和习惯有很大的关系。 上一张 下一张 结 束 软件工程 第 40 /85页 (5)对测试错误结果一定要有一个确认的过程,一般有A 测试出来的错误,一定要有一个B来确认,严重的错误 可以召开评审会进行讨论和分析。 (6)制定严格的测试计划,并把测试时间安排的尽量宽 松,不要希望在极短的时间内完成一个高水平的测试 。 (7)回归测试的关联性一定要引起充分的注意,修改一 个错误而引起更多的错误出现的现象并不少见。 (8)应当对每个测试结果作全面检查。有些错误的征兆 在输出实测结果时就已经明显的出现了,但是如果不 仔细地、全面地检查测试结果,就会使这些错误被遗 漏掉。所以必须对预期的输出结果明确定义,对实测 的结果仔细分析检查,暴露错误。 (9)妥善保存一切测试过程文档,意义是不言而喻的, 测试的重现性往往要靠测试文档。 上一张 下一张 结 束 软件工程 第 41 /85页 2.4.1 软件测试的概念和原则 上一张 下一张 结 束 软件工程 第 42 /85页 2.4.2 软件测试的目的 上一张 下一张 结 束 软件工程 第 43 /85页 2.4.3 软件测试的内容与方法 上一张 下一张 结 束 软件工程 第 44 /85页 2.4.3 软件测试的内容与方法 上一张 下一张 结 束 软件工程 第 45 /85页 2.4.3 软件测试的内容与方法 上一张 下一张 结 束 软件工程 第 46 /85页 2.4.3 软件测试的内容与方法 上一张 下一张 结 束 软件工程 第 47 /85页 2.4.3 软件测试的内容与方法 上一张 下一张 结 束 软件工程 第 48 /85页 2.4.4 软件测试的过程 (1)单元测试(Unit Testing) 单元测试主要针对以下5个方面进行测试:模块接口,局 部数据结构,重要的执行通路,出错处理通路,边界 条件。 (2)集成测试(Integrated Testing) 集成测试的主要内容是发现与接口有关的问题,即模块之 间的协调与通讯。 (3)确认测试(Validation Testing) 确认测试是把软件系统作为一个整体,有用户参加,对系 统进行功能和性能测试。 (4)系统测试(System Testing) 系统测试也是把软件系统作为一个整体进行测试。内容是 系统与其它部分配套运行的情况,如与硬件、数据库 、其它软件和操作人员的协调、通讯条件等。 上一张 下一张 结 束 软件工程 第 49 /85页 上一张 下一张 结 束 软件工程 第 50 /85页 2.4.5 软件测试技术与用例设计 测试方案包括预定要测试的功能,应该输入的测试数 据和预期的结果。测试的目的是以最少的测试用例集合 测试出更多的程序中潜在的错误。从是否需要执行被测 软件的角度来看,可分为静态分析和动态测试; 从测试是否针对系统的内部结构和具体实现算法的角 度来看,可分为白盒测试和黑盒测试。 1静态分析 不执行被测软件,对需求分析说明书、软件设计说明 书、源程序做结构检查、流程分析、符号执行来找出软 件错误。 2动态测试 当把程序作为一个函数,输入的全体称为函数的定义 域,输出的全体称为函数的值域,函数则描述了输入的 定义域与输出值域的关系。 上一张 下一张 结 束 软件工程 第 51 /85页 这样动态测试的算法可归纳为: (1)选取定义域中的有效值,或定义域外的无效值。 (2)对已选取值决定预期的结果。 (3)用选取值执行程序。 (4)观察程序行为,记录执行结果。 (5)将(4)的结果与(2)的结果相比较,不一致则程 序有错。 动态测试两个基本要素: 被测试程序;测试数据(测试用例) 动态测试既可以采用白盒法对模块进行逻辑结构的测试 ,又可以用黑盒法做功能结构的测试和接口的测试。 上一张 下一张 结 束 软件工程 第 52 /85页 3白盒测试 上一张 下一张 结 束 软件工程 第 53 /85页 白盒测试又称为结构测试或逻辑驱动测试。逻辑覆盖法 是白盒测试方法中比较实用的测试用例设计方法。 由于覆盖的目标不同,逻辑覆盖又可分为:语句覆盖、 判定覆盖、条件覆盖、判定与条件覆盖及路径覆盖。 (1)语句覆盖 语句覆盖的含意是,选择足够多的测试数据,使被测程 序中每个语句至少执行一次。 (2)判定覆盖 判定覆盖又叫分支覆盖,它的含义是:不仅每个语句必 须至少执行一次,而且每个判定的每种可能的结果都 应该至少执行一次,也就是每个判定的每个分支都至 少执行一次(真假分支均被满足一次)。 (3)条件覆盖 设计若干测试用例,然后执行被测程序以后,要使每 个判断中每个条件的可能取值至少满足一次。 上一张 下一张 结 束 软件工程 第 54 /85页 (4)判定与条件覆盖 判定条件覆盖要求设计足够的测试用例,使得判断中每 个条件的所有可能至少出现一次,并且每个判断本身的判 定结果也至少出现一次。 (5)路径覆盖 按路径覆盖要求进行测试是指设计足够多测试用例,要求 覆盖程序中所有可能的路径。 4黑盒测试 黑盒测试也称功能测试或数据驱动测试。在完全不考虑程 序内部结构和内部特性的情况下,测试者只能依靠程序需 求规格说明书,从可能的输入条件和输出条件中确定测试 数据。也就是根据程序的功能或程序的外部特性设计测试 用例。由于黑盒测试不可能使用所有可以输入的数据,因 此只能从中选择一部分具有代表性的输入数据,以期用较 小的代价暴露出较多的程序错误。黑盒测试法包括等价类 划分、边值分析、错误推测等。 上一张 下一张 结 束 软件工程 第 55 /85页 上一张 下一张 结 束 软件工程 第 56 /85页 (1)等价类划分 把所有可能的输入数据(有效的和无效的)划分成若干个等 价类,则可以合理做出下述假定:每类中的一个典型值在 测试中的作用与这一类中所有其它值的作用相同。因此, 可以从每个等价类中只取一组数据作为测试数据。这样选 取的测试数据最有代表性,最可能发现程序中的错误。 等价类划分的目的是将可能的测试用例组合减少到仍然足 以测试软件的控制范围,这种划分具有风险性,一定要仔 细选择分类。 【例5.4.1】一个程序计算任何一个在11000内整数的平 方数,那么其输入

温馨提示

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

评论

0/150

提交评论