配而论道——从大禹治水看软件配置管理

本文探讨了配置管理在软件开发中的核心作用,并对比了经典与敏捷软件过程中的不同配置管理策略。指出配置管理的目标在于控制变更,而不同的开发模式决定了配置管理的具体实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    经常和软件企业探讨软件配置管理的相关问题,发现很多人有一个比较大的误区——即将配置管理从整个软件开发体系中割裂出来就事论事的进行探讨。因此常常会针对这个问题进行一些探讨,现将相关内容稍作总结如下:

换个角度看配置管理

    关于配置管理的定义不同的标准体系都会有其自己一套标准定义,在这些各不相同且用词生涩(往往是不良翻译的结果)的定义前我们往往会一阵阵的犯迷惑——到底什么是配置管理?因此我们有必要先搞明白一个最基本的问题,到底配置管理是干什么的。
    首先,让我们忘记教科书上那一长串由英文翻译过来(通常因为缺乏逗号断句而读起来非常拗口)的关于配置管理的定义吧,让我们以目标驱动的思路来看看配置管理到底是要干什么?——其实很简单,配置管理的目的就是控制变更, 而对变更的处理模式的不同将直接衍生出完全不同的配置管理体系——而这一切又和软件开发模式和选用的生命周期密切相关。所以,在规划企业软件配置管理体系之前一定要确认相关的开发模式及变更控制的策略。否则,生搬硬套的结果难免会打造出穿着汗衫打领带的奇异造型。
   那接下来让我们看看关于变更的哲学观及其对配置管理的影响:

关于配置管理的哲学观

    经典的软件过程对待变更显然采用的是禹的父亲鲧治水的方法——堵,他告诉我们:变更是危险的,所以必须严格受控,所有可能变更的元素(即配置项)必须被造册登记(配置项标识),并将其圈禁于若干固定的区域内(基线化),而所有变更,尤其是跨区域的变更(涉及基线的变更)必须遵循严格的审批流程(变更控制流程),而变更完成后必须重新将其圈禁于相应的固定区域内(基线更新)。
    显然,要满足这一一套体系,我们的配置管理体系必须具备对于变更的纵向(需求—设计—代码—测试)和横向(相互关联的需求和需求之间或代码和代码之间)的双向可追溯性。而这种可追溯性的有效性是保证整个配置管理体系有效运作的基石。不幸的是,在大多数情况下,我们还只能通过人力而非自动化工具来保持这种可追溯性,这也是经典配置管理体系最大的风险所在。(永远不要相信CMMI评审过程中咨询公司提供的那张名为“需求跟踪矩阵”的Excel表格可以被真正的用起来,建议在评审过后直接将其放入“回收站”)

    而以敏捷为代表的现代软件过程体系则高调宣称:“拥抱变化吧”(这听起来让人心情愉悦,不过建议在拥抱以前做好充分的准备,要不然十有八九要摔一大跟斗),在充分总结了经典软件过程的众多失败案例后(一如鲧的儿子——禹当年所做的那样),其采用了禹当年的治水策略——疏导,他认为变更是不可预期的,在大多数情况下,采用追溯的方式来控制变更是成本高昂缺效果有限的。因此,既然管不了,就让该来的就来吧(因此就有了“拥抱”一说)。但是,就这样扒开口子放任洪水(缺陷)泛滥吗?显然不可能,一如禹当年的“疏导”策略,敏捷类软件过程体系的配置管理跟专注于如何及时发现和修复变更导致的各种缺陷,于是就有了每日构建、测试驱动、小迭代开发等等一系列的最佳实践。因此基于这种模式的软件配置管理体系的重点应该在于:灵活而有效的并行开发管理体系(选择适当的分支结构模式和控制策略);有效的自动构建和发布体系等等。

    当然,上述两种配置管理模式都有其适用的环境,相对来说对于对缺陷的容忍度为零或接近于零的项目(如军工或航天项目),或是需求明确而稳定且变更较少的项目可以选择第一种配置管理模式。而那些需求不明确或变更频繁的软件项目则无疑更适合于后者。

做而论道,我们可以从基本原理开始解释。在单片机中,外部中断通常用于响应外部输入信号的变化,如按钮、红外传感器等。要实现外部中断并驱动流水灯(LED灯串),你需要准备以下几个部分: 1. **单片机**:比如51系列、Arduino或ESP8266等,作为控制核心。 2. **外部中断源**:例如按键、磁感应开关等,通过电阻分压或电平转换器连接到单片机的中断引脚。 3. **中断服务程序**:在单片机内部编写,当接收到外部中断时,这个程序会被自动执行。在这里,你可以设置中断处理函数,读取外部输入,并控制流水灯的状态。 4. **流水灯接口**:如果有多只LED,可以采用共阳极或共阴极接法。将它们串联起来并通过一个公共端接到单片机的IO口。 5. **IO口操作**:在中断服务程序里,改变IO口的高低电平,控制LED灯的亮灭。如果是高电平点亮,低电平熄灭。 **基本电路图设计流程:** - 连接外部中断源到单片机的中断引脚,确保电平兼容。 - 将IO口置为推挽输出,用于驱动LED。 - 写入中断初始化和处理代码,根据按键状态改变LED的亮度或切换灯位。 **注意事项:** - 为了可靠地检测中断,中断线应保持低阻抗,并可能需要上拉电阻。 - LED灯的数量不宜过多,以免电流过大烧毁单片机IO口。 - 考虑到CPU繁忙时,可能会错过一些中断,因此有时会合软件延时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值