《软工第五版知识点总结办公文档工作总结 _办公文档-工作总结 .pdf》由会员分享,可在线阅读,更多相关《软工第五版知识点总结办公文档工作总结 _办公文档-工作总结 .pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章:软件工程学概述 1.1946 年,世界上第一台电子计算机诞生,从宏观角度而言,计算机软件的发展主要经历了以下三个阶段:(1)第一阶段程序设计阶段;(2)第二阶段软件工程阶段;(3)第三阶段软件过程阶段 2 软件危机:2.1 定义:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2.2主要是两个方面的问题:如 何 开 发 软 件 怎 样 满 足 对 软 件 日 益 增 长 的 需 求 如何维护软件数量不断膨胀的已有软件 2.3 主要表现:对软件开发成本和进度的估计常常很不准确。用户对为他们开发的软件往往不满意。软件产品的质量往往靠不住。软件常常是不可维护的。软件通常没有适当的文
2、档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高的速度太慢。2.4 产生软件危机的原因:1.软件本身的特点 不同于硬件:(1)软件是逻辑的,而不是物理的产品。(2)软件是由开发或工程化而形成的,没有明显的制造过程。(3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。2.软件人员的主观原因:开发与维护的方法不正确。早期软件开发个体化。至今,忽视软件需求分析的重要性,轻视维护;困境中的消极态度;2.5 解决软件危机的途径:a 正确认识软件,软件包括:程序是按事先设计的功能和性能要求编写的指令序列;数据是使程序能正常操纵信息的
3、数据结构;文档是与程序开发、维护和使用有关的图文材料。b 推广使用在实践中总结出来的开发软件的成功技术和方法,研究、探索更好更有效的技术和方法 c 开发和使用更好的软件工具 d 有必要的组织管理措施 3.软件工程;指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到得最好得技术方法结合起来.软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。4.软件工程方法学 A:传统方法学:生命周期方法学或结构化范型 采用结构化技术(结构化分析、设计和实现)把软件生命周期划分成若干阶段:每一阶段结束前都必须进行
4、技术审查和管理复审,试图以每一阶段的正确性和完整性来保证最终产品的质量。面向行为或面向数据,把数据和操作人为分离,增加软件开发与维护的难度。应用广泛 B:面向对象方法学 数据和数据的操作是被封闭在一个个称为“对象“的统一体中 把所有对象都划分成类。类是对具有相同数据和相同操作的一组相似对象的定义。继承:下层派生类自动拥有上层基类中定义的数据和操作 对象之间则是通过”消息”(message”)进行相互联系的,对象是数据处理的主体 采用该方法可以大大提高软件的可重用性,降低软件的调试、维护难度,而且特别适合于需要多人合作的大型软件的开发。C:二者的区别:(1)面向对象方法学比传统方法学更适合开发大
5、型软件。(2)传统方法学强调对系统需求认识的完整性,维护代价大。面向对象是主动地多次反复迭代,不断深化的过程,继承性使得系统易于扩充,降低了维护的代价。事实上,人类认识过程是一个渐进的过程。5.软件生命周期:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程。根据软件状态、特征、开发活动的目的,可以分为不同阶段,各阶段划分尚未统一,但都包括:软件定义、软件开发、软件使用和维护三个时期。各阶段的基本任务:一软件定义:(1)问题定义:要解决的问题是什么?(2)可行性研究:有可行的解决办法吗?(3)需求分析:为解决问题,目标系统必须做什么?(数据流图,数据字典,算法描述);二软件开发
6、:(1)总体设计:概括地说,应如何解决该问题?(2)详细设计:应怎样具体实现这个系统?(3)编码和单元测试:编写代码,测试模块;(4)综合测试:通过各类型测试,使软件达到要求最基本的测试是集成测试和验收测试方法。三软件维护:通过各种维护活动使系统持久地满足用户地需要 四类维护:改正性维护:诊断和改正使用过程中发现的软件错误。适应性维护:修改软件以适应环境变化。完善性维护:根据用户要求,改进或扩充软件。预防性维护:修改软件为将来的维护预先准备。软件生存周期模型瀑布模型:特点:上一阶段的变换结果是下一阶段的变换的输入,相邻两个阶段具有因果关系,紧密相联。6.软件过程:为获得高质量软件所需要完成的一
7、系列任务的框架,它规定了完成各项任务的工作步骤.。软件生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,也称为过程模型。7.五种模型:A;瀑布模型(线形模型):瀑布模型是将软件生存周期各活动规定为依线性顺序联接的若干阶段的模型。特点:1 段间具有顺序性和依赖性;2.推迟实现的观点 3.质量保证的观点 优点:文档驱动:强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证.提供了软件开发的基本框架,有利于大型软件开发过程的人员的组织和管理 有利于开发方法和工具的使用 提高了软件的质量和效率 缺点:初始阶段不可能指出
8、全部需求(系统可能不满足客户的需求)几乎完全依赖于书面的规格说明,可能导致最终开发出的软件不能真正满足用户段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期
9、软件开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按的需要.B 快速原型模型:快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。包括两大步骤:进行试验开发,得出产品“原型”;在原型基础上开发出较为满意的软件产品。优点:不带反馈环,克服了瀑布模型的部分缺陷,减少了软件需求不明确给开发工作带来的风险。(关注满足客户需求)缺点:可能导致系统设计差,效率低,难于维护。C 增量模型:增量模型也称为渐增模型,把软件产品作为一系列的增量构件来设计、编码、集成和测试。构件:由多个相互作用的模块构成,并能够完
10、成特定的功能 优点:能在较短时间内向用户提交可完成部分工作的产品。用户有较充裕的时间学习和适应新产品。困难:集成新增量构件时必须不破坏已开发出的产品。即要求软件具有开放的结构。风险更大的增量模型:优点:不同构件可并行构建 缺点:冒构件无法集成到一起的风险 D:螺旋模型:在每一个阶段之前都增加了风险分析过程的快速原型模型。(适用于内部开发的大规模软件项目。要求开发人员具有风险分析和排除风险的经验及专门知识。优点:(风险驱动)(1)对可选方案和约束条件的强调有利于已有软件的重用;(2)有助于把软件质量作为软件开发的一个重要目标;(3)减少了过多测试或测试不足所带来的风险;(4)在螺旋模型中维护只是
11、模型的另一个周期,在维护和开发之间并没有本质区别。缺点:风险分析人员需要有经验且经过充分训练。E 喷泉模型:相对螺旋模型,喷泉模型引入了“面向对象的分析设计方法”。由于,整个过程看起来像喷泉从喷出到落下到再喷出的周而复始过程产生的光滑水柱,属自底向上的工作方式。特点:件过程各阶段的无缝衔接性:各阶段均采用了“对象”这一统一范式 具有螺旋模型的“迭代演化”特点 对软件复用和软件生命周期内多项开发活动的并行与集成提供了支持。区别 模型 优点 缺点 瀑布模型 文档驱动 系统可能不满足客户的需求 快速原型模型 关注满足客户需求 可能导致系统设计差、效率低,难于维护 增量模型 开发早期反馈及时,易于维护
12、 需要开放式体系结构,可能会设计差、效率低 螺旋模型 风险驱动 风险分析人员需要有经验且经过充分训练 段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件
13、开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按第二章 可行性研究 1.可行性研究的目的 任务 实质 目的:用最小的代价在尽可能短的时间内确定问题是否能够解决.任务:对以后的行动方针提出建议,制定工程实施计划。实质是:在较高层次上以较抽象的方式进行系统分析和设计的过程 首先需进一步分析和澄清问题定义 导出系统的逻辑模型 探索出若干种可供选择的主要解法(即系统实现方案)最后仔细研究每种解法的可行性。2.可行性研究分哪几个方面去研究?(1)技术可行性 使用现有的技术能实现这个系统吗?(2)经济可行性 这个系统的经济效益能超过它的开发成本吗
14、?(3)操作可行性 系统的操作方式在这个用户组织内行得通吗?(4)社会可行性 包括法律可行性和用户操作可行性。法律可行性考虑要开发系统是否存在任何侵犯、妨碍和责任问题。用户操作可行性考虑待开发软件的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。3.可行性研究的过程:(1)、复查系统规模和目标;(2)、研究目前正在使用的系统;(3)、导出新系统的高层逻辑模型(数据流图和数据字典);(4)、重新定义问题(前四个步骤实质构成一个循环,直到提出的逻辑模型完全符合系统目标。)(5)、导出和评价供选择的解法;(6)、推荐行动方针;(7)草拟开发计划;(8)书写文档提交审查。最后
15、生成可行性论证报告a、系统概述(主要是对当前系统极其存在的问题的简单描述;对新系统的开发目的、目标、业务对象和范围;新系统和它各个子系统的功能与特性等。)b、可行性分析(这是报告的主体。包括新系统在经济上、技术上、运行上、法律上的可行性,以及对新系统的主客观条件的分析。)c、拟订开发计划(包括工程进度,人员配备情况,资源配备情况,估计出每个阶段的成本、约束条件)d、结论意见(综合上述分析,说明新系统是否可行,结论可区分为三类:深刻立即进行 推迟进行 不能或不值得进行)、4、系统流程图:是用来概括描述系统物理模型的一种传统工具。基本思想是用图形符号以黑盒子的形式描绘系统里的每个部件(程序、文件、
16、数据库、表格、人工过程等)。5、数据流图:(DFD)描绘信息系统的逻辑模型。没有任何具体的物理元素,描绘信息流和数据从输入移动到输出的过程所经受的变换,即在系统中流动和被处理的逻辑过程.特点:它是逻辑系统的图形表示,容易理解,是分析员和用户间极好的通信工具;设计数据流图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何具体实现这些功能,是今后进行软件设计很好的出发点。6、数据存储和数据流都是数据。一是静止状态的数据 二是处于运动中的数据。7、分层 DFD 图的优点:便于实现,便于使用,便于阅读。8、数据字典DD:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据
17、字典的任务是:对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。其内容有图形元素的名字、别名或编号、分类、描述、定义、位置等。段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化
18、问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按数据字典的内容 (1)数据流 (2)数据流分量(即数据元素)(3)数据存储(4)处理 定义数据的方法 由数据元素组成数据的方式有下述几种基本类型:(1)顺序:即以确定次序连接两个或多个分量。(2)选择:即从两个或多个可能的元素中选取一个。(3)重复:即把指定的分量重复零次或多次。数据字典定义符号:符号 含 义 例 子 =被定义为 +与 x=a+b,则表示 x 由 a 和 b 组成 或 x=a,b,则表
19、示 x 由 a 或由 b 组成 重复 x=a,则表示 x 由 0 个或多个 a 组成 M n 重复 x=3a8,则表示 x 中至少出现 3 次 a,最多出现 8 次 ()可选 x=(a),则表示 a 在 x 中出现,也可不出现 *注释符 表示在两个*之间的内容为词条的注释 第三章 需求分析 1、需求工程的5个阶段:(1)需求获取;(2)需求建模;(3)形成需求规格;4)需求验证;(5)需求管理 2、需求分析:(软件定义时期的最后一个阶段)软件需求指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。基本任务:准确的回答“系统必须做什么?”这个问题。具体任务:确定对系统的综合要求(功能需
20、求:基本需求,确定目标系统必须具备的所有功能 性能需求:指定系统必须满足的定时约束或容量约束。如从终端输入数据到系统后多长时间内可有反映等。可靠性和可用性需求:量化了用户可以使用系统的程度 出错处理需求:对环境错误而非系统自身错误应如何响应 接口需求:应用系统与它的环境通信的格式 约束:在设计或实现应用系统时应遵守的限制条件 逆向需求:能澄清真实需求且可消除可能发生的误解的 将来可能提出的需求);分析系统的数据要求(建立数据模型);导出系统的逻辑模型(数据流图,实体联系图,状态转换图,数据字典);修正系统开发计划(成本,进度);附加:开发原形系统;验证段第一阶段程序设计阶段第二阶段软件工程阶段
21、第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按软件需求分析的正确性;编写软件需求规
22、格说明书 3、与用户沟通获取需求的方法:访谈;面向数据流自顶向下求精;简易的应用规格说明技术(-信息系统领域使用的主流技术)典型过程:1)初步访谈 2)审查产品需求 3)会议讨论 4)分成小组为每张列表中项目制定小型规格说明 5)每个与会者指定出产品的一整套确认标准,并提交会议讨论 6)一名或多名与会者根据会议成果起草完整的软件需求规格说明书;快速建立软件原型(最准确、最有效、最强大的需求分析技术。快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行程序。)【快速原型具有的特性:快速;容易修改】;4、需求分析过程建立三种模型:数据模型-实体-联系图(描绘对象及数据对象之间的关系,是用于建
23、立数据模型的图形);功能模型-数据流图(描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,因此,数据流图是建立功能模型的基础);行为模型-状态转换图(指明了作为外部事件结果的系统行为);5、软件需求说明书包括:引言;数据描述(数据流图,数据字典);功能描述;性能描述;特殊需求;6、实体联系图(ER图):三要素:数据对象(是指对软件必须理解的复合信息的抽象及外部实体);数据对象的属性(属性定义了数据对象的性质,把其属性定义为“标识符”);数据对象之间的联系(一对一联系;一对多联系;多对多联系,联系也可能有属性)ER 图:实体,关系,属性;矩形框-实体;菱形框-实体之间的
24、关系;圆角或椭圆-属性 7、数据规范化:范式定义消除数据冗余的程度。1NF 数据冗余程度最大;5NF 数据冗余程度最小;第一范式:每个属性值都必须是原子值,即仅仅是一个简单指而不含内部结构;第二范式:满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定);第三范式:符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)8、状态转换图:通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为。(1)状态:任何可以被观察到的系统行为模式,一个状态代表系
25、统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。每一个状态图只有一个初态和零个或多个终态 状态图既可表示系统循环运行过程,也可表示系统单程生命期。(2)事件:在某个特定时刻发生的事情,是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象.(3)符号:初态:实心圆 终态:同心圆 中间状态:两条水平横线分开的圆角矩形 上部分:状态名称,必须有 中间部分:状态变量的名字和值,可选 下部分:活动表,可选 Entry 事件:进入该状态的动作 exit:退出 do 事件:指定在该
26、状态下的动作 状态图中两个状态之间带箭头的连线称为状态转换,剪头指明了转换方向!9、其他图形工具:层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构:Warnier 图(用树形你结构描绘信息的逻辑组织);IPO 图(输入,处理,输出图)10、从哪些方面验证软件需求的正确性:(1)一致性:所有需求必须是一致的,任何一条需求不能和其他需求相矛盾;(2)完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;(3)现实性:指定的需求应该是现有的硬件技术和软件技术基段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇
27、到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按本上可以实现的;(4)有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。第五章 总体设计 1.总
28、体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。组成系统的物理元素程序 文件 数据库 人工过程 文档等 总体设计的另一项重要任务是设计软件的结构,也就是确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。2、总体设计通常由两个阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。3、典型的总体设计过程:(1)设想供选择的方案(数据流图是总体设计的根本出发点);(2)选取合理的方案;(3)推荐最佳方案;(4)功能分解(大型系统的程序设计,通常分为两个阶段:结构设计:确定系统由哪些模块组成,以及这些模块之间的相互关系。总体设计阶段。过程设计:确定
29、每个模块的处理过程。详细设计阶段。);(5)设计软结构;(6)设计数据库;(7)制定测试计划;(8)书写文档;(9)技术审查和管理复审 4、模块:由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件。5、模块化:把软件划分为独立命名且可独立访问的模块。好处:降低了系统的复杂性,使得系统容易修改 也推动了系统各个部分的并行开发,从而提高了软件的生产效率。模块划分的越多:模块本身的复杂度和工作量随着模块变小而减小 模块的接口工作量却随着模块数的增加而增大。6、抽象(人类在认识复杂现象的过程中实用的最强有力的思维工具就是抽象):集中考虑和当前问题有关的方面,而忽略
30、和当前问题无关的方面。7、逐步求精(是人类解决复杂问题时采用的基本方法):为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。求精实际上是细化过程。抽象与求精是一对互补的概念。8、信息隐藏:模块划分的一个原则,即每个模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块进行访问。9、局部化是指把一些关系密切的软件元素物理地放得彼此靠近,如在模块中使用局部数据元素。局部化有助于实现信息隐藏。10、模块独立:是模块化、抽象、信息隐藏和局部化概念的结果。若一个模块功能独立且与其它模块间没有太多的相互作用,则称此模块具有模块独立性。坚持模块的独立性是获得良好设计的关键:1)模块化程度较高
31、的软件容易开发;2)模块化程度较高的软件也比较容易测试和维护;3)有利于模块的移植 11、模块独立性:两个定性度量标准:耦合:用于衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚:用于衡量一个模块内部各个元素间彼此结合的紧密程度。模块独立性比较强的模块应是高内聚低耦合的模块。12、耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需
32、求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按 设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。非直接耦合:两个模块之间完全独立没有任何连接,它们之间的联系完全是通过主模块的控制和调
33、用来实现的。数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数来交换输入、输出信息的。(数据耦合是低耦合,系统中至少必须存在这种耦合,一般系统可以只包含数据耦合.)特征耦合:把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素。控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。内容耦合:两个模块之间就发生内容耦合的情形:(1)一模块直接访问另一模块的内部数据;(2)一模块不通过正常入口转到另一模块内部;(3)两模块有一部分程序代码重迭(只
34、可能出现在汇编语言中);(4)一个模块有多个入口。13、内聚标志着一个模块内部各个元素间彼此结合的紧密程度。设计时应该力求做到高内聚,可以采用中等程度的内聚,坚决不要使用低内聚。偶然内聚:模块内各部分之间没有联系,或者联系很松散,是内聚程度最低的模块。逻辑内聚:若一个模块完成的任务在逻辑上相同或相似,时间内聚:时间内聚又称为经典内聚。这种模块的各个功能必须在同一时间段内执行。过程内聚:一个模块内的处理元素是相关的,且必须以特定次序执行。使用程序流程图做为工具,把流程图中的某一部分划出组成模块,就得到过程内聚模块。通信内聚:如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,
35、则称之为通信内聚模块。顺序内聚:若一个模块内处理元素与同一个功能密切相关,且这些处理必须顺序执行(一个段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件
36、开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按处理的输出数据作数据为下一个处理的输入),则称为顺序内聚。功能内聚:一个模块中各个部分都是完成某一具体功能必不可少的组成部分,则称该模块为功能内聚模块。(功能性内聚是最高程度的内聚,优点是模块的功能明确,模块间耦合简单。)14、启发规则:1)改进软件结构提高模块独立性(通过模块分解或合并,降低耦合提高内聚);2)模块规模应适中(过大模块:分解后不应降低模块独立性;过小模块:只有一模块调用它时,可合并到上级模块);3)深度,宽度,扇出和扇入都应适当(深度表示软件结构中控制的层数。宽度是软件
37、结构内同一层次上模块总数的最大值。扇出是一个模块直接控制的模块数目。扇入表明有多少个上级模块直接调用它。);4)模块的作用域应该在控制域之内(作用域:受该模块内一个判定影响的所有模块集合 控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。);5)力争降低模块接口的复杂程度(仔细设计模块接口,使得信息传递简单并和模块的功能一致.);6)设计单入口单出口的模块(从顶部进入并从底部退出的模块容易理解和维护,避免出现模块间的内容耦合.);7)模块功能应该可以预测(只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的.);15、描绘软件结构的图形工具 :一、层次图 (层次图用来描绘
38、软件的层次结构,很适用于在自顶向下设计软件的过程中使用。)层次图(也称 H 图)是在总体设计阶段最常使用的图形工具之一,它常用于描绘软件的层次结构。层次图中的每个方框代表一个模块,方框间的连线表示模块间的调用关系。二、HIPO 图 HIPO 图实际上由 H 图和 IPO 图两部分组成。H 图即层次图,为使 HIPO 图具有可跟踪性,在 H 图里除了最顶层的方框之外,每个方框都加了编号,编号规则和数据流图的编号规则相同;三、结构图 结构图中的每个矩形框代表一个模块,框内注明模块的名字或主要功能;方框之间的剪头表示模块的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。箭头
39、尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。16、面向数据流的设计方法 目标:给出设计软件结构的一个系统化的途径。目标系统的 DFD 结构化设计方法(SD)目标系统的 SC SC 图表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。17:信息流的类型决定了映射的方法:(1)交换流:信息沿着输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后在沿输出通路变换成外部形式离开软件系统,当数据流图具有这些特征时,这种信息流就叫做交换流。(2)事务流:数据沿输入通路到达处理 T,这个处理根据输入数据的类型在若干个动
40、作序列中选出一个来执行。(T 称为事务中心,其任务是接收输入数据,分析每个事务以确定它的类型,根据事务类型选取一条活动通路。)第六章:详细设计 1、详细设计的根本目标:确定应该怎样具体地实现所要求的系统。2、三种基本的控制结构:顺序,选择和循环 段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件
41、危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按3、详细设计的原则:1)模块的逻辑描述正确可靠、清晰易读。(2)采用结构化程序设计方法,改善控制结构,降低程序复杂度,提高程序的可读性、可测试性和可维护性。4、结构化程序设计技术是一种设计程序的技术。它采用自顶向下、逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序、选择和循环三种控制结构。5、人机界面设计:过程中遇到的问题:系统响应时间
42、、用户帮助设施、出错信息处理和命令交互。(1)系统响应时间指从用户完成某个控制动作到软件给出预期的响应之间的这段时间。两个重要属性:长度和易变性指系统响应时间相对于平均响应时间的偏差,;6、人机界面设计指南:一般交互指南;信息显示指南;数据输入指南 7、过程设计的工具:描述程序处理过程的工具叫做过程设计的工具,它可以分为以下三类:图形工具 表格工具 语言工具 8、程序流程图:优点:对控制流程的描绘较直观,便于掌握。9、盒图(N-S图)特点:(1)功能域有明确的规定,并且可以很直观地从 N-S图上看出来;(2)不可能任意转移控制;(3)很容易确定局部和全程数据的作用域;(4)很容易表现嵌套关系,
43、也可以表示模块的层次结构。10、PAD图(问题分析图):采用二维树形结构图表示程序的控制流。11、判定表:左上部:过程执行期间的所有条件(或所有判断)。左下部:与一个具体过程(或模块)有关的所有处理。右上部:各种可能的条件组合。右下部:每一种条件组合所对应的应做的工作。12、判定树:13、过程设计语言(PDL):也称伪码 PDL 是一种用于描述功能模块的算法设计和加工细节的语言,使用自然语言的词汇,同时使用程序设计语言的语法,称为设计程序用语言。它是一种伪代码。PDL-关键词+自然语言 第七章 实现 1、通常把编码和测试统称为实现。2、编码:把软件设计结果翻译成用某种程序设计语言书写的程序。3
44、、软件测试在软件生命周期中横跨两个阶段:单元测试:在编写出每个模块之后就对它做必要的测试,模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。综合测试:对软件系统进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。4、编码时选择程序设计语言的实用标准:(1)系统用户的要求;(2)可以使用的编译程序;(3)可以得到的软件工具;(4)工程规模;(5)程序员的知识;(6)软件可移植性要求;(7)软件的应用领域;5、软件测试:目标:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方
45、案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。【测试阶段的根本任务是发现并改正软件中的错误。】6、测试的定义:根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,以发现程序错误的过程。(为了发现程序中的错误而执行程序的过程)7、软件测试准则:所有的测试都应该能追溯到用户需求;应该远在测试开始之前就制定出测段第一阶段程序设计阶段第二阶段软件工程阶段第三阶段软件过程阶段软件危机定义是指在计算机软件的开发和维护过程中所遇到的一系列严重问题主要是两个方面的问题如何开发软件怎样满足对软件日益增长的需求如何维护软件意软件产品的质量往往靠不住软件常常是
46、不可维护的软件通常没有适当的文档料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度太慢产生软件危机的原因软件本身的特点不同于硬件软件是逻辑的而不和老化问题但它存在退化问题开发人员必须维护软件软件人员的主观原因开发与维护的方法不正确早期软件开发个体化至今忽视软件需求分析的重要性轻视维护困境中的消极态度解决软件危机的途径正确认识软件软件包括程序是按试计划;把 Pareto 原理应用到软件测试中;应该从“小规模”促使开始,并逐步进行“大规模”测试;穷举测试是不可能的(把程序所有可能的执行路径都检查一遍的测试);为了达到最佳的测试效果,应该有独立的第三方从事测试工作;8、测试方法
47、:黑盒测试又称为功能测试;白盒测试称为结构测试 9、测试过程:(1)模块测试(单元测试):把每个模块作为一个单独的实体来测试【编码和详细设计的错误】;(2)子系统测试(集成测试):把经过单元测试的模块放在一起形成一个子系统测试【测试模块的接口】;(3)系统测试(集成测试):把经过测试的子系统装配成一个完整的系统来测试;(4)验收测试(确认测试):把软件系统作为单一的实体进行测试【在用户积极参与下进行】;(5)平行运行:同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。10、单元测试(主要使用白盒测试技术):单元测试集中检测软件设计的最小单元-模块;其有两种不同类型的
48、测试方法:人工测试和计算机测试;11、单元测试重点:模块接口;局部数据结构;重要的执行通路;出错处理通路;边界条件(边界测试是单元测试中最后的也可能是最重要的任务);12、集成测试:是测试和组装软件的系统化技术.主要目标是发现与接口有关的问题。13、由模块组装成程序时的两种方法:非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。渐增式测试:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。14、当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。15、自顶向下集成:从主控制模块开始
49、,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。模块组装可使用深度优先或者宽度优先的策略:深度优先:先组装在软件结构的一条主控制通路上的所有模块。选择一条主控制通路取决于应用的特点,并且有很大任意性。宽度优先:沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。16、自底向上集成:从“原子”模块(即最低层的模块)开始组装和测试。17、不同集成测试策略的比较:自顶向下测试方法的主要优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。主要缺点:需要存根程序,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力。
50、自底向上测试方法的优缺点刚好相反。18、确认测试:(验证测试)【黑盒测试法】目标是验证软件的有效性。软件有效性:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。19、Alpha 测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。Beta 测试:由软件的最终用户们在客户场所进行,开发者通常不在 Beta 测试的现场。20、白盒测试技术:(结构测试):在测试过程的早期阶段使用(1)设计测试方案是测试阶段的关键技术问题。21、逻辑覆盖法:逻辑覆盖测试方法通常采用流程图来设计测试用例,它考察的重点是图中的判定框,因为这些判定通常是与选择结构有关或是与循环结构有关,是