• 1. 第四章 总体设计13份WPF经典开发教程 http://download.csdn.net/album/detail/1115 C#资料合辑二[C#桌面编程入门篇] http://download.csdn.net/album/detail/957 C#资料合辑一[C#入门篇] http://download.csdn.net/album/detail/669 [Csharp高级编程(第6版)](共8压缩卷) http://download.csdn.net/album/detail/667 10个[精品资源]Java学习资料合辑[一] http://download.csdn.net/album/detail/663 10个C#Socket编程代码示例 http://download.csdn.net/album/detail/631 6份GDI+程序设计资源整合[全零分] http://download.csdn.net/album/detail/625 更多免费资源 http://download.csdn.net/user/cleopard
  • 2. 第四章 总体设计 4.1 总体设计的任务 4.2 总体设计的概念和原理 4.3 设计准则 4.4 总体设计常用的方法和工具 4.5 数据库设计
  • 3. 4.1 总体设计的任务软件设计 软件设计的任务是从软件需求规格说明书出发,形成软件的具体设计方案,即将需求模型转换为软件设计。 软件设计是一个把软件需求变换成软件表示的过程,即根据需求分析的“做什么”,确定系统应该“怎么做”。 软件设计的结果是软件设计规格说明书。 软件设计是后续开发步骤及软件维护工作的基础。 从技术观点来看,软件设计包括数据设计、体系结构设计、接口设计、过程设计。 通常将软件设计分为总体设计(概要设计)和详细设计(过程设计)两个阶段。
  • 4. 软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构。测试编码维护设计编码测试维护有软件设计4.1 总体设计的任务没有软件设计
  • 5. 4.1 总体设计的任务总体设计阶段,具体任务如下: (1)制定规范 为软件开发组制定设计时应共同遵守的标准。以便协调组内各成员工作。通常包括: 阅读理解软件需求说明书,确认用户需求能否实现,进而确定设计目标及其优先级。 根据目标确定最合适的方案。 规定设计文档编制标准,包括文档体系、用纸及排版样式、记述的详细途径、图形画法等。 规定编码的信息形式(代码体系)、与硬件/操作系统的接口规约等。 制定编程规范,如命名规则、注释要求、质量保证要求、可读性要求、测试要求等。
  • 6. 4.1 总体设计的任务(2)软件系统结构设计 软件系统结构设计即确定组成系统的程序及相互关系。具体内容为: 采用某种方法,将复杂系统按功能划分成模块。 确定每个模块的功能。 确定模块之间的调用关系。 确定模块之间的接口,即模块之间传递的信息。 评价模块结构的质量。 软件结构设计是以模块为基础的,需求分析阶段,已经把系统分解为层次结构,设计阶段要实现进一步的模块划分,并组成模块的层次结构。
  • 7. 4.1 总体设计的任务(3)数据结构及数据库设计 数据结构设计 需求分析阶段,通过数据字典对数据的组成、操作约束、相互关系等方面进行描述,确定了数据的结构特征。 数据结构设计主要对数据字典的组成、操作约束、数据之间的相互关系等方面进行描述,确定数据的结构特征。
  • 8. 4.1 总体设计的任务数据库设计 概念结构设计:及数据库的概念模式设计,一般指构造实体——关系模型(E-R,Entity-Relationship)模型。 逻辑结构设计:将E-R模型转换为DBMS支持的关系模型。 物理结构设计:设计数据库的物理细节,如存储形式、路径等。 E-R模型关系模型实体集关系(表)实体元组(行)属性属性(列)属性值元组分量(列值)
  • 9. (本页无文本内容)
  • 10. 4.1 总体设计的任务(4)可靠性设计 质量设计,设计时考虑软件可靠性及其他质量指标,确保软件质量,易于修改维护。 (5)编写概要设计文档 概要设计说明书:集中于软件结构描述。 数据库设计说明书:主要内容为DBMS的选择、简介、数据库概念模型、逻辑设计结果等。 用户手册:对需求阶段编写的用户手册进行补充完善。 测试文档:修改需求分析阶段编写的测试文档,对测试策略、方法、步骤提出明确说明。 (6)设计审查和复审 对总体设计结果进行严格的技术审查,通过后再从管理角度进行严格审查。
  • 11. 4.2 总体设计的基本原理4.2.1 软件结构和过程总体设计主要是结构设计,而详细设计是过程设计。理解结构和过程的差别和特点,是进行软件设计的前提。结构 软件结构是软件要求的各个元素及其相互关系的描述。 一般软件元素就是一些功能模块,通过调用关系,组合到一起即得到软件结构。 最普通的结构是树状结构和网状结构。
  • 12. 4.2 总体设计的基本原理树状结构中,整个系统只有一个顶层模块,下层模块只有一个上层模块,同一层模块之间不发生联系。 网状关系中,模块关系平等,自由调用。 网状关系模块之间联系的随意性使得系统结构复杂,难于处理,所以实际中一般采用树状结构。ABCDEFGH0层1层2层ABCDEABCDE
  • 13. 4.2 总体设计的基本原理——结构软件求解问题 软件结构由问题定义开始导出,当问题划分的各部分,分别由一个或多个软件模块解决的时候,也就得到了软件结构。这个过程代表了软件需求分析到设计的转换。P1P2P3P4P5软件求解的“问题”S1S2S4S5S3软件“解法”SS1S2S3S4S5软件结构
  • 14. 4.2 总体设计的基本原理——结构不同结构的解法问题S1S2S3S4S5软件结构1S1S2S3S4S5软件结构2S1S3S2S4S5软件结构3
  • 15. 4.2 总体设计的基本原理结构的度量和术语宽度深度统帅从属扇出扇入深度:控制的层数; 宽度:控制的总分布; 扇出:一模块直接控制的模块数;扇入:一个模块的直接上属模块数; 统帅:一模块控制另外的模块; 从属:模块被另外的模块所控制;每个方框代表一个模块
  • 16. 4.2 总体设计的基本原理——过程过程 软件结构隐含着控制层次的关系,但并不表示软件过程关系,不考虑处理和判断的顺序。模块软件过程集中考虑每个模块各自的处理细节。过程必须提供一个精确的处理规格说明,包括事件顺序、精确的判定、重复的操作、以及数据组织结构等。(详细设计阶段的工作)
  • 17. 4.2 总体设计的基本原理——模块化4.2.2 模块化 模块(Module),又称“构件”,一般指程序中的数据说明、可执行语句等程序对象的集合,还可以是单独命名和编址的元素,如高级语言中的过程、函数、子程序、类等。在软件的体系结构中,模块是可组合、分解和更换的单元,一般有如下基本属性: 接口:指模块的输入与输出。 功能:模块实现的功能,应注意这里的功能是模块本身的功能和它调用的所有子模块功能的集合。 逻辑:描述内部如何实现要求的功能及所需数据。 状态:该模块的运行环境,即该模块的调用与被调用关系。 模块化是将系统划分为若干个模块, 每个模块完成一个子功能。 模块化的目的是将系统“分而治之”,因此能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。
  • 18. 4.2 总体设计的基本原理——模块化(1)模块化降低软件复杂度的简单证明令:C(X)表示问题 X 的复杂度函数; E(X)解决问题 X 所需工作量的复杂度函数; 若: 有问题 P1,P2,C(P1)> C(P2) ; 显然: E(P1)> E(P2) 由经验:C(P1+P2)> C(P1)+ C(P2) 于是: E(P1+P2)> E(P1)+ E(P2) 即将问题(P1+P2)划分为两个问题P1 和 P2 后,其工作量和复杂度都降低。 但并非模块分得越小越好。模块数越多,模块之间接口的复杂度和工作量增加。所以模块化并非将系统划分为尽量多的模块,而是要求在模块化的过程中,同时考虑减少接口复杂性,提高模块独立性,有效降低软件的复杂度。模块数目软件成本最小 成本区
  • 19. 4.2 总体设计的基本原理——模块化(2)抽象与逐步求精 抽象 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。 共同特征是指那些能把一类事物与他类事物区分开来的特征,又称本质特征。抽取事物的本质特征,舍弃不同特征。 软件工程过程中的每一步部可以看作是对软件解决方法的抽象层次的一次细化。 系统定义阶段,将软件作为系统一个完整部件进行描述。 需求分析期间,使用在问题环境中熟悉的方式几术语来描述。 软件设计时,抽象与逐步求精、模块化密切相关,由抽象到具体地分析和构造出软件的层次结构。 编写出原程序后,达到了抽象的最底层。
  • 20. 4.2 总体设计的基本原理——模块化逐步求精 逐步求精是人类解决复杂问题的又一基本方法。 George Miller有项心理学法则(1956): “魔术数字7加减2” ,指出人一次能处理或记忆的资讯大概只有七项,多了也记不住,反而模糊了焦点。 将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。 在搞抽象级别定义功能陈述,并不涉及功能内部实现及信息细节,设计者对陈述进行细化,逐步求精提供越来越多的细节,直至得到用程序语言表达的程序。
  • 21. 4.2 总体设计的基本原理——模块化(3)信息隐蔽与局部化 信息隐蔽 指在设计模块时,应该使模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化 指把一些关系密切的软件元素物理的放得彼此靠近。显然,局部化有助于实现信息隐蔽。 使用信息隐蔽原理作为模块化系统设计的标准使得独立模块之间仅仅交换为完成系统功能而必须交换的信息,而绝大多数数据和过程对于软件其他部分而言是隐蔽的,因此在修改期间由于疏忽而引入的错误传播到软件的其他部分的可能性就很小。
  • 22. 4.2 总体设计的基本原理——模块化(4)模块独立 模块独立的概念是模块化、抽象、信息隐蔽的局部化概念的直接结果。 模块的独立程度可以用内聚和耦合这两标准来衡量。 模块独立是优秀软件设计的关键,设计是决定软件质量的关键。
  • 23. 开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。这样做有两个好处: 第一,有效的模块化(即具有独立的模块)的软件比较交易开发出来,这是由于能够将功能分割而且接口可以简化; 第二,独立的模块比较容易测试和维护。这是因为相对来说,修改设计和程序所需要的工作量较小,错误传播范围小,而且需要扩充功能时能够“插入”模块。
  • 24. 4.2 总体设计的基本原理——耦合(5)耦合 耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。 方式 块间联系方式有“直接引用”或“过程语句调用” 。显然直接引用方式块间联系紧密。 作用 块间传送的共用信息(参数),可为“数据型” 、 “控制型”或“混合型” (数据/控制型) ,控制型信息使块间联系增高。 数量 块间传送的共用信息的数量越大,块间联系越紧密。
  • 25. 4.2 总体设计的基本原理——耦合耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。 一般模块之间可能的连接方式有七种,构成七种耦合:非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合低高强弱耦合性模块独立性
  • 26. 4.2 总体设计的基本原理——耦合①非直接耦合(Non-direct coupling ) 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。 模块从属于不同的模块控制或调用; 耦合程度最低,独立性最强。主模块ABCEFGXYZ
  • 27. 4.2 总体设计的基本原理——耦合②数据耦合(Data Coupling) 模块调用时,通过参数表(不是控制参数、公共数据结构或外部变量)来传递简单数据,则称这种耦合为数据耦合。 界面简单、安全可靠,属松散耦合,模块之间独立性强。 画直线的命令LINE:p0 (x0, y0) p1 (x1, y1)数据耦合 LINE ( x0, y0, x1, y1)
  • 28. 4.2 总体设计的基本原理——耦合③标记耦合(Stamp Coupling) 模块调用时,传递记录是某一数据结构的子结构,而不是简单变量,为标记耦合。 是数据耦合的变形,要求两个模块都要清楚数据结构,并按规定要求进行操作。设计中要尽量避免标记耦合,可将统一数据结构操作集中在同一模块中。p0 (x0, y0) p1 (x1, y1)标记耦合 LINE ( p0, p1)
  • 29. 模块1模块2模块1模块2通过参数表传递数据结构(标记耦合)通过参数表传递简单数据(数据耦合)非直接耦合计算水电费计算水费计算电费住户 情况住户 情况水费 电费
  • 30. 4.2 总体设计的基本原理——耦合④控制耦合(Control coupling) 一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能。 实质是在单一接口上选择多功能模块中的某项功能。所以对被控制模块的任何修改,都会影响控制模块。 控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块的独立性。模块取阴历日期 或阳历日期 类型日期模块阴历日期取阴历取阳历阳历日期分解 控制耦合
  • 31. 4.2 总体设计的基本原理——耦合⑤外部耦合(External coupling) 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。 外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
  • 32. 4.2 总体设计的基本原理——耦合⑥公共耦合(Common coupling) 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。 这种耦合会引起下列问题 若修改公共数据环境某个数据,会影响到所有公共耦合模块。 无法控制各模块对公共数据的存取,严重影响软件模块的可靠性和适应性。 公共数据名的使用,明显降低了程序的可读性。
  • 33. 4.2 总体设计的基本原理——耦合公共耦合的复杂程度随耦合模块的个数增加而显著增加。若一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据,则这种公共耦合叫做松散公共耦合。若两个模块都从公共数据环境中读写数据,则这种公共耦合叫做紧密公共耦合。Global:V1,V2A: ………… A1=V1+V2 …………B: ………… V1=B1 …………Global:V1,V2A: ………… ………… V1++ …………B: ………… ………… V2=B1+V1 …………AB公共数据区松散 耦合AB公共数据区紧密 耦合
  • 34. 4.2 总体设计的基本原理——耦合⑦内容耦合(Content coupling) 如果发生下列情形,两个模块之间就发生了内容耦合: 一个模块直接访问另一个模块的内部数据; 一个模块不通过正常入口转到另一模块内部; 两个模块有一部分程序代码重叠(只可能出现在汇编语言中); 一个模块有多个入口
  • 35. 4.2 总体设计的基本原理——耦合在内容耦合的情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错。 大多数高级程序设计语言已经设计成不允许出现内容耦合。它一般出现在汇编语言程序中。这种耦合是模块独立性最弱的耦合。 AB进入另一模块内部模块代码重叠ABentry1 …… entry2 ……模块多个入口
  • 36. 4.2 总体设计的基本原理——耦合影响耦合度的因素 连接方式的类型 直接的控制和调用(模块间关系明确,独立性最强); 间接的通过参数传递; 公共数据区(全局变量;公共数据环境); 模块的直接引用,直接引用其他模块内部的数据或控制指令。(耦合度最强)
  • 37. 4.2 总体设计的基本原理——耦合接口的复杂性 接口间传递的信息数量、以及穿越接口次数和类型决定了接口的复杂性。 例如,M个模块共享N个数据区,则可能产生M×(M-1)×N个联系,修改一处需要考虑许多模块。
  • 38. 几种耦合的比较耦合形式可读性可维护性扩散错误的能力公用性非直接耦合好好弱好数据耦合好一般弱好控制耦合一般不好一般不好公共耦合最坏坏强最坏内容耦合最坏最坏最强最坏
  • 39. 4.2 总体设计的基本原理——聚合(6)内聚(Cohesion) 内聚性也称块内联系,指模块的功能强度的度量, 即一个模块内部各个元素彼此结合的紧密程度的度量。 若一个模块内各元素(语句之间、 程序段之间)联系的越紧密,则它的内聚性就越高。 一般情况下,模块内元素的联系可能有7种情况,构成7种不同的内聚:功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚偶然内聚高低强弱内聚性模块独立性
  • 40. 4.2 总体设计的基本原理——聚合①偶然内聚(Coincidental Cohesion) 指一个模块内的各处理元素之间没有有意义的联系。 当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。 这种模块没有独立功能,各部分之间没有联系,或联系很松散。 例如,为了节省存储,把一些无联系的处理序列抽出来组成一个新的模块,这个模块就属于偶然内聚。这样的模块不易理解也不易修改,这是最差的内聚情况。
  • 41. 4.2 总体设计的基本原理——聚合②逻辑内聚(Logical Cohesion) 指模块内执行几个逻辑上相似的功能, 通过参数确定该模块完成哪一个功能。 调用时需要进行控制参数的传递, 造成模块间的控制耦合,调用此模块时,不用的部分也占据了主存, 降低了系统效率。 如错误处理,将各种类型错误的信息输出放在一起,构成单入口多功能模块。写一个记录读一个记录判定调用模块被调用 模块
  • 42. 4.2 总体设计的基本原理——聚合③时间内聚(Classical Cohesion) 又称为经典内聚。把需要同时执行的动作组合在一起形成时间内聚模块。 如初始化一组变量,同时打开若干文件, 同时关闭文件等, 都与特定时间有关。 时间内聚模块往往与其他模块联系的比较紧密。 如初始化模块对许多模块的运行有影响,因此和其他模块耦合的程度较高。 例如,初始化模块和终止模块就是时间内聚模块。
  • 43. 4.2 总体设计的基本原理——聚合④过程内聚(Procedural Cohesion) 如果一个模块内处理是相关的,且必须以特定次序执行,则称其为过程内聚模块。 以过程为基础的结构设计可能导致结果的高度可变性,选择不当则不能完成独立任务,也无法在新系统中使用。 例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。
  • 44. 4.2 总体设计的基本原理——聚合⑤通信内聚(Communication Cohesion) 若一个模块内部各功能部分都使用了相同的输入数据,或者产生了相同的输出数据,则称之为通信内聚模块。 通常,通信内聚模块是通过数据流图来定义的。模块内各个功能是紧密相连的。 通信内聚模块内包含了很多独立的功能,但由于各部分功能使用相同的输入/输出缓冲区,效率下降。
  • 45. 4.2 总体设计的基本原理——聚合打印 检验结 果读文件文件计算A计算B合并修改 文件新文件A结果B结果加工记录
  • 46. 修改库存开发货单库存A购货单修改D1删除D1B库存D1数据流图中的通信内聚
  • 47. 4.2 总体设计的基本原理——聚合⑥信息内聚(Informational Cohesion) 信息内聚模块完成多个功能,各个功能相互独立但都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。 信息内聚将数据结构、资源或设备隐藏在一个模块内,达到信息隐蔽,独立性较强。 信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。
  • 48. 13份WPF经典开发教程 http://download.csdn.net/album/detail/1115 C#资料合辑二[C#桌面编程入门篇] http://download.csdn.net/album/detail/957 C#资料合辑一[C#入门篇] http://download.csdn.net/album/detail/669 [Csharp高级编程(第6版)](共8压缩卷) http://download.csdn.net/album/detail/667 10个[精品资源]Java学习资料合辑[一] http://download.csdn.net/album/detail/663 10个C#Socket编程代码示例 http://download.csdn.net/album/detail/631 6份GDI+程序设计资源整合[全零分] http://download.csdn.net/album/detail/625 更多免费资源 http://download.csdn.net/user/cleopard
  • 49. 4.2 总体设计的基本原理——聚合初始化插入删除查找修改符号表(数据结构)
  • 50. 4.2 总体设计的基本原理——聚合⑦功能内聚(Functional Cohesion) 是最强的内聚, 指模块内所有元素共同完成一个功能,缺一不可。因此,模块不能再分割。 功能内聚的模块易理解、易修改, 因为它的功能是明确的、单一的,因此与其他模块的耦合是弱的。 功能内聚的模块有利于实现软件的重用, 从而提高软件开发的效率。
  • 51. 4.2 总体设计的基本原理耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性, 为设计高质量的软件结构奠定基础。 内聚和耦合性是相互关联的,一般情况下,程序结构中各模块内聚程度越高,模块间耦合性就越低,但也不是绝对的。 总体设计的目的是尽量实现模块的高内聚、低耦合,但也有内聚性与耦合性发生矛盾的时候,为了提高内聚性而可能使耦合性变差,在这种情况下,建议给予耦合性以更高的重视。
  • 52. 4.3 设计准则软件概要设计包括模块的划分和结构的定义。目标是产生一个模块化的程序结构,并明确模块之间的控制关系,以及定义界面、说明程序的数据,进一步调整程序结构和书数据结构。 在进行软件结构设计时,应采用模块化、抽象和信息隐藏,并遵循模块独立性原则。下面介绍一些具体的改进软件设计、提高软件质量的准则。这些准则是今后软件结构设计、求精和复查的依据。
  • 53. 4.3 设计准则1 模块划分时应保持模块独立性 划分时,应保持模块的相对独立性。 相关部分划分在一起,不相关不要放在一起; 设计出初始软件结构后,应对该结构进行审查分析,通过模块分解与合并,显著改进软件结构,提高内聚,降低耦合。AC1 B C2ABC1’C2’CABC
  • 54. 4.3 设计准则2 模块大小要适中 模块过大,说明分解不够,不易理解;模块过小。数目会增多,系统接口会变得复杂。 一般来说,模块的大小以50行左右的高级语言程序量为宜。心理学研究表明,在人的智力跨度之内,此规模比较容易阅读和理解。 如果一个独立的功能模块少于50行,不要硬性拼凑;如果一个独立功能模块多余50行,也不要硬性分解。 如果出现以下情况,就停止模块分解: 模块不能再细分为明显的子任务; 分解成用户提供的模块或库函数; 模块接口是输入输出设备传送的信息; 模块不宜再分解得过小。
  • 55. 4.3 设计准则3 模块的接口 模块的接口要简单、清晰、含义明确,便于理解,易于调试、实现和维护。 模块接口传递的信息要尽量简单,并与模块功能相一致。例如,求矩形面积,有函数 Arr[0]=a; Arr[1]=b; area=Area (a,b); area=Area(Arr[]);数组参数,与函数功能不一致
  • 56. 4.3 设计准则4 模块的作用范围 在软件结构中,由于存在着不同事务处理的需要, 某一层上的模块会存在着判断处理,这样可能影响其他层的模块处理,引入了模块的作用范围(或称影响范围)与控制范围的概念。 模块的作用范围指受该模块内一个判定影响的所有模块的集合。 模块的控制范围指模块本身以及其所有下属模块(直接或间接)从属于它的模块)的集合。
  • 57. 4.3 设计准则控制范围是从结构方面考虑的,作用范围则是功能上的概念。 模块的作用范围应在其控制范围之内,且判定所在的模块,应与受其影响的模块在层次上尽量靠近。
  • 58. 4.3 设计准则5 软件结构的深度、宽度、扇入、扇出数应适当 软件深度表示控制的层数;宽度指同一层次上模块总数的最大值;扇出是一个模块直接控制(调用)的模块数量;扇入表明有多少个上级模块直接调用它。 对宽度影响最大的因素是模块的扇出; 经验表明,一般好的软件结构平均扇出是3或4,上限通常是5-9;扇出太大一般是缺少中间层次;扇出太小可将下一级模块进一步分解或合并。 如一个模块的扇入数很大(>9),而又不是公共模块,则说明该模块分解不够。 好的软件结构通常顶层扇出较高,中层扇出较少,底层(基础公共模块)有较高的扇入。
  • 59. 4.3 设计准则6 尽量设计功能可预测的模块,防止模块功能过分局限 只要输入的数据相同就产生相同的输出,则该模块功能是可预测的。 内部带“存储器”的模块功能可能是不可预测的,输出可能取决于内部的某个存储状态,不易理解,难于测试和维护。 如有可能,模块接口尽量灵活,可提高复用率。
  • 60. (本页无文本内容)
  • 61. 4.4 总体设计常用的方法及工具从系统设计的角度出发,软件设计方法大体可分为三类: (1)面向数据流的程序设计(Data Flow-Oriented Design)或过程驱动的设计(Process-Driven Design) (2)面向数据结构的设计(Data Structure-Oriented Design)或数据驱动的设计(Data-Driven Design) (3)面向对象程序设计(Object-Oriented Design)。 本节介绍前两种方法。
  • 62. 4.4 总体设计常用的方法及工具4.4.1 面向数据流的设计方法 面向数据流的设计,又称为结构化设计方法(Structured Design,SD),是在模块化、自顶向下逐步求精、结构化程序设计等软件设计技术基础上发展起来的。 与结构化分析(SA)相衔接,构成完整的结构化分析设计技术,成熟,应用范围广泛。 SD方法以数据流图为基础,按一定的方法将其映射为软件结构图。
  • 63. 4.4 总体设计常用的方法及工具该方法实施的要点是: (1)首先研究、分析和审查数据流图。 从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。 (2)然后根据数据流图确定数据处理的类型。典型的类型有两种:变换型和事务型。针对两种不同类型分别进行分析处理。 (3)由数据流图推导出系统的初始结构图。 (4)利用一些启发式原则改进系统初始结构图,直到得到符合要求的结构图为止。 (5)修改和补充数据字典。 (6)制定测试计划。
  • 64. 4.4 总体设计常用的方法及工具——结构化设计1 基本概念 结构化设计的思想 结构化开发方法是传统的软件工程方法中最成熟,应用最广泛的方法,由SA 、SD、SP构成。 软件具有层次性和过程性。层次性反映了软件的整体性质,常用结构图表示;过程性反映了软件的局部性质,常用框图等表示。 SD法分总体设计和详细设计两阶段。 结构化设计方法优点: 将大目标转换为小目标分别实现,减少设计复杂性; 结构独立。将功能性程序化分为相对独立的程序模块; 模块功能单一,易于修改维护; 增强了代码的可重用性。
  • 65. 4.4 总体设计常用的方法及工具——结构化设计描述工具 结构化设计方法的图形化描述工具为结构图。 结构图是软件文档的重要部分,精确表示程序结构,清楚的反应模块之间层次及其调用关系。 结构图不仅严格定义了各模块的名字、功能和接口,而且反映了设计思想。 系统结构图的基本符号模块调用数据控制信息转接符号选择(判断)重复
  • 66. 4.4 总体设计常用的方法及工具——结构化设计结构图主要内容有: 模块:用矩形表示,并用名称标识。名称应能表示其功能。 模块的控制关系:用单箭头或者直接连线表示模块之间的控制关系。调用完成之后控制返回到调用模块。 模块间信息传递:调用模块将数据或控制信息传递给被调用模块,被调用模块回送数据或控制信息。箭头尾部空心圆表示数据信息,实心圆表示控制信息。 辅助符号:连线尾部菱形符号表示条件调用,弧线循环调用。选择条件或循环条件一般无需注明。
  • 67. (a) 调用(b) 判断调用(c) 循环调用查询 成绩学号查询学 生记录查询标志记录地址ABxyz查职工简历读人事文件职工号简历数据无此职工
  • 68. 4.4 总体设计常用的方法及工具——结构化设计系统结构图中的模块 传入模块:从下属模块取得数据,经过某些处理, 再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。 传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。 变换模块:它从上级模块取得数据,进行特定的处理,转换成其它形式, 再传送回上级模块。 协调模块 :对所有下属模块进行协调和管理的模块。
  • 69. 4.4 总体设计常用的方法及工具——结构化设计传入模块AA传出模块DD变换模块AB协调模块AABB
  • 70. 4.4 总体设计常用的方法及工具——结构化设计数据流图的类型 (1)变换型 变换型数据流图是一个线性结构,由输入、变换、输出三部分组成。 信息沿通路进入系统,由外部形式变化为内部形式,经加工处理后沿输出通路变换成外部形式离开软件系统 。外部 表示内部 表示信 息时间输入流变换流输出流信息流
  • 71. 4.4 总体设计常用的方法及工具——结构化设计变换流型DFD可以分成: 输入+变换中心(主加工)+输出 输入数据 C变换数据 CD输出数据 D主模块B变换成C输入B输出CA变换成B输入AC变换成D输出DAABBBCCCDD
  • 72. 4.4 总体设计常用的方法及工具——结构化设计(2)事务型 数据沿输入通路到达一个处理,这个处理将输入分为许多平行的加工路径,并根据输入的类型,选择某一加工路径。 事务处理中心的任务是输入数据(事物),分析每个事物以确定其类型,选择活动通路处理。T事务事务中心 活动通路
  • 73. 事务中心分派模块输出结果事务1输入作业信息事务2事务3事务4作业信息作业 信息结果结果操作1操作2操作3操作4操作5操作6细节1细节2细节3细节4细节5细节6
  • 74. 4.4 总体设计常用的方法及工具——结构化设计2 设计过程 面向数据流设计方法过程如下: ①研究分析数据流图 ②确定DFD类型。若为变换型,确定变换中心和逻辑输入输出边界,映射出变换结构的顶层和第一层;若为事务型,确定事务中心和加工路径,映射出顶层和第一层。
  • 75. 4.4 总体设计常用的方法及工具——结构化设计③分解上层模块,设计中下层模块结构,最终推导出初始结构图。 ④根据优化准则对软件结构进行求精,直到得出符合要求的结构图。 ⑤描述模块功能、接口及全局数据结构。 ⑥复查,如有错转②,修改完善,最后进入详细设计。
  • 76. 流类型精化数据流程图映射成事务结构映射成变换结构区分事务中心和数据接收通路区分输入和输出分支运用模块设计规则,精化软件结构导出接口描述和全程数据结构复查详细设计变换分析事务变换
  • 77. 4.4 总体设计常用的方法及工具——结构化设计3 变换分析(变换型) 变换分析是一系列设计步骤的总称,将变换型数据流图按预先确定的模式映射为软件结构。 ①重画数据流 为了建立系统结构,将数据流图平铺开来,物理输入画在左侧,物理输出画在右侧。 如果一个外部实体既是物理输入又是物理输出,则两侧都要画出它。ABBCEGGHDFCDEABCDEFGH物理输入物理输出
  • 78. 4.4 总体设计常用的方法及工具——结构化设计②确定变换中心(主加工)及逻辑输入输出 变换中心是程序的核心功能,它的输入是逻辑输入,它的输出为逻辑输出。 通常几股数据流的汇合处就是系统的变换中心。 介于逻辑输入和逻辑输出之间的加工就是中心 。变换中心ABBCEGGHDFCDEABCDEFGH物理输入物理输出逻辑输入逻辑输出
  • 79. 4.4 总体设计常用的方法及工具——结构化设计③进行一级分解,设计上层模块 顶层模块:其功能就是整个系统的功能; 一级分解是对顶层的模块进行分解,即导出软件结构的第一层。 第一层一般至少有输入、变换、输出三种功能模块。为每个逻辑输入设计一个模块,为每个逻辑输出设计一个模块,为变换中心设计一个变换模块。 输入控制模块:接收所有的输入数据; 变换控制模块:实现输入到输出的变换; 输出控制模块:产生所有的输出数据。
  • 80. 顶层模块变换控制输出控制输入控制变换中心ABBCEGGHDFCDEABCDEFGH物理输入物理输出逻辑输入逻辑输出主模块B  C输入C输出D输出ECCD,EDE逻辑输入变换中心逻辑输出
  • 81. 4.4 总体设计常用的方法及工具——结构化设计 ④设计中下层模块 输入模块下属模块的设计 输入模块应有两部分组成:一部分接受输入数据,一部分将输入数据加工提供给调用者。 为每个输入设计两个下属模块,逐层分级直至物理输入。 输出模块的下属模块设计 为每个输出设计两个下属模块,一个将数据转换为下属模块所需信息,另一个发送数据。 逐层分解,直至物理输出 。 变换模块的下属模块设计 一般按变换中心组成状况,根据模块独立性原则,为每个基本加工设计一个模块。
  • 82. 输出HG  HABBCEGGHDFCD,EABCDEFGH物理输入物理输出主模块CD,E输入C输出D输出ECCD,EDE输入BBBCBC输入AABABA输出GE  G输出FDFDFFEGGGHH
  • 83. 输出HG  HABBCEGGHDFCD,EABCDEFGH物理输入物理输出主模块CD,E输入C输出D输出ECCD,EDE输入BBBCBC输入AABABA输出GE  G输出FDFDFFEGGGHH
  • 84. 4.4 总体设计常用的方法及工具——结构化设计⑤设计优化 在选择模块设计次序时,不一定沿某一路径直至底层才开始另一模块设计,但必须对一个模块的所有直接下属模块设计完成后才开始另一模块的设计。 尽可能建立功能模块。功能模块具有最强的内聚性,满足信息屏蔽原则。 消除重复功能。若两模块含有重复的部分,应设法将重复的功能消去。重复部分有完全相同和部分相同的情况,在确定重复部分及实施方案时,一定要谨慎小心。
  • 85. ABCEDFGH物理输入物理输出物理输出逻辑输入逻辑输出变换中心f1f2f3f4f5f6f7f8f9f10f11主模块IN f3将f3变换成f7和f8OUT f7OUT f8f3f3f7f8f7f8
  • 86. 主模块HOUT f10GOUT f8OUT f9FOUT f7EDC将f3变换 为f7和f8AIN f1BIN f2IN f3f3OUT f11f2f2f3f1f1f2f3f7f3f8f4f5f4f6f8f7f5f6f7f8f7f9f9f11f10f8f10f10f11
  • 87. 4.4 总体设计常用的方法及工具——结构化设计4 事务分析(事务型) 事物分析也是从数据流开始,自顶向下,逐步分解,建立系统结构图,与变换分析主要区别在于映射方法不同。 ①确定DFD的数据中心和加工路径。 当DFD中某个加工具有明显的将一个输入数据流分解成发散的多个输出数据流时,该加工就是系统的事务中心 ,从事务中心辐射出去的数据流就是加工路径。 事务流型的DFD的组成: 输入流+事务中心+若干条活动流
  • 88. T输入流事务流活动流
  • 89. 4.4 总体设计常用的方法及工具——结构化设计②设计软件的顶层和第一层——事务结构 首先建立主模块(P层),代表整个加工。 第一层模块包括3类:取得事务、处理事务和输出结果。其中取得和处理事务构成事务型软件的主要部分——接收分支和发送分支 。 接收分支负责接收数据。 发送分支通常包括一 个调度模块,控制下 层所有模块活动。调 度模块以及所有事务 模块、输入输出构成 事务层,T层。顶层模块分派接收事务1事务2事务n
  • 90. 4.4 总体设计常用的方法及工具——结构化设计③设计中下层模块并优化 事务模块下层包括操作层(A层)、细节层(D层)。 不同的事务可能有相同的操作,不同的操作可能有相同的细节,所以存在共享模块。 构造时注意如下问题: 事务源的识别; 注意利用公共模块; 建立必要的事务处理模块; 下层操作和细节模块的共享; 结构图的形式。
  • 91. IOLMNABCDEFGH主模块调度输入A输出HMLN操作2操作1操作3操作4操作5细节1细节2细节3细节4细节5细节6细节7P—层T—层A—层D—层AHBE CF DG
  • 92. 4.4 总体设计常用的方法及工具——JACKSON 法4.4.2 面向数据结构的分析设计方法——JACKSON 法 (1)JACKSON方法简介 JACKSON 系统开发方法是一种典型的面向数据结构的分析与设计方法。由英国的M.Jackson提出,该方法特别适合于数据处理类的问题,如企事业管理一类的软件系统。
  • 93. 4.4 总体设计常用的方法及工具——JACKSON 法许多应用系统中都有清楚的层次结构,其数据结构既影响程序的结构又影响程序的处理过程。 Jackson方法把问题分解为可由三种基本结构形式表示的各部分的层次结构,即顺序、选择和重复。 三种数据结构可以进行组合,形成复杂的结构体系。 从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,得到完整的程序结构图。
  • 94. 4.4 总体设计常用的方法及工具——JACKSON 法(2) JACKSON图 Jackson 方法用图形描述数据结构和程序结构,这种图形称为 Jackson 图。Jackson 图既可用来描述问题的数据结构,也可用于描述每个实体执行的动作及其时序,产生一组描述实体进程的 Jackson 结构图。数据结构图中的方框表示数据,程序结构图中的方框表示模块(过程或函数等)。
  • 95. 4.4 总体设计常用的方法及工具——JACKSON 法程序中实际使用的数据结构种类繁多,但其数据元素之间的逻辑关系却只有顺序、选择和重复三种。ABCD顺序,每个元素出现一次,顺序是B、C、DAB°C°D°选择结构,根据条件确定出现顺序是B或C或DAB*重复结构
  • 96. 4.4 总体设计常用的方法及工具——JACKSON 法改进的Jackson图。上述图形表达选择或重复结构时,条件不能直接表示,影响了图的表达能力。改进的Jackson图允许将连线画为直线,对于选择和重复结构,在连线旁标明条件,S表示选择,I表示重复。ABCD顺序结构,BCD不可为 选择或重复元素AB°C°D°选择结构,S(i)中 i 为分支事件编号S(i)AB*重复结构,循环结束条件编号为iI(i)AB°_°S(i)可选结构,或者是B,或者不出现
  • 97. 4.4 总体设计常用的方法及工具——JACKSON 法Jackson伪代码(1)顺序结构 关键字:seq,end A seq B C D A end(2)选择结构 关键字:select,or,end cond1、cond2、cond3分别表示条件 A select cond 1 B A or cond 2 C A or cond 3 D A end(3)重复结构 关键字:iter,until,while,end until和while两种形式 A iter until cond B A end A iter while cond B A end
  • 98. 4.4 总体设计常用的方法及工具——JACKSON 法Jackson图示例 按如下表格格式,设计打印表格程序。“状态”这一项,如果类别是老师,打印工龄;类别是学生,打印年级。姓名年龄类别状态
  • 99. 表格表头表体行*姓名类别年龄状态工龄°年级°产生表格产生表头产生表体产生行*产生姓名产生类别产生年龄产生状态产生工龄°产生年级°表示数 据结构表示程序结构
  • 100. 4.4 总体设计常用的方法及工具——JACKSON 法(3)Jackson方法的一般步骤 ①分析并确定输入数据结构和输出数据结构的逻辑结构,并用Jackson图描述这些数据结构。 ②找出与输入和输出数据结构有对应关系的数据单元。 ③使用下面三条规则从描述数据结构的Jackson图导出描述程序结构Jackson图。 对有对应关系的数据单元在程序结构的相应层次画一个处理框。 对于输入数据结构中剩余的数据单元按它们所在的层次在程序结构中画出相应的处理框。 对于输出数据结构中剩余的数据单元按它们所在的层次在程序结构中画出相应的处理框。 ④列出所有的操作和条件并把它们分配到程序结构的适当位置。 ⑤用伪码表示程序。
  • 101. 4.4 总体设计常用的方法及工具——JACKSON 法(4)Jackson方法实例 一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。
  • 102. 4.4 总体设计常用的方法及工具——JACKSON 法①确定输入输出数据结构,表示输入输出数据结构的Jackson图正文文件字符串*字符*空格°非空格°输出表格表格体串信息*字符串空格数空格总数IISI
  • 103. 4.4 总体设计常用的方法及工具——JACKSON 法②分析确定在输入数据结构和输出数据结构中有对应关系的数据单元。在这个例子中: 输出数据总是通过对输入数据的处理而得到的,因此在输入输出数据结构最高层次的两个单元总是有对应关系的。即经过程序的处理由正文文件得到输出表格。 每处理输入数据中一个“字符串”之后,就可以得到输出数据中一个“串信息”,它们都是重复出现的数据单元,而且出现次序和重复次数都完全相同,因此,“字符串”和“串信息”也是一对有对应关系的单元。 考察输入数据结构中余下的数据单元。“字符”不可能和多个字符组成的“字符串”对应,和输出数据结构中其他数据单元也不能对应。单个空格并不能决定一个记录中包含的空格个数,因此没有对应关系。在这个例子中输入输出数据结构中只有上述两对有对应关系的单元。
  • 104. 4.4 总体设计常用的方法及工具——JACKSON 法③数据结构图导出程序结构图。 顶层处理与“正文文件”和“输出表格”这对最顶层的数据单元相对应。 程序结构图的第二层应该有与“表格体”、“空格总数”对应的处理框——“程序体”和“印总数”。 第三层与“字符串”和“串信息”相对应的处理框——“处理字符串”。 第四层是和“字符串”、“字符”及“空格数”等数据单元对应的处理框“印字符串”、“分析字符”及“印空格数”,这3个处理是顺序执行的。但是,“字符”是重复出现的数据单元,因此“分析字符”也应该是重复执行的处理。改进的Jackson图规定顺序执行的处理中不允许混有重复执行或选择执行的处理,所以在“分析字符”这个处理框上面又增加了一个处理框“分析字符串”。
  • 105. 4.4 总体设计常用的方法及工具——JACKSON 法描绘统计空格程序结构的Jackson图统计空格程序体处理字符串*印字符串分析字符串印总数I印空格数处理空格°处理非空格°分析字符IS
  • 106. 4.4 总体设计常用的方法及工具——JACKSON 法④列出所有操作和条件,并且把它们分配到程序结构图的适当位置。 首先,列出统计空格个数需要的全部操作和条件。 1)停止 3)关闭文件 5)印空格数目 7)sum:=0 9)读入字符串 11)totalsum:= totalsum +sum 12)pointer:=1 I(1)文件结束 I(2)字符串结束 S(3)字符为空格 经过简单分析把这些操作和条件分配到程序结构图的适当位置。2)打开文件 4)印字符串 6)印空格总数 8)totalsum:=0 10)sum:=sum+1 13)pointer:=pointer+1
  • 107. (本页无文本内容)
  • 108. 4.4 总体设计常用的方法及工具——JACKSON 法⑤用伪码表示程序处理过程。因为Jackson使用的伪码和Jackson图之间存在简单的对应关系,所以从很容易得出程序伪码。统计空格seq 打开文件 读入字符串 totalsum∶=0 程序体iter until文件结束 处理字符串seq 印字符串seq 印出字符串 印字符串end sum∶=0 pointer∶=1 分析字符串iter until字符串结束 分析字符select字符是空格 处理空格seq sum∶=sum+1 pointer∶=pointer+1 处理空格end 分析字符or字符不是空格 处理非空格seq pointer∶=pointer+1 处理非空格end 分析字符end 分析字符串end 印空格数seq 印出空格数目 印空格数end totalsum∶=totalsum+sum 读入字符串 处理字符串end 程序体end 印总数seq 印出空格总数 印总数end 关闭文件 停止 统计空格end
  • 109. 4.4 总体设计常用的方法及工具——JACKSON 法描绘统计空格程序结构的Jackson图统计空格程序体处理字符串*印字符串分析字符串印总数I印空格数处理空格°处理非空格°分析字符IS统计空格程序体处理字符串*印字符串分析字符串印总数I(1)印空格数处理空格°处理非空格°分析字符I(2)S(3)1349112136121098713
  • 110. 4.5 数据库设计4.5.1 数据库设计概述 数据库设计是在现成的数据库管理系统上建立数据库应用系统的过程,它是管理信息系统设计开发的重要组成部分。 数据库设计包含了数据库结构的设计和应用程序、事务处理的设计两方面的内容。 数据库应用系统设计分为数据库设计和应用程序设计两部分,设计中的中心问题是数据库设计,因而数据库应用系统设计有时简称为数据库设计。
  • 111. 4.5 数据库设计4.5.2 软件工程分步设计 数据库的设计过程可分为六个阶段: 系统规划需求分析阶段 概念设计阶段 逻辑设计阶段 数据库物理设计阶段 数据库实施阶段 数据库的运行维护阶段
  • 112. 分析系统需求设计概念结构设计逻辑结构优化数据模型决策评价决策评价设计物理结构决策评价实施数据库使用维护数据库6、数据库运行和维护阶段5、数据库实施阶段4、数据库物理结构设计阶段3、逻辑结构设计阶段1、系统需求分析阶段2、概念结构设计阶段
  • 113. 单位或组织数据库的逻辑设计数据库的行为设计分析用户需求E-R模型设计逻辑模式设计分析用户需求模块功能说明编写程序代码存储结构的选择属性的确定索引的确定数据库的物理设计加载实验数据并调试运行应用程序的调试、运行 与维护满意?不是加载数据库数据库系统的运行与维护不
  • 114. 概念 设计 阶段需求分析阶段熟悉 业务 活动明确 用户 需求确定 系统 边界分析 系统 功能分析 系统 数据编写 分析 报告调查 机构 情况数据 字典 数据 流程 图用户 活动 图用户数据库 设计 人员
  • 115. 用户活动图——生产部门选择查询 的项目查询 产品性能查询 零件用料查询零件 一览表输出 查询结果输出 查询结果输出零件 一览表编制零件 生产计划生产 查询产品性能表零件用料表零件一览表
  • 116. 用户活动图——供应部门选择查询 的项目查询 产品价格查询 产品用料查询材料价 格及库存量输出 查询结果输出 查询结果输出 查询结果供应查询产品价格表产品用料表材料价格与库存表接受检查 产品的数据缺料查询产生 缺料清单编制材料 订货计划
  • 117. 数据流程图——缺料查询产品数据: 产品名,(生产)数量 产品用料表: 产品名,材料名,(材料)用量 材料库存: 材料名,库存量 缺料清单: 材料名,缺料数量产品数据产品用料表材料库存接受 查询数据缺料查询 请求计算 产品用料计算缺料缺料清单
  • 118. 逻辑 设计 阶段概念设计阶段合并 取消 冲突修改 重构 消除 冗余数据 字典 数据 流程 图功能 模块 图需求 分析 阶段抽象 数据设计 局部 视图局部 E-R图初步 E-R图基本 E-R图
  • 119. E-R图实例职工号姓名性别年龄职称书号书名简介价格课程名学分课程号专业系班编号成绩学员学号姓名性别年龄教师参考书讲授课程mn1选修mn领导1n学生组成班级n1实体集联系属性
  • 120. 产品零件产品号产品名性能零件号零件名材料名组装mn耗用量零件数选择查询 的项目查询 产品性能查询 零件用料查询零件 一览表输出 查询结果输出 查询结果输出零件 一览表编制零件 生产计划生产 查询产品性能表零件用料表零件一览表局部E-R图——生产部门
  • 121. 产品材料产品号产品名价格材料号材料名价格使用mn库存量使用量仓库选择查询 的项目查询 产品价格查询 产品用料查询材料价 格及库存量输出 查询结果输出 查询结果输出 查询结果供应查询产品价格表产品用料表材料价格与库存表接受检查 产品的数据缺料查询产生 缺料清单编制材料 订货计划局部E-R图——供应部门
  • 122. 局部E-R模型——供应部门(改进)产品仓库产品号产品名价格仓库号仓库名地点使用mn电话使用量存放量材料材料号材料名价格存放mn产品材料产品号产品名价格材料号材料名价格使用mn库存量使用量仓库
  • 123. 初步E-R模型产品零件仓库材料组装消耗存放产品号产品名价格性能使用用量材料号材料名价格存放量仓库号仓库名地点电话零件号零件名零件数消耗量1mmmnnnn产品零件产品号产品名性能零件号零件名材料名组装mn耗用量零件数产品仓库产品号产品名价格仓库号仓库名地点使用mn电话使用量存放量材料材料号材料名价格存放mn
  • 124. 总体E-R模型(改进)产品零件仓库材料组装消耗存放产品号产品名价格性能材料号材料名价格存放量仓库号仓库名地点电话零件号零件名零件数消耗量1mmnnn
  • 125. 物理设计阶段逻辑结构设计阶段模式 优化设计 用户 子 模式概念 设计 阶段转化 为 数据 模型关系 规范 化逻辑 模型基本 E-R图
  • 126. 实体向关系模式的转换产品(产品号,产品名,性能,价格)零件(零件号,零件名)材料(材料号,材料名,价格)仓库(仓库号,车库名,地点,电话)产品零件仓库材料组装消耗存放产品号产品名价格性能材料号材料名价格存放量仓库号仓库名地点电话零件号零件名零件数消耗量1mmnnn
  • 127. 联系向关系模式的转换产品零件一览表(产品号,零件号,零件数量)零件用料表(零件号,材料名,消耗量)材料存放表(材料号,仓库号,存放量)产品零件仓库材料组装消耗存放产品号产品名价格性能材料号材料名价格存放量仓库号仓库名地点电话零件号零件名零件数消耗量1mmnnn
  • 128. 实施 阶段数据库物理设计阶段逻辑 设计 阶段确定 数据库的 物理 结构评价 数据库的 物理 结构物理 模型逻辑 模型
  • 129. 数据库物理设计 属性的存储类型的确定 不同DBMS系统的数据类型稍微有点区别,因此需要针对不同的DBMS来确定属性的存储类型。 数据库管理系统提供的数据库设计工具就具有设计属性的存储类型的功能,如Visual FoxPro、ACCESS、SQL Server等都提供可视化的设计。 表的索引结构的确定 存取路径的确定 存储过程、触发器的设计 数据库的备份和维护方案
  • 130. 数据库的实现 该阶段主要完成以下三项工作: (1)建立实际数据库结构。 (2)装入试验数据对应用程序进行调试。 (3)装入实际数据,进入试运行状态。
  • 131. 数据库的运行与维护 运行维护阶段的主要任务如下: (1)对日常数据库操作进行维护 (2)维护数据库的结构 (3)维护数据库的安全性与完整性 (4)监测并改善数据库运行性能 (5)根据用户要求对数据库现有功能进行扩充 (6)及时改正运行中发现的系统错误
  • 132. 编写系统说明书 系统说明书主要由数据流图和数据字典组成。它用来表达用户对系统的要求,软件人员根据“系统说明书”进行数据库的构造和应用程序的设计。 编写技术说明书 技术说明书主要包括如下内容: (1)用户活动图、数据流图和数据字典。 (2)局部E-R图和总体E-R图。 (3)对于层次和网状数据类型应指出各种记录型及其联系,指出关键字。对于关系数据类型,应指出关系模式、关系模式之间的联系、关系的关键字。 (4)在数据库设计阶段产生的每个表格的名称、字段的属性、索引的名称和索引字段(或索引表达式) (5)应用程序的总体结构框图,各主要模块的流程图,详细的程序代码。
  • 133. 13份WPF经典开发教程 http://download.csdn.net/album/detail/1115 C#资料合辑二[C#桌面编程入门篇] http://download.csdn.net/album/detail/957 C#资料合辑一[C#入门篇] http://download.csdn.net/album/detail/669 [Csharp高级编程(第6版)](共8压缩卷) http://download.csdn.net/album/detail/667 10个[精品资源]Java学习资料合辑[一] http://download.csdn.net/album/detail/663 10个C#Socket编程代码示例 http://download.csdn.net/album/detail/631 6份GDI+程序设计资源整合[全零分] http://download.csdn.net/album/detail/625 更多免费资源 http://download.csdn.net/user/cleopard
  • 134. 本 章 完 成