新闻资讯
您的位置:首页 > 新闻资讯 > 行业新闻 >

秒速牛牛彩票怎样算天津软件开发考察质量属性

日期:2018-06-30 14:43

  我们拥有专业、务实、稳定的团队。始终坚持以专业的技术、务实的精神和专注的态度服务客户,为客户提供一流的服务。在大型互联网项目的稳定性和安全性方面有丰富的经验。

  软件质量因素细分,质量因素很多,有些质量因素在大多数项目中都是重要的,另一些是次要的。本质上,应考虑所有的因素,并有意识地评估其重要程度。判别什么是主要的质量因素,最简单方式就是考察该质量属性是否被用户关注

  正确性——指在预定环境下,软件满足设计规格说明及用户预期目标的程度。它要求软件没有错误。这里“正确性”的语义涵盖了“精确性”,正确性无疑是第一重要的软件质量特性。如果软件运行不正确,将会给用户造成不便甚至损失。技术评审和测试的第一关都是检查工作成果的正确性。“正确性”无疑非常重要,但“运行正确”的软件未必就是高质量的软件。这个软件也许运行速度很慢,并且浪费内存,甚至代码写得一塌糊涂,除了开发者本人谁也看不懂。可见正确性只是反映软件质量的一个因素而已。

  正确性说起来容易做起来难。因为从“需求开发”到“系统设计”再到“编程”,任何一个环节出现差错都会降低正确性。机器不会主动骗人,软件运行出错通常都是人造成的,所以不要找借口埋怨机器有毛病。开发任何软件,开发者都要为“正确”两字竭尽全力。

  可靠性——软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度。可靠性本来硬件领域的术语。比如某个电子设备在刚开始工作时挺好的,但由于器件在工作中物理性质会发生发热等变化,慢慢地系统的功能或性能就会失常。所以一个从设计到生产完全正确的硬件系统,在工作中未必就是可靠的。

  软件在运行时不会发生物理变化,人们常以为如果软件的某个功能是正确的,那么它就一辈子都是正确的。可是由于无法对软件进行彻底的测试,所以无法根除软件中潜伏的错误。平时软件运行得好好的,说不准哪一天就不正常了,例如“千年虫”问题,司空见惯的“内存泄露”问题、“误差积累”问题等。因此把可靠性引入软件领域是有意义的。

  软件可靠性分析通常采用统计技术,遗憾的是目前可供第一线开发人员使用的成果很少见,大多数文章限于理论研究。许多关于软件可靠性的文章中充满了高等数学公式,一般人难以看懂,更不知道怎样应用。

  口语中的可靠性含义宽泛,几乎把正确性、健壮性全部囊括。只要人们发现系统有毛病,便归结为可靠性差。从专业上讲,这种说法是不对的,但并不能要求所有的人都准确地把握质量特性的含义。

  健壮性——指在异常情况下,软件能够正常运行的能力。正确性与健壮性的区别是:前者描述软件在需求范围之内的行为,而后者描述软件在需求范围之外的行为。可是正常情况和异常情况并不容易区分,开发者往往要么没想到异常情况,要么把异常情况当成正常情况而不作处理,结果降低了健壮性。秒速牛牛彩票怎样算用户才不管正确性与异常性的区别,反正软件出了差错都是开发方的错。所以提高软件健壮性也是开发者的义务。

  容错是指发生异常情况时系统不出错误的能力,对于应用于航空航天、武器、金融等领域的这类高风险系统,容错性设计非常重要。

  容错是非常健壮的意思,比如UNIX的容错能力很强,很少出现系统崩溃的现象。而恢复则是指软件发生错误后重新运行时,能否恢复到没有发生错误前的状态的能力。从

  语义上理解,恢复不如容错那么健壮。例如,在流感易发期,有些人一点事都没有,表示有容错能力;有些人,虽然感冒了,但症状较轻,很快就好了,表示恢复能力比较强;而虚弱的人可能在短期恢复不过来,得在病床上躺很久。

  恢复能力是很有价值的。微软公司早期的视窗系统如Windows 3.x和Winkows 9x,动不动就死机,其容错性的确比较差。但它们的恢复能力还不错,机器重新启动后一般都能正常运行,因此人们还愿意用。

  性能——通常是指软件的“时间,空间”效率。人们总希望软件的运行速度快些,并且占用资源少些。

  程序员可以通过优化数据结构、算法和代码来提高软件的性能。算法复杂度分析是很好的方法,可以达到“未卜先知”的功效。

  易用性——是指用户使用软件的容易程度。现代人的生活节奏快,做什么事情都想图个方便,所以把易用性作为重要的质量特性对待无可非议。

  导致软件易用性差的根本原因是开发人员犯了“错位”的毛病:以为只要自己用起来方便,用户也一定会满意。俗话说:“老王卖瓜,自卖自夸。”当开发人员向用户展示软件时,常会得意地讲:“这个软件非常好用,我操作给你看。……是很好用吧!”软件的易用性要让用户来评价。

  好的系统会给用户带来快乐和满足,当用户真的感到软件很好用时,一种愉快的感觉就会油然而生,就会用“界面友好”、“方便易用”等词来夸奖你的软件的易用性。

  清晰性——意味着工作成果易读、易理解,这个质量特性表达了人们一种质朴的愿望:让我花钱买它或者用它,总得让我看明白它是什么东西。

  开发人员只有在自己思路清晰的时候才能写出让别人易读、易理解的程序和文档。可理解的东西通常是简洁的。一个原始问题可能很复杂,但高水平的人就能够把软件设计得很简洁。如果软件系统臃肿不堪,它迟早会出问题。所以简洁是人们对工作“精益求精”的结果,而不是潦草应付的结果。

  安全性——指用户希望保卫自己的财产,以免受威胁。财产包括数据以及计算机处理能力。

  威胁的种类繁多,例如意外失火、线路被切断、黑客攻击、公司内部的蓄意欺诈、病毒、计算机故障等等。安全既属于技术问题又属于管理问题。对于每个威胁,可采用不同的防范措施,例如使用烟雾报警器、多条传输线、口令、审计、防火墙、加密、数据备份等。在网络时代的今天,安全性问题尤为突出。

  信息安全是一门比较深奥的学问。对于大多数软件产品而言,杜绝非法入侵既不可能也没有必要。因为开发商和客户愿意为提高安全性而投入的资金是有限的,他们要考虑值不值得。究竟什么样的安全性是令人满意的呢?一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那么这样的系统可以认为是安全的。

  与威胁相对的概念就是要保护某些事项,安全专家认为需要保护以下4个方面,即所谓的CIA+A。

  可用性(Availability):确保授权的用户能够使用数据及处理能力。

  可维护性——指为满足用户新的要求,或当环境发生了变化,或运行中发现了新的错误时,对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。由于维护系统投入的人员如此巨大,因此开发软件项目的一个重要目标就是尽可能降低此种投入。与可维护性相关的简单度量是平均修改时间,即从接到对一系统进行修改的需求后,直到在产品系统中成功测试并实现这种改动所必需的平均时间。

  软件是否天生就容易修改以适应“变化”呢?关键要看软件的规模和复杂性。如果软件规模很小,问题很简单,那么修改起来的却比较容易,这时就无所谓“可维护性”了。要是软件的代码只有100行,那么“软件工程”也就用不着了。

  如果软件规模很大,问题很复杂,倘若软件的可维护性差,那么改软件就像用卡片造成的房子,抽出或塞进一张卡片都有可能使房子倒塌。可维护性是系统设计阶段重点考虑的质量属性。

  兼容性——是指两个或两个以上的软件相互交换信息的能力。由于软件不是在“真空”里应用的,它需要具备与其他软件交互信息的能力。例如两个字处理软件的文件格式兼容,那么它们都可以操作对方的文件,这种能力对用户很有好处。国内金山公司开发的字处理软件WPS就可以操作Word文件。

  可移植性——将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需工作量的大小。可移植性好的程序不仅在Windows 9X/NT/2000/XP下可以运行,而且在Linux甚至在Macintosh等系统下都可以运行。编程语言越低级,其程序越难移植,反之则容易。例如程序比汇编程序的可移植性好,而Java程序则号称“一次编程,到处运行”,具有100%的可移植性。

  软件设计时应该将“设备相关程序”和“设备无关程序”分开,将“功能模块”和“用户界面”分开,这样可以提高可移植性。

  总之,软件产品的质量是软件工程的开发工作的关键问题,也是软件工程生产中的核心问题。软件质量是软件内在属性的组合,包括程序、数据、文件等多方面的可理解性、正确性、可用性、可维护性、可重用性、健壮性等多方面因素。

  有一种错误的观念,认为“只要干活小心点,就能提高软件的质量”。软件开发是一种智力创作活动,世上最小心翼翼的程序员未必就能开发出高质量的软件来。程序员必须了解软件质量的各种因素,一定要先搞清楚怎样才能提高质量,才可以在进行需求开发、系统设计、编程和测试时将高质量内建其中。