您的位置:首页 > 其它

软件开发与项目管理易理——简单与灵活

2011-01-30 13:47 489 查看
“是故百战百胜,非善之善者也;不战而屈人之兵,善之善者也。” ——《孙子兵法·谋攻篇》

一场战役,以多胜少与以少胜多相比,后者更为胜。

软件开发犹如一场战役,投入的资源好比是兵马,所要开发的软件好比是要打的一场战。软件规模越大,战役的范围也就越大,时间也就越长。

考虑一个通信协议软件,从上至上包括应用层、封包层、通信层,其实现应用消息收发,令这三层的核心处理函数分别为A(msg), B(msg), C(msg)。

可以采用简单的实现方法:

A(msg)
{
B(msg)
{
C(msg);
}
}

即:用户只需将应用消息传入应用层,自动一层层组包并发送;对于从外部设备收到的消息反向处理即可。这种方法的不足之处是各层之间紧耦合,例如在没有封包层的应用中,需要修改核心代码。这时可以考虑采用以下方法:

也可以采用

应用层和封包层之间采用消息队列MQ1,以及封包层和通信层之间采用消息队列MQ2,这样可以实现协议层之间的松耦合。这时的实现方法为:

A(msg);
get msg from MQ1;
B(msg);
get msg from MQ2;
C(msg);

对于从外部设备收到的消息反向处理即可。

协议的灵活性以增加额外的消息队列为代价,其不足如下:

1. 增加了代码量,开发周期变长
2. 容易引入更多的错误
3. 维护成本变高
4. 需要对更多的错误进行防护
5. 增加了测试工作量
6. 在冗余(例如双机热备)系统中,主备间需要同步更多的内容,稳定性变低

在简单与灵活性的考虑上,需要权衡灵活性所带来的负面影响,然后再决定战役规模,“不战而屈人之兵”方为上策。

[未经作者许可 不得转载]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: