1. 软件质量

如何评价一款软件的质量呢(software quality)?通常情况下,我们会从“外部质量”和“内部质量”两个方面进行考量。

外部质量:外部质量通常是从用户的角度进行考量,例如软件功能是否正确,软件的性能Performance,软件的可用性和安全性等。

内部质量:内部质量是从开发人员的角度进行考量,例如代码的可读性,是否易于维护,是否具有良好的扩展性,复用性,是否易于测试等等。

外部质量是容易被管理团队发现的,例如软件功能的缺陷,性能的低下等。但内部质量相对隐蔽,对于一般的项目管理团队是一个黑箱,但内部质量对于一个软件确是十分关键的,如果一款软件的内部质量低,当发生需求变更或是功能扩展时,将会是一场恶梦。

2. 技术债

在软件实现过程中所遗留下的低质量的代码,可以视为这款软件在技术上亏欠的“技术债”。

我们知道,“出来混早晚是要还的”,欠下的技术债,会一点一滴的积累,如果不及时解决,则一定会爆发出严重的后果。

正如破窗效应(Broken Window Effect)那样,如果放任代码中的技术债持续存在,那么代码的质量将会持续下降,直到代码变得无法维护。

持续低下的内部质量将会显现到外部质量上,例如微小功能的改动都可能导致各种无法预测的问题,软件功能变得脆弱无比。

积累的“技术债”,也会直接降低软件开发的效率,越来越多的时间和人力不得不被投入到运维和缺陷的修复上,甚至会出现“修不完的bugs”(修复某一功能的代码,又导致了另一个功能上的bug),如果出现在这种情形,软件基本不要奢望任何新功能的扩展了。

3."技术债"的成因

为啥会出现“技术债”?技术债堆积的代码往往是哪些“时间紧,任务重”的代码,例如要在最短的时间内,尽快的上线某一功能,这样情况下的程序,其最大特点就是“埋了很多雷”。

欠了银行钱要付利息,欠下的“技术债”要靠不断的重构和re-design来支付其时间上的利息,如果欠下的债务超出了“偿还能力”,那这个软件也基本就到了“无法运维”的境地了。

4. 避免欠下"技术债"

可以说“技术债”等同于向未来借时间,如果技术债持续的积累,那么要解决其带来问题的时间也会被持续的放大,如果银行的复利累积一样。

因此,在编码过程中,就要尽力避免留有“技术债”,这也就引申到另一个重要的概念Clean Code,也即代码整洁之道,在开发团队中要形成“代码整洁、规范”的良好风气,有明确的guideline,明确的check-point和criteria,并通过Pair Programming结对编程,代码review等方式来确保代码质量,让团队的每一位成员都意识到自身所担负的责任。

一以贯之的优秀代码质量也会带来持续的“正向反馈”,例如软件的已有功能会是成熟的,稳定的,并且容易添加新的功能;同时对于开发人员,其运维代码时也会变得less pressure,并且对代码很有信心。

对于遗留的技术债,不要放任不管,自暴自弃,要尽早制定计划并预留相应的effort来解决这部分问题,控制问题的影响面,因为这不仅仅是对软件质量的控制,更是对整个项目或软件的风险控制。

