{'fraction_non_alphanumeric': 0.021515434985968196, 'fraction_numerical': 0.0, 'mean_word_length': 5.8152866242038215, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Architecture-Based Criticality Assessment of Software Systems

The development of dependable software systems with acceptable costs and time often requires architectural analyses and criticality assessment strategies to achieve a detailed understanding of the system failing behavior. This information is valuable to evaluate architectural alternatives, to allocate resources, such as, testing efforts and fault tolerance means, efficiently, and to support the selection and the integration of software components. This paper proposes an architecture-based method, which allows characterizing the criticality of individual components and their impact on the overall system. The method includes the preliminary system characterization through a software fault injection campaign and exploits a formal description of the system, in terms of components and interactions among them, which enables the final criticality assessment. The method is applied in the context of two real-world case studies, i.e., the Apache Web Server, and TAO Open Data Distribution System (DDS).