01软件工程课件2013年下半年网工_第1页
01软件工程课件2013年下半年网工_第2页
01软件工程课件2013年下半年网工_第3页
01软件工程课件2013年下半年网工_第4页
01软件工程课件2013年下半年网工_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、第 1 章 软件工程基础知识目 录第 1 章 软件工程基础知识11.11.21.31.4什么是软件?1软件及软件工程?1有哪些流行的软件工程方法学及其要素?1什么是软件生存周期?有哪些活动?11.4.1 问题定义-“要解决的问题是什么?”11.4.2 可行性分析和项目开发计划-“有行得通的解决方案吗?”11.4.3 需求分析和定义-“系统必须做什么?”11.4.4 概要设计-“概括地说,应该怎样做?”21.4.5 详细设计-“具体怎么样做?”21.4.6 编码-代码实现21.4.7 测 试21.4.8 运行维护2各活动阶段主要文档21.5.1 可行性分析和项目开发计划21.5.2 需求分析中的

2、文档21.5.3 概要设计阶段文档21.5.4 详细设计阶段21.5.5 编码21.5.6 测试21.5.7 系统测试阶段2有哪些主要生存期模型?31.6.1 瀑布模型(传统的软件周期模型)31.6.2 原型模型31.6.3 螺旋模型41.6.4 喷泉模型4软件过程基础知识51.7.1 软件过程51.7.2 评估工具5软件工程项目管理基本知识61.8.1 时间管理61.8.2 成本管理81.8.3 风险管理81.51.61.71.81.8.4组织管理91.9模块化基本知识101.9.1 模块特性111.9.2 模块与模块的耦合性(7 种)111.9.3 模块的内聚性111.9.4 模块的深度、

3、宽度、扇出与扇入121.9.5 模块作用域和域121.9.6 模块化基础知识小结121.10 什么是软件开发方法?有哪些主要方法?121.10.1 结构化方法学121.10.2 结构化设计141.10.3 Jackson 方法15I第 1 章 软件工程基础知识1.11 软件工具151.12 十二. 软件质量管理基础知识151.13 软件质量151.14 代码评审技术161.15 软件测试161.15.1 软件测试经过的步骤161.15.2 白盒测试161.15.3 黑盒测试171.15.4 灰盒测试171.15.5 回归测试181.15.6 单元测试181.15.7 集成测试181.15.8

4、确认测试181.15.9 系统测试181.16 软件工程标准和软件文档191.17 软件维护191.17.1 软件维护类型191.17.2 软件的可维护性191.18 十九. 19II第 1 章 软件工程基础知识III第 1 章 软件工程基础知识第1章软件工程基础知识1.1 什么是软件?1. 满足用户功能需求和性能需求的指令或计算机程序集合;2. 处理信息的数据结构;3. 描述程序功能以及程序如何操作和使用所要求的文档。以上三部分的组合了软件。1.2 软件及软件工程?软件是指在计算机软件的开发和维护过程中所遇到的一序列严重问题,在 20 世纪 60 年代末全面爆发,1968 年,北大西洋公约组

5、织提出使用工程的概念、原理、技术和方法来开发与维护软件,即以工程化的方式组织软件的开发。产生软件的可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。注意:我们只能尽力减少软件的危害,不可能彻底消除软件,犹如人类的感冒,永远不可能彻底消除!1.3 有哪些流行的软件工程方法学及其要素?1. 使用最广泛的软件工程方法学是面向结构化方法学、迭代化方法学、面向对象方法学(上世纪 70-90 年代,流行面向结构化方法学,上世纪 90 年代到现在,流行面向对象方法学)。2. 要素:方法、工具和过程。1.4 什么是软件生存周期?有哪些活动?软件生存周期指的是:一个软件从提出开发要求

6、开始到软件废弃不用的整个过程。而开发一个软件的活动从前往后依次是: 问题定义、可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行维护。1.4.1 问题定义-“要解决的问题是什么?”通过对客户的,系统分析员扼要地写出关于问题性质、工程目标和工程规模的报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。参与人:用户、系统分析员、项目。1.4.2 可行性分析和项目开发计划-“有行得通的解决方案吗?”用户、项目和系统分析师搞清楚系统要解决的问题是什么?以及从技术、等方面论证项目开发可行性。1. 技术可行性:现有的技术是否能够有效地解决该问题?是

