精华内容
下载资源
问答
  • 衡量软件可维护性的七个特性

    千次阅读 2009-05-12 13:45:00
    理解理解表明人们通过阅读源代码和相关文档,了解程序功能及其如何运行容易程度。 二.可靠:可靠表明一个程序按照用户要求和设计目标,在给定一段时间内正确执行概率。 三.测试性可测试...

    一.可理解性:

    可理解性表明人们通过阅读源代码和相关文档,了解程序功能及其如何运行的容易程度。

     

    二.可靠性:

    可靠性表明一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。

     

    三.可测试性

    可测试性表明论证程序正确性的容易程度。程序越简单,证明其正确性就越容易。而且设计合用的测试用例,取决于对程序的全面理解。
    一个可测试的程序应当是可理解的,可靠的,简单的。
    用于可测试性度量的检查项目如下:
    程序是否模块化? 结构是否良好?
    程序是否可理解? 程序是否可靠?
    程序是否能显示任意中间结果?
    程序是否能以清楚的方式描述它的输出?
    程序是否能及时地按照要求显示所有的输入?
    程序是否有跟踪及显示逻辑控制流程的能力?
    程序是否能从检查点再启动?
    程序是否能显示带说明的错误信息?

    四.可修改性

    可修改性表明程序容易修改的程度。

     

    五.可移植性

    可移植性表明程序转移到一个新的计算环境的可能性的大小。或者它表明程序可以容易地、有效地在各种各样的计算环境中运行的容易程度。
    一个可移植的程序应具有结构良好、灵活、不依赖于某一具体计算机或操作系统的性能。

    用于可移植性度量的检查项目如下:

    1.是否是用高级的独立于机器的语言来编写程序?
    2.是否使用广泛使用的标准化的程序设计语言来编写程序? 是否仅使用了这种语言的标准版本和特性?
    3.程序中是否使用了标准的普遍使用的库功能和子程序?
    4.程序中是否极少使用或根本不使用操作系统的功能?

    六.效率

    效率表明一个程序能执行预定功能而又不浪费机器资源的程度。
    这些机器资源包括内存容量、外存容量、通道容量和执行时间。
    用于效率度量的检查项目如下:
     程序是否模块化? 结构是否良好?
     是否消除了无用的标号与表达式,以充分发挥编译器优化作用?

     

    七.可使用性

    从用户观点出发,可使用性定义为程序方便、实用、及易于使用的程度。一个可使用的程序应是易于使用的、能允许用户出错和改变,并尽可能不使用户陷入混乱状态的程序。

    展开全文
  • 如何衡量软件设计质量

    千次阅读 2015-06-05 15:32:48
    如何衡量软件设计的质量衡量软件设计质量的首要标准是该设计是否能满足软件的功能需求。当然除了功能需求以外,还有很多衡量软件设计质量的标准,如可读性、可复用性、可扩展性、可维护性等。一个好的软件设计一般...

    如何衡量软件设计的质量

    衡量软件设计质量的首要标准是该设计是否能满足软件的功能需求。当然除了功能需求以外,还有很多衡量软件设计质量的标准,如可读性、可复用性、可扩展性、可维护性等。

    一个好的软件设计一般具有以下几个特点:

    可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给大型软件的开发和维护过程带来严重的危害。

    可复用性:软件系统的架构、类、组件等单元能否很容易被本项目的其它部分或者其它项目复用。

    可扩展性:软件面对需求变化时,功能或性能扩展的难易程度。

    可维护性:软件维护(主要是指软件错误的修改、遗漏功能的添加等)的难易程度。

    但这几个特点可能会比较抽象,不容易考量,那么我们可以根据内聚度与耦合度来考量。

    内聚度:

    内聚度表示一个应用程序的单个单元所负责的任务数量和多样性,内聚与单个类或者单个方法单元相关。好的软件设计应该做到高内聚。

    理想状态下,一个代码单元应该负责一个内聚的任务,也就是说一个任务可以看作是一个逻辑单元。一个方法应该实现一个逻辑操作,一个类应该代表一种类型的实体。

    内聚原则背后的主要原因是重用:如果一个方法或一个类只负责一个定义明确的事情,那么在不同的上下文环境中,它就能更好地被再次使用。

    遵循该规则的另一个优点是,当一个应用程序的某些方面需要做出改变时,我们能够在相同单元中找到所有相关的部分。

    如果一个系统单元只负责一件事情,就说明这个系统单元有很高的内聚度;如果一个系统单元负责了很多不相关的事情,则说明这个系统单元是内聚度很低。内聚度很高的系统单元通常很容易理解,很容易被复用、扩展和维护。

    如果一个方法可以用简单的“动词+名词”的形式来命名(例如,loadFile()、getName()、calcPrice()),或者如果一个类可以用准确的名词来命名(例如,Employee、Student、Teacher),那么这样的类或者方法就是内聚度较高的系统单元;反之,如果类或者方法的名字必须包含“和(and)”、“或(or)”等字样才能准确反映其功能特性的话,这些类或方法的内聚度一般都不会太高。

    耦合度:

    耦合度表示类之间关系的紧密程度,它决定了变更一个应用程序的难易程度。

    在紧密耦合的类结构中,更改一个类会导致其它的类也随之需要做出修改。显然,这是我们在类设计时应该避免的,因为微小的修改会迅速波动影响到整个应用程序。此外,找到需要修改的所有的地方是必须的,实际上就使得修改变得困难并且耗费时间。

    在松散耦合的系统中,我们可以更改一个类,不需要修改其它类,而应用程序仍然能够正常工作。

    概括起来,较低的耦合度和较高的内聚度,也即我们常说的“高内聚、低耦合”是所有优秀软件的共同特征。

    如果一个软件的内聚度和耦合度都符合要求,它也就自然具备了比较好的复用性、可扩展性和可维护性。

    展开全文
  • 首要的标准 满足软件的功能需求 满足软件功能需求的设计并不一定就是好的设计。 好的设计 可读性:软件的设计文档是否轻易被其他程序员理解。...可维护性:软件维护(主要是指软件错误的修改、遗漏功能的添
    • 首要的标准
      • 满足软件的功能需求
      • 满足软件功能需求的设计并不一定就是好的设计。
    • 好的设计
      • 可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给大型软件的开发和维护过程带来严重的危害。
      • 可复用性:软件系统的架构、类、组件等单元能否很容易被本项目的其它部分或者其它项目复用。
      • 可扩展性:软件面对需求变化时,功能或性能扩展的难易程度。
      • 可维护性:软件维护(主要是指软件错误的修改、遗漏功能的添加等)的难易程度。
    • 上面四个标准太抽象了,无法考量
      • 内聚度
      • 耦合度
    展开全文
  • 如何提高C/C++大型项目的软件质量?

    千次阅读 2017-10-01 22:11:55
    如何提高c/c++大型项目的软件质量?... 通常我们会在功能性,可用性,高效性,可测试性,可维护性和可移植性等6个维度来对软件质量进行把控和评定。1.功能性,即软件是否满足了客户业务要求;2.可用性,即衡量...

    如何提高c/c++大型项目的软件质量?

            软件的交付质量一直是我们软件开发项目最为关注的核心问题,那么如何保证软件项目,尤其是大型和超大型软件项目的质量,不管在国内还是国外一直是许多软件企业一直关注和研究的问题。

           通常我们会在功能性,可用性,高效性,可测试性,可维护性和可移植性等6个维度来对软件质量进行把控和评定。


    1.功能性,即软件是否满足了客户业务要求;

    2.可用性,即衡量用户使用软件需要付出多大的努力,简洁容易操作的软件,对于客户来说是非常重要的,就拿国内用户量最大的微信来说,你会不会觉得它的设计总是那么的简洁易用,以至于使用了这么多年,它的复杂度也没有增加很多,大道至简的产品设计和简单好用往往能吸引更多的用户;

    3.可靠性,即软件是否能够一直处在一个稳定的状态上满足可用性;可靠性是质量的传统定义和基本要求。当然对于不同应用场景的软件有不同的要求,比如,大部分客户端软件来说,好用,绝大部分情况下能够正常运行和处理问题就可以了,但是对于一些行业的软件,如金融交易软件,航天和医疗软件,如果出现问题,那么产生的代价是巨大的。

    4.高效性,即衡量软件正常运行需要耗费多少物理资源;程序的实际执行和事件处理效率。尤其是对于一些实时性要求较高的应用场景,几毫秒的差异可能会带来结果的截然不同。如互联网金融的高频交易软件、策略交易软件和军用软件。

    5.可测试性,即能对每个功能模块做有效的测试,通常,我们的软件不会只因为通过了测试就变得可靠;到了你能够测试的时候,软件已经建立了内在质量。并不是所有的软件都可以被有效的测试。为了让软件可以有效地测试,我们必须在项目的开始的每一个环节都本着高质量的这个目标进行设计。

    6.可维护性,即衡量对已经完成的软件进行调整的可行度;好的软件必须要有系统的缺陷追踪和对客户新需求的可扩展性。对于C++开发的许多系统来说,如果系统的设计不好,可能导致系统的维护成本和扩展成本都会非常高。大型的系统,可维护的设计都是从项目的每一步(需求分析,系统架构,详细设计,质量保障,严格测试等)都进行精心设计和策划而来的。

    7.可移植性,即衡量软件是否能够方便地部署到不同的运行环境中;任何一个好的系统都应具备向新平台的可移植性。

    提高软件质量的方法:

    1.    质量保证(Quality Assurance,QA),一般是一个软件公司内部负责“确保”产品质量已达到某种标准的组织。建立软件测试过程模型,QA所做的测试都是在最终用户层次上进行的。任何层次的回归测试都依赖于开发者本身。

    2.    质量保障,QA必须成为开发过程中不可获取的一部分,不能只等着开发人员扔过来一个软件才开始测试。开发者有责任保障软件产品的质量。QA要去体现这一点。不管是客户,还是架构师,开发人员,还是QA测试人员都有全程参与保证项目质量的责任和义务,要保证高质量的软件产品,系统架构师和软件开发者在整个软件开发过程中都必须把质量放在首位。

    3.    建立PDCA循环,不光是对于开发人员的要求,也是对QA测试人员的要求。PDCA循环又叫质量环,是管理学中的一个通用模型。是英语单词Plan、Do、Check和Adjust的第一个字母,PDCA循环就是按照这样的顺序进行软件质量管理。


    4.    避免重复代码,重构系统中重复的代码,减少不必要的干扰。

    5.    及时测试已经完成的代码,建立缺陷跟踪。

    6.    定期对代码进行审查,做好代码review。

    7.    规范的代码注释,注释的目的是使得其他开发人员能够明白你所写的这段代码是做什么的?如果你的注释能做到这点,那么OK,那么你的注释是基本完美的。

    8.    代码逻辑清晰,减少不必要的代码,写每一段代码之前都多思考一下,假设着提出几种方案,看哪种方案更加简洁易懂,就使用那种方案,力求能写出不言自明的代码。

    9.    对多种能达到同一目的的算法,比较分析,找出更加有效和高效的算法。

    10.  良好的命名习惯,函数变量名,变量,方法的命名要见词达意,使得看得人能一眼就看懂。

    11.  复杂的类,方法,参数过多的函数应当把它拆分成更小的单元来实现,保证每一个单元的职责单一。

    12.  不要在代码里面使用纯数字,能使用宏定义,经量使用宏。

    13.  多层嵌套的代码,分开来处理,不要嵌套过深。

    14.  局部变量保证其用途单一。

    15.  提倡使用代码生成工具,尤其在大型系统开发中,使用自动化工具的好处是显而易见的。

    展开全文
  • 今天这堂培训课讲什么呢?我既不讲Spring,也不讲Hibernate,更不讲Ext,我不讲任何一个具体技术。我们抛开任何具体技术,来谈谈...我们评价高质量代码有三要素:可读性、可维护性、可变更性。我们代码要一个...
  • 浅析软件质量评价

    2017-07-10 10:50:00
    摘要:本文针对软件质量的问题,通过可维护性、可靠性、可理解性和效率四个方面对软件进行质量评价,从而获得衡量软件质量好坏的标准。  关键词:软件质量;  1、引言  如何评价一个软件的质量,是最终获得高质量...
  • 软件设计】软件设计特性

    千次阅读 2015-10-08 14:50:13
    它是衡量设备在投入使用后实际使用效能,是设备或系统可靠性、可维护性和维护支持性综合特性。2、安全性 为防止把计算机内机密文件泄露给无关用户,必须采取某种安全保密措施,这些措施有效程序如何
  • 系统可用

    2020-07-16 16:09:06
    它是衡量设备在投入使用后实际使用效能,是设备或系统可靠性、可维护性和维护支持性综合特性。采用可用性战术将会阻止错误发展为故障,或者至少能够把错误影响限制在一定范围内,从而使系统恢复成为可能。...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    软件的使用和维护阶段 退役 软件开发模型 瀑布模型 软件开发模型 演化模型 螺旋模型 喷泉模型 任务3 建模工具 两种典型的建模工具 : 1.IBM Rational Rose 2.Microsoft Office ...
  •  衡量代码复杂来发现软件缺陷和可能的维护问题。  用模型来产生测试用例,发现软件意想不到表现并管理风险。  知道何时采用自动测试用例,为长期使用来设计自动测试用例和怎样接入自动测试基础架构。  ...
  • 软件工程知识点

    2012-12-02 21:34:25
    (1)危机现象:软件开发成本与进度估计不准确,软件产品与用户要求不一致,软件产品质量可靠性差,软件文档不完整不一致,软件产品可维护性差,软件生产率低。 (2)危机原因:软件的不可见性,系统规模庞大,生产...
  • 整体是因为 HQ 试图衡量软件开发的尽可能多的方面,了解软件开发如何以多种方式脱轨。 HQ本身是用Python(后端)和JavaScript(前端)开发的,但是可以报告以任何语言开发的软件的质量,因为它不能衡量质量本身...
  • 水利工程资料管理软件 ...一、那么在水利电力工程施工过程当中管理必要性如何体现: 1、建筑工程资料是城建档案重要组成部分,是工程竣工验收,评定工程质量优劣、结构及安全卫生可靠程度,认定工程质量等级必.
  • 回答自己提问

    2015-06-25 11:24:00
    其中涉及如何保证软件产品的质量和可靠性,如何提高软件开发效率和拥护满意度等,但是“Bug”的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性”,那么一个上市的软件哪一类的Bug是可以忽略的...
  • 软件的主要特性是(A B C)。 A) 无形 B) 高成本 C) 包括程序和文档  D) 独立构成计算机系统 2. 软件工程三要素是(C D)。 A) 技术、方法和工具  B) 方法、工具和过程  C) 方法、对象和类  ...
  • 例如,IBM Tivoli Storage Manager 和 Veritas Net Backup® 都提供了允许在其软件控制设备上直接备份和维护 DB2 数据库解决方案。这些设备可以是磁带库或另一种存储设备。 简单备份适合于只读数据库或由...
  • 面向对象设计原则

    2019-10-02 16:47:14
    如何衡量软件设计质量1 首要的标准 满足软件的功能需求 满足软件功能需求的设计并不一定就是好的设计。 好的设计 可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给大型软件的开发和维护...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

如何衡量软件的可维护性