浅谈“软件质量”与“技术债”相关推荐

  1. 浅谈Android保护技术__代码混淆

    浅谈Android保护技术__代码混淆 浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读 ...

  2. 浅谈第四层交换机技术及应用

    原文地址:浅谈第四层交换机技术及应用 作者:ylky_2000 一. 什么是第四层交换机 要想认识第四层交换机,先得对传统的第二层交换机和现在广泛应用的第三层交换机的基本工作原理和性能,有一些简单了解 ...

  3. 浅谈区块链技术应用场景

    浅谈区块链技术应用场景 摘要 一,区块链技术简介 二,区块链技术基础 1. 点对点之间传输信息的网络 2. 非对称加密技术 3. 共识机制 三,基于软件层面区块链技术应用场景 应用层 区块链技术与身份 ...

  4. 教师运用计算机技术的难点,浅谈运用电脑技术进行备课的几点优势

    浅谈运用电脑技术进行备课的几点优势 备课是教师在教学工作中必不可少的环节.教师在备课过程中,要通过钻研教材和分析学生的状况,完成课堂教学的整体设计任务并且为教学设计的实施做好充分的准备工作.教师备课质 ...

  5. 我国对计算机科学与技术专业人才社会需求,浅谈计算机科学与技术专业应用技术型人才的培养研究论文...

    浅谈计算机科学与技术专业应用技术型人才的培养研究论文 培养应用型专业技术人才是我国高等教育的重要任务,目前我国社会和经济的发展对于,应用技术型人才的需求在不断提升.因此高校在进行计算机专业应用技术人才 ...

  6. 浅谈GPU虚拟化技术(四)- GPU分片虚拟化

    让各位久等了,阿里小二这就开始上新菜:"GPU分片虚拟化". 对于"分片"的理解,相信大家已经不陌生了.此处的分片从两个维度上来定义:其一,是对GPU在时间片段 ...

  7. 如何用python抓取文献_浅谈Python爬虫技术的网页数据抓取与分析

    浅谈 Python 爬虫技术的网页数据抓取与分析 吴永聪 [期刊名称] <计算机时代> [年 ( 卷 ), 期] 2019(000)008 [摘要] 近年来 , 随着互联网的发展 , 如何 ...

  8. 动物克隆技术应用价值_浅谈生物克隆技术及其未来应用问题与前景

    浅谈生物克隆技术及其未来应用问题与前景 肖婷 2012333500202 浙江理工大学经管学院工商管理专业 指导老师:解纯刚 浙江理工大学生科学院 [摘 要] : 随着生命科学时代的到来,基因研究已经 ...

  9. 浅谈产品事业部“技术管理”思路

    浅谈产品事业部"技术管理"思路 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/8 ...

最新文章

  1. tx2 undefined reference to PyExc_ImportError'
  2. 用 LaTeX 排版编程技术书籍的一些个人经验
  3. python -使用del语句删除对象引用
  4. pytorch的两个函数 tensor.detach(),tensor.detach_(),tensor.clone() 的作用和区别
  5. hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte
  6. 力扣(LeetCode)258. 各位相加
  7. 聊聊jvm的-XX:MaxDirectMemorySize
  8. java安装和环境配置
  9. Linux目录的可写意味着,Linux权限分析 - osc_h5427nyq的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. Tomcat - 常用配置
  11. oracle 08177,Java OracleDatabaseException: ORA-08177: 无法连续访问此事务处理问题解决
  12. IIS 7.5 下PHP(FastCGI模式)配置手记
  13. 【278天】每日项目总结系列016(2017.11.10)
  14. 视频教程-思科路由器搭建终极实战-网络技术
  15. 2020-03-13 MySQL 8 绿色安装
  16. 【ecshop二次开发】ecshop截取中文字符串的方法
  17. fofa域名检测存活工具_fofaAPI获取url并批量检测4.22通达oa任意用户登录漏洞
  18. 更新RDL文件中的数据集(DataSets)
  19. 学安全测试需要考什么证书?
  20. 日巡千店,数字化远程巡店打造高效运营模式

热门文章

  1. 安徽高考零分作文nbsp;梯子不用…
  2. java数字(double/float)向上取整,向下取整,四舍五入
  3. Brainf**k 程序设计
  4. 软件质量管理体系 type:pdf_软件工程名词解释(单选、判断和简答)
  5. ITN网络课程笔记(六)
  6. 谷歌浏览github插件
  7. 爱奇艺iOS移动端网络优化实践:请求成功率优化(转载)
  8. 项目名称出现红叉或感叹号:是导进去Tomcat版本不一致导致的,需修改四处
  9. Balsamiq Wireframes 安装配置
  10. AI绘图风格对照表/画风样稿详细研究记录及经验总结(分析Midjourney和Stable Diffusion风格提示词实际使用情况)不断更新中...