7、否有多种不同的解决方案?现有的技术力量是否达到?2.何?3.可行性:所有可能的解决方案所需投入的成本能否超过它的开发成本?它的成本效益分析结果如何?投资回报率如可行性:该解决方案是否符合企业实际情况?是否符合员工利益?是否符合相关和行业规范?1.4.3 需求分析和定义-“系统必须做什么?”用户、项目和系统分析师确定系统必须做什么?但不关心具体怎么做?要确定系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型,同时制定后期测试计划。1. 需求分析的任务(1) 确定软件系统的综合要求:界面要求,功能要求,性能要求,安全性、理要求,将来可能提出的要求。性、可靠性要求,系统运行要求,异常处(2)

8、(3)(4)(5)分析系统的数据要求:数据元素、数据元间的逻辑关系、数据量和峰值等。常用的数据描述是实体-关系模型。导出系统的逻辑模型:结构化分析方法中使用数据流图;面向对象分析方法中使用类模型(类图)修正项目开发计划:在明确了用户的真正需求后,可以更准确地估算软件的成本和进度,从而修正项目开发计划如果必要,可开发一个原型系统来获取用户真正的需求。2. 需求的分类(1)(2)(3)功能需求:所开发的软件必须具备什么样的功能。非功能需求:指必须具备的属性或品质,如可靠性、性能、相应时间、容错性和扩展性等。设计约束:也称为限制条件、补充规约,这通常是对解决方案的一些约束说明。1第 1 章 软件工程

9、基础知识1.4.4 概要设计-“概括地说,应该怎样做?”系统分析师和软件设计师在需求定义的基础上,把各功能需求转换成需要的体系结构,即划分模块、模块的层次、模块之间的调用关系以及各模块的功能,同时设计应用系统的总体数据结构和数据库结构。特例:进销存 管理系统可分为进、销、存三个模块。1.4.5 详细设计-“具体怎么样做?”软件设计师和程序员对概要设计阶段得出的各功能模块进行详细描述成精确的、结构化的过程描述,即各个功能模块具体怎么实现,用相应的工具把模块的结构表示出来,但还未进行编码。1.4.6 编码-代码实现由程序员把详细设计阶段得出的各模块结构(图形)转变成计算机能识别的指令代码。1.4.

10、7 测 试由另一部门()的软件设计师或系统分析师花费最少的人力物力找出程序最多、最大的错误(bug)-“高产测试”,再高产的测试工作也只能发现大约 80%的软件问题,不可能 100%的发现。1.4.8 运行维护由用户和维护进行的软件生存周期中时间最长的阶段。1.5 各活动阶段主要文档1.5.1 可行性分析和项目开发计划n 可性行n 项目开发计划1.5.2 需求分析中的文档nnnnn需求规格说明书 初步用户使用手册确认测试的测试计划修改完善的软件开发计划系统测试计划文档1.5.3 概要设计阶段文档nnnn概要设计说明书数据库说明书 用户手册修订的测试计划(测试的策略、方法、步骤)1.5.4 详细

