-
摘要: 环境和需求的改变导致软件演化发生, 并通常会使软件架构(Software architecture, SA)产生变化.现有的结构化软件可靠性模型对评价软件初始结构设计有不错的效果, 但在软件演化时的实时分析方面有局限性.从软件结构建模出发, 通过使用代数方法将软件演化描述为原子操作序列, 并跟踪分析序列中每一步操作对可靠性的影响, 从而建立基于过程的可靠性分析方法.方法可分析演化关键环节及整体趋势, 用以进一步反馈和约束演化方案设计, 最终达到提高软件产品质量的目的.通过对2个实际算例的深入分析与讨论, 方法的有效性与易用性得到验证.Abstract: Because of changes in the environment and needs, software evolution often occurs and leads to changes in software architecture (SA). The existing structural software reliability models have a beneficial effect on the evaluation of the initial software architecture, but it has limitations in real-time analysis of software evolution. From the software architecture modeling, the software evolution is described as an atomic operation sequence by using the algebraic method and the reliability influence of each step in the sequence is tracked. Accordingly, a procedural reliability analysis method is established. The approach can be used to analyze the key links and the overall trend of evolution, and further feedback and constrain the evolution scheme design, ultimately to improve the quality of software products. Two practical examples are analyzed and discussed in detail, and the validity and usability of the proposed approach are verified.
-
Key words:
- Software reliability /
- software evolution /
- software architecture (SA) /
- algebraic method
1) 本文责任编委 蔡开元 -
表 1 演化原子操作分类
Table 1 Classification of evolutionary atomic operations
名称 定义描述 AM 增加组件模块 RM 移除组件模块 AMD 增加模块间依赖关系 RMD 移除模块间依赖关系 UM 更新组件模块(算法、功能) UMD 更新模块间依赖关系(接口) SM (单个)模块分割 UM (多个)模块耦合 表 2 算例1演化过程计算结果
Table 2 Evolution process calculation results of Case 1
版本可靠性 相邻版本之差 组件关键程度 版本可靠性 相邻版本之差 组件关键程度 $R_0$ 0.87623 $R_9$ 0.85580 $D_9$ 0.00268 $C_9$ 0.55552 $R_1$ 0.87167 $D_1$ 0.00456 $C_1$ 0.91264 $R_{10}$ 0.85302 $D_{10}$ 0.00278 $C_{10}$ 0.55552 $R_2$ 0.86810 $D_2$ 0.00357 $C_2$ 0.73408 $R_{11}$ 0.85213 $D_{11}$ 0.00089 $C_{11}$ 0.19840 $R_3$ 0.86671 $D_3$ 0.00139 $C_3$ 0.27776 $R_{12}$ 0.84826 $D_{12}$ 0.00387 $C_{12}$ 0.79360 $R_4$ 0.86532 $D_4$ 0.00139 $C_4$ 0.27776 $R_{13}$ 0.84409 $D_{13}$ 0.00417 $C_{13}$ 0.87296 $R_5$ 0.86532 $D_5$ 0.00000 $C_5$ 0.00000 $R_{14}$ 0.84231 $D_{14}$ 0.00179 $C_{14}$ 0.37960 $R_6$ 0.86175 $D_6$ 0.00357 $C_6$ 0.73408 $R_{15}$ 0.83806 $D_{15}$ 0.00425 $C_{15}$ 0.88330 $R_7$ 0.85868 $D_7$ 0.00308 $C_7$ 0.61504 $R_{16}$ 0.82888 $D_{16}$ 0.00918 $R_8$ 0.85848 $D_8$ 0.00020 $C_8$ 0.03968 $R_{17}$ 0.84053 $D_{17}$ 0.01165 表 3 算例2演化过程计算结果
Table 3 Evolution process calculation results of Case 2
版本可靠性 相邻版本之差 组件关键程度 版本可靠性 相邻版本之差 组件关键程度 $R_0$ 0.82996 $R_8$ 0.78002 $D_8$ 0.00690 $C_8$ 0.72890 $R_1$ 0.82159 $D_1$ 0.00837 $C_1$ 0.83725 $R_9$ 0.77697 $D_9$ 0.00305 $C_9$ 0.32505 $R_2$ 0.81440 $D_2$ 0.00719 $C_2$ 0.72890 $R_{10}$ 0.76908 $D_{10}$ 0.00789 $C_{10}$ 0.82996 $R_3$ 0.80731 $D_3$ 0.00709 $C_3$ 0.72890 $R_{11}$ 0.77142 $D_{11}$ 0.00234 $R_4$ 0.80406 $D_4$ 0.00325 $C_4$ 0.33490 $R_{12}$ 0.77327 $D_{12}$ 0.00185 $R_5$ 0.79332 $D_5$ 0.01074 $C_5$ 1.11305 $R_{13}$ 0.77532 $D_{13}$ 0.00205 $R_6$ 0.79145 $D_6$ 0.00187 $C_6$ 0.19700 $R_{14}$ 0.77035 $D_{14}$ 0.00497 $R_7$ 0.78692 $D_7$ 0.00453 $C_7$ 0.48265 -
[1] Barnes J M, Garlan D, Schmerl B. Evolution styles: Foundations and models for software architecture evolution. Software & Systems Modeling, 2014, 13(2): 649-678 [2] Behnamghader P, Le D M, Garcia J, Shahbazian A, Medvidovic N. A large-scale study of architectural evolution in open-source software systems. Empirical Software Engineering, 2017, 22(3): 1146-1193 doi: 10.1007/s10664-016-9466-0 [3] Haitzer T, Navarro E, Zdun U. Reconciling software architecture and source code in support of software evolution. Journal of Systems and Software, 2017, 123: 119-144 doi: 10.1016/j.jss.2016.10.012 [4] Iulian N, Xie G, Chen J. Towards a better understanding of software evolution: An empirical study on open-source software. Journal of Software: Evolution and Process, 2013, 25(3): 193-218 doi: 10.1002/smr.564 [5] Macho H J, Robles G. Preliminary lessons from a software evolution analysis of Moodle. In: Proceedings of the First International Conference on Technological Ecosystem for Enhancing Multiculturality. New York, USA: IEEE, 2013. 157-161 [6] Macho H J, Robles G, Nakagawa E Y, Sousa E P M D, Murata K D B, Andery G. Software architecture relevance in open source software evolution: A case study. In: Proceedings of the 32nd Annual IEEE International Computer Software and Applications Conference. New York, USA: IEEE, 2008. 1234-1239 [7] Sneed H M, Prentner W. Analyzing data on software evolution processes. In: Proceedings of Joint Conference of the International Workshop on Software Measurement and the International Conference on Software Process and Product Measurement. New York, USA: IEEE, 2016. 1-10 [8] Xiao G, Zheng Z, Wang H. Evolution of Linux operating system network. Physica A: Statistical Mechanics and its Applications, 2017, 466: 249-258 doi: 10.1016/j.physa.2016.09.021 [9] Xiao G, Zheng Z, Yin B, Trivedi K S, Du X, Cai K. Experience report: fault triggers in linux operating system: from evolution perspective. In: Proceedings of the 28th International Symposium on Software Reliability Engineering. New York, USA: IEEE, 2017. 101-111 [10] Liu B, Cui L, Si S, Wen Y. Performance measures for systems under multiple environments. IEEE/CAA Journal of Automatica Sinica, 2016, 3(1): 90-95 doi: 10.1109/JAS.2016.7373766 [11] 张艳玲, 刘爱志, 孙长银.间接互惠与合作演化的若干问题研究进展.自动化学报, 2018, 44(1): 1-12 doi: 10.16383/j.aas.2018.c170200Zhang Yan-Ling, Liu Ai-Zhi, Sun Chang-Yin. Development of several studies on indirect reciprocity and the evolution of cooperation. Acta Automatica Sinica, 2018, 44(1): 1-12 doi: 10.16383/j.aas.2018.c170200 [12] Littlewood B. Software reliability model for modular program structure. IEEE Transactions on Reliability, 1979, R-28(3): 241-246 doi: 10.1109/TR.1979.5220576 [13] Cheung R C. A user-oriented software reliability model. IEEE Transactions on Software Engineering, 1980, SE-6(2): 118-125 doi: 10.1109/TSE.1980.234477 [14] Laprie J C. Dependability evaluation of software systems in operation. IEEE Transactions on Software Engineering, 1984, SE-10(6): 701-714 doi: 10.1109/TSE.1984.5010299 [15] Zheng Z, Trivedi K S, Qiu K, Xia R. Semi-markov models of composite web services for their performance, reliability and bottlenecks. IEEE Transactions on Services Computing, 2017, 10(3): 448-460 doi: 10.1109/TSC.2015.2475957 [16] Zheng Z, Trivedi K S, Wang N, Qiu K. Markov regenerative models of webservers for their user-perceived availability and bottlenecks. IEEE Transactions on Dependable and Secure Computing, 2018, 1-1 [17] Goyevapopstojanova K, Aditya M P, Kishor T S. Comparison of architecture-based software reliability models. In: Proceedings of the 12th International Symposium on Software Reliability Engineering. New York, USA: IEEE, 2001. 22-31 [18] Meedeniya I, Grunske L. An efficient method for architecture-based reliability evaluation for evolving systems with changing parameters. In: Proceedings of the 21st International Symposium on Software Reliability Engineering. New York, USA: IEEE, 2010. 229-238 [19] Diehl S. Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Berlin: Springer-Verlag, 2007. [20] Merino L, Ghafari M, Anslow C, Nierstrasz O. A systematic literature review of software visualization evaluation. Journal of Systems and Software, 2018, 144: 165-180 doi: 10.1016/j.jss.2018.06.027 [21] Mahmood S, Mueller K. An exploded view paradigm to disambiguate scatterplots. Computers & Graphics, 2018, 73: 37-46 [22] Archambault D, Purchase H C, Pinaud B. Difference map readability for dynamic graphs. Lecture Notes in Computer Science, 2010, 6502: 50-61 [23] Legg P A, Maguire E, Walton S, Chen M. Glyph visualization: a fail-safe design scheme based on Quasi-Hamming distances. IEEE Computer Graphics & Applications, 2017, 37(2): 31-41 [24] 赵会群, 孙晶.网构软件体系结构代数模型.中国科学:信息科学, 2013, 43(1): 161-177 https://www.cnki.com.cn/Article/CJFDTOTAL-PZKX201301010.htmZhao Hui-Qun, Sun Jing. An algebraic model of Internetware software architecture. Scientia Sinica (Informationis), 2013, 43(1): 161-177 https://www.cnki.com.cn/Article/CJFDTOTAL-PZKX201301010.htm [25] 张捷, 陆阳, 刘广亮.基于结构分析的软件可靠性评估代数方法.系统工程与电子技术, 2015, 37(11): 2654-2662 doi: 10.3969/j.issn.1001-506X.2015.11.35Zhang Jie, Lu Yang, Liu Guang-Liang. Algebraic approach of software reliability estimation based on architecture analysis. Systems Engineering and Electronics, 2015, 37(11): 2654-2662 doi: 10.3969/j.issn.1001-506X.2015.11.35 [26] Li B, Liao L, Si J. A technique to evaluate software evolution based on architecture metric. In: Proceedings of the 14th International Conference on Software Engineering Research, Management and Applications. New York, USA: IEEE, 2016. 1-8 [27] Wang W L, Wu Y, Chen M H. An architecture-based software reliability model. In: Proceedings of the Pacific Rim International Symposium on Dependable Computing. New York, USA: IEEE, 1999. 143-150 [28] Chen H. Analysis and comparison of reliability models based on software architecture. IEEE International Conference of Online Analysis and Computing Science. Chongqing, China, 2016. [29] Hsu C J, Huang C Y. An adaptive reliability analysis using path testing for complex component-based software systems. IEEE Transactions on Reliability, 2011, 60(1): 158-170 doi: 10.1109/TR.2011.2104490