面条化代码与模型的成因及对策

本文将阐述导致代码或模型变得像意大利面般混乱的原因及应对策略。

中文说明请参阅网站

原因

最近,我越来越常被问及关于意大利面代码和意大利面模型的建议。

产生意大利面代码和意大利面模型的主要原因在于软件设计者试图将软件需求规格与实现(代码或模型)直接对应的设计方法。软件需求规格在制定时,往往未能充分考虑软件架构结构及组件间接口(特别是全局变量等公共变量)的设计。

结果,需求规格的变更容易波及整个代码,导致模块间依赖关系复杂化,可读性和可维护性下降,从而形成“意大利面代码/意大利面模型”。

为防止此类问题,必须在设计规则中明确规定:需求规格书的发布者或软件设计者中的一方,应承担考虑软件架构及组件间接口变量的责任。

意大利面代码和意大利面模型不仅会降低可维护性和可移植性,还会导致设计效率和质量下降。

原因:

  • 软件架构及组件间接口变量的架构设计存在不足
  • 组件间接口变量相关的软件需求规格设计规则尚未完善
  • 组件间接口变量相关的软件设计阶段设计规则尚未完善
  • 软件架构及组件间接口变量相关的教育与宣传不足

对策方案:

现提出以下对策。此外,尚有其他有效方法可供参考,敬请一并考虑。

对策方案:

  1. 组件接收部及发送部的引入
    如下图所示,在每个组件中设置「Receive部」和「Send部」。
    - Receive部:将值从组件间接口变量复制到组件内部局部变量。
    - Send部:将组件内部局部变量的值复制到组件间接口变量。
    - 每个组件内部的处理应通过局部变量或组件静态变量完成。
  2. 明确载于软件需求规格说明书
    在软件需求规格说明书中,明确定义组件间接口变量。在软件需求规格说明书中,明确定义组件间接口变量。
  3. 软件设计阶段的应用
    在软件设计中,需以上述“Receive部/Send部”结构为前提进行设计。
  4. 设计规则·教育的实施
    对「Receive部/Send部」的设计方针及运行规则进行教育与宣传,确保全体设计人员统一执行。

下图是针对对策1和对策3采取措施的示例。

OSS-ECAL website: 

是电子元件抽象层开源软件的缩写。Open-Source Software for Electronic Components Abstraction Layer

我将为您提供对您有用的电子元件的OSS,请随意使用。
此致,敬礼。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值