接前一篇文章: “设计模式真的能改善软件质量吗?(一)”

结果分析

      选取三个知名的设计模式:组合模式、抽象工厂模式、享元模式

     (1)  组合模式

结论:组合模式对大部分质量属性都有正影响,可伸缩性(Scalability)和健壮性(Robustness)除外。

(2) 抽象工厂模式

结论:总体上来说,抽象工厂模式对软件质量属性的影响为中等,扩展性、普遍性和模块性不错,但是健壮性的结果令人吃惊。

(3) 享元模式

结论:总体上来说享元模式对软件质量属性有负影响,只有可伸缩性还不错。

选取三个GoF提及的质量属性:可重用性、扩展性、易理解性

      (1) 可重用性

结论:10个模式对可重用性有正影响,6个无影响,7个有负影响。

      (2) 扩展性

结论:19个模式对可扩展性有正影响,3个无影响,1个有负影响。

      (3) 易理解性

结论:15个模式对易理解性有正影响,3个无影响,5个有负影响。

 整体分析:

总的来说,设计模式对软件质量属性的正影响大于负影响,因此,恰当使用设计模式可以在一定程度上提高软件质量。

设计模式对质量属性的影响并不总是正的,有些模式会对某些质量属性产生负面影响,因此需要慎重选择和使用设计模式(They should be used with caution)。

