Questions tagged «quality»

3
Halstead复杂度度量的应用程序是否有任何工作可用来确定软件质量?
1977年,莫里斯·霍华德·霍尔斯特德(Maurice Howard Halstead)推出了他的软件系统复杂性度量标准,其中包括对程序词汇量,程序长度,数量,难度,工作量以及模块中错误数量的估计。根据Wikipedia所说,困难与阅读或编写程序时理解程序的难度有关,可以将精力转化为​​编写应用程序所需的时间,其中Time =(Effort / 18)seconds。 除非数据和计算与软件开发的某些方面有关,否则测量是没有用的。但是,我还没有发现任何能够说明某个值或更高难度的缺陷会导致统计上的缺陷增加或难度与读取代码的时间之间的关系的工作(N的难度平均产生M个小时的花费)理解代码库)或在确定质量有用的事实之后进行任何能够计算时间的分析(尤其是因为应该将写入时间记录为度量)。我对Halstead的错误估计(维基百科上没有提及)特别感兴趣-应用程序中的错误数量可以通过Volume / 3000或Effort ^(2/3)/ 3000进行估计。 我在寻找两件事: 是否有人在实际应用中使用Halstead的软件复杂性度量来评估软件质量?如果是这样,您如何应用它们,结果证明它们是有用,有效和/或可靠的度量? 是否有任何调查,分析或案例研究形式的学术研究,讨论了Halstead复杂性度量应用于软件质量时的有效性(或无效性)? 是否有任何调查,分析或案例研究形式的学术研究证明使用代码源代码行(SLOC)来计算类似于量,难度,工作量,时间和错误的Halstead度量标准?我怀疑“体积”可能仅对应于SLOC计数,“难度”可能对应于圈复杂度(可能还有其他度量)。我也很清楚,在SLOC中衡量工作量,生产率或时间可能会产生误导。


2
如何确定代码审查过程的有效性?
我们已经在组织内部引入了代码审查流程,并且看起来运行良好。但是,我希望能够随着时间的推移来衡量该过程的有效性,即我们是不是因为代码干净而没有发现bug,还是人们只是没有发现bug? 当前,我们没有有效的全自动测试过程。我们主要采用手动测试,因此我们不能依靠现阶段发现的缺陷来确保代码审查过程正常进行。 是否有人之前曾遇到过此问题,或对衡量代码审查的效果如何有任何想法?

8
如何应对“自动化容易”的心态?
标题说明了一切。我们公司的一些员工认为,自动化测试“容易”,编写COM和UI测试套件“需要一天”。有什么可以应对的呢? 注意:我不是在问如何促进自动化。那不是问题。一直以来,自动化的测试和流程都得到了推广和要求。问题是有些人不了解自动化不是“容易”或“快速”。

7
分配给项目的人员数量与缺陷数量之间确实存在关系吗?
这是一本关于SLIM和软件评估的培训手册的引文: 还要注意,工作量和缺陷之间存在关联。这意味着,给定规模的项目分配给的人越多,缺陷就会越多。 工作量是项目的人事时间(人年,人月)。缺陷数是在生命周期中任何时候检测到的缺陷数。大小定义为组成项目的用例,功能点或SLOC。 假定过程良好且有能力的工程师,这似乎违反直觉。例如,拥有更多的人意味着更多地关注所有工件(需求规格,设计,代码,测试)。除了拥有更多的眼睛之外,我的直觉还表明,在使用适当质量技术的项目中,努力与缺陷之间几乎没有关系。 除了关于Putnam模型的文件(SLIM使用该文件)之外,我找不到任何文档,这些文档表明缺陷与工作量或缺陷与项目人数之间的任何已知关系。这是已知的关系吗?“更多的人=更多的缺陷”这一说法是否成立?

