版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、l1.需求分析的任务包含用户需求和系统需求;l2.需求分析需要进行一系列的活动,包括:分析用户需分析用户需求、建立需求原型、分析系统需求和进行需求验证求、建立需求原型、分析系统需求和进行需求验证等。l3.用户需求分析获取的方法:研究用户,从调查中获取研究用户,从调查中获取用户需求,通过原型完善用户需求,用户需求陈述用户需求,通过原型完善用户需求,用户需求陈述。l4.结构化分析建模:层次模型,数据流模型,数据关系层次模型,数据流模型,数据关系模型模型。l5.需求验证内容:有效性,一致性,完整性,现实性,有效性,一致性,完整性,现实性,可检验性验证可检验性验证。l6.需求验证方法:需求评审,需求原
2、型评价需求评审,需求原型评价。2.2.系统构架设计系统构架设计3.3.软件结构设计软件结构设计4.4.面向数据流的结构设计面向数据流的结构设计5.5.数据库结构设计数据库结构设计1.1.概要设计的过程与任务概要设计的过程与任务l对于较大规模的软件项目,软件设计往往被分为两个对于较大规模的软件项目,软件设计往往被分为两个阶段进行:阶段进行:概要设计(系统设计概要设计(系统设计/ /总体设计)总体设计):确定软件系统的基本框:确定软件系统的基本框架;架;详细设计(过程设计)详细设计(过程设计):确定软件系统的内部细节。:确定软件系统的内部细节。l概要设计主要概要设计主要针对软件需求分析中提出的一系
3、列软件针对软件需求分析中提出的一系列软件问题,概要地回答如何解决问题,概要地回答如何解决,如:,如:软件系统将采用什么样的体系结构;软件系统将采用什么样的体系结构;需要创建哪些功能模块及模块之间的关系;需要创建哪些功能模块及模块之间的关系;数据结构;数据结构;需要什么样的网络环境支持;需要什么样的网络环境支持;需要什么类型的后台数据库等。需要什么类型的后台数据库等。 概要设计主要包括三个方面的设计。首先是概要设计主要包括三个方面的设计。首先是系统构架设计系统构架设计,然,然后是后是软件结构设计与数据结构的设计软件结构设计与数据结构的设计。 概要设计阶段的任务既包括技术方面的,也包括管理方概要设
4、计阶段的任务既包括技术方面的,也包括管理方面的,主要有以下面的,主要有以下9个方面:个方面:(1) 制订规范制订规范: 需要制定的标准和规范包括需要制定的标准和规范包括需要采用的管理规则,如操作流程、交流方式、工作纪律等。需要采用的管理规则,如操作流程、交流方式、工作纪律等。 设计文档的编制标准。设计文档的编制标准。 信息编码格式,硬件、操作系统的接口规约。信息编码格式,硬件、操作系统的接口规约。 设计目标、设计原则。设计目标、设计原则。(2)系统构架设计:主要设计内容:)系统构架设计:主要设计内容: 将系统分解为具有独立任务的子系统将系统分解为具有独立任务的子系统 分析子系统之间的通信、确定
5、子系统的外部接口分析子系统之间的通信、确定子系统的外部接口 确定系统的软、硬件环境、网络环境和数据环境确定系统的软、硬件环境、网络环境和数据环境 对系统进行整体物理部署与优化对系统进行整体物理部署与优化l(3)软件结构设计:其主要内容包括)软件结构设计:其主要内容包括l确定构造子系统的模块元素确定构造子系统的模块元素l根据需求定义每个模块的功能根据需求定义每个模块的功能l定义模块接口及接口数据结构定义模块接口及接口数据结构l确定模块间的调用和返回关系确定模块间的调用和返回关系l评估软件质量,进行结构优化评估软件质量,进行结构优化l(4)公共数据结构设计:包括)公共数据结构设计:包括l公共数据变
6、量的数据结构和作用范围公共数据变量的数据结构和作用范围l输入、输出文件的结构输入、输出文件的结构l数据库中的表结构、视图结构及数据完整性。数据库中的表结构、视图结构及数据完整性。(5)安全性设计:)安全性设计:包括操作权限、操作日志管理设计、文件与数包括操作权限、操作日志管理设计、文件与数据加密设计及特定功能的校验设计等。据加密设计及特定功能的校验设计等。(6) 故障处理设计:故障处理设计:对来自软件、硬件、网络的故障,进行备用对来自软件、硬件、网络的故障,进行备用设备、出错处理、数据备份等。设备、出错处理、数据备份等。(7)可维护性设计:)可维护性设计:在系统中设置用于系统检测的专用模块、预
7、在系统中设置用于系统检测的专用模块、预计今后进行功能扩充的模块等计今后进行功能扩充的模块等(8)编写文档:文档包括)编写文档:文档包括概要设计说明书概要设计说明书数据库设计说明书数据库设计说明书用户操作手册用户操作手册测试初步计划测试初步计划l(9)概要设计评审:)概要设计评审:需求确认:确认所设计的软件已覆盖了所有确定的软件需求需求确认:确认所设计的软件已覆盖了所有确定的软件需求接口确认:确认该软件的内部接口和外部接口是否明确定义接口确认:确认该软件的内部接口和外部接口是否明确定义模块确认:确认所设计的模块满足模块确认:确认所设计的模块满足高内聚、低耦合高内聚、低耦合,模块作用范模块作用范围
8、在控制范围之内。围在控制范围之内。风险性:该设计在现有技术条件下和预算范围内能否按时实现风险性:该设计在现有技术条件下和预算范围内能否按时实现实用性:该设计对于需求的解决是否实用实用性:该设计对于需求的解决是否实用可维护性:该设计是否考虑了今后的维护。可维护性:该设计是否考虑了今后的维护。质量:该设计是否表现了良好的质量特征。质量:该设计是否表现了良好的质量特征。l概要设计中的主要任务有哪些?概要设计中的主要任务有哪些?l解答:制订规范、系统构架设计、软件结构设计、公共数据结构解答:制订规范、系统构架设计、软件结构设计、公共数据结构设计、安全性设计、故障处理设计、可维护性设计、编写文档、设计、
9、安全性设计、故障处理设计、可维护性设计、编写文档、概要设计评审概要设计评审。 系统构架设计的系统构架设计的任务任务就是根据需求规格说明书中定就是根据需求规格说明书中定义的需求基本框架,义的需求基本框架,确定组成系统的子系统确定组成系统的子系统、子系统之子系统之间的关系与数据通信间的关系与数据通信以及它们工作时所需要的以及它们工作时所需要的设备环境、设备环境、网络环境和数据环境网络环境和数据环境等,由此对系统作出一个合理的、等,由此对系统作出一个合理的、符合应用需要的整体部署。符合应用需要的整体部署。 系统构架设计可以按照以下步骤进行:系统构架设计可以按照以下步骤进行: (1)定义)定义子系统子
10、系统 (2)定义子系统)定义子系统外部接口外部接口 (3)定义系统)定义系统物理构架物理构架:包括硬件设备、软件设备、:包括硬件设备、软件设备、网络结构和数据库结构,并进行优化。网络结构和数据库结构,并进行优化。l几种常用的系统构架:1.集中式结构2.客户机/服务器结构3.多层客户机/服务器结构 集中式系统集中式系统由由一台一台计算机计算机主主机机和和多个终端设多个终端设备备组成。其组成。其具有具有非常好的工作稳非常好的工作稳定性和安全保密定性和安全保密性。性。但系统建设但系统建设费用、运行费用费用、运行费用比较高,灵活性比较高,灵活性较差,系统结构较差,系统结构不便于扩充。不便于扩充。 客户
11、机客户机服务器结构依靠网络将计算任务分布到许多台不同的计算服务器结构依靠网络将计算任务分布到许多台不同的计算机上,但通过其中的服务器计算机提供集中式服务。其优越性是机上,但通过其中的服务器计算机提供集中式服务。其优越性是结构结构灵活、便于系统逐步扩充。灵活、便于系统逐步扩充。l与集中式结构中的无智能终端相比,C/S结构中的客户机是智能的,需要安装客户程序,并通过客户程序访问服务器。客户机是主动的,服务器是被动地接受来自客户机的请求。l注意:C/S结构是一种逻辑结构,C/S只是角色概念,客户软件和服务软件既可安装在一台机器上,也可运行在不同的机器上。l与集中式结构比较,客户机服务器结构具有哪些方
12、面的优越性?l解答:客户机服务器依靠网络将计算任务分布到许多台不同的计算机上,因此结构灵活,便于系统逐步扩充。 客户机客户机/ /服务器结构已被广泛应用服务器结构已被广泛应用基于数据库的信息服务领域,并演变基于数据库的信息服务领域,并演变出了多层客户机出了多层客户机/ /服务器结构。服务器结构。 图图 5-4 5-4 所示是一个有关信息管理所示是一个有关信息管理应用的逻辑结构。应用的逻辑结构。 这是一个三层逻辑结构,其中的这是一个三层逻辑结构,其中的表示层是指对用户的信息服务表示层是指对用户的信息服务;应用应用层是指对数据的应用逻辑加工;数据层是指对数据的应用逻辑加工;数据层是指系统中的数据库
13、管理。层是指系统中的数据库管理。在集中在集中式系统中,以上各个不同层面的元素式系统中,以上各个不同层面的元素都被部署在一台主机上,这时或许没都被部署在一台主机上,这时或许没有必要在它们之间清楚地划分边界。有必要在它们之间清楚地划分边界。但值得注意的是,当采用客户机但值得注意的是,当采用客户机/ /服务服务器结构时,这些元素却有可能要被分器结构时,这些元素却有可能要被分布到不同的计算机布到不同的计算机上去上去,因此必须在,因此必须在它们之间给出一个清楚的边界。它们之间给出一个清楚的边界。 1. 两层结构两层结构:将信息表示与应用逻辑处理都放:将信息表示与应用逻辑处理都放在了客户机上,服务器只需要
14、管理数据库事务。这在了客户机上,服务器只需要管理数据库事务。这时的客户机成为时的客户机成为“胖客户机胖客户机”优点:优点:结构简单、容易实现,能有效保证用结构简单、容易实现,能有效保证用户系统的性能。户系统的性能。缺点:缺点:客户机越多,管理和维护上存在的困客户机越多,管理和维护上存在的困难越大。难越大。客户机客户机信息表示信息表示应用逻辑处理应用逻辑处理数据库服务器数据库服务器数据库管理数据库管理客户机客户机信息管理信息管理应用服务器应用服务器应用逻辑处理应用逻辑处理数据库服务器数据库服务器数据库管理数据库管理 三层结构解决了两层结构的缺点,但使实现软件的难度加大,三层结构解决了两层结构的缺
15、点,但使实现软件的难度加大,对服务器设备要求高。对服务器设备要求高。 说明三层客户机说明三层客户机服务器结构中应用服务器的作用?服务器结构中应用服务器的作用?解答:解答:应用服务器的作用是使系统中的最易发生需求改变的应用应用服务器的作用是使系统中的最易发生需求改变的应用逻辑处理被集中在一起,因此给系统维护带来了很大的便利。当逻辑处理被集中在一起,因此给系统维护带来了很大的便利。当用户应用规则发生变化时,需改变的不是数目庞大客户端,而是用户应用规则发生变化时,需改变的不是数目庞大客户端,而是一台或少数几台应用服务器。一台或少数几台应用服务器。 2. 三层结构三层结构:将两层结构的客户机上的容易发
16、生变化的应:将两层结构的客户机上的容易发生变化的应用逻辑部分提取出来,并放到一个专门的用逻辑部分提取出来,并放到一个专门的“应用服务器应用服务器”上。使客户机变上。使客户机变“瘦瘦” 。 l3. BS结构结构: B/S B/S 结构是基于结构是基于 Web Web 技术与客户机技术与客户机/ /服务器结构服务器结构的结合而提的结合而提出来的一种多层结构,其中的出来的一种多层结构,其中的 B B是指是指 Web Web 浏览器(浏览器(BrowseBrowse) ,S S 是指应用服务器与数据服务器(是指应用服务器与数据服务器(ServerServer) 。目前,这种结。目前,这种结构已被广泛应
17、用于网络商务系统之中,例如网上银行、网上商构已被广泛应用于网络商务系统之中,例如网上银行、网上商店等。其结构图如图店等。其结构图如图 所示。所示。 l3. BS结构结构:它是:它是Web技术与客户机技术与客户机服务器结构的服务器结构的结合。其结合。其优点优点是不需要对客户机进行专门的维护是不需要对客户机进行专门的维护。 缺点缺点是系统的传输速度和系统的稳定性均低于三是系统的传输速度和系统的稳定性均低于三层结构层结构。l在许多应用中,在许多应用中,BS结构和三层客户机结构和三层客户机服务器往往服务器往往被结合起来使用。例如被结合起来使用。例如“网上购物系统网上购物系统”,其面,其面向消费者的购物
18、操作一般采用向消费者的购物操作一般采用BS结构,但面向购结构,但面向购物中心工作人员的相关操作,为了保证系统运行物中心工作人员的相关操作,为了保证系统运行稳定快捷,则可能采用三层客户机稳定快捷,则可能采用三层客户机服务器结构。服务器结构。 说明说明BS结构中结构中Web服务器的作用?服务器的作用?解答:解答:Web服务器的作用是将信息表示集中到了专门的服务器的作用是将信息表示集中到了专门的“Web服务器服务器”上,因此上,因此可使客户端程序更加简化。客户机上已经不需要专门的应用程序,只需要有一个可使客户端程序更加简化。客户机上已经不需要专门的应用程序,只需要有一个通用的通用的Web浏览器,就可
19、以实现客户端数据的应用。浏览器,就可以实现客户端数据的应用。 软件结构设计是对组成系统的软件结构设计是对组成系统的各个子系统各个子系统的的进一步分进一步分解与规划解与规划。需要将子系统按照其功能要素分解成具有一定。需要将子系统按照其功能要素分解成具有一定功能边界的模块,然后以模块为单位来构造软件。功能边界的模块,然后以模块为单位来构造软件。 显然,需求分析阶段建立的功能模型、数据流模型、数显然,需求分析阶段建立的功能模型、数据流模型、数据关系模型,据关系模型, 可以作为软件结构设计的前提。可以作为软件结构设计的前提。l 软件结构设计包括以下方面的内容:软件结构设计包括以下方面的内容:l (1)
20、确定构造子系统的模块元素。)确定构造子系统的模块元素。l (2)定义每个模块的功能。)定义每个模块的功能。l (3)定义模块接口,设计接口的数据结构。)定义模块接口,设计接口的数据结构。l (4)确定模块之间的调用与返回关系。)确定模块之间的调用与返回关系。l (5)评估软件结构质量,进行结构优化。)评估软件结构质量,进行结构优化。 1. 模块化模块化: 模块概念产生于模块概念产生于结构化程序设计结构化程序设计思思想,模块是构造程序的基本单元。例如,函数、想,模块是构造程序的基本单元。例如,函数、过程。过程。 在在结构化方法结构化方法中,模块是一个功能单位,可中,模块是一个功能单位,可以使软件
21、系统按照其功能组成进行分解,由此使以使软件系统按照其功能组成进行分解,由此使一些大的复杂的软件问题被分解成诸多小的简单一些大的复杂的软件问题被分解成诸多小的简单的软件问题。的软件问题。 注意:模块不是越小越好,太小会增加软件成注意:模块不是越小越好,太小会增加软件成本和软件复杂性。本和软件复杂性。 许多人都有一个良好的愿望,那就是依靠模许多人都有一个良好的愿望,那就是依靠模块化使系统不断分解而使整个系统不断简化,由块化使系统不断分解而使整个系统不断简化,由此使软件开发成本不断下降。然而这却可能做不此使软件开发成本不断下降。然而这却可能做不到,到,因为随着系统的分解,系统中模块数目将会因为随着系
22、统的分解,系统中模块数目将会增加,模块接口也会增加,软件构造会由此变得增加,模块接口也会增加,软件构造会由此变得复杂起来,模块连接的难度也会由此加大复杂起来,模块连接的难度也会由此加大。 实际上还有一个因素也在阻碍着这个愿望的实际上还有一个因素也在阻碍着这个愿望的实现,这就是实现,这就是软件系统的模块化分解本身也是一软件系统的模块化分解本身也是一件并不轻松的工作,件并不轻松的工作,假如分解系统所需要的工作假如分解系统所需要的工作量,已经超过因为模块简化而减少的工作量,那量,已经超过因为模块简化而减少的工作量,那就意味着,进一步分解系统已是一件得不偿失的就意味着,进一步分解系统已是一件得不偿失的
23、事情了。事情了。l2. 抽象化抽象化 : 概要设计中的功能模块往往被看成是一个抽象的黑概要设计中的功能模块往往被看成是一个抽象的黑盒子,虽然它已是一个与软件实现直接相关的实体单元,有清晰盒子,虽然它已是一个与软件实现直接相关的实体单元,有清晰的外观,但还没有内部实现细节(的外观,但还没有内部实现细节(此时的模块有模块名称、输入此时的模块有模块名称、输入数据、功能定义、输出数据组成数据、功能定义、输出数据组成)。)。l抽象的作用是对事物现象的高度概括,但抽象的目的是产生出具抽象的作用是对事物现象的高度概括,但抽象的目的是产生出具体的结果。因此,一个完整的抽象过程是既包含抽象又包含具体体的结果。因
24、此,一个完整的抽象过程是既包含抽象又包含具体的循环演变过程。的循环演变过程。这种由抽象到具体的不断演变一直贯串于软件这种由抽象到具体的不断演变一直贯串于软件工程过程中,这就是自顶向下、逐步细化。工程过程中,这就是自顶向下、逐步细化。“顶顶”是抽象的,是抽象的,“细化细化”是顶具体化的结果。是顶具体化的结果。l模块抽象化的作用?模块抽象化的作用?l 答:答: 概要设计中的模块是一个抽象化的功能概要设计中的模块是一个抽象化的功能黑盒子,虽然它已是一个与软件实现直接相关黑盒子,虽然它已是一个与软件实现直接相关的实体单元,已经可以看到它清晰的外观,但的实体单元,已经可以看到它清晰的外观,但是却看不到其
25、内部实现细节。是却看不到其内部实现细节。模块抽象化的作模块抽象化的作用是有利于模块功能得到更加清晰的定义,可用是有利于模块功能得到更加清晰的定义,可提高模块的内聚性。提高模块的内聚性。l3. 信息隐蔽信息隐蔽: 指每个模块的内部实现细节对于其他指每个模块的内部实现细节对于其他模块来说是隐蔽的。例如,模块内部的数据、语模块来说是隐蔽的。例如,模块内部的数据、语句或过程等,不允许其他不需要这些信息的模块句或过程等,不允许其他不需要这些信息的模块访问。(访问。(有利于软件系统的局部修改,增加了系有利于软件系统的局部修改,增加了系统的维护性能统的维护性能)l模块内部信息隐蔽的作用?模块内部信息隐蔽的作
26、用?l答:信息隐蔽是指每个模块的内部实现细节对于答:信息隐蔽是指每个模块的内部实现细节对于其他模块来说是隐蔽的,模块内部的数据、语句其他模块来说是隐蔽的,模块内部的数据、语句或过程等,不允许其他不需要这些信息的模块使或过程等,不允许其他不需要这些信息的模块使用。用。信息隐蔽的作用是使每个模块相互隔离,提信息隐蔽的作用是使每个模块相互隔离,提高模块的独立性。高模块的独立性。1. 耦合 模块独立性是指模块独立性是指软件系统中每个模块都只涉及自己软件系统中每个模块都只涉及自己特定的子功能,与软件中其他模块没有过多的联系。特定的子功能,与软件中其他模块没有过多的联系。一般采用一般采用耦合耦合(低)(低
27、)和和内聚内聚(高)(高)这两个定性的技术这两个定性的技术指标来衡量模块的独立性。指标来衡量模块的独立性。模块的独立性是衡量软件中模块质量最重要的指模块的独立性是衡量软件中模块质量最重要的指标,是设计与优化软件结构时必须考虑的重要因素。标,是设计与优化软件结构时必须考虑的重要因素。 1. 耦合用来度量模块之间相互关联的程度,模块间连接越紧密,耦合用来度量模块之间相互关联的程度,模块间连接越紧密,耦合性就越高。耦合的主要形式有耦合性就越高。耦合的主要形式有5种种,耦合强度由低到高为:耦合强度由低到高为: 非直接耦合非直接耦合:两个模块间没有直接联系,模块的独立性最:两个模块间没有直接联系,模块的
28、独立性最强。强。 数据耦合:数据耦合:两个模块间通过模块接口处的参数实现通信;两个模块间通过模块接口处的参数实现通信;通过这种耦合,模块间既能通信,又有较强的独立性。通过这种耦合,模块间既能通信,又有较强的独立性。软件软件设计提倡使用这种耦合。设计提倡使用这种耦合。 以上两种耦合程度较低。以上两种耦合程度较低。1. 耦合l 控制耦合:控制耦合:当两个模块间通过模块接口处的参数实现通当两个模块间通过模块接口处的参数实现通信时,参数同时传递开关、标志、名字等控制信息,影响模信时,参数同时传递开关、标志、名字等控制信息,影响模块内部程序的执行路径,使模块独立性下降。块内部程序的执行路径,使模块独立性
29、下降。1. 耦合l 公共耦合公共耦合:是通过访问公共数据环境的模块耦合。公:是通过访问公共数据环境的模块耦合。公共耦合较之数据耦合会使模块独立性下降,除非是共耦合较之数据耦合会使模块独立性下降,除非是少数模少数模块块要共享数据,否则,不用该耦合。要共享数据,否则,不用该耦合。1. 耦合控制耦合与公共耦合是中等强度的耦合。控制耦合与公共耦合是中等强度的耦合。1. 耦合l内容耦合内容耦合:如果发生下列情形,两个模块间发生了内容:如果发生下列情形,两个模块间发生了内容耦合耦合 一个模块直接访问另一个模块的数据一个模块直接访问另一个模块的数据 一个模块不通过正常入口转到另一个模块的内部一个模块不通过正
30、常入口转到另一个模块的内部 两个模块有一部分程序代码重叠。两个模块有一部分程序代码重叠。 一个模块有多个入口一个模块有多个入口 内容耦合是非常强的耦合,严重影响了模块独立性,绝内容耦合是非常强的耦合,严重影响了模块独立性,绝对不允许出现内容耦合。对不允许出现内容耦合。l2. 内聚用来度量模块内部各元素彼此结合的紧密程度,模块内聚用来度量模块内部各元素彼此结合的紧密程度,模块内各元素结合越紧密,则内聚程度越高。内各元素结合越紧密,则内聚程度越高。偶然内聚偶然内聚:编程人员把本来没有联系,但多次出现在各程序编程人员把本来没有联系,但多次出现在各程序中语句抽出来,组成一个模块,这就是偶然内聚。中语句
31、抽出来,组成一个模块,这就是偶然内聚。这种模块这种模块内聚程度低,功能模糊,很难进行维护。内聚程度低,功能模糊,很难进行维护。功能内聚功能内聚顺序顺序内聚内聚通信内聚通信内聚过程内聚过程内聚时间内聚时间内聚逻辑内聚逻辑内聚偶然内聚偶然内聚模块内聚模块内聚高高低低模块独立性模块独立性强强弱弱l逻辑内聚逻辑内聚:把几个功能相关的模块组成一个模块。每次调把几个功能相关的模块组成一个模块。每次调用时只执行若干功能中的一种,不易修改。用时只执行若干功能中的一种,不易修改。通用菜单模通用菜单模块是这种内聚形式。块是这种内聚形式。时间内聚时间内聚:模块中的各功能模块中的各功能与时间有关与时间有关,要求在同一
32、时间内要求在同一时间内执执行,一般行,一般不需要进行判断转移不需要进行判断转移。例如初始化模块,功能可。例如初始化模块,功能可能包括变量赋初值、连接数据源、打开数据表、打开文件等,能包括变量赋初值、连接数据源、打开数据表、打开文件等,它们都要求同时完成。它们都要求同时完成。过程内聚过程内聚:若模块内的处理相关且必须若模块内的处理相关且必须按特定次序执行按特定次序执行,称过程内聚。这种模块内聚程度比时间内聚程度更强一些,称过程内聚。这种模块内聚程度比时间内聚程度更强一些,但过程内聚模块仅包括完整功能的一部分,因此模块间的耦但过程内聚模块仅包括完整功能的一部分,因此模块间的耦合程度比较高。如循环程
33、序中循环部分、判定部分、计算部合程度比较高。如循环程序中循环部分、判定部分、计算部分必需按特定次序执行。分必需按特定次序执行。通信内聚通信内聚:如同一模块内各功能部分都如同一模块内各功能部分都使用相同的数使用相同的数据或产生相同的数据据或产生相同的数据,称通信内聚,因各功能独立,称通信内聚,因各功能独立,故内聚程度比过程内聚高。如工资处理模块包括查询工故内聚程度比过程内聚高。如工资处理模块包括查询工资、计算工资、打印工资都使用相同的资、计算工资、打印工资都使用相同的“工资数据工资数据”工资数据工资数据查询工资查询工资计算工资总额计算工资总额打印工资单打印工资单处理工资模块处理工资模块l顺序内聚
34、顺序内聚:同一模块中各功能都和某功能元素有关,且同一模块中各功能都和某功能元素有关,且必必须按顺序执行须按顺序执行,(前一项的输出为后一项的输入),则,(前一项的输出为后一项的输入),则成为顺序内聚模块。如入库统计模块:打开数据库、入库成为顺序内聚模块。如入库统计模块:打开数据库、入库统计计算、入库统计结果输出要顺序执行统计计算、入库统计结果输出要顺序执行打开入库数据表打开入库数据表入库统计计算入库统计计算入库统计结果输出入库统计结果输出 入库统计模块入库统计模块功能内聚功能内聚:如果一个模块中各个部分都是完成某一具如果一个模块中各个部分都是完成某一具体功能必不可少的组成部分,各个部分体功能必
35、不可少的组成部分,各个部分协同工作协同工作,紧密联系,不可分割紧密联系,不可分割,则称该功能模块为功能内聚,则称该功能模块为功能内聚模块。模块。功能内聚模块的功能内聚模块的特征特征是:是:功能单一,接口简单,因功能单一,接口简单,因此其容易实现、便于维护,内聚程度最高,是软件此其容易实现、便于维护,内聚程度最高,是软件结构设计追求的目标。结构设计追求的目标。l 为提高模块的独立性,要求模块为提高模块的独立性,要求模块高内聚、低耦合。高内聚、低耦合。思考以下问题l上级模块上级模块A A在调用下级模块在调用下级模块B B时需要返回一个标记时需要返回一个标记X X,用于,用于模块模块A A中分支语句
36、的判断条件。这时的模块中分支语句的判断条件。这时的模块A A与模块与模块B B之间之间是什么耦合关系?是什么耦合关系?l解答:解答:控制耦合。控制耦合。l模块模块A A是写文件模块,需要向文件是写文件模块,需要向文件F F写数据;模块写数据;模块B B是读文是读文件模块,需要从文件件模块,需要从文件F F读数据。这时的模块读数据。这时的模块A A与模块与模块B B之间之间是什么耦合关系?是什么耦合关系?l解答:解答:公共耦合。公共耦合。l一些通用菜单模块属于哪种内聚形式?一些通用菜单模块属于哪种内聚形式?l解答解答:逻辑内聚。逻辑内聚。l模块模块A A是数据查询模块,其模块内部包括输入查询条件
37、、是数据查询模块,其模块内部包括输入查询条件、连接数据源、打开查询记录集、显示查询结果。该模块属连接数据源、打开查询记录集、显示查询结果。该模块属于哪种内聚形式?于哪种内聚形式?l解答:解答:顺序内聚。顺序内聚。小小 结结 l1设计过程与任务 l概要设计中首先需要进行的是概要设计中首先需要进行的是系统构架设计,系统构架设计,然后是软件结构、数据结构等方面的设计然后是软件结构、数据结构等方面的设计。主。主要有以下几个方面的设计任务:要有以下几个方面的设计任务:制定规范、系制定规范、系统构架设计、软件结构设计、公共数据结构设统构架设计、软件结构设计、公共数据结构设计、安全性设计、故障处理设计、可维
38、护性设计、安全性设计、故障处理设计、可维护性设计、编写文档、设计评审。计、编写文档、设计评审。 2系统构架设计(1)集中式结构 集中式系统由一台计算机主机和多个终端设备组成。其具有非常好的工作稳定性和安全保密性。但系统建设费用、运行费用比较高,灵活性不够好,结构不便于扩充。(2)客户机/服务器结构 客户机/服务器结构依靠网络将计算任务分布到许多台不同的计算机上,但通过其中的服务器计算机提供集中式服务。其优越性是结构灵活、便于系统逐步扩充。 (3)多层客户机/服务器结构 两层结构:将信息表示与应用逻辑处理都放在了客户机上,服务器只需要管理数据库事务。 三层结构:将两层结构的客户机上的容易发生变化
39、的应用逻辑部分提取出来,并放到一个专门的“应用服务器”上。 B/S结构:是Web技术与客户机/服务器结构的结合。其优点是不需要对客户机进行专门的维护。 3 3软件结构设计软件结构设计 软件结构设计软件结构设计是对组成系统的各个子系统的进一步分解与是对组成系统的各个子系统的进一步分解与规划。规划。主要设计内容有:主要设计内容有:确定模块元素、定义模块功能、定确定模块元素、定义模块功能、定义模块接口、确定模块调用与返回、进行结构优化义模块接口、确定模块调用与返回、进行结构优化。 (1 1)模块概念)模块概念 模块化:模块化:使用构造程序,可使软件问题简化。使用构造程序,可使软件问题简化。 抽象化:
40、抽象化:概要设计中的模块被看成是一个抽象化的功能黑盒概要设计中的模块被看成是一个抽象化的功能黑盒子。子。 信息隐蔽:信息隐蔽:每个模块的内部实现细节对于其他模块来说是隐每个模块的内部实现细节对于其他模块来说是隐蔽的。蔽的。 (2 2)模块的独立性)模块的独立性 软件系统中每个模块都只涉及自己特定的子功能,并且接软件系统中每个模块都只涉及自己特定的子功能,并且接口简单,与软件中其他模块没有过多的联系。一般采用口简单,与软件中其他模块没有过多的联系。一般采用耦合耦合和和内聚内聚这两个定性的技术指标进行度量。这两个定性的技术指标进行度量。 耦合耦合用来反映模块相互关联程度用来反映模块相互关联程度,模
41、块间连接越紧密,耦,模块间连接越紧密,耦合性就越高。合性就越高。内聚内聚用来反映模块内元素的结合程度用来反映模块内元素的结合程度,模块内,模块内元素结合越紧密,则内聚性就越高。为提高模块独立性,要元素结合越紧密,则内聚性就越高。为提高模块独立性,要求模块求模块高内聚、低耦合高内聚、低耦合。 耦合耦合形式由低至高形式由低至高是:是: 非直接耦合、数据耦合、控制耦合、公共耦合、内容耦合非直接耦合、数据耦合、控制耦合、公共耦合、内容耦合。 内聚内聚形式由低至高形式由低至高是:是: 偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内
42、聚内聚、功能内聚。 软件结构设计涉及软件结构设计涉及模块功能,模块接口与模块调用模块功能,模块接口与模块调用关系,需要借助于一定的图形工具来建立设计模型关系,需要借助于一定的图形工具来建立设计模型. 结构化的设计方法主要有结构化的设计方法主要有功能模块划分设计功能模块划分设计、面向面向数据流设计数据流设计、输入输入/输出设计输出设计等。等。1、功能模块划分设计功能模块划分设计这种设计方法是根据功能进行分解,分解成一些模块,设计者从高层到低层一这种设计方法是根据功能进行分解,分解成一些模块,设计者从高层到低层一层一层地进行分解,每层都有一定的关联关系,每个模块都有特定的、明确的层一层地进行分解,
43、每层都有一定的关联关系,每个模块都有特定的、明确的功能,每个模块的功能是相对独立的,同时也是可以集成的。功能,每个模块的功能是相对独立的,同时也是可以集成的。模块划分应该体现信息隐藏、高内聚、松耦合的特点。如图模块划分应该体现信息隐藏、高内聚、松耦合的特点。如图51所示的图书馆所示的图书馆管理系统功能模块划分的设计。管理系统功能模块划分的设计。 2 2、输入、输入/ /输出设计输出设计这种方法类似于黑盒设计方法,它是基于用户的输这种方法类似于黑盒设计方法,它是基于用户的输入进行的设计,高层描述用户的所有可能输入,入进行的设计,高层描述用户的所有可能输入,低层描述出针对这些输入系统所完成的功能,
44、可低层描述出针对这些输入系统所完成的功能,可采用采用IPOIPO图表示设计过程。图表示设计过程。IPOIPO图图用于说明描述模块的用于说明描述模块的输入输入- -处理处理- -输出输出特征。特征。HIPOHIPO图图:由美国:由美国IBMIBM公司推出。其中,公司推出。其中,H H图图 用于描述软件的用于描述软件的分层调用关系分层调用关系。HIPOHIPO图提供了有关模块的更加完整的定义和说明,图提供了有关模块的更加完整的定义和说明,更更有利于由概要设计到详细设计的过度。有利于由概要设计到详细设计的过度。 作为构造软件的基本框架,软件结构应该与需求分析时建立作为构造软件的基本框架,软件结构应该
45、与需求分析时建立的分析模型保持一致。一种非常有效的设计思路是,基于需求分的分析模型保持一致。一种非常有效的设计思路是,基于需求分析中的数据流模型进行软件结构映射,由此产生软件系统的基本析中的数据流模型进行软件结构映射,由此产生软件系统的基本设计模型。设计模型。 为了方便从数据流模型中映射出软件结构,需要对数据流进为了方便从数据流模型中映射出软件结构,需要对数据流进行分类。可以将数据流分为变换流或事务流,然后按照各自不同行分类。可以将数据流分为变换流或事务流,然后按照各自不同的特点分别采取不同的映射方法。的特点分别采取不同的映射方法。 1. 1. 变换分析变换分析:软件结构由输入、变换和输出三个
46、部分组成。:软件结构由输入、变换和输出三个部分组成。 2. 2. 事务分析事务分析:软件结构由接收事务与事务活动两个部分组成。:软件结构由接收事务与事务活动两个部分组成。 3.3.混合流分析与设计混合流分析与设计:软件系统是变换流域事务流的混合。:软件系统是变换流域事务流的混合。对应这样的系统,通常采用变换分析为主,事务分析为辅的方式对应这样的系统,通常采用变换分析为主,事务分析为辅的方式进行软件设计进行软件设计l1、变换流:变换流数据所体现的是数据从输入到加工再到输出的一般步骤:l即数据首先经过输入过程,将外部数据形态变换成适合进行加工的内部形态;l然后经过变换中心,将已转换成内部形态的输入
47、数据加工成一种新的数据形态,l最后,再经过输出过程,将经过加工产生的新的数据结果,转换成适合向外导出的数据形态。l2、高层架构:由于变换数据流将整个过程分割成输入、变换、输出三部分,软件结构在总控模块之下,将软件分为输入、变换、输出三部分。输入控制输入控制总控总控变换控制变换控制输出控制输出控制l3、下层模块l输入、变换、输出还可细化。如下图:l1、事务流:当输入的数据流可以引发多个不同的事务活动流程,并且,数据流图中有一个明显的事务调度中心,这种数据流被称为事务数据流。l2、软件结构 软件结构需要进行优化,由此提高软件质量。一软件结构需要进行优化,由此提高软件质量。一些来源于经验的结构优化原
48、则如下:些来源于经验的结构优化原则如下: 1.使使模块功能完整模块功能完整:一个完整的功能模块包含:一个完整的功能模块包含:执行规定的功能执行规定的功能出错处理出错处理在完成数据加工时给出在完成数据加工时给出“结束结束”标志标志2. 使使模块大小适中模块大小适中 在功能完整、内聚性高的前提下,模块较小为好。在功能完整、内聚性高的前提下,模块较小为好。3. 使使模块功能可预测模块功能可预测模块功能可明确定义模块功能可明确定义输入数据相同,总能产生相同的结果输入数据相同,总能产生相同的结果l 4. 尽量降低模块接口的复杂程度尽量降低模块接口的复杂程度接口参数尽量采用简单数据类型接口参数尽量采用简单
49、数据类型限制接口参数的个数限制接口参数的个数l 5. 使模块作用范围限制在其控制范围之内使模块作用范围限制在其控制范围之内将判定所在的模块合并到父模块中将判定所在的模块合并到父模块中将受判定影响的模块下移到控制范围之内。将受判定影响的模块下移到控制范围之内。l l我们首先复习使用最广的关系数据库规范的三我们首先复习使用最广的关系数据库规范的三范式:范式:l第一范式:如果关系模式R的每一个属性都是不可分解的,则R为第一范式的模式,记为:R1NF。l 例如,有关系:学生学生1(学号,姓名,性别,出生日期,(学号,姓名,性别,出生日期,系部代码,入学时间,家庭成员),系部代码,入学时间,家庭成员),
50、 “学生1”关系不满足第一范式,因为家庭成员可以再分解为“父亲”、“母亲”等属性。l 解决的方法是将解决的方法是将“学生学生1”关系分解为学生(学号,姓名,关系分解为学生(学号,姓名,性别,出生日期,系部代码,入学时间)和家庭(学号,家性别,出生日期,系部代码,入学时间)和家庭(学号,家庭成员姓名,亲属关系)两个关系模式。庭成员姓名,亲属关系)两个关系模式。l (2 2)第二范式:第二范式:如果关系模式如果关系模式R R是第一范式,且每个非主属性都完是第一范式,且每个非主属性都完全函数依赖于关键字,则称全函数依赖于关键字,则称R R为满足第二范式的模式,记为:为满足第二范式的模式,记为:R2N
51、FR2NF。l 例如,有关系:选课例如,有关系:选课1 1(学号,课程号,系部代码,出生日(学号,课程号,系部代码,出生日期,成绩),期,成绩),“选课选课1”1”关系不满足第二范式,因为关系不满足第二范式,因为“成绩成绩”属性完属性完全依赖于主关键字(学号,课程号),而全依赖于主关键字(学号,课程号),而“系部代码系部代码”属性、属性、“出出生日期生日期”只依赖于部分主关键字只依赖于部分主关键字“学号学号”,所以,不是每一个非关,所以,不是每一个非关键字属性都完全函数依赖于关键字属性。键字属性都完全函数依赖于关键字属性。l 解决的方法是将解决的方法是将“选课选课1”1”关系投影分解为选课(学
52、号,课关系投影分解为选课(学号,课程号,成绩)和学生(学号,姓名,性别,出生日期,系部代码,程号,成绩)和学生(学号,姓名,性别,出生日期,系部代码,入学时间)两个关系模式。入学时间)两个关系模式。l (3 3)第三范式:第三范式:如果关系模式如果关系模式R R是第二范式,且没有一个非关是第二范式,且没有一个非关键字属性是传递函数依赖于候选关键字属性,则称键字属性是传递函数依赖于候选关键字属性,则称R R为满足第三范式为满足第三范式的模式,记为:的模式,记为:R3NFR3NF。l例如,有关系:学生例如,有关系:学生2 2(学号,姓名,性别,出生日期,系名,入学时间,(学号,姓名,性别,出生日期
53、,系名,入学时间,系宿舍楼),系宿舍楼),“学生学生2 2”关系不满足第三范式,因为关系不满足第三范式,因为“系宿舍楼系宿舍楼”属性依赖属性依赖于主关键字于主关键字“学号学号”,但也可以从非关键字属性,但也可以从非关键字属性“系名系名”导出,即导出,即“系宿系宿舍楼舍楼”传递依赖传递依赖“学号学号”。学号系名系宿舍楼“学生学生2”关系中的函数依赖关系中的函数依赖 解决的方法同样是将解决的方法同样是将“学生学生2”关系分解为学生(学号,姓名,性别,出生关系分解为学生(学号,姓名,性别,出生日期,系名,入学时间)和宿舍楼(系名,宿舍楼)两个关系模式。日期,系名,入学时间)和宿舍楼(系名,宿舍楼)两
54、个关系模式。 l数据库数据库 的作用是为软件系统提供数据存的作用是为软件系统提供数据存储与运算。是许多系统必不可少的组成储与运算。是许多系统必不可少的组成部分。数据库的结构设计包括逻辑设计部分。数据库的结构设计包括逻辑设计和物理设计。和物理设计。 1.设计数据表设计数据表 在关系型数据库中,数据是以数据表为单位实现存储的。因在关系型数据库中,数据是以数据表为单位实现存储的。因此,数据库的逻辑结构设计首先要确定的就是数据库中的诸多数据表。此,数据库的逻辑结构设计首先要确定的就是数据库中的诸多数据表。 可以按照以下原则从可以按照以下原则从ER图(数据关系模型)中映射出数据库中的数据表来:图(数据关
55、系模型)中映射出数据库中的数据表来: ER图中的每一个实体映射为一个数据表图中的每一个实体映射为一个数据表 数据关系也映射为数据表(包括数据关系也映射为数据表(包括 n:m , 1:n ,1:1的关系)的关系)P62 第第8题某图书馆图书管理系统对数据的基本要求如下题某图书馆图书管理系统对数据的基本要求如下(1)涉及图书、图书管理员、读者这三类数据实体。)涉及图书、图书管理员、读者这三类数据实体。(2)上述数据实体的数据结构是:图书(图书编号、书名、作者、出版单位、)上述数据实体的数据结构是:图书(图书编号、书名、作者、出版单位、出版日期、定价);图书管理员(管理员编号、姓名、密码、登记日期);读出版日期、定价);图书管理员(管理员编号、姓名、密码、登记日期);读者(读者编号、姓名、工作单位、身份证号码)。者(读者编号、姓名、工作单位、身份证号码)。(2)上述数据实体之间的关系是:图书将由管理员登记入册,在登记图书时)上述数据实体之间的关系是:图书将由管理员登记入册,在登记图书时需要记录图书登记日期;图书将被读者借阅,在图书办理借阅时需要记录图书需要记录图书登记日期;图书将被读者借阅,在图书办理借阅时需要记录图书的借书日期和还书日期。的借书日期和还书日期。请使用请使用ER图建立上述数据的数据模型。图建立上述数据的数据模型。 以下是图书借
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年急性心肌梗死救治应急预案及流程
- 极端高温下脑卒中急诊救治的挑战与对策
- 急救设备管理规范
- 极端天气下远程急诊分诊的效率提升
- 海南省万宁市2025-2026学年七年级下学期5月期中语文试卷(无答案)
- 医学26年:血栓弹力图结果解读 查房课件
- 2026年正比例说课稿图纸
- 安徽省宿州市泗县2025-2026学年八年级下学期期中质量检测历史试卷(含答案)
- 2026年湖南省常德市高考数学一模试卷(含答案)
- 老年患者护理质量与安全管理
- 2025年神农架林区公安局招聘辅警真题
- 胸痹患者中医护理评估与干预
- 2026年4月福建厦门市思明区部分单位联合招聘非在编人员4人笔试模拟试题及答案解析
- 江苏苏豪控股集团秋招面笔试题及答案
- 24J113-1 内隔墙-轻质条板(一)
- 律师事务所内部惩戒制度
- 高中英语课堂形成性评价与听力理解能力提升教学研究课题报告
- 校园校园环境智能监测系统方案
- (2025年)资阳市安岳县辅警考试公安基础知识考试真题库及参考答案
- 小学音乐中多元文化音乐元素的融合与创新教学课题报告教学研究课题报告
- 心脏再同步化治疗的精准医疗策略
评论
0/150
提交评论