软件质量思考

引言

        作为一个软件工程师,我们天天生产着代码。看着满天飞的软件技术。突然回过头来看看,感觉到迷茫的走了很多路,缺少了思考。

        最近一个月一直在思考,我们的制造的代码和软件技术是为了什么?我们应该从哪里思考我们的目标?当然最基本的出发点还是赚钱。

        我们制造软件的目的是赚钱。因此我们的软件必须能够满足我们的最终目的——赚钱。而只有满足用户的要求才能把产品卖给用户。

        怎么满足用户的要求?依赖于软件质量。

软件质量

       怎么评价软件质量呢?ISO/IEC 9126-1定义了一种软件质量评价模型。

        ISO9162标准定义的质量模型包括内部质量(internal quality), 外部质量(external quality)和使用中质量(quality
in use)。如下图所示:

    

    从软件的生命周期来看,三种质量具有如下关系:

    

    外部质量和内部质量划分为6个特征,其中每个特征又包括子特征,如下图所示:

    

     使用中的质量划分为4个特征:

     

         根据ISO9162标准,我们写代码的目标也就明确多了。代码质量和软件的质量如下:

    


软件质量与代码

     软件质量各个特征之间是可能是矛盾的,因此在编码过程中必须做出平衡决策。

     具体的来说:

     1.可维护性

       可维护性几乎贯穿了整个过程,包括编码规范、面向对象设计技术等。所有规定和技术的目的是使得软件维护简单和直观。

     2.可移植性

       可移植性是可以通过软件设计方法和编译工具来保证。

     3.效率

       效率则要依赖于软件设计。

     4.可靠性

       可靠性依赖于软件设计和单元测试。尤其是错误错里特别重要。错误处理并不是可有可无的,它是逻辑处理的有益补充。但是过多的错误处理会使得维护性和效率下降。因此必须加以权衡。

     5.可用性

       可用性则依赖于人机交互设计。

     6.功能性

       功能性是最核心的要求,很大程度上依赖于黑盒测试,单元测试只能保证部分正确性。

相关工具

     代码质量工具有很多相关工具,例如java的工具如下:

     

原文地址:https://www.cnblogs.com/blockcipher/p/2912976.html