Abstract
Exception handling is a common error recovery technique employed to improve software robustness. However, studies have reported that exception handling is commonly neglected by developers and is the least understood and documented part of a software project. The lack of documentation and difficulty in understanding the exception handling design can lead developers to violate important design decisions, triggering an erosion process in the exception handling design. Architectural conformance checking provides means to control the architectural erosion by periodically checking if the actual architecture is consistent with the planned one. Nevertheless, available approaches do not provide a proper support for exception handling conformance checking. To fulfill this gap, we propose ArCatch: an architectural conformance checking solution to deal with the exception handling design erosion. ArCatch provides: (i) a declarative language for expressing design constraints regarding exception handling; and (ii) a design rule checker to automatically verify the exception handling conformance. To evaluate the usefulness and effectiveness of our approach, we conducted a case study, in which we evaluated an evolution scenario composed by 10 versions of an existing web-based Java system. Each version was checked against the same set of exception handling design rules. Based on the results and the feedback given by the system’s architect, the ArCatch proved useful and effective in the identification of existing exception handling erosion problems and locating its causes in the source code.
Keywords
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
- 2.
- 3.
- 4.
- 5.
The symbol “\w” represents a word character: [a-zA-Z_0-9].
- 6.
- 7.
References
Barbosa, E.A., Garcia, A., Robillard, M.P., Jakobus, B.: Enforcing exception handling policies with a domain-specific language. IEEE Trans. Softw. Eng. 42(6), 559–584 (2016)
Brunet, J., Guerrero, D., Figueiredo, J.: Design tests: an approach to programmatically check your code against design rules. In: 31st International Conference on Software Engineering, pp. 255–258, May 2009
Cacho, N., Barbosa, E.A., Araujo, J., Pranto, F., Garcia, A., Cesar, T., Soares, E., Cassio, A., Filipe, T., Garcia, I.: How does exception handling behavior evolve? an exploratory study in Java and C# applications. In: ICSME 2014, pp. 31–40. IEEE (2014)
Cacho, N., César, T., Filipe, T., Soares, E., Cassio, A., Souza, R., Garcia, I., Barbosa, E.A., Garcia, A.: Trading robustness for maintainability: an empirical study of evolving c# programs. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pp. 584–595 (2014)
Caracciolo, A., Lungu, M., Nierstrasz, O.: A unified approach to architecture conformance checking. In: Proceedings of the 12th Working IEEE/IFIP Conference on Software Architecture (WICSA), pp. 41–50. ACM Press, May 2015
Chang, B.M., Choi, K.: A review on exception analysis. Inf. Softw. Technol. 77(C), 1–16 (2016)
Ebert, F., Castor, F., Serebrenik, A.: An exploratory study on exception handling bugs in java programs. J. Syst. Softw. 106(C), 82–101 (2015)
Eichberg, M., Kloppenburg, S., Klose, K., Mezini, M.: Defining and continuous checking of structural program dependencies. In: Proceedings of the 30th International Conference on Software Engineering, ICSE 2008, pp. 391–400. ACM (2008)
Ferrari, F., Burrows, R., Lemos, O., Garcia, A., Figueiredo, E., Cacho, N., Lopes, F., Temudo, N., Silva, L., Soares, S., Rashid, A., Masiero, P., Batista, T., Maldonado, J.: An exploratory study of fault-proneness in evolving aspect-oriented programs. In: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, ICSE 2010, pp. 65–74. ACM, New York (2010)
Garcia, A.F., Rubira, C.M., Romanovsky, A., Xu, J.: A comparative study of exception handling mechanisms for building dependable object-oriented software. J. Syst. Softw. 59(2), 197–222 (2001)
Gurgel, A., Macia, I., Garcia, A., Staa, A., Mezini, M., Eichberg, M., Mitschke, R.: Blending and reusing rules for architectural degradation prevention. In: Proceedings of the 13th International Conference on Modularity, pp. 61–72. ACM (2014)
van Gurp, J., Bosch, J.: Design erosion: problems and causes. J. Syst. Softw. 61(2), 105–119 (2002)
Kechagia, M., Spinellis, D.: Undocumented and unchecked: exceptions that spell trouble. In: Proceedings of the 11th Working Conference on Mining Software Repositories, MSR 2014, pp. 312–315. ACM, New York (2014)
Lee, P.A., Anderson, T.: Fault Tolerance: Principles and Practice. Dependable Computing and Fault-Tolerant Systems, 2 edn., vol. 3. Springer, Wien (1990)
Moor, O.d., Verbaere, M., Hajiyev, E., Avgustinov, P., Ekman, T., Ongkingco, N., Sereni, D., Tibble, J.: Keynote address: .ql for source code analysis. In: SCAM 2007, pp. 3–16. IEEE Computer Society, Washington, DC (2007)
Oizumi, W.N., Garcia, A.F., Colanzi, T.E., Ferreira, M., Staa, A.V.: On the relationship of code-anomaly agglomerations and architectural problems. J. Softw. Eng. Res. Dev. 3(1), 1–22 (2015)
Passos, L., Terra, R., Valente, M., Diniz, R., Mendonça, N.C.: Static architecture-conformance checking: an illustrative overview. IEEE Softw. 27(5), 82–89 (2010)
Runeson, P., Höst, M., Rainer, A., Regnell, B.: Case Study Research in Software Engineering: Guidelines and Examples. Wiley, Hoboken (2012)
Shah, H., Gorg, C., Harrold, M.J.: Understanding exception handling: viewpoints of novices and experts. IEEE Trans. Softw. Eng. 36(2), 150–161 (2010)
de Silva, L., Balasubramaniam, D.: Controlling software architecture erosion: a survey. J. Syst. Softw. 85(1), 132–151 (2012)
Soares, S., Laureano, E., Borba, P.: Implementing distribution and persistence aspects with aspectj. In: OOPSLA 2002, pp. 174–190. ACM, New York (2002)
Terra, R., Valente, M.T.: A dependency constraint language to manage object-oriented software architectures. Softw. Pract. Exper. 39(12), 1073–1094 (2009)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Filho, J.L.M., Rocha, L., Andrade, R., Britto, R. (2017). Preventing Erosion in Exception Handling Design Using Static-Architecture Conformance Checking. In: Lopes, A., de Lemos, R. (eds) Software Architecture. ECSA 2017. Lecture Notes in Computer Science(), vol 10475. Springer, Cham. https://doi.org/10.1007/978-3-319-65831-5_5
Download citation
DOI: https://doi.org/10.1007/978-3-319-65831-5_5
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-65830-8
Online ISBN: 978-3-319-65831-5
eBook Packages: Computer ScienceComputer Science (R0)