软件工程总复习 2_第1页
软件工程总复习 2_第2页
软件工程总复习 2_第3页
软件工程总复习 2_第4页
软件工程总复习 2_第5页
已阅读5页,还剩188页未读 继续免费阅读

下载本文档

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

文档简介

1、课件制作人:谢希仁1 软件与软件危机1.1 软件的定义指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。l数据结构,使得程序可以充分利用信息。l描述程序操作和使用的文档。1.1 软件的定义指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。l数据结构,使得程序可以充分利用信息。l描述程序操作和使用的文档。课件制作人:谢希仁1.2软件危机l许多软件项目不能满足客户的要求。l许多软件项目超出预算和时间安排。l软件受其自身特点的影响,生产过程不象硬件那样规范,受人的因素和外界影响很大,在软件生产的各阶段都会引入不同程度的错误,造成不能预期完成任务

2、,致使成本上升,甚至导致软件失败。课件制作人:谢希仁软件危机的表现l 对软件开发成本和进度的估计常常很不正确。l 用户对“已完成的”软件系统不满意的现象经常发生。l 软件产品的质量往往靠不住。l 软件常常是不可维护的。l 软件通常没有适当的文档资料。l 软件成本在计算机系统总成本中所占的比例逐年上升。l 软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。课件制作人:谢希仁软件危机的原因l 软件是逻辑产品,开发进度、成本难以估计。l 缺乏或不完整、不一致的文档给维护带来困难。l 用户对软件需求的描述往往不够精确,有遗漏,有二义。l 软件开发人员对需求的理解与用户的本来愿望有差异。l

3、 大型软件项目需多人协同完成,缺乏管理经验。l 开发人员不能有效地、独立自主地处理大型软件的全部关系。l 缺乏有力的方法学和工具的支持。l 软件项目的特殊性和人类智力的局限性。课件制作人:谢希仁1.3 软件工程的发展 面向过程的开发方法(传统的)面向过程的开发方法(传统的) 面向对象的开发方法面向对象的开发方法 基于构件的开发方法基于构件的开发方法 面向过程的面向过程的(传统的)(传统的) 面向对象的面向对象的 基于构件的基于构件的课件制作人:谢希仁 是一种是一种面向数据流面向数据流的开发方法,是现有的软件的开发方法,是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点开发方法中最成熟,应

4、用最广泛的方法,主要特点是快速,自然和方便。是快速,自然和方便。 结构化方法总的指导思想是自顶向下、逐步求结构化方法总的指导思想是自顶向下、逐步求精,精,以数据流,数据的封闭性准则来逐层分解的,以数据流,数据的封闭性准则来逐层分解的,它的基本原则是功能的分解与抽象。它的基本原则是功能的分解与抽象。结构化方法强调结构的合理性。提出了一组提结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如高软件结构质量的准则,如功能的分解与抽象、模功能的分解与抽象、模块独立性、信息屏蔽等。块独立性、信息屏蔽等。课件制作人:谢希仁JACKSON方法是一种方法是一种面向数据结构面向数据结构的设计方的设计