11、设计阶段n 详细设计说明书1.5.5 编码n 程序1.5.6 测试n 完善的测试计划书n 软件测试报告1.5.7 系统测试阶段n 系统测试报告2005 年下半年 应该在 (7) 阶段制定系统测试计划。(7)A. 需求分析 B. 概要设计 C. 详细设计 D. 系统测试 (29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。2第 1 章 软件工程基础知识(29)A.概要设计说明书 B.详细设计说明书 C.用户手册D.用户需求说明书1.6 有哪些主要生存期模型?瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、基于知识的模型和变化模型。1.6.1 瀑布

12、模型(传统的软件周期模型)瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布,如图 1.1 所示。图 1.1 瀑布模型采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要优点:以文档作为驱动,强迫开发进行严格的评审。与它最相适应的开发方法是结构化方法。缺点:不适应用户需求的改动。2004 年下半年: 软件开发中的瀑布模型典型的刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是 (9) 。(9)A.构件化方法B.结构化方法C.面向对象方法D.快速原型法1.6.2 原型模型1

13、. 快速原型模型快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。具有广泛技能水平的原型化是原型实施的重要保证。原型化应该是具有经验与才干、训练有素的专业。衡量原型化能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。2. 演化模型在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件 的渐进过程。也就是说,快速原型

14、模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。3. 增量模型(渐增式)增量模型主要用于设计阶段,把软件划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的。其示意图如图 1.2 所示。3第 1 章 软件工程基础知识图 1.2 增量模型4. 原型模型小结从下面的有关原型化方法的叙述中,选择出正确的叙述:(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。(2)在用户的数据没有得到很好地组织和管理的时候,应该使用原型化方法。(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。(4)在用户不希望把的时间花在软件开

15、发过程中的时候,应该使用原型化方法。(5)使用原型化方法时应该使用第三代编程语言。(6)原型化加强了开发过程中用户的参与和决策。(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。(8)原型化方法大致可分为演化式和递增式。(9)采用原型化方法时,软件的开发成本较高。(10)采用原型化方法时,关键的因素是建立的速度,而不是运行的效率。1.6.3 螺旋模型如图 1.3 所示,螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新命期结束。开发项目开始了,新的演化沿着螺旋线进行若干次迭代,一直转到软件生图 1.3 螺旋模

16、型1.6.4 喷泉模型喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。迭代指的是开发活动常常需要重复多次,在不断的迭代中逐渐完善软件系统,无间歇性指在开发活动之间不存在明显的边界,叉、迭代地进行,如图 1.4 所示。各开发活动交4第 1 章 软件工程基础知识图 1.4 喷泉模型2005 年下半年: 在开发一个系统时,如果用户对系统的目标不是很清楚,难以定义需求,这时最好使用 (6) 。(6)A. 原型法2006 年上半年:B. 瀑布模型C. V-模型D. 螺旋模型 渐增式开发方法有利于 (4) 。(4)A.获取软件需求 B.快速开发软件 C.大型团队开

17、发 D.商业软件开发2006 年下半年: 常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中(5)模型适用于需求明确或很少变更的项目,(6)主要面向对象的软件开发过程。(5) A瀑布模型(6) A瀑布模型B.演化模型B.演化模型C. 螺旋模型C. 螺旋模型D.喷泉模型D.喷泉模型1.7 软件过程基础知识1.7.1 软件过程软件过程是指人们用于开发和维护软件及相关的一系列活动,包括软件工程过程和软件管理过程。1.7.2 评估工具1. 软件能力成熟度模型(Capability Maturity Mn 初始级,CMM),CMM1.1 的 5 个等级(由低级到高级):软件过程是无序的,

18、有时甚至是n 可重复级的,对过程几乎没有定义,取决于个人努力,管理是反应式(消防式)的。建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的n 已定义级。已将软件管理和工程两方面的过程文档化、标准化,并综该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。n 已管理级收集对软件过程和n 优化级质量的详细度量,对软件过程和都有定量的理解与。加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。巧记:初级程序员,可重复写程序,现已定义了管理策略来优化程序设计!5第 1 章 软件工程基础知

19、识2006 年下半年: 软件能力成熟度模型(CMM)是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。该模型将软件能力成熟度自低到高依次划分为初始级、可重复级、已定义级、已管理级、优化级。从(17)开始,要求企业建立基本的项目管理过程的政策和管理规程,使项目管理过程有章可循。(17)A初始级B. 可重复级C. 已定义级D. 已管理级2. 成立成熟度集成模型CMMI 的一种表述方式为连续表述,主要关注某特定域的过程改进和能力评估;另一种表述方式为阶段式,主要是衡量一个企业的成熟度,而不把单个过程是否完成作为重点。n 阶段表述方式初始级、已管理级、量化管理级和优化级,这些

20、等级要一级一级逐级进行,每个等级是下一个等级的基础,当前一个级别没有达到时,不能进入下一个等级。n 连续表述方式分为 0-5 能力等级:未完成级,已执行级,已管理级,已定义级,量化管理级和优化级。2011 年上半年: 关于过程改进,以下叙述中不正确的是 (30) 。(30)A. 软件质量依赖于软件开发过程的质量,其中个人因素占主导作用B. 要使过程改进有效,需要制定过程改进目标C. 要使过程改进有效,需要进行培训D. CMMI 成熟度模型是一种过程改进模型,仅支持阶段性过程改进而不支持连续性过程改进1.8 软件工程项目管理基本知识软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期

21、。软件工程项目管理一般分为时间管理、成本管理、人力管理、风险管理。1.8.1 时间管理1. Gantt 图如图 1.5 所示,是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。图 1.5 甘特图甘特图的优点:直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有缺点:(1)(2)(3)不能显示地描绘各项彼此间的依赖关系;进度计划的关键部分不明显,难以哪些部分应当是主攻和主控的对象;计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。2006 年 5 月:6第 1 章 软件工程基础知识 在

22、软件项目管理中可以使用各种图形工具来辅助决策,下面对 Gantt 图的描述中,不正确的是 (5) 。A. Gantt 图表现了各个活动的持续时间B. Gantt 图表现了各个活动的起始时间C. Gantt 图反映了各个活动之间的依赖关系 D. Gantt 图表现了完成各个活动的进度2. PERT 网图与关键路径PERT 网图是一个由箭头(标识任务)和结点(标识图 1.6 所示。)组成的有向图。将网络方法用于工作计划安排的评审和检查,如图 1.6 任务网络图PERT 图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以

23、及如期完成整个工程的“关键路径”。关键路径(Critical Path)是由一连串的任务所组成的链,距离最大的一条路径。软件项目的管理加才会有效果。2010 年下半年:应该密切注视关键任务的进展情况。如果希望缩短工期,只有往关键任务中增使用 PERT 图进行进度安排,不能清晰地描述 (16) ,但可以给出哪些任务完成后才能开始另一些任务。下面 PERT图所示工程从A 到中的关键路径是(17),(图中省略了任务的开始和结束时刻)。(16)A.每个任务从何时开始(17)A.ABEGHIKB.每个任务到何时结束B.ABEGHJKC.各任务之间的并行情况C.ACEGHIKD.各任务之间的依赖关系D.A

24、CEGHJK 某软件项目的活动图如下所示。图中顶点表示项目里程碑,连接顶点的边表示包含的活动,则里程碑(16)在关键路径上,活动 FG 的松弛时间为 (17) 。(16) AB(17) A19BCB20CDC21DID247第 1 章 软件工程基础知识1.8.2 成本管理1. 成本估算方法一种常用的成本估算方法是先估计完成软件项目所需的工作量(人月数),然后根据每个人月的代价(金额)计算机软件的开发费用:开发费用 人月数×每个人月的代价另法是估计软件的规模(通常指源代码行数),然后根据每行源代码的平均开发费用(包括分析、设计、编码、测试所花的费用),计算机软件的开发费用:开发费用源代

25、码行数×每行平均费用。估算源代码行数时,可以请n 为有经验的,每位对软件给出 3 个估计值:nnnai-最少源代码行数(该软件可能的最小规模) bi-最大源代码行数(该软件可能的最大规模)mi-最可能的代码行数(该软件最可能的规模)= ai + 4mi + bi ,n 位的估算期望值的平均值 1就是代码行数的估算值。n然后计算出每位的估算期 Eå iEi6n12. 成本估算模型Putnam 模型和 COCOMO 模型是常用的成本估算模型。(1) Putnam 模型:是一种动态多变量模型,它是假设在软件开发的整个生存期中工作量的分布。(2) COCOMO 模型:是结构性成本模

26、型,是最精确、最易于使用的成本估算模型之一。该模型可以分为:1) 基本COCOMO 模型,是一个静态单变量模型,它是对整个软件系统进行估算。2) 中级 COCOMO 模型,是一个静态多变量模型。它将软件系统模型分为系统和部件两个层次,系统由部件把软件开发所需人力(成本)看作是程序大小和一系列“成本驱动属性”的函数。,它3) 详细 COCOMO 模型,它将软件系统模型分为系统、子系统和模块 3 个层次,它除包括中级模型所考虑的因素外, 还考虑了在需求分析、软件设计等每一步的成本驱动属性的影响。2006 年上半年: 使用 LOC (lines of code)度量软件规模的优点是 (9) 。(9)

27、A.容易计算 B.与使用的编程语言相关 C.与使用的开发模型有关 D.在设计之前就可以计算出 LOC 软件项目开发成本的估算依据,通常是开发成本估算模型,常用的模型有:IBM 模型Putnam 模型基本 COCOMO 模型中级 COCOMO 模型高级 OCOMO 模型其中(18)都是静态单变量模型。(18)AB. C. D. 1.8.3 风险管理1. 风险的定义nn关心未来:风险是否会导致软件项目失败? 关心变化:在用户需求、开发技术、目标的变化?,以及所有其他与项目及时工作和全面完成有关的实体中会发生什么样n关心选择:应采用什么方法和工具,应配置多少人力,在质量上强调到什么程度才能满足要求?

28、风险的特性:风险发生的概率和风险带来的损失。2. 风险的类型(1) 项目风险:指潜在的预算、进度、人力(及组织)、客户和需求等方面的问题以及它们对软件项目的影响。例如:项目复杂性、规模和结构不确定性等都是项目风险、项目风险威胁到项目计划,即如果项目风险变成现实,有可能会拖延项目的进度,增加项目的成本。(2) 技术风险:指潜在的设计、实现、接口、验证和维护等方面的问题。此外,规约的二义性、技术的不正确性,陈旧的技术和“先进的”技术也是技术风险因素。技术风险威胁到开发软件的质量及软件交付时间,如果技术风险比恩成现实,则开发工作可能变得很或根本不可能。(3) 商业风险:在信息系统项目业风险威胁到要开

29、发系统的生存能力。一般主要有 5 类商业风险:nnnnn市场风险:开发了一个没有人真正需要的优秀或系统策略风险:开发的不再符合公司的整体商业策略销售风险:开发了一个销售部门不知道如何去卖的管理风险:由于重点的转移或的变动而失去了高级管理层的支持预算风险:没有得到预算或人力上的保证8第 1 章 软件工程基础知识3. 风险管理活动(1) 风险识别试图系统化地确定对项目计划的威胁,风险识别的一个方法是建立风险条目检索表(文档化);常见的已知的及可的风险有:规模、商业风险、客户特性、过程定义、开发环境、构建的技术、数目及经验等。(2) 风险:又称风险估算,通过对各种风险发生的可能性和破坏性这两个方面进

30、行评估,并将它们按优先级别进行排列。在进行软件工程风险分析时,项目管理要进行四种风险评估活动,包括建立表示风险概率的尺度,描述风险引起的后果,估计风险影响的大小,确定风险估计的正确性。(3) 风险评估:定义风险参照水准,成本、进度和性能就是三种典型的风险参照水准,即对于成本超支、进度延期、性能降低有一个表明导致项目终止的水准;风险评估的四个步骤:定义项目的风险参考水平值、建立每一组与每一个参考水平值之间的关系、一组临界点以定义项目终止区域,该区域由一条曲线或不确定区域所界定、水平值。(4) 风险什么样的风险组合会影响参考这步所有风险分析活动只有一个目的,即辅助项目建立处理风险的策略。一个有效的

31、策略必须包含 3 个问题:1)风险避免;2)风险;3)风险管理及意外计划;如果软件项目组对于风险采用主动的方法,则避免是最好的策略。4. 风险度风险度(risk exposure)=风险损失*风险概率例如:正在开发的软件项目可能存在一个未将发现的错误,这个错误出现的概率是 0.5%,给公司造成的损失将是 100 万元,那么这个错误的风险2012 年上半年:度是 5000 元。若软件项目组对风险采用主动的方法,则 (19) 是最好的风险策略。(19)A风险避免2012 年下半年:B风险C风险消除D风险管理及意外计划 定义风险参照水准是 (19) 活动常用的技术。(19) A风险识别B风险C风险评

