和词汇是否前后一致。
5、是否存在一些形容词、比较性词语,比如:容易的、快速的、方便的、有效的、许多、很少、简单、复杂、最新的,界面友好的,减少、扩大,不小于等等,需要将描述性词语进行量化,并且给出具体值或者范围,要不然不同的人根据不同的理解就会得出不同的结果,最终可能跟用户最初的要求有偏差,那“炒回锅肉”的事情就不可避免地会发生。
另外保证需求质量的一个很重要的因素就是需求是否细化,如果需求不细化也会很容易造成代码的返工,于是就出现了我们的程序员尽管总是加班加点却总是不能如期的完成任务的情景。那么我们怎样才能判断需求细化的程度呢?需求细化程度确实很难把握,什么样的需求可以算是比较细了,不用再进行细化了呢?哪些需求又太粗了呢?答案是需求是否可以写出相应的测试用例,如果写不出来,就说明需求还不是很细,还需要再进行细化。
2、设计
软件架构设计在软件产品开发周期中占有很重要的位置,我们开发出来的软件产品在开发伊始到产品发布会涉及到方方面面的角色,例如:用户、项目管理人员、程序员、测试员、维护人员等等。不同的角色对架构设计的要求也不相同。例如用户关心的是需求,因此我们的设计对需求的覆盖率是多少?对于程序员来说模块是否清晰,类的功能是否单一等等,对于测试人员来说系统的是系统的可测试性。对于维护人员来讲系统的扩展性、可维护性如何?一个高质量的软件架构,应该最大限度的考虑并满足不同角色的不同要求。正是因为有这些要求,我们在进行软件设计的时候,应该进行全面的考虑。一般用来衡量软件设计质量的标准可以从以下几个方面来考虑:
1)、功能性:包括完全性、正确性、安全性、兼容性、互用性。完全性包括功能点覆盖率,重点功能点覆盖率,优先功能覆盖率。正确性包括需求一致度。安全性根据软件需求的不同有不同的安全性要求。
2)、效率:包括产品运行的时间效率和利用的硬件资源两方面来考虑。
3)、维护性:包括架构的可改正性,可扩充性以及可测试性。如果用户的一个很小的需求变更会引起架构设计很大的变化,那么这样的架构设计的可改正性和可扩充性就比较差。
4)、可移植性:包括硬件的独立性、软件独立性、可安装性、可重用性。软件设计是否模块化、每个模块的可复用性如何都是应该考虑的因素。
5)、可靠性:包括缺陷数量、容错性、可用性。
6)、使用性:包括可理解性、易学习性、可操作性、易沟通性。我们软件的最终目的是让用户来使用的,如果易用性不好,可操作性不好都会影响用户对软件的接纳程度。因此在软件的可使用性也是非常重要的。
3、编码
代码质量的一个很重要的标准就是代码的可读性及规范性,可读性不一定是简单的代码,而是容易理解的代码,因为过于复杂的代码难以测试和维护,同时出错的几率也会更高。如果一个方法内部的代码很长,而且使用了很多令人难以理解的数据集,这样就会带来代码维护的困难,因为很少有人能够有效地分析它们,因此也就是最容易出现缺陷和错误的地方。类之间的耦合度会造成类与类之间的相互关联,当一个类发生改变时会使其他的类发生意想不到的变化,一般从导入类的个数判断类之间的耦合度,如果导入类的个数很多,每一个导入类发生变化都会影响到该类本身,另外如果该类的public方法太多也会导致类之间的高耦合性增加。
也许有的程序员会认为写出可读、规范的代码会影响工作进度。的确,对于程序员个体短时间来说为代码写上注释是要花费些时间,但如今软件开发是多人协作周期很长的过程,写过程序的人都知道,如果自己写了不规范的代码,随着自己所写的代码越来越多,到后来需要修改某个前期写的模块时都不知道自己当初是怎么想的了,读自己的代码也需要花很长时间才读懂。况且如果随着人员的调动等其他原因,往往维护代码的程序员已不是当初写代码的人,很多情况就是读懂了一段糟糕的代码还比重新写出一段代码花费的时间还长,严重影响工作效率(有些时候还影响维护人员的心情),反过来,如果大家都讲究把代码写成规范可读的,无疑对于整个组织来说提高总体工作效率是非常有用的。
代码质量另一个非常重要的衡量手段就是测试,通过统计测试代码所产生的缺陷情况,如严重等级分布、缺陷曲线的变化等可以从一个方面来简单地评估代码质量。