版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 软件设计就是根据所表示的信息域的软件软件设计就是根据所表示的信息域的软件需求,以及功能和性能需求,进行数据结构设需求,以及功能和性能需求,进行数据结构设计、系统结构设计、过程设计(算法设计)、计、系统结构设计、过程设计(算法设计)、界面设计。界面设计。 软件设计是软件开发的关键步骤,直接影软件设计是软件开发的关键步骤,直接影响软件质量响软件质量。软件设计阶段要解决软件设计阶段要解决“如何做如何做”的问题。的问题。 将需求阶段获得的需求说明将需求阶段获得的需求说明(模型)转换为计算机中可实现的系统。设(模型)转换为计算机中可实现的系统。设计阶段主要任务是计阶段主要任务是: :软件体系结构的设计
2、软件体系结构的设计数据结构的设计数据结构的设计用户界面的设计用户界面的设计算法的设计算法的设计软件软件涉及多方面,可分为总体设计和详细设计。涉及多方面,可分为总体设计和详细设计。过程设计过程设计系统结构设计系统结构设计数据设计数据设计界面设计界面设计软件设计软件设计任务任务数据设计侧重数据设计侧重于软件数据结于软件数据结构的定义。构的定义。系统结构设计定义软件系统的整体结构,系统结构设计定义软件系统的整体结构,是软件开发的核心步骤,在设计步骤中,是软件开发的核心步骤,在设计步骤中,建立软件主要成份之间的关系。建立软件主要成份之间的关系。界面设计是对系统边界的描述,界面设计是对系统边界的描述,是
3、用户和系统进行交互的工具。是用户和系统进行交互的工具。过程设计则是把结过程设计则是把结构成份转换成软件构成份转换成软件的过程性描述。的过程性描述。数据设计侧重于软件数据结构的定义。确定数据的数据设计侧重于软件数据结构的定义。确定数据的类型,组织、存取方式,相关程度。类型,组织、存取方式,相关程度。系统结构设计定义软件系统的整体结构,是软件开系统结构设计定义软件系统的整体结构,是软件开发的核心步骤,在设计步骤中,建立软件主要成份之发的核心步骤,在设计步骤中,建立软件主要成份之间的关系。合理的模块划分可以降低软件开发的复杂间的关系。合理的模块划分可以降低软件开发的复杂度,同时也能提高软件的可重用性
4、。度,同时也能提高软件的可重用性。过程设计则是把结构成份转换成软件的过程性描述。过程设计则是把结构成份转换成软件的过程性描述。界面设计是对系统边界的描述,用户界面是用户和界面设计是对系统边界的描述,用户界面是用户和系统进行交互的工具,人机接口直接影响软件的寿命。系统进行交互的工具,人机接口直接影响软件的寿命。软件设计分为软件设计分为总体设计总体设计和和详细设计详细设计两个阶段。两个阶段。 其工作流程可用下图表示:其工作流程可用下图表示: 总体总体设计设计需求需求 说明书说明书复审复审软件软件 结构结构修修 改改详细详细设计设计可接受可接受模块描述模块描述复审复审修修 改改设计说设计说 明书明书
5、1 1、设计阶段结束要交付的文档是设计说明书,根据、设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。设计方法的不同,有不同的设计文档。2 2、每个设计步骤完成后,都应进行复审。、每个设计步骤完成后,都应进行复审。二二 软件设计阶段软件设计阶段软件设计工作流程图软件设计工作流程图从工程管理的角度来看,软件设计分两步完成;分从工程管理的角度来看,软件设计分两步完成;分为总体设计(概要设计)和详细设计两个阶段。为总体设计(概要设计)和详细设计两个阶段。首先作总体设计,将软件需求转化为数据结构和软首先作总体设计,将软件需求转化为数据结构和软件的系统结构,划分出系统的物理元素
6、:程序、数据件的系统结构,划分出系统的物理元素:程序、数据库、过程、文件、类等;然后是详细设计,即过程设库、过程、文件、类等;然后是详细设计,即过程设计,通过对结构表示进行细化,得到软件详细的数据计,通过对结构表示进行细化,得到软件详细的数据结构和算法。结构和算法。 软件软件就是构造一个高内聚低耦合就是构造一个高内聚低耦合的软件模型。的软件模型。软件软件高可靠高可靠性性高可维高可维护性护性高可理高可理解性解性高效率高效率软件设计的目标三三 软件设计目标软件设计目标可根据以下准则来衡量软件设计的目标:可根据以下准则来衡量软件设计的目标: 软件实体有明显的层次结构,利于软件元素间软件实体有明显的层
7、次结构,利于软件元素间控制;控制; 软件实体应该是模块化的,模块具有独立功能;软件实体应该是模块化的,模块具有独立功能; 软件实体与环境的界面清晰;软件实体与环境的界面清晰; 设计规格说明清晰、简洁、完整和无二义性。设计规格说明清晰、简洁、完整和无二义性。常用的设计方法有:常用的设计方法有: SD法法、 OOD法法、 Jackson法、法、HIPO法、法、 Parnas法、法、 Warnier法等。法等。3.2 3.2 软件体系结构设计软件体系结构设计软件体系结构提供了结构、行为和属性的高级抽软件体系结构提供了结构、行为和属性的高级抽象,确定了系统的组织结构和拓扑结构,显示了系统象,确定了系统
8、的组织结构和拓扑结构,显示了系统需求和构成系统的元素之间的对应关系,提供了一些需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。设计决策的基本原理。 体系结构的设计过程的主要活动:体系结构的设计过程的主要活动:1.系统分解系统分解将系统分解为若干相互作用的子系统。将系统分解为若干相互作用的子系统。2.控制建模控制建模建立系统各部分间控制关系的一般模型。建立系统各部分间控制关系的一般模型。3.模块分解模块分解 将子系统进一步划分为模块。将子系统进一步划分为模块。 完整的系统都是由若干功能相对独立的子系统聚合完整的系统都是由若干功能相对独立的子系统聚合而成的,每个子系统又都通过某种
9、方式来共享数据。而成的,每个子系统又都通过某种方式来共享数据。注意注意: 往往子系统与模块之间没有明显界限往往子系统与模块之间没有明显界限.体系结构设计是软件设计的第一个阶段,该阶段侧体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。重于系统宏观结构的设计,而不关心模块的内部算法。体系结构的分类:体系结构的分类:一、仓库模型一、仓库模型(The repository model) 也称也称“容器模型容器模型 ”,是一种集中式的模型。各子,是一种集中式的模型。各子系统可以直接访问中央数据仓库存储的共享数据。子系统可以直接访问中央数据仓库存储的共享数据。子
10、系统之间紧密耦合。系统之间紧密耦合。 中央数据仓库中央数据仓库(Repository)子系统子系统1子系统子系统2子系统子系统n 仓库结构仓库结构设计编辑器设计编辑器代码生成器代码生成器设计分析器设计分析器报告生成器报告生成器设计转换器设计转换器项项 目目 存存 储储程序编辑器程序编辑器 集成集成CASE工具集的体系结构工具集的体系结构 各子系统共享中央数据库中的数据各子系统共享中央数据库中的数据共享容器模型共享容器模型 各子系统可以有自己的数据库,子系统之间通过消各子系统可以有自己的数据库,子系统之间通过消息传递实现数据交换。息传递实现数据交换。适宜命令控制系统、适宜命令控制系统、CAD系统
11、系统 仓库模型的主要仓库模型的主要优点:优点: 1.共享大数据量的有效方法。共享大数据量的有效方法。 2.子系统不必关心其它的子系统如何使用它所产生的数子系统不必关心其它的子系统如何使用它所产生的数据。据。 3.易于将新子系统集成,若新子系统也采用相同规范易于将新子系统集成,若新子系统也采用相同规范 。 仓库模型的主要仓库模型的主要缺陷:缺陷: 1.为了共享数据,各子系统必须有一致的数据视图为了共享数据,各子系统必须有一致的数据视图 ,不可避免地会影响了整个系统的性能。不可避免地会影响了整个系统的性能。 2.子系统的改变,使产生的数据结构也可能发生改变。子系统的改变,使产生的数据结构也可能发生
12、改变。 3.统一的数据库结构统一的数据库结构(备份、安全、访问控制和恢复的备份、安全、访问控制和恢复的策略策略 ),将影响子系统的效率,将影响子系统的效率 。 4. 集中式的控制使数据和子系统的分布变得非常困难。集中式的控制使数据和子系统的分布变得非常困难。二、分布式结构(二、分布式结构(Distributed System Architecture)仓库模型的特点是各种功能紧紧耦合在一起,所仓库模型的特点是各种功能紧紧耦合在一起,所有计算都在一台主机系统中完成,主机系统压力很大。有计算都在一台主机系统中完成,主机系统压力很大。解决方案:解决方案:采用更强劲的处理器,或者多处理器采用更强劲的处
13、理器,或者多处理器采用分布式结构,充分发掘网络计算能力,实现采用分布式结构,充分发掘网络计算能力,实现网络计算网络计算1.分布式结构中,合作的多方都会利用各自的计算分布式结构中,合作的多方都会利用各自的计算能力负责一定的计算工作,从而提高整个系统的能力能力负责一定的计算工作,从而提高整个系统的能力和效率。和效率。分布式结构的主要优势分布式结构的主要优势资源共享:系统中每个服务节点上的资源都资源共享:系统中每个服务节点上的资源都可以被系统使用可以被系统使用开放性高:系统可以方便增删不同软、硬件开放性高:系统可以方便增删不同软、硬件结构的节点结构的节点可伸缩性好:系统可以方便的增删新的服务可伸缩性
14、好:系统可以方便的增删新的服务资源以满足需要资源以满足需要容错能力强:分布式系统中的信息冗余可以容错能力强:分布式系统中的信息冗余可以容忍一定的软、硬件故障容忍一定的软、硬件故障 透明性高:系统中的结点一般只需知道服务透明性高:系统中的结点一般只需知道服务的位置而不必清楚系统的结构。的位置而不必清楚系统的结构。分布式结构主要不足分布式结构主要不足复杂性:分布式系统比集中式系统要复杂得多,复杂性:分布式系统比集中式系统要复杂得多,集中式系统的性能主要依赖于主机的处理能力,集中式系统的性能主要依赖于主机的处理能力,而分布式系统的性能还依赖于网络带宽而分布式系统的性能还依赖于网络带宽安全性:网络环境
15、面临着各种威胁,如病毒、安全性:网络环境面临着各种威胁,如病毒、木马、非法访问,安全问题十分突出木马、非法访问,安全问题十分突出可管理性:开放性造成异构性,造成管理困难可管理性:开放性造成异构性,造成管理困难 不可预知性:系统响应时间受网络负载等网络不可预知性:系统响应时间受网络负载等网络环境的影响。环境的影响。三、三、 客户机客户机/服务器模型服务器模型(Client/Server Architectural Model) C/S结构是一种结构是一种分布式模型分布式模型,采用发请求、得结,采用发请求、得结果的模式:果的模式:客户机客户机 向服务器发出请求向服务器发出请求(数据请求、网页请求、
16、数据请求、网页请求、文件传输请求等等文件传输请求等等),服务器服务器 响应请求,进行相应的操作,将结果回传给响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。客户机,客户机再将格式化后的结果呈现给用户。C/S结构的应用都由三个相对独立的逻辑部分组成:结构的应用都由三个相对独立的逻辑部分组成:用户界面:数据表示层,实现与用户交互用户界面:数据表示层,实现与用户交互应用逻辑:业务逻辑层,进行具体运算和数据处理应用逻辑:业务逻辑层,进行具体运算和数据处理数据访问:数据访问层,完成数据查询、修改、更新等任务数据访问:数据访问层,完成数据查询、修改、更新等任务三种逻辑之间
17、的关系两层客户机两层客户机/服务器模型服务器模型 Two Tier Client/Server Architectural Model服务器服务器1网络网络服务器服务器2服务器服务器M客户客户1客户客户2客户客户N两层两层Client/Server结构结构请求请求结果结果请求请求C/S的工作模式是一种远程过程调用的工作模式是一种远程过程调用(RPC,Remote Procedure Call)模式,允许客户端和服务器端有不同的软模式,允许客户端和服务器端有不同的软硬平台,客户与服务器不是一对一的,体现系统开放性。硬平台,客户与服务器不是一对一的,体现系统开放性。 完整的应用包含三个相对独立的逻
18、辑部分,而两层的完整的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端上结构只有两个端应用。应用逻辑应该映射到哪一端上呢?呢? 三种情况:胖客户端三种情况:胖客户端C/S、瘦客户端、瘦客户端B/S 、中间平衡、中间平衡网网 络络用户界面用户界面客户端逻客户端逻辑应用辑应用服务端逻辑服务端逻辑应用应用客户端客户端用户界面用户界面逻辑应用逻辑应用数据访问数据访问用户界面用户界面逻辑应用逻辑应用数据访问数据访问服务器服务器应用逻辑层的映射情况数据访问数据访问C/S应用应用3C/S应用应用1C/S应用应用2 两层两层C/S架构将数据表示和处理逻辑分开架构将数据
19、表示和处理逻辑分开 ,功能相对单一,功能相对单一,维护和升级比集中式结构简单。但应用逻辑和两端之一是紧耦维护和升级比集中式结构简单。但应用逻辑和两端之一是紧耦合的合的 ,不适宜多用户、多数据库,非安全的网络环境。,不适宜多用户、多数据库,非安全的网络环境。 电影图片库系统的体系结构client1 1client2 2client4 4client3 3Wide-bandwidth netwokCatalogueservercataloguevideoserverFilm clipfilespictureserverdigitisedphotographshypertextserverhyper
20、textweb例:例:Two Tier Client/Server Architectural Model 2.三级三级/多级应用模型多级应用模型(Three/Multi Tier Model) 第一级是数据库管理结点第一级是数据库管理结点(database management node)。第二级或中间级是第二级或中间级是“商业逻辑结点商业逻辑结点” (business logic node),是指具体应用中实施的程序逻辑和法则。是指具体应用中实施的程序逻辑和法则。第三级是用户界面级,强调高效、方便易用的用户界面。第三级是用户界面级,强调高效、方便易用的用户界面。Database manag
21、ement node(数据库管理结点)(数据库管理结点)business logic node(商业逻辑结点)商业逻辑结点)Security(安全)(安全)Event(事件)(事件)Search(搜索)(搜索)ClientAClientDClientBClientC客客户户机机服服务务器器第一级第一级第二级第二级第三级第三级客户端客户端用户界面用户界面服务器服务器数据访问数据访问 多层应用模型多层应用模型网网 络络应用服务器应用服务器1应用逻辑应用逻辑应用服务器应用服务器n应用逻辑应用逻辑 在多层模型中,中间层会用到应用服务,包括事务服务、在多层模型中,中间层会用到应用服务,包括事务服务、消息
22、服务等等。常见的事务服务器有消息服务等等。常见的事务服务器有Microsoft Transaction Server,消息服务器有,消息服务器有Microsoft Message Queue。常见的三层结构是常见的三层结构是BWD(Browser, Web server, Database server)。三层结构的特点就是应用逻辑都是以组件对象的形式集成到三层结构的特点就是应用逻辑都是以组件对象的形式集成到Web服务器,加重了服务器,加重了Web服务器的负担,解决方法是将应用逻服务器的负担,解决方法是将应用逻辑分离出来,把三层结构变为多层结构。辑分离出来,把三层结构变为多层结构。 多层应用模
23、型的优点多层应用模型的优点 :客户端的功能单一,变得更瘦;客户端的功能单一,变得更瘦;每一层可以被单独改变;每一层可以被单独改变;降低了部署与维护的开销,提高了灵活性、可伸缩性降低了部署与维护的开销,提高了灵活性、可伸缩性应用程序各部分之间松散耦合,从而使应用程序各部应用程序各部分之间松散耦合,从而使应用程序各部分的更新相互独立分的更新相互独立业务逻辑集中放在服务器上由所有用户共享,使得系业务逻辑集中放在服务器上由所有用户共享,使得系统的维护和更新变得简单,也更安全。统的维护和更新变得简单,也更安全。 现在越来越多的应用采用多层结构,以适应不断现在越来越多的应用采用多层结构,以适应不断变化的用
24、户需求。变化的用户需求。四、分布式对象结构四、分布式对象结构(Distributed Objects Architecture) 在在C/S模型中,客户和服务器在服务模型中,客户和服务器在服务/请求上的差别,请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。在一定程度上限制了系统的灵活性和可扩展性。 采用分布式对象结构采用分布式对象结构 : “对象对象(Object)”提供服务的系统组件提供服务的系统组件(System Component)。 每个对象在逻辑上是平等的,它们可以互相为对每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。方提供所需的服务。 提供服务的对象就是服务器
25、,而提出服务请求的提供服务的对象就是服务器,而提出服务请求的对象就是客户。对象就是客户。 每个对象都有一个服务接口,便于提每个对象都有一个服务接口,便于提供服务。供服务。 分布式对象结构中对象可能分布在网络的各个分布式对象结构中对象可能分布在网络的各个节点而不是集中在某一台硬件服务器上。软件总线节点而不是集中在某一台硬件服务器上。软件总线可以将分散的对象提供的服务串起来。可以将分散的对象提供的服务串起来。“软件总线软件总线(Software Bus)”的中间件的中间件(Middleware) 即即对象请求代理对象请求代理(Object Request Broker,简称,简称ORB) 分布式对
26、象结构具有很好的开放性和透明性,分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组用户可以非常方便地在总线上添加、更新或删除组件对象。件对象。软件总线软件总线(ORB)O1S(O1)O2S(O2)OnS(On)分布式对象结构分布式对象结构 ORB保证了系统通信的透明性,系统的各个部分无缝保证了系统通信的透明性,系统的各个部分无缝的集成在一起。的集成在一起。 流行的流行的ORB技术标准有两种:技术标准有两种: CORBA(Common Object Request Broker Architecture) DCOM(Distributed Component O
27、bject Model)五、五、 中间件(中间件(Middleware)现代应用系统的特点:现代应用系统的特点:分布性:整个任务不只是在单机上运行、而是在网络分布性:整个任务不只是在单机上运行、而是在网络中多台计算机上的相关应用共同协作完成,这需要考虑中多台计算机上的相关应用共同协作完成,这需要考虑网络传输、数据安全、数据一致性、同步等诸多问题网络传输、数据安全、数据一致性、同步等诸多问题异构性:支持应用的计算机硬件、操作系统、网络协异构性:支持应用的计算机硬件、操作系统、网络协议、数据库系统,以及开发工具种类繁多,需要考虑数议、数据库系统,以及开发工具种类繁多,需要考虑数据表示、调用接口、处
28、理方式等诸多问题据表示、调用接口、处理方式等诸多问题动态协作性:参与协作的应用允许位置透明性、迁移动态协作性:参与协作的应用允许位置透明性、迁移透明性、负载平衡性等需求。透明性、负载平衡性等需求。应用中间件系统可以解决现代应用系统的需要。应用中间件系统可以解决现代应用系统的需要。中间件是一种处于系统软件(操作系统和网络软件)中间件是一种处于系统软件(操作系统和网络软件)与应用软件之间的软件,它能使应用软件之间进行跨与应用软件之间的软件,它能使应用软件之间进行跨网络的协同工作(也就是互操作),并允许各应用软网络的协同工作(也就是互操作),并允许各应用软件所涉及的件所涉及的“系统结构、操作系统、数
29、据库和其他应系统结构、操作系统、数据库和其他应用服务用服务”各不相同。各不相同。网络网络应用系统应用系统中间件中间件网络软件网络软件操作系统操作系统协作协作应用系统应用系统中间件中间件网络软件网络软件操作系统操作系统 中间件在软件领域里扮演越来中间件在软件领域里扮演越来越重要的角色,它使系统之间的集越重要的角色,它使系统之间的集成变得更加的平滑和简洁,同时使成变得更加的平滑和简洁,同时使系统维护的成本和开销降到了最低。系统维护的成本和开销降到了最低。中间件按照其应用领域分为:中间件按照其应用领域分为:远程过程调用中间件远程过程调用中间件分布式对象中间件分布式对象中间件数据库访问中间件数据库访问
30、中间件事务处理中间件事务处理中间件消息中间件消息中间件其他中间件其他中间件应用案例:应用案例:1.数据库中间件数据库中间件ODBC2. 消息中间件消息中间件 Message Queue3. 分布式事务处理中间件分布式事务处理中间件 Distributed Transaction Middleware六、六、 分层模型分层模型层次结构模型将系统划分为若干层次,每层提供一组服层次结构模型将系统划分为若干层次,每层提供一组服务,并且下层只为它的直接上层服务务,并且下层只为它的直接上层服务。典型的例子:典型的例子:应用层协议应用层协议表示层协议表示层协议会晤层协议会晤层协议传输层协议传输层协议 物物
31、理理 介介 质质应用层应用层表示层表示层会话层会话层传输层传输层网络层网络层数据链路层数据链路层物理层物理层应用层应用层表示层表示层会话层会话层传输层传输层网络层网络层数据链路层数据链路层物理层物理层网络层网络层数据链路层数据链路层物理层物理层网络层网络层数据链路层数据链路层物理层物理层中继系统中继系统 中继系统中继系统主机系统主机系统主机系统主机系统优点:支持增量式开发。优点:支持增量式开发。缺点:系统构成,性能保证较困难。缺点:系统构成,性能保证较困难。七、控制摸型七、控制摸型 考虑子系统之间的控制流。控制方式分为:考虑子系统之间的控制流。控制方式分为:1.集中式控制集中式控制主程序主程序
32、程序程序1程序程序2程序程序3程序程序11程序程序12程序程序31程序程序32控制的调用返回模型2.事件驱动系统事件驱动系统 由外部产生的事件来驱动系统由外部产生的事件来驱动系统分为:分为: 广播模型广播模型 中断驱动的模型中断驱动的模型系统控制器系统控制器计算进程计算进程用户界面用户界面故障处理器故障处理器传感器进程传感器进程传动装置进程传动装置进程实时系统的集中式模型1.1.软件结构的准则软件结构的准则2. 模块化准则模块化准则3.3.软件独立性准则软件独立性准则 软件设计是软件开发过程的重要阶段,对保证软件设计是软件开发过程的重要阶段,对保证软件系统的质量起着关键作用。但是如何保证软件软
33、件系统的质量起着关键作用。但是如何保证软件设计的质量呢?有以下经过长期考验的设计准则:设计的质量呢?有以下经过长期考验的设计准则: 软件结构表示软件的系统结构,它是软件模块软件结构表示软件的系统结构,它是软件模块间关系的表示,均表示为层次关系间关系的表示,均表示为层次关系。软 件 结 构 示 意 图顶层顶层1层层2层层ABCDEFGHIJKLMN深度宽度扇入为扇入为2扇出为扇出为3扇入为扇入为3宽度深度宽度3层层4层层一、软件结构的准则一、软件结构的准则 深度深度:表示软件结构中从顶层模块到最底层模块表示软件结构中从顶层模块到最底层模块的层数的层数; 宽度宽度:表示控制的总分布;表示控制的总分
34、布; 扇出数扇出数:指一个模块直接控制下属的模块个数;指一个模块直接控制下属的模块个数; 扇入数扇入数:指一个模块的直接上属模块个数。指一个模块的直接上属模块个数。 一个好的软件结构的形态准则是:顶部宽度小,一个好的软件结构的形态准则是:顶部宽度小,中部宽度最大,底部宽度次之;在结构顶部有较高的中部宽度最大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。扇出数,在底部有较高的扇入数。有有 关关 指指 标标例如,过程、函例如,过程、函数、子程序、宏、类等,是构成软件系统结构的基本数、子程序、宏、类等,是构成软件系统结构的基本元素。元素。 所谓所谓模块化模块化就是将系统划分成若干模
35、块,每个模就是将系统划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整块完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求的整个系统的功能体,以满足所要求的整个系统的功能。 我们利用模块化来降低软件复杂度。注意选择分我们利用模块化来降低软件复杂度。注意选择分解的最佳模块数。解的最佳模块数。二、二、模块化准则模块化准则 模块化的目的是将系统模块化的目的是将系统“分而治之分而治之”,模块化能,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件易理解,易于测试和调试,因而也有助于提高
36、软件的可靠性。的可靠性。 模块化方法已经为所有工程领域所接受。模块化方法已经为所有工程领域所接受。 模块化的主要优点是,模块化设计降低了软件系模块化的主要优点是,模块化设计降低了软件系统的复杂性,使得系统容易修改,同时使得系统各个统的复杂性,使得系统容易修改,同时使得系统各个部分可以并行开发,从而提高了软件的生产率。部分可以并行开发,从而提高了软件的生产率。 模块分解的方法主要有结构化方法和面向对象的模块分解的方法主要有结构化方法和面向对象的方法。方法。 结构化方法采用自顶向下、逐步求精、模块化。结构化方法采用自顶向下、逐步求精、模块化。模块化降低软件复杂度的模块化降低软件复杂度的简单证明简单
37、证明令:令:C C(X X)表示问题)表示问题 X X 的复杂度函数;的复杂度函数; E E(X X)解决问题)解决问题 X X 所需工作量的复所需工作量的复杂度函数;杂度函数;若:有问题若:有问题 P1P1,P2 P2 ;C C(P1P1) C C(P2P2);); 显然:显然:E E(P1P1) E E(P2P2)由经验:由经验:C C(P1+P2P1+P2) C C(P1P1)+ C+ C(P2P2)于是:于是:E E(P1+P2P1+P2) E E(P1P1)+ E+ E(P2P2)将问题(将问题(P1+P2P1+P2)划分为两个问题)划分为两个问题P1P1和和P2P2后,其工作量和复
38、杂度都降低。后,其工作量和复杂度都降低。 并非模块分得越小越好,因为模块之间接口的复杂度和工并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数作量增加。显然,每个软件系统都有一个最佳模块数M M。注意。注意选择分解的最佳模块数。上图描述了模块化与软件成本的关系。选择分解的最佳模块数。上图描述了模块化与软件成本的关系。软件总成本 模块化与软件成本的关系成本模块数目模块成本接口成本最小成本区M三、软件独立性准则三、软件独立性准则 “模块模块”,又称,又称“构件构件”,一般指用一个名,一般指用一个名字可调用的一段程序。它一般具有如下三个基本字可调用的一段
39、程序。它一般具有如下三个基本属性:属性:功能功能 即指该模块实现什么功能,做什么事情。即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。上它所调用的所有子模块的功能。逻辑逻辑 即描述模块内部怎么做。即描述模块内部怎么做。状态状态 即该模块使用时的环境和条件。即该模块使用时的环境和条件。模块独立性(module independence) 所谓模块的独立性,是指软件系统中每个模块所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中只涉及软件要求的具体的子功能,而和软
40、件系统中其他模块的接口是简单的。即功能专一,模块之间其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。无过多的相互作用的模块。 这种类型的模块可以并行开发,开发容易,能这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。减少错误的影响,使模块容易组合、修改及测试。模块独立性的度量标准是两个定性准则模块独立性的度量标准是两个定性准则: 用于描述模块之间联系的紧密程度。用于描述模块之间联系的紧密程度。 用于描述模块内部联系的紧密程度。用于描述模块内部联系的紧密程度。 模块独立性比较强的模块应该是具有高内聚性和模块独立性比较强的模块应该是具有高内聚性
41、和低耦合度。低耦合度。 耦合性是指软件结构中模块相互连接的紧密程耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。模块分解的一个度,是模块间相互连接性的度量。模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:三个方面衡量:数据方式作用少多数量控制混合直接调用过程调用 块间联系方式有块间联系方式有“直接引用直接引用”或或“用过程语句调用用过程语句调用”。 块间传送的共用信息(参数)块间传送的共用信息(参数)类型,可为类型,可为“数据型数据型”、“控制型控制型”或或“混合型混合型”(数据(数据/ /控制型)。控制
42、型)。 块间传送的共用信息的数量。块间传送的共用信息的数量。模块分解的一个目标是使块间联系尽可能小,达到这个目标可通过以下措施。 每个模块应采用过程语句(或函数)等间接调用等方式调用其它模块。 模块间传送的参数为数据型。 模块间公用的信息(如参数等)尽量少。内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合一个模块直接访问另一模块的内部数据。一个模块直接访问另一模块的内部数据。一个模块不通过正常入口转到另一模块的内部。一个模块不通过正常入口转到另一模块的内部。一个模块有多个入口。一个模块有多个入口。两个模块有部分代码重迭。两个模块有部分代码重迭。AB进入另一模块内
43、进入另一模块内AB部分代码重迭部分代码重迭Entry1 .Entry2 . 多重入口多重入口(2)公共耦合(Common Coupling)若干模块通过全局的数据环境相互作用, 全局数据环境中可能含有全局变量、公用区、内存公共复盖区、任何存储介质上的文件、物理设备等。()控制耦合(Control Coupling)传递的信息含有控制信息。控制耦合通常会增加系统的复杂性,适当分解模块可望消除控制耦合。()复合耦合(Stamp Coupling)-标记耦合两模块间传递的参数是复合的数据结构(5)数据耦合(Data Coupling)两模块通过参数交换信息,信息仅限于数据。2. 内聚性(cohesi
44、on)块内联系的类型分为六类块内联系的类型分为六类: :偶然型偶然型逻辑型逻辑型瞬时型瞬时型通信型通信型顺序型顺序型功能型功能型内聚性表示一个模块内部各种数据和各种处内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度理之间联系的紧密程度,它是从功能的角度来度量模块间的联系。显然量模块间的联系。显然, ,块内联系愈紧块内联系愈紧, ,即内聚性即内聚性愈强愈强, ,模块独立性愈好。模块独立性愈好。软件总体设计的总则是:“降低块间联系,提高块内联系”。3. 信息隐蔽 每个模块的实现细节对于其他模块来说是隐蔽的。也每个模块的实现细节对于其他模块来说是隐蔽的。也就是说,模块
45、中所包含的信息(数据和过程)不允许其就是说,模块中所包含的信息(数据和过程)不允许其他不需要这些信息的模块使用。他不需要这些信息的模块使用。由于一个软件系由于一个软件系统在整个软件生存期内要经过多次修改,统在整个软件生存期内要经过多次修改,在划分模块时在划分模块时要采取措施,使得大多数过程和数据对软件的其他部分要采取措施,使得大多数过程和数据对软件的其他部分是隐蔽的。这样,在将来修改软件时,可将偶然引入错是隐蔽的。这样,在将来修改软件时,可将偶然引入错误所造成的影响限制在一个局部范围之内,误所造成的影响限制在一个局部范围之内,不致波及到不致波及到软件的其他部分软件的其他部分。 面向对象技术比面
46、向过程能更有效的实现信息隐藏。面向对象技术比面向过程能更有效的实现信息隐藏。由由parnasparnas方法提倡的方法提倡的如下:如下:3.4 3.4 结构化设计方法结构化设计方法 SD(Structured Design)法与法与SA、SP法前后衔法前后衔接,是结构化开发方法的核心。接,是结构化开发方法的核心。一、一、SD SD 法的基本概念法的基本概念1. SD SD 法的两个阶段法的两个阶段 总体设计总体设计 任务:任务: 解决系统的模块结构,即分解模块,解决系统的模块结构,即分解模块,确定确定模块功能模块功能及系统模块的层次结构,完成系统体系结及系统模块的层次结构,完成系统体系结构的描
47、述。构的描述。 文档:文档:模块结构图及其模块功能说明。模块结构图及其模块功能说明。 详细设计详细设计 对模块图中每个模块的过程进行描述,常用的描对模块图中每个模块的过程进行描述,常用的描述的方式有:伪代码,流程图,结构化流程图(述的方式有:伪代码,流程图,结构化流程图(N-S图),问题分析图(图),问题分析图(PAD图)等。图)等。 二、二、SD SD 法的设计步骤法的设计步骤从从DFDDFD图导出初始的模块结构图图导出初始的模块结构图(SC)(SC)。 中心变换型中心变换型(transform center) _ 变换分析变换分析 事务处理型事务处理型(transaction) _ 事务分
48、析事务分析按照按照SDSD法设计总则,改进模块结构图。法设计总则,改进模块结构图。SD法设计总则:法设计总则:自顶向下、逐步求精、模块化。自顶向下、逐步求精、模块化。注意:注意:模块结构图不同于模块结构图不同于“框图框图”。软件软件层次性:层次性:反映软件整体的性质反映软件整体的性质 ( (结构图结构图) )过程性:反映局部的性质过程性:反映局部的性质 ( (框图框图) ) 这类数据流图可看成是对输入数据进行转换而得到这类数据流图可看成是对输入数据进行转换而得到输出数据的处理。输出数据的处理。 DFDDFD图可以明显分为图可以明显分为“输入输入处理处理输出输出”三部分三部分。(物理输入)(物理
49、输入)(逻辑输入)(逻辑输入)(逻辑输出)(逻辑输出)输输 入入主加工主加工输输 出出(物理输出)(物理输出)检查检查顺序顺序检查检查合理性合理性扩充扩充代码代码核对核对 记录记录修改修改压缩压缩代码代码格式化格式化修改修改数据数据 旧文件旧文件新文件新文件中心变换型中心变换型 的的 DFD DFD 图图 这类数据流图有一个数据处理中心,按加工的结这类数据流图有一个数据处理中心,按加工的结果选择一个输出数据流继续执行的处理。果选择一个输出数据流继续执行的处理。 如下图所示:如下图所示:分类分类报名报名付款付款注销注销查询查询复审复审采用采用“事务分析事务分析”(transaction Anal
50、ysis)技术技术事务处理型事务处理型 的的 DFD 图图序号序号内内 容容长度(字节)长度(字节)数据类型数据类型可否修改可否修改1帐号帐号5数字数字否否2户名户名30数字字母数字字母可可3地址地址30数字字母数字字母可可4省省10字母字母可可5市市15字母字母可可6邮政编码邮政编码5数字数字可可7电话电话7数字数字可可8类型类型1字母字母否否9信贷员号信贷员号5数字数字可可10最近一次业务日期最近一次业务日期6数字数字否否11最近一次付息日期最近一次付息日期6数字数字否否12余额余额8数字数字否否13业务总量业务总量8数字数字否否14限额限额6数字数字否否 要求对贷款文件进行修改,修改信息
51、由卡片要求对贷款文件进行修改,修改信息由卡片输入,卡片上的修改信息格式如下:输入,卡片上的修改信息格式如下: 15位位 69位位 10位起位起 帐号帐号 空空 修改值修改值1 1* 修改值修改值2 2* .* (序号)序号)需求分析结果需求分析结果DFD DFD 图图, ,是一种混合的是一种混合的 DFD DFD 图。图。修修改改记记录录写写记记录录卡片卡片编编辑辑卡卡片片检检查查顺顺序序检检查查次次序序帐帐号号相相等等错误顺序卡片顺序卡片修改信息修改信息旧记录旧记录顺序记录顺序记录要修改要修改的记录的记录不修改不修改的记录的记录已修改已修改的记录的记录新记录新记录修修改改分分类类抽抽出出修修
52、改改顺序顺序卡片卡片修改修改信息信息2345679需求分析结果需求分析结果 DFD 图图编辑卡片加工分解编辑卡片加工分解主加工是?主加工是?报告报告报告报告修改信息修改信息顺序记录顺序记录新记录新记录将将DFDDFD图转换为模块结构图图转换为模块结构图贷款文件贷款文件管理系统管理系统取顺序取顺序记录记录修改修改记录记录打印打印报告报告打印打印记录记录比较比较帐号帐号取修改取修改信息信息读旧读旧记录记录检查检查顺序顺序取取卡片卡片编辑编辑卡片卡片读卡片读卡片检查顺序检查顺序卡片卡片顺序卡片旧记录旧记录顺序记录顺序记录顺序卡片顺序卡片已修改“编辑卡片编辑卡片”应继应继续向下分解,是典续向下分解,是
53、典型的型的“事务处理事务处理”型的型的DFDDFD图。图。写写记录记录修修改改记记录录写写记记录录卡片卡片编编辑辑卡卡片片检检查查顺顺序序检检查查次次序序帐帐号号相相等等错误顺序卡片顺序卡片修改信息修改信息旧记录旧记录顺序记录顺序记录要修改要修改的记录的记录不修改不修改的记录的记录已修改已修改的记录的记录新记录新记录报告报告已编辑卡片原始的数据流图IP1 1P2 2P3 3输入流输入流事务中心事务中心加工路径加工路径事务控制事务控制接受事务接受事务发送事务发送事务P1P2P3对应模块图 编辑卡片编辑卡片卡片抽出修改项抽出修改项编辑修改项编辑修改项卡片项项已编辑项编辑项编辑项3编辑项编辑项2编辑
54、项编辑项9项2项3已编辑项2已编辑项3项14已编辑项9编辑卡片的分解已编辑卡片 按照按照“降低块间联系,提高块内联系降低块间联系,提高块内联系”的设计总则的设计总则进行修改,完善系统的模块图,写出模块的功能说明进行修改,完善系统的模块图,写出模块的功能说明。三、模块结构图的改进三、模块结构图的改进功能模块的组成:功能模块的组成: 执行某项任务的部分执行某项任务的部分 出错处理部分出错处理部分 返回结束标志返回结束标志具体具体从以下方面改进:从以下方面改进:1 1)尽可能建立功能模块)尽可能建立功能模块 功能模块具有最强的内聚性,应满足信息屏蔽原功能模块具有最强的内聚性,应满足信息屏蔽原则:一个
55、模块内所包含的信息(过程和数据)对不则:一个模块内所包含的信息(过程和数据)对不需要这些信息的模块是不能访问的(黑盒)。需要这些信息的模块是不能访问的(黑盒)。2 2)消除重复功能)消除重复功能 若两模块含有重复的部分,应设法将重复的功能若两模块含有重复的部分,应设法将重复的功能消去。消去。(a)XYQ1Q2YQ2QXQ(b)(c)(d)Q重复部分重复部分Y YXQ1YQ2X X控制范围控制范围 结构方面的特点,结构方面的特点,包括模块及其所有下属模块。包括模块及其所有下属模块。作用范围作用范围 判断所涉及到的模判断所涉及到的模块,是从功能特点考虑的。块,是从功能特点考虑的。3 3)模块的作用
56、范围应在控制范围内)模块的作用范围应在控制范围内TOPXTBAB1B2SD方法认为:方法认为:当作用范围为控制范围的子集时,才当作用范围为控制范围的子集时,才能获得较低的块间联系能获得较低的块间联系, 如图中的设计,判定的作如图中的设计,判定的作用范围恰好在判定所在模块的下一层。用范围恰好在判定所在模块的下一层。4 4)模块的大小适当)模块的大小适当 模块大小指其篇幅,一般模块大小约模块大小指其篇幅,一般模块大小约50-10050-100行行为宜。为宜。5 5)模块的扇入扇出数不宜太多)模块的扇入扇出数不宜太多 扇出数扇出数 一个模块调用其他模块的个数。一个模块调用其他模块的个数。 扇入数扇入
57、数 一个模块被其他模块调用的个数。一个模块被其他模块调用的个数。 除服务性模块外,模块的扇入扇出数不宜太除服务性模块外,模块的扇入扇出数不宜太多。否则块间联系增加。多。否则块间联系增加。 一、任务一、任务 详细设计阶段的任务是开发一个可以直接转换为详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程程序的软件表示,即对系统中每个模块的内部过程进行设计和描述。进行设计和描述。 二、常用的描述方法工具二、常用的描述方法工具 1 1、流程图、流程图 2 2、结构化流程图(、结构化流程图(N-S图)图) 3 3、PAD图图问题分析图问题分析图 4 4、PDL 语言语言
58、3.5 3.5 详细设计详细设计结构化流程图(结构化流程图(N-S图)图)由顺序、选择、循环三种基本结构组成。由顺序、选择、循环三种基本结构组成。顺序结构顺序结构块块1块块2块块3块块4条件条件T F块块1块块2选择结构选择结构Case I=1,2,3T块块1块块2多分支选择结构多分支选择结构F块块3块块当条件成立时当条件成立时当型循环当型循环块块直到条件成立时直到条件成立时直到型循环直到型循环结构化流程图(结构化流程图(N-S图)图)ab条条 件件 1TF Case Xi, i=2,3,4X2X3X4当条件当条件3成立成立条条 件件 2直到条件直到条件4成立成立直直 到到 条条 件件 成立成
59、立cdefghij顺序结构顺序结构选择结构选择结构多分支选择结构多分支选择结构先判定型循环结构先判定型循环结构后判定型循环结构后判定型循环结构FTTFPADPAD图图问题分析图(问题分析图(problem Analysis Diagramproblem Analysis Diagram)是一种结构化图,其基本控制结构如下:是一种结构化图,其基本控制结构如下:条件条件then部分部分else部分部分选择结构选择结构TF任务任务1任务任务2任务任务3 顺序结构顺序结构WHILE型条件型条件循环体循环体先判定型循环结构先判定型循环结构UNTIL型条件型条件循环体循环体后判定型循环结构后判定型循环结构
60、控控制制变变量量 任务任务1任务任务2任务任务n多分支选择结构多分支选择结构值值 1值值 2值值 n例例1:对数组:对数组X进行排序。进行排序。 “自顶而下,逐步求精自顶而下,逐步求精”J:=hk:=h+1,nJ:=kH:=1,n-1排好第排好第h个个X hW:=XhXh:=XJXJ:=w 1、循环一次,排好一个循环一次,排好一个Xh排好第排好第H个个X h找找 XJ= MAX(XhXn)交换交换 XJ 和和 Xh2、细化细化XkXJ(a)(b)(b)(a)3 3、连接各图,构成完整的连接各图,构成完整的PADPAD图图H:=1,n-1H:=1,n-1H:=1,n-1H:=1,n-1H:=1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省沧州市多校联考2025-2026学年高二(上)期末物理试卷(含答案)
- 广东省广州市白云区2025-2026学年七年级上学期期末考试英语试题(含答案无听力原文及音频)
- 北京市丰台区2025-2026学年五年级学期期末语文试题(含答案)
- 五四的题目及答案
- 网络管理员试题及答案
- 庆三八妇女节演讲稿范文集锦6篇
- 北京市顺义区2025-2026学年八年级上学期期末考试英语试题(原卷版+解析版)
- 2023年节温器行业分析报告及未来五至十年行业发展报告
- 久治事业编招聘2022年考试模拟试题及答案解析40
- 初中学生安全教育
- 酒店员工手册
- 重庆律师收费管理办法
- 安庆四中学2024年七上数学期末考试试题含解析
- 黑洞与量子纠缠的热力学研究-洞察阐释
- 带状疱疹中医病例讨论
- 【高中数学竞赛真题•强基计划真题考前适应性训练】 专题03三角函数 真题专项训练(全国竞赛+强基计划专用)原卷版
- DB33∕T 1152-2018 建筑工程建筑面积计算和竣工综合测量技术规程
- SL631水利水电工程单元工程施工质量验收标准第1部分:土石方工程
- (二调)武汉市2025届高中毕业生二月调研考试 英语试卷(含标准答案)+听力音频
- 汽车修理厂轮胎采购 投标方案(技术标 )
- 2023年7月浙江省普通高中学业水平考试(学考)化学试题
评论
0/150
提交评论