32、估D风险组织管理制程序员组1.8.41.是一种非正式的组织方式,小组成员完全平等,享有充分,小组成员通过协商作出技术决策,小组有高度的凝聚力,组内学术空气浓厚,有利于攻克技术难关。小组成员之间的通信是平行的,如果小组内有 n 个成员,则可能的通信信道是n(n-1)/2。适用于开发2. 主程序员组少(28 人),软件规模较小,每个开发技术水平都高的情况下。在以下情况下,适用主程序员组的方式比较合适。nnn软件开发多数比较缺乏经验;程序设计过程中有许多事务性的工作,例如,大量信息的和更新;多通信很费时间,将降低程序员的生产率。图 1.7 主程序员组的结构如图 1.7 所示,主程序员既懂管理,同时又

33、是技术很很棒的。而后备程序员是和主程序员水平相当,随时可替带主程序员工作的,编程负责项目相关的全部事务性工作,如维护项目资料库和项目文档等。3. 现代程序员组在主程序组的基础上,取消主程序员的行政管理工作,让其单纯搞技术,负责技术工作方面的质量,而加进行政组长负责管理方面的工作。现代程序员组如图 1.8、图 1.9、图 1.10 所示。9第 1 章 软件工程基础知识图 1.8 现代程序员组的结构图 1.9 大型项目的技术管理组织结构图 1.10 包含分散决策的组织方式2012 年上半年: (18) 最不适于采用无主程序员组的开发组织形式。(18)A项目开发人数少(如 3-4 人)的项目 B采用

