软件系统的稳定性
2012-05-29 13:46
274 查看
软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。这正是我阅读Release It!的直接感受。究其原因,一方面是程序员对代码质量的追求不够,在项目进度的压力下,只考虑了功能实现,而不用过多的追求质量属性;第二则是对编程语言的正确编码方式不够了解,不知如何有效而正确的编码;第三则是知识量的不足,在编程时没有意识到实现会对哪些因素造成影响。
例如在Release It!一书中,给出了如下的Java代码片段:
?
Release It!的作者对Java中同步方法的使用也提出了警告。同步方法虽然可以较好地解决并发问题,在一定程度上可以避免出现资源抢占、竟态条件和死锁的情况。但它的一个副作用同步锁可能导致线程阻塞。这就要求同步方法的执行时间不能太长。此外,Java的接口方法是不能标记synchronized关键字。当我们在调用封装好的第三方API时,基于“面向接口设计”的原理,可能调用者只知道公开的接口方法,却不知道实现类事实上将其实现为同步方法,这种未知性就可能存在隐患。
假设有这样的一个接口:
?
?
当然,我们可以认为这种扩展本身是不合理的。但从设计的角度来看,它并没有违背Liskove替换原则。从接口的角度看,它的行为也没有发生任何改变,仅仅是实现发生了变化。如果不是同步方法,则一个调用线程的阻塞并不会影响到其他调用线程,问题就可以避免了。当然,这里的同步方法本身是合理的,因为只有采取同步的方式才能保证对Cache的读取是支持并发的。书中给出这个例子,无非是要说明同步方法潜在的危险,提示我们在编写代码时,需要考虑周全。
对这些问题的处理方案,目前想到的只有:1 模块化,将代码稳定在一定范围内,并且按需加载,避免多余行为侵入;2 审计日志和监控; 3 代码审计; 4 代码规范化培训,OOP设计原则培训。
相关文章推荐
- 随想录(软件系统稳定性)
- 负反馈增强软件系统的稳定性
- 软件系统的稳定性
- 软件系统的稳定性
- 小强作品:《软件测试最佳实战远程培训》之简易OA系统全程实战
- 【OA软件】【Java版】提供协同办公OA系统含手机版
- centos系统性能监控常用软件介绍
- 【OA软件】【Java版】提供协同办公OA系统含手机版
- 软件測试系统文章(文件夹&链接在此)
- 让你提前认识软件开发(52):系统某模块工作原理详述
- 嵌入式系统软件架构设计
- 软件测试--(10)功能测试、系统测试
- 技术文章 | 系统稳定性保障核武器——全链路压测
- 安装SQL2000或者其他软件系统提示之前有挂起的安装操作,要求重启系统的解决办法
- 软件各种系统架构图
- 推荐-房地产公司CRM集中式呼叫中心客服软件系统解决方案(内部评审资料).ppt
- 【模块图】软件-系统架构-模块图
- 使用MbrFix软件卸载Linux系统
- 系统集成商网管软件开发的实现
- 系统稳定性之集成