欢迎来到天天文库
浏览记录
ID:18737257
大小:1.14 MB
页数:64页
时间:2018-09-22
《第1章信息系统的总体设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章信息系统的总体设计1教学内容系统设计的基本原理包括模块化设计原理、抽象原理、信息隐蔽和局部化原理、逐步求精原理、模块独立性原理;系统设计的优化规则;总体设计的目的、任务、文档、评审以及图形工具;面向数据流的总体设计方法—结构化设计方法的过程。教学要求1.熟练掌握:模块独立性原理的衡量标准:内聚和耦合;系统设计的优化规则;结构化设计方法中的变换分析过程。2.一般掌握:模块化设计原理、逐步求精原理;总体设计的目的、任务以及图形工具;结构化设计方法中的事务分析及混合结构分析过程。3.了解:抽象原理、信
2、息隐蔽和局部化原理;总体设计的文档和评审。26.1系统设计的基本原理和优化规则6.1.1系统设计的基本原理在系统设计过程中应该遵循一些基本原理,包括:模块化设计原理、抽象原理、信息隐蔽和局部化原理、逐步求精原理、模块独立性原理等。1.模块化设计原理所谓模块是指具有相对独立性的,由数据说明、执行语句等程序对象构成的集合。程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。模块化是指将整个程序划分为若干个模块,每个模块用于实现一个特定的功能。划分模块对于解决大型复杂的问题是非常必要的,可以大大
3、降低解决问题的难度。3为了说明这一点,可对问题复杂性、开发工作量和模块数之间的关系进行以下推理。首先,设C(x)为问题x所对应的复杂度函数,E(x)为解决问题x所需要的工作量函数。对于两个问题P1和P2,如果:C(P1)>C(P2)即问题P1的复杂度比P2高,则显然有:E(P1)>E(P2)即解决问题P1比P2所需的工作量大。在人们解决问题的过程中,发现存在有另一个有趣的规律:C(P1+P2)>C(P1)+C(P2)即解决由多个问题复合而成的大问题的复杂度大于单独解决各个问题的复杂度之和。也就是说,对
4、于一个复杂问题,将其分解成多个小问题来分别解决比较容易。由此可以推出:E(P1+P2)>E(P1)+E(P2)即将复杂问题分解成若干个小问题,各个击破,所需要的工作量小于直接解决复杂问题所需的工作量。根据上面的推理,可以得到这样一个结论:模块化可以降低解决问题的复杂度,从而降低系统开发的工作量。4但是不是模块划分得越多越好呢?虽然增加程序中的模块数可以降低开发每个模块的工作量,但同时却增加了设计模块接口的工作量。如图6-1所示表达了模块数与系统开发成本之间的关系,可以看出当划分的模块数处于最小成本区时
5、,开发系统的总成本最低。虽然目前还不能精确地算出M的数值,但是在考虑程序模块化的时候,总成本曲线确实是有用的指南。下面即将介绍的模块独立性原理和启发规则,可以在一定程度上帮助决定合适的模块数目。图6-1模块数与系统开发成本5采用模块化设计原理可以带来以下好处。(1)模块化使系统结构清晰,容易设计也容易阅读和理解。(2)程序错误通常局限在有关的模块及它们之间的接口中,所以模块化能使系统容易测试和调试,从而有助于提高系统的可靠性。(3)系统的变动往往只涉及少数几个模块,所以模块化还能够提高系统的可修改性。
6、(4)模块化使得一个复杂的大型程序可以由许多程序员分工编写,并且可以进一步分配技术熟练的程序员编写困难的模块,有助于系统开发工程的组织管理。(5)模块化还有利于提高程序代码的可重用性。62.抽象原理抽象是人类在解决复杂问题时经常采用的一种思维方式,它是指将现实世界中具有共性的一类事物的相似的、本质的方面集中概括起来,而暂时忽略它们之间的细节差异。在系统开发中运用抽象的概念,可以将复杂问题的求解过程分层,在不同的抽象层上实现难度的分解。在抽象级别较高的层次上,可以将琐碎的细节信息暂时隐藏起来,以利于解决
7、系统中的全局性的问题。结构化程序设计中自顶向下、逐步求精的模块划分思想正是人类思维中运用抽象方法解决复杂问题的体现。系统结构中顶层的模块抽象级别最高,控制并协调系统的主要功能且影响全局;系统结构中位于底层的模块抽象级别最低,具体实现数据的处理过程。采用自顶向下、由抽象到具体的思维方式,不但降低了系统开发中每个阶段的工作难度,简化了系统的设计和实现过程,还有助于提高系统的可读性、可测试性和可维护性。此外,在程序设计中运用抽象的方法还能够提高代码的可重用性。73.信息隐蔽和局部化原理应用模块化设计原理时,
8、自然会产生的一个问题是:“为了得到最好的一组模块,应该怎样分解系统呢?”信息隐蔽原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。这一原理是由D.L.Parnas在1972年提出的,也就是说有效的模块化可以通过一组独立的模块来实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。这一指导思想的目的是为了提高模块的独立性,即当修改或维护模块时减少把一个模块的错误扩散到其他模
此文档下载收益归作者所有