34、新技术的项目 C大规模项目D确定性较小的项目1.9 模块化基本知识模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来调用等。的过程、函数、子程序或宏模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可的程序。地开发、测试,最后组装成完整10第 1 章 软件工程基础知识1.9.1 模块特性1. 可分解性如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。2. 可组装性如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。3.

35、可理解性如果一个模块可以作为一个4. 连续性的(不用参考其他模块)被理解,那么它就易于构造和修改。如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。5. 保护性如果模块内部出现异常情况,并且它的影响限制在模块内部,注意“连续性”和“保护性”的区别!影响其他模块,则错误引起的副作用就会被最小化。1.9.2 模块与模块的耦合性(7 种)耦合是对一个软件结构内不同模块之间互连程度的度量。耦合可以分成下列几种,它们之间的耦合度由高到低排列。1. 内容耦合直接操作或修改另一模块的数据,或不通过正常转入另一个模块。软件设计时应坚决2. 公共耦合内容耦合,应设计成

36、单、单出口的模块,避免连接。多个模块同一全局数据区。例如,C 语言中的 external 数据类型、磁盘文件等都是全局数据区。3. 外部耦合模块与软件以外的环境有关联。例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。4.耦合一模块明显把开关量、名字等信息送入另一模块,5. 标记耦合另一模块的功能。两个模块之间通过传递公共指针或地址相互作用的耦合。6. 数据耦合模块间通过传递信息。7. 非直接耦合(无耦合)模块间无任何关系,工作原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。总结:内公不好,家外被控了

