- 讲师:刘萍萍 / 谢楠
- 课时:160h
- 价格 4580 元
特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关
配套通关班送国网在线题库一套
三、软件设计的基本原理
1、模块化
模块就是指在程序中的数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。如高级语言中的过程,函数、子程序等。每个模块可以完成一个特定的子功能,各个模块可以按一定方法组装起来成为一个整体。从而实现整个系统的功能。
模块化就是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
为了解决复杂的问题,在软件设计中就必须把整个问题进行分解来降低复杂性,这样就可以减少开发工作量并降低开发成本和提高软件生产率。但是划分模块并不是越多越好,因为这会增加模块之间接口的工作量。所以划分模块的层次和数量应该避免过多或过少。
2、抽象
抽象这个词本身也比较抽象,(老师要小明用抽象和具体造一个句子,可是他不懂,就问妈妈,什么是抽象,什么是具体? 妈妈告诉他:抽象就是看不见摸不着的,具体就是看得见摸得着的。小明懂了,很快造好了一个句子,是这样的:今天我很早起床,看见具体的妈妈在炒具体的菜,我打开窗户,抽象的新鲜空气呼地一下跑进来,真舒服啊。)呵呵,事实上,抽象并不是这么简单的意思,它是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节,比如说我们可以把把男人女人老人小孩的共同本质特性抽出来之后形成一个概念"人",这个概念就是抽象的结果。在软件工程中就是这样,在每个阶段中,抽象的层次逐步降低,在软件结构设计中的模块分层也是由抽象到具体的分析和构造出来的。比如上一层的模块所进行的加工是一个抽象的操作"销售统计",分解到最后一层,就可能是具体"打印报表"的操作了。
3、信息隐蔽
信息隐蔽的意思就是指,在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。举个例子吧,假设我是程序中的一个模块,电话机是另一个模块,我在使用电话机时,对电话机的控制是通过几个按键来确定的,输入的数据是我的语音,输出的数据是对方的语音,而这些输入、输出的数据变换以及控制在电话机内部是怎么实现的我不需要知道,同时也不能加以直接控制,这样,如果电话机坏了,修复或更换后对我的使用是没有任何影响的。所以说,电话机这个模块的信息隐蔽是十分完善的。在软件设计中,模块的划分也要采取措施使它实现信息隐蔽。
4、模块独立性
模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。这个概念就是上面说的三个基本原理的直接产物,在概要设计过程中,就是要求设计出具有良好模块独立性的软件结构。
那么如何来衡量软件的模块独立性呢?这里有两个定性的度量标准。
(1)耦合性:就是指模块之间的联系紧密程度。模块之间联系越紧密,其耦合性越强,独立性就越差。
模块的耦合性从低到高可分为以下几种类型:(假设某人为一模块)
无直接耦合 (比如陌生人之间的联系)
数据耦合 (比如去售货员与顾客之间的联系)
标记耦合 (比如两个人下棋)
控制耦合 (领导和下属之间的联系)
公共耦合 (比如图书馆的所有借书者之间的联系)
内容耦合 (比如小两口之间的联系)
在软件设计中,提高模块的独立性,建立模块间尽可能松散的系统,是模块化设计的目标。为了降低模块间的耦合度,可以采取以下措施:
(1)在耦合方式上降低模块间接口的复杂性。
(2)在传递信息类型上尽量采用数据耦合,避免使用控制耦合,慎用或有控制地使用公共耦合。在实践中要根据实际情况综合考虑。
2、内聚性
内聚性是指模块内部各个元素彼此结合的紧密程度。根据内聚性的从低到高可分为以下六种类型:
偶然内聚:指一个模块内的各处理元素之间没有任何联系。(公共汽车内的人群)
逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。(警察局里的警察)
时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。(交响乐团的演奏员)
通信内聚:指模块内所有处理元素都在同一个数据结构上的操作。或者指各处理使用相同的输入数据或者产生相同的输出数据。(建筑工地上的工人)
顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能的元素的输出就是下一功能元素的输入。(我们可以想像纺织厂中从纺纱到织布的各个操作形成的一个模块,就是一种顺序内聚)
功能内聚:这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可,模块已不可再分。(就如两个人演狮子舞,要完成狮子形象的再现,两个人缺一不可.)
耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚,低耦合,提高模块的独立性。在内聚性与耦合性发生矛盾的时候,最好优先考虑耦合性,也就是先保证耦合性低一些。
责编:罗莉
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
点击加载更多评论>>