系统设计知识:系统设计的基本原理介绍

             

 

 

1、抽象

抽象主要用来将复杂的现象简化到可以分析、实验或者可以理解的程度。抽象的最低层就是实现该软件的源程序代码。在进行模块化设计也可以有多个抽象层次,最高抽象层次的模块用概括的方式描述问题的解决方案。较低层次的模块是对更高抽象层次模块对问题描述的细化。

2、模块化

模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。比如高级语言的函数、子程序等。在软件的体系结构中,模块是可组合、分解、更换的单元。

模块化就是将一个待开发的项目系统分解成若干个简单模块。每个模块可以独立的开发、测试,最后组装成完整程序。采用分而治之的原则。模块化的目的是使程序的结构清晰,容易阅读、理解、测试、修改。

3、信息隐蔽

信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。在设计时首先列出一些可能发生变化的因素,在划分模块时将一个可能发生变化的因素隐蔽在个某个模块的内部,使其他模块与这个因素无关。在这个因素发生变化时,只需修改含有这个因素的模块。而与其他模块无关。

信息隐蔽原则对提高软件的可修改性、可测试性、可移植性都有重要的作用。

4、模块独立

模块独立是指每个模块完成一个相对的特定子功能、并且与其他模块之间的联系简单。衡量模块独立程度标准有两个:耦合性、内聚性。

4.1 耦合 

耦合性是指模块之间联系的紧急程度。耦合性越高,则模块的独立性越差。模块间耦合的高低取决于模块间接口的复杂性、调用的方式及传递的信息。

  • 无直接耦合:指两个模块间没有直接的关系,它们分别从属于不同模块的控制与调用它们之间不传递任何信息。模块间耦合性最弱,模块独立性最高。

  • 数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,类似于高级语言中的值传递。耦合度较低、模块间的独立性较高。

  • 标记耦合:指两个模块之间传递的数据结构。如高级编程语言中的数据组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。

  • 控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调模块通过该控制变量的指有选择地执行块内的某一功能。

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

  • 内容耦合:属于程度最高的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块之间的耦合为内容耦合,常常会出现在汇编程序设计当中。

4.2 内聚

  • 内聚是指模块内部各元素之间联系的紧密程度。内聚度越低,模块的独立性越差。

  • 偶然内聚:指一个模块内的各个处理元素之间没有任何联系。

  • 逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。

  • 时间内聚:把需要同时执行的动作组合在一起形式的模块。

  • 通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或产生相同的输出数据。

  • 顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前者的元素的输出是下一个元素的输入。

  • 功能内聚:是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。

系统划分模块时,尽量做到高内聚、低耦合从而提高软件模块的独立性。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java内存溢出怎样查找代码_JVM - 内存溢出,问题查找

当内存溢出会抛出 java.lang.OutOfMemoryError: Java heap space 的异常,那这个时候怎样去分析到底哪里导致内存溢出呢?我们可以通过在vm的参数, -XX:HeapDumpOnOutOfMemoryError 记住这个理是大写XX。当内存溢出后,显示java.lang…

系统设计知识:系统模块结构设计知识笔记

1、什么是模块?模块可以认为是组成系统的基本单位,它具有可组合、分解、更换的特点。系统中任何一个处理功能都能看成是一个模块。模块根据具体化的程度可划分为逻辑模块和物理模块。模块的要素:输入输出:模块的输入来源和去向都是…

安卓扫一扫自动跳转软件_ipad软件使用技巧

适用于三款ipadipad pro 1ipad pro2ipad 2018三个ipad软件分别是notability、goodnotes、和MarginNote,这三个软件各有特点。其中notability、goodnotes是笔记软件,同样都可以自己创立笔记本配合苹果笔像手写一样做笔记,也可以导入pdf作为阅读…

第12章 使用Samba或NFS实现文件共享

章节简述: 本章节为读者讲述文件共享系统的作用,了解Samba与NFS服务程序的开发背景以及用法。 详细逐条讲解Samba服务配置参数,演示安全共享文件的配置策方法,并使用autofs服务程序自动挂载设备, 学会后即可实现Linux…

ExtClassLoader和AppClassLoader是Launcher类的两个内部类

sun.misc.Launcher他是一个java虚拟机的入口应用 看下Launcher类 ExtClassLoader和AppClassLoader是Launcher类的两个内部类

系统输入输入出设计相关知识介绍