37、,标志数年心血白非了!(内功不好,家外被控了,标志数年心血白费了!)1.9.3 模块的内聚性内聚是指一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部的概念的自然扩展。设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。1. 偶然内聚:一个模块的各成分之间毫无关系。比如:一组语句在程序的多处出现,为了节省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。2. 逻辑内聚:把几种逻辑上相关的功能组放在同一模块中。3. 瞬时内聚(时间内聚):一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。4. 过程内聚:一个模块的处理元素是相关的,而且必须按特定的次序执行。5. 通

38、信内聚:一个模块的所有成分都结合在同一个数据结构上。6. 顺序内聚:模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。7. 功能内聚:模块内的所有成分属于一个整体,完成单一的功能。在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。模块的高内聚、低耦合的原则称为模块也称为模块设计的原则。原则,11第 1 章 软件工程基础知识巧记:偶然逻辑,瞬间遗忘过程,打(通信)询问,顺序清楚,功能也搞定!1.9.4 模块的深度、宽度、扇出与扇入1. 深度:表示软件结构中的层数;2. 宽度:是软件结构中同一个层次上的模块总数的最大值;3. 扇入:一个模块的扇入是指直接调用该模块的模块的

39、个数;4. 扇出:一个模块调用的下层模块个数。图 1.11 模块结构图如图 1.11 所示,模块M 的深度为 4,宽度为 4,扇出为 4;模块C 的扇出为 3,扇入为 1。注意:模块设计原则:低扇出、高扇入。1.9.5 模块作用域和域软件设计时,模块的作用域应在域之内。1.9.6 模块化基础知识小结1. 通过模块的合并和分解,降低模块的耦合度。2. 模块的扇入应尽量大,扇出应尽量小。一个模块的扇入是指直接调用该模块的模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的重用性高,利用率高。扇出大表示模块的复杂度高。所以要高扇入,低扇出。3. 要将模块的作用范围限制在模块

40、的4. 降低模块之间的复杂性,避免“2006 年上半年: 模块的耦合度描述了 (16) 。(16)A模块内各种元素结合的程度C模块之间公共数据的数量范围之内。连接”。B模块内多个功能之间的接口D模块之间相互关联的程度 内聚是一种指标,表示一个模块 (17) 。(17)A代码优化的程度 C完成任务时及时程度2012 年下半年:B代码功能的集中程度D为了与其他模块连接所要完成的工作量 在软件设计阶段,划分模块的原则是:一个模块的(18)。(18)A作用范围应该在其范围之内 B范围应该在其作用范围之内C作用范围与范围互不包含D作用范围与范围不受任何限制1.10 什么是软件开发方法?有哪些主要方法?n

