首页 > 编程知识 正文

软件设计的基本原则(软件设计遵循的基本原则)

时间:2023-05-04 20:40:24 阅读:64240 作者:3477

一、抽象

抽象是无视不重要的一面,说明实体本质的设计技术。 抽象将复杂现象简化到可以分析、理解的程度。 在软件工程中从软件定义到软件开发需要经历多个阶段,每进行一个阶段都可以看作是软件解法抽象层次的细分。 抽象的最底层是实现该软件的源代码。 进行模块化设计时,也可以有多个抽象层次,最高抽象层次的模块用摘要的方式描述问题的解法,低抽象层次的模块细分高抽象层次模块的问题解法的描述。

二、模块化

模块在程序中始终是程序对象(如数据说明、可执行语句等)的集合或单独的名称和地址元素。 模块化是指将要开发的软件分解成几个小而简单的部分。 每个模块都可以独立开发、测试,最终组装成完整的程序。 只是分割统治的原则。 模块化的目的是明确、易于阅读、理解、测试和修改程序的结构。

三、封装

封装是开发程序结构时使用的规律,每个程序的组件封装在单个模块中,在定义每个模块时尽量减少内部处理。

打包在提高软件的可修改性、测试性、可移植性方面发挥重要作用。

四、模块独立

模块独立是指每个模块完成一个相对独立的特定子系统,并且与其他模块的联系很简单。 模块独立有结合性和凝聚性两个标准。

1、耦合是模块之间相对独立性(相互紧密度)的度量。 绑定取决于每个模块之间接口的复杂性、如何调用模块以及通过接口的信息类型等。

联轴器按从小到大的顺序分为以下几类。

非直接绑定:两个模块之间没有直接关系,它们分别属于不同模块的控制和调用,它们之间不传递任何信息。 因此,耦合性最弱,模块独立性最高。

数据联接:两个模块之间有调用关系,传递的最简单的数据值在程序中相当于值传递。

标记联接:在两个模块之间传递的是数据结构。

控制联接:当一个模块调用另一个模块时,传递的是控制变量,调用的模块通过该控制变量的值选择性地执行模块中的一个功能。 因此,被调用的模块必须具有多个功能,哪些功能起作用由被调用的模块控制。

外部绑定:模块之间在非软件环境中绑定。

公共联接:通过一个公共数据环境相互作用的那些模块之间的联接。

内容合并:一个模块直接使用另一个模块的内部数据,或者通过非法条目迁移到另一个模块的内部。

2、凝聚是一个模块内部各因素相互结合的紧密度度量。

凝聚从低到高,分为以下几种。

偶然凝聚(偶然凝聚)一个模块内的各要素没有直接的任何联系。

逻辑凝聚:在模块中执行一些逻辑上相似的功能,参数决定该模块发挥哪些功能。

时间凝聚:将需要同时执行的动作组合起来的模块称为时间凝聚模块。

流程聚集:一个模块要完成多个任务,必须根据指定的流程运行。

通信聚集:模块中的所有处理元素在相同的数据结构中运行,在各处使用相同的输入数据,或生成相同的输出数据。

顺序聚集:一个模块中的每个处理要素与同一功能密切相关,按顺序执行,上一个功能要素的输出是下一个要素功能的输入。

功能凝聚:模块中的所有要素发挥相同的功能。 不可缺少,是最强的凝聚。

将软件划分为系统模块,是尽量实现高凝聚、低耦合,提高模块的独立性。

五、系统深度

表示软件结构中受控制的层数,通常可以大致显示系统的大小和复杂性。 如果层数太多,许多管理模块太简单,需要考虑能否正确集成。

六、系统宽度

软件结构中位于同一层的模块总数的最大值。 宽度越大,系统越复杂。 影响宽度最大的因素是模块的扇出。

七、模块扇出

模块扇出是指一个模块直接控制(调用)的下级模块的数量。 扇出过大意味着模块太复杂,需要控制和调整的下级模块,扇也不好。 设计得很好的系统平均扇出为3或4。

八、模块扇入

指向要调用的上层模块的数量,扇入越大,共享该模块的上层模块的数量就越多。

在模块分解时需要注意:

保持模块大小适中

尽量减少调用深度

直接调用此模块的次数应尽可能多,但调用其他模块的次数不应太多(扇入大、扇出小)。 优秀的软件设计结构顶级高扇出,中间扇出少,底层高扇入。

保证模块为单入口、单出口,模块的范围应在模块内

功能应该是可预测的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。