7
软件质量的客观指标[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 在软件产品中可以测量各种类型的质量,例如,目的(例如最终用途)的适用性,可维护性,效率。其中一些在某种程度上是主观的或特定于领域的(例如,良好的GUI设计原则可能因文化而异,或取决于使用情况,请考虑军事还是消费者使用)。 我感兴趣的是与类型的网络(或图形)及其相互关联性的更深层次的质量形式,也就是说,每种类型所指的是什么类型,是否存在与适当类型有关的清晰可识别的互连性集群。分层体系结构,或者相反,存在大量的类型引用“整体”(“整体”代码)。同样,每种类型和/或方法的大小(例如,以Java字节代码或.Net IL的数量来衡量)也应表明某些大型复杂算法已实现为单片代码块,而不是分解为更易于管理/维护的位置。大块。 基于这种思想的分析可能能够计算至少是质量代理的度量。我怀疑高质量和低质量之间的确切阈值/决策点是主观的,例如,由于可维护性是指人类程序员的可维护性,因此功能分解必须与人的思维方式兼容。因此,我想知道是否存在一个数学上纯净的软件质量定义,可以在所有可能的情况下超越所有可能的软件。 我还想知道这是否是一个危险的想法,即如果客观的质量代理变得流行,那么业务压力将导致开发人员以牺牲整体质量(质量的那些方面未由代理衡量)为代价来追求这些指标。 关于质量的另一种思考方法是从熵的角度。熵是系统从有序状态转变为无序状态的趋势。任何曾经在现实世界中,中型到大型软件项目中工作过的人都将欣赏代码库质量趋于随时间下降的程度。业务压力通常会导致针对新功能的更改(除非质量本身是主要卖点,例如在航空电子软件中),否则质量会因回归问题和“擦鞋”功能而变得不那么适合质量和维护的角度。那么,我们可以衡量软件的熵吗?如果是这样,怎么办?

11
代码生成会提高代码质量吗?
争论代码生成,我正在寻找一些提高代码质量的方法示例。为了阐明代码生成的含义,我只能谈论我的一个项目: 我们使用XML文件描述数据库架构中的实体关系,因此它们可帮助我们生成ORM框架和HTML表单,可用于添加,删除和修改实体。 在我看来,由于减少了人为错误,它提高了代码质量。如果某些东西实现不正确,则会在模型中将其破坏,这是很好的,因为由于更多生成的代码也被破坏了,因此错误可能会更快出现。 由于要求我提供代码质量的定义,因此让我澄清一下,我的意思是软件质量。 软件质量:这不是一个属性,而是相互影响的许多属性,例如效率,可修改性,可读性,正确性,健壮性,可理解性,可用性,可移植性等。

4
一周的发布周期:如何使之可行?
在我的公司(拥有3年历史的网络行业初创公司)中,我们的产品团队经常遇到这样的问题:“哦,现在这是一个危机补丁!” (不是每个人吗?) 这会影响包括自我在内的工程人员的生产率(和士气)。管理层花了一些时间思考如何减少这些当日请求的频率,并提出了我们每周都会发布的解决方案。(以前,我们每两周进行一次,通常会拖延几天左右。) 有13位开发人员和6位本地/ 9位离岸测试人员;从理论上讲,只有4个开发人员(和所有测试人员)才能处理偶数版本的发布,除非要完成的工作确实需要其他开发人员中的一些专门知识。每个周期将包含两天的开发工作和两天的质量检查工作(加上1天的范围界定/分类/ ...)。 我的问题是: (a)在这个发布周期的长度上是否有人有经验? (b)是否有人听说过试图释放的时间如此长? (c)如果是(a)或(b),您在地球上如何运作?(也应避免任何陷阱,以此类推。) (d)如果这项努力失败了,我们如何才能使损害最小化?

4
如何更新大型遗留代码库以满足特定的质量标准?
关于用于改进遗留代码库的工具和技术的信息很多,但是我还没有遇到任何成功的现实案例研究。大多数建议都是微观的,尽管很有帮助,但由于缺乏证据,因此无法说服很多人,因为它不能在宏观上提供帮助。 我正在专门寻找渐进式改进,这些改进已被证明在更新大型遗留代码库以满足当今的质量标准而不是完全重写时在现实世界中是成功的。 之前: 大:大于1MLOC 旧版:无自动化测试 劣质:高复杂度,高耦合,高逸出缺陷 后 自动化测试 更容易的更新/维护 高质量:降低复杂度,解耦代码,避免一些缺陷 在现实世界中,已经证明了哪种增量步骤可以成功更新大型遗留代码库,以达到上述质量标准,而无需进行完全重写? 如果可能,请在回答中包含一个示例公司或一个大型旧项目的案例研究,该项目已通过“成功的”质量改进过程以进行备份。

3
我们需要测试数据还是可以依靠单元测试和手动测试?
我们目前正在开发一个中型/大型PHP / MySQL项目。我们正在使用PHPUnit&QUnit进行单元测试,并且有两个全职测试人员正在手动测试应用程序。我们的测试(模拟)数据当前是使用SQL脚本创建的。 我们在维护测试数据脚本方面遇到问题。业务逻辑非常复杂,测试数据中的一个“简单”更改通常会在应用程序中产生多个错误(不是真正的错误,只是无效数据的产物)。由于我们不断创建和更改表,因此这已成为整个团队的一大负担。 我真的看不到在脚本中维护测试数据的意义,因为可以使用UI在大约5分钟内将所有内容手动添加到应用程序中。我们的PM不同意,并说拥有无法使用测试数据进行部署的项目是一种不良做法。 我们是否应该放弃使用测试数据来维护脚本,而只是让测试人员在没有数据的情况下测试应用程序?最佳做法是什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.