41、 软件开发方法:使用已定义好的技术集及符号表示习惯组织软件生产的过程。n 结构化方法、面向对象方法、JACKSON 方法、维也纳开发方法(VDM)等。1.10.1 结构化方法学结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。它的基本思想是自顶向下逐层分解。为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构与问题结构相对应。常用工具: 数据流图(DFD)、数据字典(DD)、实例-关系图(E-R 图)及描述处理的结构化语言、判定表、判定树。12第 1 章 软件工程基础知识1. 数据流图(DFD 图)数据流图主要由 4 种成分组成,如表 1.1 所示:表

42、1.1 数据流图元素数据流(data flow):由一组固定成分的数据组成,表示数据的流向。(process):描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流。文件(file):可以表示数据文件,也可以表示一个数据。源/宿(source/sink):源是指系统所需数据的发源地,宿(也称数据池)是指系统所产生的数据的归宿地。一数据流图示例(招聘信息管理系统)如图 1.12、图 1.13、图 1.14 所示:决策招聘系统要求致谢信息录用者信息录用职位图 1.12 顶层数据流图应聘职位职位要求2评估应聘者1接受申请 已受理的申请决策致谢信息录用职位录用者信息图

43、 1.13 0 层数据流图13未录用的应聘者表工资系统评估结果表应聘者部门经理应聘者应聘者信息工资系统部门经理职位应聘者应聘职位应聘者信息第 1 章 软件工程基础知识已受理的申请应聘职位1.1验证信息验证的申请1.2受理申请致谢信息应聘者信息录用决策职位要求2.1信息录用的应聘者2.3职位安排评价已受理的申请录用者信息录用职位2.2谢绝应聘者评估结果表谢绝决策未录用的应聘者表图 1.14 1 层数据流图2. 数据字典数据字典是关于数据的信息的集合也就是对数据流图中包含的所有元素的定义的集合。3. 结构化语言结构化语言实际上是一种半形式化语言,它的结构通常可分为内外两层。外层接近于形式化语言,而

44、内层近似于自然语言的描述。4. 实体-关系图(E-R 图)实体-关系图(Entity-Relabionship Diagram),简称 E-R 图(如图 1.15 所示),包含实体、关系和属性等 3 种基本成分。通常用矩形框代表实体,并用直线把实体(或关系)与其属性连接起来。图 1.15 用于数据库应用系统的 E-R 图1.10.2 结构化设计结构化设计通常可分为概要设计和详细设计,但是主要用于概要设计阶段。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口以及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。1. 概要设计经过需求分析阶段的工作,系统必须“做

45、什么”已经清楚了,概要设计的基本目的就是回答“概括地说,系统应该如实现?” 这个问题。概要设计的重要任务: 将一个复杂的系统按功能化分为模块、确定每个模块的功能、确定模块之间的调用关系、确定模块之间的接口(模块之间传递的信息)、评价模块的结构质量。(1) 概要设计中的信息流:变换流和事务流。2. 详细设计概要设计已经确定了每个模块的功能和接口,详细设计的任务就是为每个模块设计其实现的细节。详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,得出对目标系统的精确描述。(1) 详细设计阶段的内容n为每个模块进行详细的算法设计。14第 1 章 软件工程基础知识nnn为模块内部的数据结构进行设

46、计。对数据库进行物理设计。其他详细设计工具主要包括程序流程图(系统流程图)、盒图(N-S 图)、PAD 图和伪码(PDL)。(2) 人机界面设计人机界面的设计质量,直接影响用户对软件的评价。界面的美观、灵活和风格都很重要,但人机界面设计中最重要的也是最基本的目标是软件的易操作性。人机界面设计主要包括系统响应时间、用户帮助设计、出错信息处理和命令交互设计等几个方面。1.10.3 Jackson 方法上面讲的结构化设计方法是面向数据流的,另外还有一种面向数据结构的设计方法,Jackson 方法是最著名的面向数据结构的设计方法,而不是面向数据流的设计方法。Jackson 方法的基本步骤是:建立系统的