5、方法。强调程序结构与问题结构相对应。法。强调程序结构与问题结构相对应。JACKSON方法由两部分构成:方法由两部分构成:1 1、JSP(Jackson structuredProgramming) (杰克逊结构程序设计(杰克逊结构程序设计 )2、JSD (Jackson System Development)课件制作人:谢希仁面向对象软件工程面向对象软件工程 OOSD OOSD(Object-Oriented Software DevelopmentObject-Oriented Software Development)法这是法这是8080年代推出的一种全新的软件开发方法。非常年代推出的一种

6、全新的软件开发方法。非常实用而强有力,被誉为实用而强有力,被誉为9090年代软件的核心技术之一。年代软件的核心技术之一。 其基本思想是:对问题领域进行自然的分割,以更其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。法以对象作为最基本的元素,是分析和解决问题的核心。课

7、件制作人:谢希仁2.2 软件生存期模型l 软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。l 划分软件生存周期的阶段时所应遵循的基本原则是各阶段的任务尽可能相对独立。l 软件开发模型是对软件过程的建模u边做边改模型u瀑布模型u原型模型u增量模型u螺旋模型uRUP过程u敏捷过程u极限编程u微软过程模型课件制作人:谢希仁2.2.1边做边改模型 遗憾的是,许多产品都是使用“边做边改”模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。 课件制作人:谢希仁2.2.2瀑布模型 1970年Winston Royc

8、e提出了著名的瀑布模型,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。该模型将基本的过程活动、描述、开发、有效性验证和进化,看成是一些界限分明的独立的过程阶段,如:需求描述阶段、软件设计阶段、实现阶段、测试阶段等。 该模型也可以看成是软件的生命周期模型。该模型是计划驱动的,理论上,在开始工作之前,必须对所有的过程活动制定计划并给出进度安排。课件制作人:谢希仁课件制作人:谢希仁瀑布模型的特点1阶段间具有顺序性和依赖性关系l顺序性的含义是必须待前一阶段的工作完成之后,才能进行下一阶段的工作。l依赖性的含义是前一阶段的输出就是后一阶段的输入,只有前一阶段的输出正确,后一阶段的工作才有可能获

9、得正确的结果。课件制作人:谢希仁2.2.3快速原型模型 由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次或多次:l 第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求。l 第二次则在此基础上获得较为满意的软件产品。需求分析原型开发与建模原型评价系统设计系统实现测用户反馈课件制作人:谢希仁快速原型模型特点快速原型模型特点l 在需求定义之前,需要快速构建一个系统。l 根据构建系统的优缺点,用户给开发人员提出反馈意见。l 根据反馈意见修改软件需求规格,以便系统可以更正确地反映用户的需求。l 减少各种假设以及风险。课

10、件制作人:谢希仁2.2.4增量模型l 在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成 。l 增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。 课件制作人:谢希仁l 在使用增量模型时,第一个增量往往是实现基本需求的核心产品。l 核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发

11、布。l 这个过程在每个增量发布后不断重复,直到产生最终的完善产品。课件制作人:谢希仁增量模型也存在以下缺陷(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。(2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。课件制作人:谢希仁增量模型总结增量模型总结n融合了瀑布模型和原型的迭代特征。融合了瀑布模型和原型的迭代特征。n每一个增量均发布一个可操作产品。每一个增量均发布一个可操作产品。课件制作人:谢

12、希仁2.2.5螺旋模型 螺旋模型是目前软件开发中最常用的一种软件开发模型,是在组合瀑布模型与快速原型模型基础上演变而成的,尤其适用于大型软件的开发。 螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即:l 制定计划确定软件目标,选定实施方案,弄清项目开发的限制条件。l 风险分析分析所选方案,考虑如何识别和消除风险。l 工程实现实施软件开发。l 评审评价开发工作,提出修正建议。课件制作人:谢希仁 课件制作人:谢希仁螺旋模型的限制条件 (1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。 (2)如果执行风

13、险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。 (3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。课件制作人:谢希仁 螺旋模型总结螺旋模型总结n基于风险驱动的开发模型,基于风险驱动的开发模型, 使用原型法或使用原型法或其它方法来尽量降低风险。其它方法来尽量降低风险。n适用于需求不明确的大规模软件项目。适用于需求不明确的大规模软件项目。课件制作人:谢希仁增量模型和螺旋模型的主要区别(1)增量模型的通过避免使用未成熟技术和经常的客户反馈等方法减少风险;而螺旋模型中直接增加了风险分析,评价所选方案,识别和消除风险。(2)增

14、量模型经常是先做总体需求分析和设计,然后在编码和测试中逐个增量开发;螺旋模型在每个开发周期内采用简化瀑布模型或快速模型。(3)增量模型通过迭代来逐步添加功能和需求,以完善产品;螺旋模型是事先定义大部分需求,开发过程中计划性比较强。课件制作人:谢希仁 将系统看作若干功能模块的集合,每个功能又可将系统看作若干功能模块的集合,每个功能又可以分解为子功能以分解为子功能, ,子功能还可继续分解子功能还可继续分解, ,分解的结果即分解的结果即是系统的雏形。是系统的雏形。存在问题存在问题1. 1. 需要人工完成需要人工完成2. 2. 无法对描述的准确度进行验证。无法对描述的准确度进行验证。3. 3. 难以适

15、应需求的变化。难以适应需求的变化。问题空间问题空间功能功能子功能子功能映射映射3-1.3 需求分析方法课件制作人:谢希仁分解:分解:对于一个复杂的系统,对于一个复杂的系统,为了将复杂性降低到可以掌为了将复杂性降低到可以掌握的程度,可以把大问题分握的程度,可以把大问题分解成若干小问题,然后分别解成若干小问题,然后分别解决(如右图)。解决(如右图)。抽象:抽象:分解可以分层进行,即先考虑问题最本质的分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去属性,暂把细节略去, ,以后再逐层添加细节,直至涉以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个系及到最详细的内容,这种用

16、最本质的属性表示一个系统的方法就是统的方法就是“抽象抽象”。1.11.21.3x2132.12.22.31.11.33-1.4 结构化分析方法3-1.4.1 SA法的基本思想 “分解”和“抽象”。课件制作人:谢希仁 基本思想与步骤基本思想与步骤1 1、分层的数据流图、分层的数据流图(DFD(DFD图图) )2 2、数据词典、数据词典3 3、描述加工逻辑的结构化语言、判定表及判定树、描述加工逻辑的结构化语言、判定表及判定树当前系统当前系统具体模型具体模型建立建立当前系统当前系统逻辑模型逻辑模型抽象抽象目标系统目标系统逻辑模型逻辑模型建立建立完善的系统完善的系统逻辑模型逻辑模型改进改进深入调查深入

17、调查研究研究分析用户需求分析用户需求,用用DFD图描述图描述分析系统需求分析系统需求,用用DFD图描述图描述修改完善修改完善DFD图图,增添功能增添功能3-1.4.2 SA法的步骤课件制作人:谢希仁l数据流图(DFD,Data Flow Diagram)是用来描绘软件系统的逻辑模型的工具。l通过数据流图描绘信息在系统中流动和加工处理的情况。l是各类人员之间极好的交流、沟通的工具l设计数据流图只需考虑系统必须完成的基本逻辑功能,一般在图中不使用具体的物理元素,完全不需要考虑如何具体地实现这些功能。 3-1.4.3 数据流图课件制作人:谢希仁组成符号 课件制作人:谢希仁首先:建立系统环境,确定系统

18、边界,画出顶层DFD。 其中:1 数据流为:销售的商品,日销售额等 2 数据源点为:营业员,经理,收款员 3 数据终点为:经理,收款员 4 加工名为:要建立的系统名字课件制作人:谢希仁然后自顶向下,逐层分解。 A、按人或部门的功能要求,将加工“打碎”,形成:录入、修改或删除商品信息录入、修改现金额,并计算余额查询商品销售情况 计算日销售额123注:需给每一加工编号课件制作人:谢希仁 B、”分派”数据流,形成:录入、修改或删除商品信息 2录入、修改 现金额,并计算余额查询商品销售情况 计算日销售额销售的商品销售的商品现金额现金额现金余额现金余额查询要求查询要求销售情况销售情况日销售额日销售额13

19、其中:要根据特定的加工要求进行分派; 保持与顶层数据流的一致; 可以不引入数据源和数据终点。课件制作人:谢希仁C、引入文件,使之形成一个有机整体系统录入、修改或删除商品信息24录入、修改 现金额,并计算余额查询商品销售情况 计算日销售额销售的商品销售的商品现金额现金额现金余额现金余额查询要求查询要求销售情况销售情况日销售额日销售额销售文件销售文件123注:到一个文件,既有输入流,又有输出流,则可简化为 ,并可不给出标识。至此,体现精化,形成0层数据流图。 课件制作人:谢希仁 继续A、B、C:自顶向下,逐层分解。例如:加工3查询商品销售情况 计算日销售额查询要求查询要求销售情况销售情况日销售额日

20、销售额销售文件销售文件3可分解为:可分解为:3.1判定要求查询要求查询要求3.2统计销售情况3.3计算日销售额销售文件销售文件查询要求查询要求2查询要求查询要求1销售情况销售情况日销售额日销售额课件制作人:谢希仁描述银行取款过程的数据流图课件制作人:谢希仁加工分解的原则加工分解的原则自然性自然性:概念上合理、清晰;概念上合理、清晰; 均匀性:理想的分解是将一个问题分解成大小均均匀性:理想的分解是将一个问题分解成大小均匀的几个部分;匀的几个部分;分解度:一般每一个加工每次分解最多不要超过分解度:一般每一个加工每次分解最多不要超过个子加工个子加工, ,分解应分解到基本加工为止。分解应分解到基本加工

21、为止。数据守恒与数据封闭原则数据守恒与数据封闭原则 数据守恒是指加工的输入数据守恒是指加工的输入/ /出数据流是否匹配,出数据流是否匹配,即每一个加工既有输入数据流又有输出数据流。即每一个加工既有输入数据流又有输出数据流。 数据封闭是对整个系统而言。数据封闭是对整个系统而言。课件制作人:谢希仁合理使用文件合理使用文件 当文件作为某些加工之间的交界面时,文件必当文件作为某些加工之间的交界面时,文件必须画出来,一旦文件作为数据流图中的一个独立成须画出来,一旦文件作为数据流图中的一个独立成份画出来了,那么他同其他成份之间的联系也应同份画出来了,那么他同其他成份之间的联系也应同时表达出来。时表达出来。

22、DFDDFD图不是流程图图不是流程图, ,不表示软件的控制流程。不表示软件的控制流程。子图与父图的子图与父图的“平衡平衡”父图中某个加工的输入输出数据流应该同相应父图中某个加工的输入输出数据流应该同相应的子图的输入输出相同的子图的输入输出相同( (相对应),分层数据流图相对应),分层数据流图的这种特点称为子图与父图的这种特点称为子图与父图“平衡平衡”。课件制作人:谢希仁分层分层DFDDFD图的改进图的改进 DFD图须经过图须经过反复修改反复修改,才能获得最终的目标系统,才能获得最终的目标系统的的DFD图。从以下方面改进图。从以下方面改进DFD图:图: 1 1、检查数据流的正确性检查数据流的正确

23、性 数据数据守恒守恒 子图、父图的平衡子图、父图的平衡 文件使用是否合理。特别注意输入文件使用是否合理。特别注意输入/ /出文件的数出文件的数据流。据流。2、改进、改进DFD图的易理解性图的易理解性 简化加工之间的联系(联系越少,独立性越强,简化加工之间的联系(联系越少,独立性越强,易理解性越好)。易理解性越好)。 改进分解的均匀性。改进分解的均匀性。 适当命名(各成分名称无二义性,准确、具体)适当命名(各成分名称无二义性,准确、具体)课件制作人:谢希仁3-1.4.3 数据字典数据字典DD l数据流图描述系统的逻辑模型,但它不可能表达一个系统的全部逻辑特性,特别是有关数据的详细内容。l数据字典

24、恰恰弥补了数据流图在这个方面的不足,它专门记录有关数据方面的信息,作为对数据流图的补充和解释。l数据流图和数据字典共同构成全面描述软件需求说明书的核心。 课件制作人:谢希仁实现实现l数据字典可以用人工方式建立,记录在卡片上。也可以用自动化的方式记录在计算机的存储器上。l数据字典的内容主要包括:数据元素、数据流、数据存储、外部项、加工处理等。按词条形式描述数据的属性、结构、逻辑关系、特征信息等。课件制作人:谢希仁1.数据元素词条描述l数据元素名:l类型:数字(离散值,连续值),文字(编码类型)l长度:l取值范围:l相关的数据元素及数据结构:课件制作人:谢希仁2.数据流l数据流名:l说明:简要介绍

25、作用即它产生的原因和结果l数据流来源:来自何方l数据流去向:去向何处l数据流组成:数据结构l数据量流通量:数据量,流通量课件制作人:谢希仁结构化语言结构化语言判定表判定表判定树判定树 对对DFD图中每一个基本加工都必须有一个图中每一个基本加工都必须有一个小说小说明明给出该加工的精确描述。小说明中应精确地描述给出该加工的精确描述。小说明中应精确地描述加工的激发条件、加工逻辑、优先级、执行频率和加工的激发条件、加工逻辑、优先级、执行频率和出错处理等。加工逻辑是其中最基本的部分,指用出错处理等。加工逻辑是其中最基本的部分,指用户对这个加工的逻辑要求。户对这个加工的逻辑要求。 对基本加工说明有三种描述

26、方式:对基本加工说明有三种描述方式:3-1.4.4 加工说明课件制作人:谢希仁1结构化语言结构化语言l 是一种介于自然语言和形式化语言之间的半形式化语言l 语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示l 其基本控制结构有三种:u简单陈述句结构:避免复合语句;u重复结构:WHILE_DO 或 REPEAT_UNTIL结构。u判定结构:IF_THEN_ELSE 或 CASE_OF结构;课件制作人:谢希仁结构化英语的词汇表l 英语命令动词l 数据词典中定义的名字l 有限的自定义词l 逻辑关系词 IF_THEN_ELSE、l CASE_OF 、 WHILE_DO、l REPEAT

27、_UNTIL等组成。课件制作人:谢希仁商店业务处理系统中“检查发货单”IF 发货单金额超过$500 THEN IF 欠款超过了60天 THEN 在偿还欠款前不予批准 ELSE (欠款未超期) 发批准书,发货单 ENDIFELSE (发货单金额未超过$500) IF 欠款超过60天 THEN 发批准书,发货单及赊欠报告ELSE (欠款未超期) 发批准书,发货单 ENDIFENDIF课件制作人:谢希仁2. 判定表判定表 l 判定表也是一种表达加工逻辑的工具。l 在某些数据处理中,某数据流图的加工需要依赖于多个逻辑条件的取值,就是说完成这一加工的动作是由于某一组条件取值的组合而引发的。这时使用判定表

28、来描述比较合适。课件制作人:谢希仁判定表的组成判定表的组成l条件:列出一组条件的对象;l条件取值:列出各种可能的条件取值组合;l操作:列出所有的操作;l操作条目:列出对应的条件组合下所选的操作。课件制作人:谢希仁判定表的一般结构 课件制作人:谢希仁3-2.1概要设计的概要设计的定义与定义与任务任务l 在需求分析的基础上通过抽象和分解将系统分解成模块,确定系统功能是实现,即把软件需求转换为软件包表示的过程。 基本任务: (1)设计软件系统结构(简称软件结构) l 采用某种设计方法,将一个复杂的系统按功能划分成模块(划分) l 确定模块的功能。 (功能) l 确定模块之间的调用关系。 (调用) l

29、 确定模块之间的接口,即模块之间传递的信息。 l 评价模块结构的质量。 (质量) (2)数据结构及数据库设计 a.数据结构设计 b.数据库设计:(概念设计、逻辑设计、物理设计) (3)编写概要设计文档(文档主要有:概要设计说明书、数据库设计说明书、用户手册、修订测试计划) (4)评审课件制作人:谢希仁3-2.2.1 模块和模块化模块和模块化 是数据说明、可执行语句等程序对象的集合。它是单独命名且可通过名字来访问的,如过程、函数、子程序、宏等。(1)模块一般具有如下基本属性:l 功能:描述该模块实现的功能;l 逻辑:描述模块内部怎么做;l 状态:该模块使用时的环境和条件。1.模块课件制作人:谢希

30、仁2.模块化(1)概念l 模块化就是采用自顶之下把系统程序划分成若干个模块,每个模块完成一个子功能,模块既独立且相互之间又有一定的联系,把他们组成一个有机的整体,完成指定的功能l 模块化是软件结构设计的一个基本准则l 高层模块隐蔽了细节,能够从整体上把握问题l 而当我们需要时,也可以深入到较低的层次以了解进一步的细节课件制作人:谢希仁3-2.2.3 耦合与内聚耦合与内聚l 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量,一个模块内聚程度越高,该模块内部各成分之间的关联也就越强l 耦合是模块之间的互相连接的紧密程度的度量,耦合越松散,模块之间的联系就越小,模块的独立性就越强课

31、件制作人:谢希仁耦合和内聚与模块独立性的关系l 耦合和内聚是评价软件系统设计质量好坏的标准,它们衡量系统设计中模块的划分是否合理、模块是否独立性强l 模块的内聚度高,模块间耦合度低,模块的独立性就好,系统设计的质量也就好l 模块独立性比较强的模块应是高内聚低耦合的模块。课件制作人:谢希仁1.内容耦合3-2.2.3.1耦合 如果发生下列情形,两个模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中); (4) 一个模块有多个入口。 病态耦合关系!课件制作人:谢希仁2

32、.公共耦合 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。 公共的数据环境可以是:l 全局数据结构l 共享的通信区l 内存的公共覆盖区 公共耦合的复杂程度随耦合模块的个数增加而显著增加。课件制作人:谢希仁3.外部耦合 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。 外部耦合与公共耦合存在类似问题,都属于较强耦合课件制作人:谢希仁 如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。 存在的问题:l控制模块必须了解被控模块内部的逻辑关系 l对被控模块的任何修改,都会影响

33、控制模块。这种耦合实质上是在被控模块内部依据信号要求选择某一功能 4.控制耦合课件制作人:谢希仁5.标记耦合 如果一组模块通过参数表传递信息。 这个参数是:l数据结构l字符串l记录 不是简单变量课件制作人:谢希仁 如果一个模块访问另一个模块时,彼此之间是通过简单数据参数,来交换输入、输出信息的。 l控制参数l公共数据结构l外部变量6.数据耦合课件制作人:谢希仁7.非直接耦合 如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。 这种耦合的模块独立性最强课件制作人:谢希仁模块间的耦合类型汇总1234567弱耦合弱耦合弱耦合中耦合较强耦合较强耦合强耦

34、合课件制作人:谢希仁 巧合内聚又称为偶然内聚。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。3-2.2.3.2内聚1.巧合内聚 如:把几个模块都要执行的读、写等一组语句放到一个模块中。偶然的原因把他们放在一块课件制作人:谢希仁 通常由若干个逻辑功能相同或相似的成分组成。2.逻辑内聚如:计算全班学生的平均分和最高分。课件制作人:谢希仁 时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。 例如初始化模块和终止模块。3.时间内聚函数A(T时间)函数B(T+t时

35、间)函数C(T-t时间)课件制作人:谢希仁 一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行 例如,把流程结构中的循环部分、判定部分、计算部分分成一个模块,这三个任务组成的模块是过程内聚模块。4.过程内聚函数A函数B函数C课件制作人:谢希仁 如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。 通常,通信内聚模块是通过数据流图来定义的。5.通信内聚函数A函数B函数C数据集课件制作人:谢希仁 一个模块中各个部分都是完成某一具体功能必不可少的组成部分 或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的 软件结构中

36、应多使用功能内聚类型的模块6.功能内聚课件制作人:谢希仁 c 内聚类型汇总123456高内聚中内聚中内聚低内聚低内聚低内聚课件制作人:谢希仁3-2.2.4 好的软件设计特性好的软件设计特性1. 提高模块独立性提高模块独立性2. 模块规模适中模块规模适中3. 深度、宽度、扇出和扇入深度、宽度、扇出和扇入4. 模块的作用域应该在控制域之内模块的作用域应该在控制域之内5. 降低模块接口的复杂性降低模块接口的复杂性6. 模块功能可以预测模块功能可以预测课件制作人:谢希仁l深度表示软件结构中所控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。深度和模块源代码长度之间应该有大致的对应关系,当然这个对

37、应关系是在一定范围内变化的。如果层数过多则应该考虑管理模块是否过分简单了,能否适当合并。l宽度是软件结构中模块数最多那一层的模块数目。一般说来,宽度越大系统越复杂。课件制作人:谢希仁3-2.3 图形工具图形工具3-2.3.1层次图和HIPO图3-2.3.2系统结构图课件制作人:谢希仁3-2.3.1层次图和层次图和HIPO图图l 层次图用来描绘软件的层次结构。u层次图中的矩形框表示模块u矩形框间的连线表示调用关系l HIPO图是美国IBM公司发明的“层次图+IPO图”的英文缩写u层次图每个模块都加了编号u与层次图中每个模块相对应,应该有一张IPO图描绘模块的处理过程。 HIPO图是由一个带编号的

38、H图和一组模块的IPO图组成课件制作人:谢希仁 1. 层次图(层次图(H图)图)成绩管理系统成绩管理系统3 录入成绩录入成绩2、 待录成绩单待录成绩单管理管理1、查询、查询3.1导入导入课程课程成绩成绩3.2百分百分制成制成绩录绩录入入3.2等级等级制成制成绩录绩录入入2.1个别个别学生学生成绩成绩单单2.2成批成批学生学生成绩成绩单单1.1查询查询课程课程1.2 查询查询上课上课班级班级1.3 查询查询学生学生成绩成绩课件制作人:谢希仁 2. IPO图图课程信息成绩数据文件学生信息百分制成绩等级制成绩2 待录成绩单管理3.1 导入课程成绩3.2 百分制成绩录入3.3 等级制成绩录入空成绩记录

39、 成绩记录 3 录入成绩计算机网络课件 制作人:谢希仁DFD图图软件结构软件结构方法方法映射映射方法:方法:变换型变换型DFD 变换映射变换映射事务型事务型DFD 事务映射事务映射3-2.4结构化设计方法结构化设计方法课件制作人:谢希仁3-3.2详细设计工具详细设计工具 在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:l图形工具l表格工具l语言工具给出一段代码或者是一个程序流程图将其转换成N-S盒图、PAD图课件制作人:谢希仁3-3.2.1程序流程图程序流程图 程序流程图也称为程序框图,程序流程图使用的基本控制结构是:

40、课件制作人:谢希仁3-3.2.2 N-S图图 N-S图也叫做盒图。五种基本控制结构由五种图形构件表示。第一个任务第二个任务第三个任务循环条件DO-WHILE部分DO-UNTIL部分AFTFELSE分支THEN分支CASE 条件FF值1F值2F值nF循环条件(a) 顺序(b) 分支(c) 多路分支(d) DO-WHILE 循环(e) DO-UNTIL 循环(f) 调用子程序A课件制作人:谢希仁N-S图的嵌套定义形式课件制作人:谢希仁3-3.2.3问题分析图问题分析图(PAD)lPAD也设置了五种基本控制结构的图式,并允许递归使用lPAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即

41、第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线lPAD图中竖线的总条数就是程序的层次数课件制作人:谢希仁PAD基本结构课件制作人:谢希仁对应于增量型循环结构for i := n1 to n2 step n3 do在PAD中有相应的循环控制结构PAD的扩充控制结构课件制作人:谢希仁PAD描述的示例课件制作人:谢希仁PAD的特点lPAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点 l用PAD图表现程序逻辑,易读、易懂、易记 课件制作人:谢希仁4.1面向对象概述面向对象概述l面向对象方法是以对象为核

42、心的软件开发方法,使软件开发尽可能按照人对客观世界认识的规律和解决问题的方法与过程,以便使描述问题的空间与实现方法在结构上尽量一致。l是把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。课件制作人:谢希仁n结构化程序设计是一种典型的面向数据流的软件总体设计方法,它采用采用自顶向下、逐步求精的设计方法和单入口单出口的控制结构,且只包含顺序、选择和重复3种结构。课件制作人:谢希仁n基本要点是:n 采用自顶向下、逐步求精的程序设计方法:详细设计中某个模块内部处理过程仍然可以逐步求精,降低处理细节的复杂程度。n 使用3种基本控制结构(顺序、选择和重复,

43、其共同点是单入口、单出口)构造程序:n 主程序员组的组织形式:突出主程序员的领导,设计责任集中在少数人身上,有利于提高软件质量和软件生产率。课件制作人:谢希仁l面向对象方法是一个非常实用而强有力的软件开发方法:l方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的l从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所使用的部分与在下一个阶段所使用的部分是衔接的,所使用的技术经过生存期每一阶段后不改变课件制作人:谢希仁课件制作人:谢希仁Coad和Yourdon的定义:面向对象=对象+类+继承+通信课件制作人:谢希仁封装性(encapsulation)继承性(inheritanc

44、e)多态性(polymorphism)课件制作人:谢希仁圆形圆形AcColor=红色红色FUNCTION CalArea()FUNCTION Draw()nR=2矩矩形形BcColor=蓝色蓝色FUNCTION CalArea()FUNCTION Draw()nL=4nW=5圆形类圆形类Circul矩形类矩形类Rectangle图形类图形类GraphicA.Draw()B.Draw()封装性(encapsulation)课件制作人:谢希仁图形类图形类GraphiccColor &颜色颜色FUNCTION CalArea()FUNCTION Draw()继承性(inheritance)圆形类圆形

45、类CirculcColor &颜色颜色FUNCTION CalArea()FUNCTION Draw()矩形类矩形类RectanglecColor &颜色颜色FUNCTION CalArea()FUNCTION Draw()父类父类子类子类nR &半径半径nL &长长nW &宽宽课件制作人:谢希仁圆形类圆形类CirculcColor &颜色颜色FUNCTION CalArea()FUNCTION Draw()矩形类矩形类RectanglecColor &颜色颜色FUNCTION CalArea()FUNCTION Draw()nR &半径半径nL &长长nW &宽宽圆形圆形AcColor=红色

46、红色FUNCTION CalArea()FUNCTION Draw()nR=2矩矩形形BcColor=蓝色蓝色FUNCTION CalArea()FUNCTION Draw()nL=4nW=5属性属性方法方法课件制作人:谢希仁圆形圆形AcColor=红色红色FUNCTION CalArea()FUNCTION Draw()nR=2矩矩形形BcColor=蓝色蓝色FUNCTION CalArea()FUNCTION Draw()nL=4nW=5圆形类圆形类Circul矩形类矩形类Rectangle图形类图形类Graphic(3)多态性(polymorphism)根据运行时对象的类型确定操作图形图

47、形GG=AG=BG.Draw()课件制作人:谢希仁l视图由一个或多个图构成,视图由一个或多个图构成,UML包括包括5种不种不同的视图:用例视图、设计视图、过程视同的视图:用例视图、设计视图、过程视图、实现视图、配置视图。图、实现视图、配置视图。5.2.1 UML的组成的组成课件制作人:谢希仁1.模型元素模型元素分为两类分为两类:l 一类表示模型中的概念一类表示模型中的概念l 另一类表示模型元素之间的关系另一类表示模型元素之间的关系课件制作人:谢希仁n活动者(活动者(actor)代表与系统交互的人、硬)代表与系统交互的人、硬件设备或另一个系统。件设备或另一个系统。表示模型中的概念表示模型中的概念

48、课件制作人:谢希仁n用例(用例(Use case)规定了系统或部分系)规定了系统或部分系统的行为。用例表示了系统的功能。系统的行为。用例表示了系统的功能。系统的用例构成了系统的所有使用功能。统的用例构成了系统的所有使用功能。课件制作人:谢希仁n类(类(class)是面向对象系统中最基本的)是面向对象系统中最基本的组成元素,用来表示系统中需要处理的组成元素,用来表示系统中需要处理的事物。事物。课件制作人:谢希仁n对象(对象(object )代表类的一个特定实例。)代表类的一个特定实例。n消息(消息(message)是对象间的通信)是对象间的通信课件制作人:谢希仁n接口(接口(interface)

49、,规定类或组件服务),规定类或组件服务的操作的集合。的操作的集合。n包包(packet),将各种各样的模型元素通,将各种各样的模型元素通过内在的语义连接成的一个整体。过内在的语义连接成的一个整体。课件制作人:谢希仁n组件组件(component)代表一个接口定义良代表一个接口定义良好的软件模块。好的软件模块。n状态状态(state)表示一个模型元素在其生命表示一个模型元素在其生命周期的一种情况。周期的一种情况。课件制作人:谢希仁n活动活动(activity),由一系列的动作组成。,由一系列的动作组成。n结点结点(node),系统运行时存在的物理单元。,系统运行时存在的物理单元。课件制作人:谢希

50、仁关联(关联(association),描述类与类之间的),描述类与类之间的联系。联系。n普通关联:普通关联:(1)名字)名字表示模型元素之间的关系表示模型元素之间的关系课件制作人:谢希仁(2)导航,在关联端加上箭头表示关联的)导航,在关联端加上箭头表示关联的方向。方向。(3)多重性,用来说明数量或数量范围。)多重性,用来说明数量或数量范围。课件制作人:谢希仁(4)角色,在关联的类图标旁还可以标出)角色,在关联的类图标旁还可以标出类的角色名。类的角色名。(5)可见性,限制关联的外部对象对于该)可见性,限制关联的外部对象对于该关联的可见性。关联的可见性。课件制作人:谢希仁(6)限定符,将关联中多

