引言
作为一个软件工程师,我们天天生产着代码。看着满天飞的软件技术。突然回过头来看看,感觉到迷茫的走了很多路,缺少了思考。
最近一个月一直在思考,我们的制造的代码和软件技术是为了什么?我们应该从哪里思考我们的目标?当然最基本的出发点还是赚钱。
我们制造软件的目的是赚钱。因此我们的软件必须能够满足我们的最终目的——赚钱。而只有满足用户的要求才能把产品卖给用户。
怎么满足用户的要求?依赖于软件质量。
软件质量
怎么评价软件质量呢?ISO/IEC 9126-1定义了一种软件质量评价模型。
ISO9162标准定义的质量模型包括内部质量(internal quality), 外部质量(external quality)和使用中质量(quality
in use)。如下图所示:
从软件的生命周期来看,三种质量具有如下关系:
外部质量和内部质量划分为6个特征,其中每个特征又包括子特征,如下图所示:
使用中的质量划分为4个特征:
根据ISO9162标准,我们写代码的目标也就明确多了。代码质量和软件的质量如下:
软件质量与代码
软件质量各个特征之间是可能是矛盾的,因此在编码过程中必须做出平衡决策。
具体的来说:
1.可维护性
可维护性几乎贯穿了整个过程,包括编码规范、面向对象设计技术等。所有规定和技术的目的是使得软件维护简单和直观。
2.可移植性
可移植性是可以通过软件设计方法和编译工具来保证。
3.效率
效率则要依赖于软件设计。
4.可靠性
可靠性依赖于软件设计和单元测试。尤其是错误错里特别重要。错误处理并不是可有可无的,它是逻辑处理的有益补充。但是过多的错误处理会使得维护性和效率下降。因此必须加以权衡。
5.可用性
可用性则依赖于人机交互设计。
6.功能性
功能性是最核心的要求,很大程度上依赖于黑盒测试,单元测试只能保证部分正确性。
相关工具
代码质量工具有很多相关工具,例如java的工具如下: