首页 > 其他分享 >软件开发基本要求

软件开发基本要求

时间:2023-03-02 12:55:05浏览次数:36  
标签:基本 功能 要求 软件开发 单向 依赖 模块 内聚 耦合

  • 模块化
    将程序中的所有功能划分为一个一个相互独立不可分割的功能部件。其中模块内的功能特定又集中,具有着内聚的特性。而模块间则基本独立无关,但也可能存在着少量的依赖关系,这便又拥有着耦合的特性。一个优秀的模块化设计应尽可能做到“模块中高内聚,模块间低耦合”。
  • 在模块中高内聚
    若你开始使用诸如大段复制粘贴之类的方式编写程序,那你的程序恐怕就没有实现高内聚。内聚代表着强关联性,比如去掉某模块中的一个函数,则可能整个模块都会无法运行,因为其中的每个函数间相互关联相互依赖的。
  • 在模块间低耦合
    耦合代表着存在依赖关系,如去掉模块A,模块B则无法使用,说明B模块依赖于A模块。若去掉B模块,A模块也无法运行,则代表着A和B存在着双向依赖,这种情况应该避免。利用接口事件等方式将其调整为单向依赖,否则考虑将其合并为同一个模块
    允许模块间依赖,但应该尽可能减少这种关系。模块之间应尽可能不相关不依赖,如去掉某模块,程序可能会缺失部分功能但大部分功能应该依然能正常运行。这样不仅程序出错的概率被降低,而且通用性强移植性好,也便于团队协作。
  • 平衡内聚和耦合
    模块化中的内聚和耦合是相互制衡的关系,模块的高内聚必然会导致模块间低耦合,反之同理。为了让软件开发更加便捷更加健壮,我们当然希望程序能尽可能的做到高内聚,但过于极端的追求会导致模块数量激增,项目变的过于复杂度,开发成本过高从而导致结果也适得其反。所以高内聚究竟要达到什么水平,这是一个权重值,需要根据具体场景进行调整,建议依据哈夫曼压缩原理进行决策。
  • 单向依赖与逐层精化
    上述有关耦合的描述中已经说明了一些有关单向依赖的问题,无法做到单向依赖会导致功能调整变得复杂且困难,项目的结构最终也会变成难以理解的网状。理想的项目结构应该类似树形拥有明显的层次关系。
    从开发者的角度,我们知道一个模块可能要依赖于其他模块才能运行,但这对使用者来说却可能是透明的,因为每个模块都代表一种独立的功能,这就要求它最终要把这种依赖关系转变成封装关系,这也是为什么项目会产生层次性的原因。每一层都是对下层内容的封装,反过来每一层又都是对上层内容的细化,这便是逐层精化的由来。

标签:基本,功能,要求,软件开发,单向,依赖,模块,内聚,耦合
From: https://www.cnblogs.com/BDFFZI/p/17171430.html

相关文章

  • kotlin基本数据类型
    通过idea创建kotlin项目:创建kotlin文件packagecom.czhappy.chapter01varaBoolean:Boolean=truevaranInt:Int=9varanotherInt:Int=0xFFvarmaxInt:Int=Int.MAX......
  • JavaScript的Dom基本操作
    获取元素的方式:根据id名称获取   document.getElementById("id名称")根据元素类名获取    document.getElementsClassName("元素类名")根据元素标......
  • Git介绍下载安装以及基本使用
    目录一、git介绍二、下载安装git软件三、基本使用四、制作忽略文件五、Git、Gitee、GitHub、Gitlab、bitbucket的区别六、基础代码操作分类一、git介绍git代码管理软件,和......
  • 【基本数据结构】栈
    一、后进先出(LIFO)栈是一种操作受限的线性表,只允许在一端插入和删除数据,这一端叫做栈顶,对应的另一端叫做栈底。向栈中添加元素也叫进栈、入栈、压栈,从栈中删除元素也叫出......
  • 【数据库原理及应用MySQL】第一章 数据系统的基本原理
    第一章        数据库系统的基本原理1.1.1数据库系统的应用不做详细介绍 1.1.2数据库系统的概念数据(data):是客观事物的符号标识,是可以被计算机识别,存储和加......
  • DRF的安装和基本增删查改的简单使用
    1.app注册   2.建表 3.创建ser.py(重点) 4.views.py代码(重点)  5.路由配置(重点) 6.项目启动后的网址效果---17.项目启动后的网址效果---发送GET请求......
  • StringBuilder类基本使用方法
    八股StringBuilder与StringBuffer的公共父类是AbstractStringBuilder,提供了很多操作修改字符串的方法。StringBuilder非线程安全,StringBuffer使用synchronized给方法加......
  • 全数字OQPSK调制解调的基本算法,包括成形滤波器、NCO模型、载波恢复
    1.算法描述        OQPSK调制技术是一种恒包络调制技术,受系统非线性影响小,具有较高的带宽利用率和功率利用率,在卫星环境、无线环境下得到广泛应用。因此,在通信信......
  • git介绍及基本使用
    一、版本控制器完成协同开发项目,帮助程序员整合代码帮助开发者合并开发的代码,使用git实现版本的控制如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突......
  • 软件开发商共享加密锁方案
    多个软件开发商共享加密锁方案通常是指采用一种名为“加密锁共享方案”的技术。这种技术是指多个软件开发商使用同一款加密锁设备,将各自的软件产品与该加密锁设备绑定,从而......