个人认为,本工作需要参与者对这些设计模式要有较深的理解,此外对于这些软件质量属性要有统一的理解和认识,为此,需要对这些软件质量属性提供一个较为标准的定义。(我计划写专门的文章来对这些软件质量属性进行详细的说明,

      由于本研究工作主观性较强,我在此不多加分析,不同的人会有不同的评价结果。 

同志们,如果要你来填写这个表,答案是什么呢?偶也想在国内组织一次类似的调查,呵呵!

      主要参考资料:

[1] Foutse Khomh and Yann-Gaël Guéhéneuc. Do Design Patterns Impact Software Quality Positively?. In Christos Tjortjis and Andreas Winter, editors, Proceedings of the 12th Conference on Software Maintenance and Reengineering (CSMR), April 2008. IEEE Computer Society Press.

[2] Yann-Gaël Guéhéneuc. Design Patterns: Empirical Studies on the Impact of Design Patterns on Quality. Encyclopedia of Software Engineering (ESE), September 2010.

[3] Yann-Gaël Guéhéneuc, Jean-Yves Guyomarc'h, Khashayar Khosravi, and Houari Sahraoui. Design Patterns as Laws of Quality, chapter 5, pages 105--142. Idea Group, January 2006.

[4] Khashayar Khosravi and Yann-Gaël Guéhéneuc. On Issues with Software Quality Models, chapter 11, pages 218--235. ICFAI University Press, January 2008.

【作者:刘伟  http://blog.csdn.net/lovelion】

设计模式真的能改善软件质量吗 (二)相关推荐

  1. 设计模式真的能改善软件质量吗 (一)

    本文是加拿大蒙特利尔大学(University of Montreal)Foutse Khomh和Yann-Gaël Guéhéneuc开展的一项经验性软件研究的成果,他们已在此基础上发表了相关论文. ...

  2. 采用ODC改善软件质量:一个案例研究

    采用ODC改善软件质量:一个案例研究 点击:265       更新时间:2007-7-17 11:39:42     作者:Yang Gu 出处:IBM   本文内容包括: 软件开发中典型的质量问题 ...

  3. 内向的人怎样改善人际关系(二)

    内向的人怎样改善人际关系(二) 二.态度:爱心与勇气的平衡. 双赢就是大家都赢,双方都得利. 要想双赢离不开爱心与勇气. 爱心使你关心他人,照顾到对方的利益:勇气使你能够坚持自己的立场,维护自己的利益 ...

  4. 设计模式(C++实现)(二十三)——享元模式

    示例问题: 一个制造杯子的厂商,主要生产大.中.小圆柱形杯子(这3种规格的杯子上印有各种各样的文字),以及特殊造型杯子1,特殊造型杯子2.现需要定制模具来生产杯子,用代码解决该问题. 分析: 由于大. ...

  5. 改善记忆力的二十种记忆方法,随便你挑!

    工程师强于推理,但记忆力也非常重要.让记忆与推理齐飞,两者相辅相承. 1.  改善身体素质 记忆力是软件,身体素质是硬件.硬件强劲,软件才有更充分的释放空间.健康有力.精力充沛的身体素质带来的益处是全 ...

  6. Java——Web开发之MVC设计模式的学生信息管理系统(二)

    为什么这个标题为"(二)",其实是对于上一个特别简单学生信息管理系统里功能的完善. 所谓的"(一)"在这:学生信息管理系统(一) 系统实现的功能: 实现添加学生 ...

  7. 设计模式详解——工厂模式(二)

    本篇文章介绍一种设计模式--工厂模式.工厂模式是用来封装对象的创建,减少应用程序和具体类之间的依赖,促进松耦合.根据工厂模式的应用特性,一共分为三种子模式:简单工厂模式,工厂方法模式和抽象工厂模式.本 ...

  8. 中介者模式android,Android[高级教程] 设计模式之六 中介者模式(二)

    我们还是接着上一章节的中介者模式,这次我们来重构一下,唐僧只告诉小妖让他的徒弟们来救他,至于小妖通知谁,他不管,反正就是三个徒弟,小妖也想省事,就看见谁就通知谁呗.于是,我们的代码修改成: publi ...

  9. 设计模式原则 - 接口隔离原则(二)

    接口隔离原则 一 官方定义 二 案例演示 普通方案 案例分析 解决方案 解决方案 案例总结 三 与单一职责原则对比 一 官方定义 接口隔离原则(Interface Segregation Princi ...

最新文章

  1. [翻译]关于SQL CE RDA数据同步的FAQ
  2. 算法-------二分法查找
  3. android 结束if循环_Android Handler 消息循环机制
  4. java开发需要掌握哪些东西_java开发需要掌握哪些技能
  5. DockerCon SF 18 Day One 速记 - 从容器到云原生
  6. python学习之认识字符串
  7. [机器学习]AutoML---谷歌开源AdaNet:基于TensorFlow的AutoML框架
  8. jzoj4223-旅游【并查集】
  9. 【转】C#中Invoke的用法
  10. Qt笔记-Qt获取百度下拉推荐词
  11. 基于RxJava2+Retrofit2简单易用的网络请求实现
  12. 吴恩达机器学习6——机器学习算法改进、系统设计
  13. 印度:10美元电脑与全民免费上网
  14. python字符串(string)方法整理
  15. 算法工程师当前选哪个方向好?1,计算机视觉;2,自然语言处理;3,风控;4,推荐系统?...
  16. dio设置自定义post请求_Flutter用dio封装http网络请求,设置统一的请求地址、headers及处理返回内容...
  17. opencv4.5.5的下载与环境配置
  18. smartupload功能介绍
  19. MEGA-X 3D打印机教程:05_更换步进电机驱动
  20. 1114 Family Property (25 point(s)) PAT甲级

热门文章

  1. F28335GPIO结构、寄存器、复用以及注意事项详细叙述
  2. 不知不觉发财10大秘诀(转)
  3. WPF的本地化思路提示:直接汉化BAML
  4. 大数据基石-Hadoop3.x学习教程-大数据场景介绍
  5. win7最适合的杀毒软件(电脑适合用什么杀毒软件)
  6. 【Unity VR开发】结合VRTK4.0:瞬移点
  7. 当AI音箱成为未来生活入场券,百度用上亿补贴帮助全民“上车”
  8. 声控门的工作原理与人工智能AI
  9. python 面试题 aac caa相似_经典面试题:最长回文子串
  10. 《数据库系统概论》课程指南