47、数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构适当的模块中。1.11 软件工具软件工具是指用于辅助软件开发、运行、维护、管理、支持等过程中的活动的软件。通常也称为 CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具。按软件过程的活动分为软件开发工具、软件维护工具和软件管理工具等。1.12 十二. 软件质量管理基础知识1.13 软件质量ISO/IEC 9126 软件质量模型可从软件功能性、可靠性、可用性、效率、可维护性、可移植性 6 个方面来衡量,如图 1.16所示。1. 功能性:

48、与功能及其指定的性质的一组软件属性。2. 可靠性:软件在规定的一段时间内和规定的条件下保持其性能水平有关的一组软件属性。也可以称为在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率。3. 可用性:与使用的难易程度及规定或隐含用户对使用方式所做的评价有关的软件属性。4. 效率:与在规定条件的性能水平与所用量之间的关系有关的一组软件属性。5. 可维护性:与软件维护的难易程序有关的一组软件属性。6. 可移植性:软件可从某一环境转移到另一环境的能力有关的一组属性。即软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件的可移植性。为了提高可移植性,应注意提高软件的设备性。采用表格驱动

49、程序有助于提高设备性。为了提高可移植性,还应有完备的文档资料。使用C 语言开发的系统软件具有较好的可移植性。图 1.16 ISO/IEC 软件质量模型2006 年下半年:15第 1 章 软件工程基础知识 按照 ISO/IEC 9126 软件质量度量模型定义,一个软件可靠性的子特性包括 (28) :(28)A.容错性和安全性B.容错性和适应性C.容错性和易恢复性D.易恢复性和安全性 某软件在运行初期运行在 Windows NT 环境中,现因某种,该软件需要在 UNIX 环境中运行,而且必须完成同样的功能。为适应这个要求,软件本身需要进行修改,而所需的工作量取决于该软件的(27)(27)A.可扩充

50、性2005 年 5 月:B.可靠性C.复用性D.可移植性 下列叙述中,与提高软件可移植性相关的是(18) A选择时间效率高的算C选择空间效率高的算法B尽可能减少注释D尽量用高级语言编写系统中对效率要求不高的部分1.14 代码评审技术常用方法有代码走查和代码1. 代码走查技术。程序员和测试员组成小组,通过逻辑运行程序。第一步:小组成员提前阅读设计规格书、程序文本等相关文档;第二步:利用测试用例,使程序逻辑运行,2. 代码程序的踪迹,发现、讨论、解决问题程序员和测试员组成小组。第一步:小组成员提前阅读设计规格书、程序文本等相关文档;第二步:召开程序3. 两者的区别会,开发读程序,小组讨论、发现、解

51、决问题。代码是一种正式的评审活动,而代码走查的讨论过程是非正式的。1.15 软件测试软件测试的费用已经超过软件开发费用的 30%左右。“高产”测试是指用少量的测试用例,发现被测试程序尽可能多的错误。注意:再高产的测试也最多发现软件 80%的错误!根据测试数据表明,测试现错误也就越多。发现软件的问题也多,则余留在软件中的未发1.15.1 软件测试经过的步骤软件测试要经过:单元测试>集成测试>确认测试>系统测试。1. 单元测试:对程序中每一个程序单元进的错误,该阶段涉及编码和详细设计文档。2. 集成测试:是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效

52、。3. 确认测试:主要是检查已实现的软件是否满足需求规格说明书中已确定了的各种需求。4. 系统测试:是把已确认的软件与其他系统元素(如硬件,其他支持软件、数据、人工等)结合在一起进软件是否可以支付使用。试,检查各个模块是否都实现规定的功能,从而发现模块在编码中或算法中试,以确定1.15.2 白盒测试白盒测试又称为结构测试。可以把程序看成装在一个透明盒子里,测试者(一般为编程者)完全知道程序的结构和处理算法。按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否能按预定要求正常工作。白盒测试多用于单元测试阶段。逻辑覆盖是主要的白盒测试技术。白盒测试时,确定测试数据应根据程序的内部逻辑和指定的覆盖方式。采用以下几种逻辑覆盖标准:1. 语句覆盖:设计测试用例,让程序的每个语句至少执行一次。2. 判定覆盖:又称分支覆盖,不仅每个语句至少执行一次,而且每个判定的每种可能的结果(分支)对至少执行一次。3. 条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖。16第 1 章

温馨提示

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

评论

0/150

提交评论