51、的那一端的具体)限定符,将关联中多的那一端的具体对象分成对象集。对象分成对象集。课件制作人:谢希仁n聚合(聚合(aggregation),),“整体整体”与与“部部分分”课件制作人:谢希仁n组合,整体与部分之间具有很强的所有关系和组合,整体与部分之间具有很强的所有关系和一致的生命周期,一致的生命周期,“部分部分”不能独立于不能独立于“整体整体”而存在。而存在。课件制作人:谢希仁n泛化关系被称为继承关系。一般性实体泛化关系被称为继承关系。一般性实体是特殊性实体的泛化,特殊性实体是一是特殊性实体的泛化,特殊性实体是一般性实体的特化。般性实体的特化。课件制作人:谢希仁n依赖关系,一个模型元素的变化会

52、影响依赖关系,一个模型元素的变化会影响到另一个模型元素。到另一个模型元素。课件制作人:谢希仁图图 1)用例图,描述系统和外部环境的关系和系)用例图,描述系统和外部环境的关系和系统所能提供的服务。统所能提供的服务。3 图和视图图和视图课件制作人:谢希仁2)类图用来表示系统中的类以及类与类之)类图用来表示系统中的类以及类与类之间的关系。间的关系。课件制作人:谢希仁3)对象图是类图的一个实例,及时具体地)对象图是类图的一个实例,及时具体地反映了系统在某一时刻的具体状态。反映了系统在某一时刻的具体状态。课件制作人:谢希仁4)序列图描述完成某个行为的对象之间所)序列图描述完成某个行为的对象之间所传递的消