1、输出设计输出设计主要包括:确定输出内容、选择输出设备与介质、确定输出格式三个方面的内容。确定输出内容:输出内容的设计首先要确定用户在使用信息方面的需求,然后设计输出信息的内容,包信息形式(括文字、图形、表…

计算机知识:电脑系统盘文件夹详解

今天给大家介绍一下电脑系统盘(C盘)的相关知识。C盘变红,是存储空间告急。C盘里通常都是安装的系统文件,一般情况下不放其他文件,如果放了可以转移到其他盘里去。还有一个就是电脑桌面,通常也是属于C盘空间…

【代码笔记】iOS-字体抖动动画

一,效果图。 二,代码。 ViewController.m #import "ViewController.h"interface ViewController ()endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typicall…

ElementUI+VUE 日期控件禁用用法

今天给大家整理一下ElementUIVUE 日期控件禁用用法&#xff0c;希望对大家有所帮助&#xff01;HTML文件<el-date-pickerv-model"value"type"date":editable"false"placeholder"开始日期"value-format"yyyy-MM-dd":picke…

利用rfcomm实现树莓派与手机通信_工业物联网 | 怎么用NodeRed实现树莓派与阿里云物联网平台通信?虹科告诉你!...

想获取更多IIOT干货请点击蓝字&#xff0c;关注我们虹科工业树莓派高性能多接口宽温--适应恶劣环境★★★★★Node-RED是构建物联网(IoT)应用程序的强大工具&#xff0c;它使用可视化的编程方法&#xff0c;允许开发人员将预定义的代码块(称为“节点”)连接在一起以执行任务。当…

mysql的mtr是指什么_MySQL中MTR的概念

MTR全称是Mini-Transaction&#xff0c;顾名思义&#xff0c;可以理解为"最小的事务"&#xff0c;MySQL中把对底层页面的一次原子访问的过程称之为一个Mini-Transaction&#xff0c;这里的原子操作&#xff0c;指的是要么全部成功&#xff0c;要么全部失败&#xff0…

前端:Element UI 多选框组用法笔记

今天给大家分享一下Element UI 多选框组用法笔记&#xff0c;直接上代码&#xff01;<html><head></head><body><el-form> <el-form-item label"兴趣爱好:"> <el-checkbox-group v-model"form.checkList"> <…

xiaocms 关于搜索功能 添加搜索字段

自己折磨了好几天 就是没研究个出像样的的东西 看了一下 core/controller/index.php searchAction()方法 但是不知从何下手。查了sql语句&#xff0c;还是没实现 请教了一位自学php的小弟 &#xff0c;人家三下五除二的功夫就做出来了 解决的思路是一样的&#xff0c;可我就是…

python编程第四版_清华编程教授强力推荐《Python编程》,指导你如何学习python

Python编程真的那么容易吗&#xff1f;仅仅是看理论就可以学以致用吗&#xff1f;今天我给你介绍的这本书&#xff0c;也许会让你开始改变这种想法&#xff0c;因为这本书上的练习和案例以及指导本身就足够学好Python了。清华编程教授强力推荐《Python编程》&#xff0c;指导你…

微信终于可以发送大文件了!

来源丨扩展迷EXTFANS&#xff08;ID&#xff1a;infinitydaily&#xff09;https://mp.weixin.qq.com/s/EAwYnq7435oMQnz6JqkHYg微信作为一款国民级的通讯软件&#xff0c;虽然用户基数庞大&#xff0c;但在用户体验方面一直饱受诟病&#xff0c;尤其是在部分功能方面&#xff…

Iterable 超级接口

这是一个老祖宗,一代一代往下拨 collection 的方法如下,是一个跟接口方法如下,见API collection : add():添加一个元素     addAll():添加一组元素 clear();清空     remove(Object o) &#xff1a;移除     removeAll():移除一组元素     isEmpty();判断集合…

pc寄存器or程序计数器

一&#xff1a;PC寄存器解释 二&#xff1a;PC寄存器的作用

项目设计基础:处理过程设计相关知识介绍​

处理过程设计关键是用一种适当的表示形式来描述每个模块执行过程。常用的表示形式有图形、语言、表格。比如传统的框图、判定表等。1、程序流程图&#xff08;Program Flow Chart&#xff09;程序流程图也成为程序框图&#xff0c;是最早、流行最广泛的一种图形表示方法。程序流…