软件开发与项目管理易理——简单与灵活
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. 在冗余(例如双机热备)系统中,主备间需要同步更多的内容,稳定性变低
在简单与灵活性的考虑上,需要权衡灵活性所带来的负面影响,然后再决定战役规模,“不战而屈人之兵”方为上策。
[未经作者许可 不得转载]
一场战役,以多胜少与以少胜多相比,后者更为胜。
软件开发犹如一场战役,投入的资源好比是兵马,所要开发的软件好比是要打的一场战。软件规模越大,战役的范围也就越大,时间也就越长。
考虑一个通信协议软件,从上至上包括应用层、封包层、通信层,其实现应用消息收发,令这三层的核心处理函数分别为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. 在冗余(例如双机热备)系统中,主备间需要同步更多的内容,稳定性变低
在简单与灵活性的考虑上,需要权衡灵活性所带来的负面影响,然后再决定战役规模,“不战而屈人之兵”方为上策。
[未经作者许可 不得转载]
相关文章推荐
- 软件开发与项目管理易理——简单项目管理
- 软件开发与项目管理易理——代码风格
- 三维软件开发笔记---项目数据管理升级+坐标轴简单标注
- 软件开发与项目管理易理——你该相信谁?
- 软件开发项目管理的简单方法
- 软件开发与项目管理易理——布鲁克斯法则 ( Brook's Law )
- 项目管理 : 软件开发项目管理的简单方法
- 艾伟也谈项目管理,利用简单的一元线性回归分析估计软件项目开发时间
- 开发管理软件项目存在的风险(上)
- Redmine迁移至华为软件开发云-项目管理
- 软件开发项目需求变更的管理
- 微软项目管理软件的二次开发
- 软件开发项目需求变更管理及应对之道研究
- 开发管理软件项目存在的风险(下)
- 敏捷项目软件管理与开发
- 微软项目管理软件的二次开发
- 小软件项目开发的管理
- 软件开发项目管理中的“经典错误”
- 如何管理软件开发项目?一些实践原则!
- 在windows下搭建ROR开发环境以及安装开源项目管理软件Redmine