53、息的时间顺序。传递的消息的时间顺序。课件制作人:谢希仁5)协作图描述系统的行为是如何由系统的)协作图描述系统的行为是如何由系统的各成分合作实现的。各成分合作实现的。课件制作人:谢希仁n序列图和协作图都是序列图和协作图都是UML的交互图,在的交互图,在语义上是等价的,可以互相转换而不损语义上是等价的,可以互相转换而不损失信息。失信息。课件制作人:谢希仁 6)状态图,描述一个特定对象的所有可)状态图,描述一个特定对象的所有可能状态以及引起状态转移的事件。能状态以及引起状态转移的事件。课件制作人:谢希仁视图视图l用例视图,描述系统应具有的功能。用例视图,描述系统应具有的功能。l逻辑视图,显示系统的内

54、部功能是怎样实逻辑视图,显示系统的内部功能是怎样实现的。现的。l进程视图,显示系统的并发工作过程。进程视图,显示系统的并发工作过程。l实现视图(构件视图),描述系统版本的实现视图(构件视图),描述系统版本的配置和管理。配置和管理。l配置(部署)视图,描述物理系统组成部配置(部署)视图,描述物理系统组成部分的分布、交付和安装。分的分布、交付和安装。课件制作人:谢希仁面向对象建模的一般原则n单一职责n开放-封闭原则n依赖倒置原则n接口隔离原则课件制作人:谢希仁5.4 静态建模静态建模UML的静态建模机制包括:的静态建模机制包括:l用例图用例图(Use case diagram) l类图类图(Cla

55、ss diagram)l对象图对象图(Object diagram )l包图包图(Package diagram)课件制作人:谢希仁1.类图 主要是描述类和类之间的关系。2.对象图 主要是描述对象和对象之间的关系。3.包图 将许多类集合成一个集合。课件制作人:谢希仁 类图(Class Diagram)n【作用】n描述类和类之间的静态关系。n【组成】n“类”(Class)n关联关系(Association)n聚合关系(Aggregation) 组合关系(Composition)n依赖关系(Dependency)n泛化关系(Generalization)n实现关系(Realization)课件制作

56、人:谢希仁5.5 动态建模动态建模l 要想对一个系统了解得比较清楚,首先应当考察它的静态结构,即在某一时刻它的对象和这些对象之间相互联系的结构;然后应当考察在任何时刻对象及其联系的改变。系统的这些涉及时序和改变的状况,用动态模型来描述。l 动态模型着重于系统的控制逻辑。 l 建立对象交互图,将用例的行为分布到对象中u事件追踪图u状态图u时序图u协作图课件制作人:谢希仁l时序图表示完成某项行为的对象类和这些对象类之间传递消息的时间顺序。l时序图可视作包含二维坐标的图形。它在水平方向列出参加交互的对象,垂直方向表示对象间交互的时间先后顺序。l每个对象下方的垂直虚线表示相应对象的生命期。 l对象间通

57、过消息进行交互,消息用带有箭头的直线表示。箭头表示消息的传递方向。 课件制作人:谢希仁l当对象间的交互比较简单时,顺序图可以很好地从时间上表示出交互关系。l当交互情况复杂时,顺序图将变得庞大而凌乱。课件制作人:谢希仁 协作图包含一组对象和以消息交换为纽带的关联,用于描述系统的行为是如何由系统的成分合作实现的。课件制作人:谢希仁l 顺序图和协作图都属于交互图,都用于描述系统中对象之间的动态关系。两者可以相互转换,但两者强调的重点不同。顺序图强调的是消息的时间顺序,而协作图强调的是参与交互的对象的组织。l 两个图中所使用的建模元素,两者也各有特点。顺序图中有对象生命线和控制焦点,协作图中没有;协作

