3 research outputs found

    Exception handling in the development of fault-tolerant component-based systems

    Get PDF
    Orientador: Cecilia Mary Fischer RubiraTese (doutorado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: Mecanismos de tratamento de exceções foram concebidos com o intuito de facilitar o gerenciamento da complexidade de sistemas de software tolerantes a falhas. Eles promovem uma separação textual explícita entre o código normal e o código que lida com situações anormais, afim de dar suporte a construção de programas que são mais concisos fáceis de evoluir e confáveis. Diversas linguagens de programação modernas e a maioria dos modelos de componentes implementam mecanismos de tratamento de exceções. Apesar de seus muitos benefícios, tratamento de exceções pode ser a fonte de diversas falhas de projeto se usado de maneira indisciplinada. Estudos recentes mostram que desenvolvedores de sistemas de grande escala baseados em infra-estruturas de componentes têm hábitos, no tocante ao uso de tratamento de exceções, que tornam suas aplicações vulneráveis a falhas e difíceis de se manter. Componentes de software criam novos desafios com os quais mecanismos de tratamento de exceções tradicionais não lidam, o que aumenta a probabilidade de que problemas ocorram. Alguns exemplos são indisponibilidade de código fonte e incompatibilidades arquiteturais. Neste trabalho propomos duas técnicas complementares centradas em tratamento de exceções para a construção de sistemas tolerantes a falhas baseados em componentes. Ambas têm ênfase na estrutura do sistema como um meio para se reduzir o impacto de mecanismos de tolerância a falhas em sua complexidade total e o número de falhas de projeto decorrentes dessa complexidade. A primeira é uma abordagem para o projeto arquitetural dos mecanismos de recuperação de erros de um sistema. Ela trata do problema de verificar se uma arquitetura de software satisfaz certas propriedades relativas ao fluxo de exceções entre componentes arquiteturais, por exemplo, se todas as exceções lançadas no nível arquitetural são tratadas. A abordagem proposta lança de diversas ferramentas existentes para automatizar ao máximo esse processo. A segunda consiste em aplicar programação orientada a aspectos (AOP) afim de melhorar a modularização de código de tratamento de exceções. Conduzimos um estudo aprofundado com o objetivo de melhorar o entendimento geral sobre o efeitos de AOP no código de tratamento de exceções e identificar as situações onde seu uso é vantajoso e onde não éAbstract: Exception handling mechanisms were conceived as a means to help managing the complexity of fault-tolerant software. They promote an explicit textual separation between normal code and the code that deals with abnormal situations, in order to support the construction of programs that are more concise, evolvable, and reliable. Several mainstream programming languages and most of the existing component models implement exception handling mechanisms. In spite of its many bene?ts, exception handling can be a source of many design faults if used in an ad hoc fashion. Recent studies show that developers of large-scale software systems based on component infrastructures have habits concerning the use of exception handling that make applications vulnerable to faults and hard to maintain. Software components introduce new challenges which are not addressed by traditional exception handling mechanisms and increase the chances of problems occurring. Examples include unavailability of source code and architectural mismatches. In this work, we propose two complementary techniques centered on exception handling for the construction of fault-tolerant component-based systems. Both of them emphasize system structure as a means to reduce the impactof fault tolerance mechanisms on the overall complexity of a software system and the number of design faults that stem from complexity. The ?rst one is an approach for the architectural design of a system?s error handling capabilities. It addresses the problem of verifying whether a software architecture satis?es certain properties of interest pertaining the ?ow of exceptions between architectural components, e.g., if all the exceptions signaled at the architectural level are eventually handled. The proposed approach is based on a set of existing tools that automate this process as much as possible. The second one consists in applying aspect-oriented programming (AOP) to better modularize exception handling code. We have conducted a through study aimed at improving our understanding of the efects of AOP on exception handling code and identifying the situations where its use is advantageous and the ones where it is notDoutoradoDoutor em Ciência da Computaçã

    Explicit Exception Handling Variability In Component-based Product Line Architectures

    No full text
    Separation of concerns is one of the overarching goals of exception handling in order to keep separate normal and exceptional behaviour of a software system. In the context of a software product line (SPL), this separation of concerns is also important for designing software variabilities related to different exception handling strategies, such as the choice of different handlers depending on the set of selected features. This paper presents a method for refactoring object-oriented product line architecture in order to separate explicitly their normal and exceptional behaviour into different software components. The new component-based software architecture includes variation points related to different choices of exception handlers that can be selected during product instantiations, thus facilitating the evolution of the exceptional behaviour. The feasibility of the proposed approach is assessed through a SPL of mobile applications. Copyright 2008 ACM.4754Atkinson, C., (2002) Component-based Product Line Engineering with UML, , Addison-WesleyBass, L., Clements, P., Kazman, R., (1997) Software Architecture in Practice, , Addison-Wesley Professional, DecemberP. H. S. Brito, C. R. Rocha, F. Castor Filho, E. Martins, and C. M. F. Rubira. A method for modeling and testing exceptions in component-based software development. In Proc. of the 2nd Latin American Symposium on Dependable Computing (LADC 2005), LNCS 3747, pages 61-79, 2005Buschmann, F., (1996) Pattern-oriented software architecture: A system of patterns, , John Wiley & Sons, IncCacho, N., Filho, F.C., Garcia, A., Figueiredo, E., Ejflow: Taming exceptional control flows in aspect-oriented programming (2008) 7th Int. Conf. on Aspect-Oriented Software Development (AOSD'08), pp. 72-83Cheesman, J., Daniels, J., (2000) UML Components, , Addison-WesleyClements, P., Northrop, L., (2002) Software Product Lines: Practices and Patterns, , Addison-WesleyCristian, F., Exception handling (1989) Dependability of Resilient Computers, pp. 68-97. , T. Anderson, editor, Blackwell Scientific PublicationsFerber, S., Haag, J., Savolainen, J., Feature interaction and dependencies: Modeling features for reengineering a legacy product line (2002) LNCS, 2379, pp. 37-60. , Proc. of the Second International Software Product Lines Conference SPLCFigueiredo, E., Evolving software product lines with aspects: An empirical study on design stability (2008) ICSE '08: Proc. of the 30th international conference on Software engineering, pp. 261-270Filho, F.C., Guerra, P.A.D.C., Pagano, V.A., Rubira, C.M.F., A systematic approach for structuring exception handling in robust component-based software (2005) Journal of the Brazilian Computer Society, 10 (3), pp. 5-19Gamma, E., Helm, R., Johnson, R., Vlissides, J., (1995) Design Patterns: Elements of Reusable Software Systems, , Addison-WesleyGayard, L.A., Rubira, C.M.F., de Castro Guerra, P.A., COSMOS*: A COmponent System MOdel for Software Architectures (2008), Technical Report IC-08-04, FebGray, J., Reuter, A., (1993) Transaction Processing: Concepts and Techniques, , Morgan KaufmannKruchten, P., Obbink, J.H., Stafford, J.A., The past, present, and future for software architecture (2006) IEEE Software, 23 (2), pp. 22-30Lippert, M., Lopes, C.V., A study on exception detection and handling using aspect-oriented programming (2000) Proc. of the 22nd international conference on Software engineering (ICSE'00), pp. 418-427Parnas, D.L., Würges, H., Response to undesired events in software systems (1976) Proceedings of the 2nd International Conference on Software Engineering, pp. 437-446Robillard, M.P., Murphy, G.C., Designing robust java programs with exceptions (2000) SIGSOFT Softw. Eng. Notes, 25 (6), pp. 2-10Szyperski, C., (2002) Component Software: Beyond Object-Oriented Programming, , ACM Press and Addison-Wesley, New York, USA, second edition edition, NovemberR. T. Tomita, F. Castor Filho, P. A. de C. Guerra, and C. M. F. Rubira. Bellatrix: An environment with arquitectural support for component-based development (in portuguese). In Proc. of the IV Brazilian Workshop on Component-Based Development, pages 43-48, 200
    corecore