从研究的角度来思考软件设计模式——研究方向
近期在做一些关于软件设计模式的研究工作,通过广泛的收集与阅读,细致的分析与整理,现将设计模式的几个主要研究方向罗列如下:
(1) 设计模式的可视化研究(Visualization)
如何在复杂的系统结构(UML图、源代码等)中将设计模式实例标注出来,包括模式的标注和模式角色的标注。
研究热度:★★☆☆☆
研究难度:★★★☆☆
(2) 设计模式的形式化研究(Formalization)
如何通过形式化语言或者符号来表示设计模式。(目的:更好地理解模式和它们的组成部分;通过工具实现模式代码的自动生成;更好地实现模式的提取、重用和联用等)【Toufik Taibi. Design Pattern Formalization Techniques. IGI Global Publishing, 2007】。
研究热度:★★★★★
研究难度:★★★★★
(3) 设计模式的探测与挖掘(Detection, Mining, Recovery or Discovery)
如何在源代码(Java、C++、C#等语言)中探测与挖掘所使用的设计模式,这是当前最热门的研究领域。
研究热度:★★★★★
研究难度:★★★★☆
(4) 设计模式的改进和进化(Improvement and Evolution)
如何对现有GoF 23种设计模式进行改进,使之能够克服现有缺点,更好地满足开发人员的要求;设计模式进化主要研究设计模式的扩展和简化。
研究热度:★★☆☆☆
研究难度:★★★★☆
(5) 基于设计模式的软件度量(Software Metrics)研究
如何通过引入设计模式来提高软件质量,主要是对面向对象度量技术的研究,例如使用设计模式之后对CK度量和MOOD(Metrics for Object Oriented Design)等度量结果的影响。
研究热度:★★★★☆
研究难度:★★★☆☆
(6) 反模式(Anti-Patterns)和代码的自动重构(Refactoring)
如何在源代码中识别出不好的设计方案(Bad Smells)或反模式(Anti-Patterns)并应用某种设计模式提供自动重构方案,该研究方向非常有意义,但难度也相对较大,极具挑战性,目前国外一些研究机构在该方向取得了一些进展。
研究热度:★★★★☆
研究难度:★★★★★
(7) 设计模式的选择和评价研究(Selection and Evaluation)
如何为系统设计动态地选择合适的设计模式(已有方法包括UML-Based Approach和Ontology-Based Approach)以及如何对模式的应用效果进行评价(Evaluate the quality of design pattern)。
研究热度:★★★★☆
研究难度:★★★★★
(8) 设计模式的应用研究(Application Research)
现在研究重点为在分布式系统(如云计算平台)下如何应用设计模式来设计软件、移动应用软件中的模式应用和行业软件中的模式应用。
研究热度:★★★☆☆
研究难度:★★☆☆☆
(9) 新模式的提出(Novel Pattern)
挖掘新的设计模式,必须满足大三律(Rule of Three,一个解决方案必须在三个完全不同类型或者不同领域的系统中得以应用才有资格成为候选模式),这一研究方向成果很少,非常具有挑战性,需要大量的实际开发经验作为基础。
研究热度:★★☆☆☆
研究难度:★★★★★
(10) 设计模式的推广和教育(Popularization and Education)
如何在高校本/专科和研究生中开展设计模式的教育教学工作。
研究热度:★☆☆☆☆
研究难度:★★★★☆
主要参考期刊:
(1) IEEE Transactions on Software Engineering
(2) Empirical Software Engineering
(3) ACM Transactions on Software Engineering and Methodology
(4) Information and Software Technology
(5) Software & Systems Modeling
(6) The Journal of Systems and Software
(7) Automated Software Engineering
(8) Journal of Software: Evolution and Process
(9) Software: Practice and Experience
相关会议:
(1) ECOOP (European Conference on Object-Oriented Programming)
(2) SPLASH (Systems, Programming, Languages and Applications: Software for Humanity, OOPSLA : Object-oriented Programming, Systems, Languages, and Applications)
(3) ICSE (International Conference on Software Engineering )
(4) ICGSE (International Conference on Global Software Engineering - IEEE)
(5) IEEE/ACM ASE (IEEE/ACM International conference of Automated Software Engineering)
(6) PLoP(Pattern Languages of Programs Conference)
【作者:刘伟 http://blog.csdn.net/lovelion】