Effort Estimation for Architectural Refactoring to Introduce Module Isolation
The decomposition of software architecture into modular units is driven by both functional and quality concerns. Dependability and security are among quality concerns that require a software to be decomposed into separate units isolated from each other. However, it appears that this decomposition is usually not aligned with the decomposition based on functional concerns. As a result, introducing module isolation forced by quality attributes, while preserving the existing decomposition, is not trivial and requires a substantial refactoring effort. In this work, we introduce an approach and a toolset to predict this effort prior to refactoring activities. As such, a selection can be made among potential decomposition alternatives based on quantitative estimations. These estimations are obtained from scalable analysis of module dependencies based on a graph database and reusable query templates. We discuss our experiences and evaluate our approach on a code base used in a commercial Digital TV and Set-top Box software.
KeywordsSoftware architecture reverse engineering refactoring module isolation effort estimation dependability security
Unable to display preview. Download preview PDF.
- 1.Alsmadi, I., Nuser, M.: Evaluation of cost estimation metrics: Towards a unified terminology. Journal of Computing and Information Technology 21(1), 23–34 (2013)Google Scholar
- 4.Candea, G., Fox, A.: Crash-only software. In: 9th Workshop on Hot Topics in Operating Systems (HotOS), pp. 67–72. USENIX Assoc., Berkeley (2003)Google Scholar
- 5.Clements, P.C., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Merson, P., Nord, R., Stafford, J.A.: Documenting Software Architectures: Views and Beyond, 2nd edn. Addison-Wesley (2010)Google Scholar
- 6.Fenton, N., Pfleeger, S.: Software Metrics: A Rigorous and Practical Approach, 2nd edn. Thomson Learning Inc. (2002)Google Scholar
- 7.Herder, J.N., Bos, H., Gras, B., Homburg, P., Tanenbaum, A.S.: Failure resilience for device drivers. In: 37th IEEE/IFIP International Conference on Dependable Systems and Networks, Edinburgh, UK, pp. 41–50 (2007)Google Scholar
- 10.Lattner, C., Adve, V.: LLVM: A compilation framework for lifelong program analysis & transformation. In: Int. Symposium on Code Generation and Optimization (CGO), pp. 75–87. IEEE Computer Society, San Jose (2004)Google Scholar
- 13.Sozer, H., Tekinerdogan, B., Aksit, M.: Flora: A framework for decomposing software architecture to introduce local recovery. Software: Practice and Experience 39(10), 869–889 (2009)Google Scholar