58、图中有路径,并且协作图中的消息必须要有消息顺序号,但顺序图中没有路径,也可以没有消息顺序号。 课件制作人:谢希仁n和协作图相比,顺序图在表示算法、对象的生命期、具有多线程特征的对象等方面相对来说更容易一些,但在表示并发控制流方面会困难一些。n顺序图和协作图在语义上是等价的,两者之间可以相互转换,但两者并不能完全相互代替。顺序图可以表示某些协作图无法表示的信息,同样,协作图也可以表示某些顺序图无法表示的信息。例如,在顺序图中不能表示对象与对象之间的链,对于多对象和主动对象也不能直接显示出来,在协作图中则可以表示;协作图不能表示生命线的分叉,在顺序图中则可以表示。课件制作人:谢希仁l状态图用来建模

59、系统中的某个类对象、子系统或整个系统在其生命周期内出现的状态、状态的迁移和迁移条件。l一个对象在某个时刻所处的状态是由该对象的属性值所决定的。当然决定对象状态的属性应该是问题域所关心的属性。对象由一种状态迁移到另一种状态,通常是由于受到了外部的刺激或自身性质的改变所引起的。导致对象状态变迁的原因即迁移条件。课件制作人:谢希仁l用导角矩形表示对象所处的状态。 l开始状态:必须有。 l终止状态:可选的,也可以没有。 l带箭头的直线表示状态迁移的方向,其状态迁移的条件写在直线的上方或下方。课件制作人:谢希仁l从图中可以看出:水具有液态、气态和固态三种状态l状态之间可以相互转化,而转化是有条件的-迁移

60、条件。 课件制作人:谢希仁6.2 建立问题域的对象与类模型建立问题域的对象与类模型l发现和定义对象类应以问题域和系统责任为出发点,正确地运用抽象原则,尽可能全面地发现对象的因素,并对其进行检查和整理,最终得到系统的对象类。l可以在用例模型的基础上,通过识别实体类、边界类和控制类,从而发现和定义系统中的对象类。课件制作人:谢希仁7.1 面向对象设计的设计准则面向对象设计的设计准则 (1) 模块化 模块化是软件设计的重要准则。在面向对象开发方法中,将对象定义为模块。对象把数据结构和作用在数据上的操作(方法)封装起来构成模块。对象是组成系统的基本模块。 (2) 抽象 类是一种抽象数据类型,在该数据类

温馨提示

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

评论

0/150

提交评论