Model-driven Software Architectural Design based on Software Evolution Modeling and Simulation and Design Pattern Analysis for Design Space Exploration Towards Maintainability - Καρανικόλας, Χρήστος (Πανεπιστήμιο Πελοποννήσου, 2022)
In software architectural design, critical decisions among design alternatives with regards to maintainability arise early in the software design cycle. Existing exploration approaches are neither design-pattern-oriented nor formal. Such approaches are not reusable, have narrow scoping, and usually lead to suboptimal results. Furthermore, the effectiveness of existing techniques and models on predicting maintenance effort is usually verified on a limited number of case studies under heterogeneous metrics and settings. Conventionally, developers use their intuition, experience, or instant judgment to get such decisions, which leads to accrued technical debt, high risk, and suboptimal results regarding code quality. Owing to the confirmed lack of architectural awareness, developers underestimate the negative impact of such early and critical design decisions. Selecting between different design options is a crucial decision for object-oriented software developers affecting important code quality characteristics such as maintainability. In this thesis, a systematic modeling method for deriving formal comparison models for the efficient evaluation of object-oriented design alternatives in terms of maintainability early in the software design cycle is introduced. The method is suitable for modeling significant, general, and frequently tackled design problems which have dominant impact on the overall maintainability of the system, where different design alternatives are competing to address the same requirements. The derived formal models provide early estimates of required effort per design alternative in terms of proportionally equivalent effort assessments mainly for comparison purposes. The proposed approach considers the software expansion trend through the structural evolution of the engaged design patterns. This is achieved by formalizing change rates of individual design attributes for basic maintenance scenarios and their probabilities in the form of continuous differential equations to predict the required maintenance effort. Alternatively, the required effort is assessed by measuring the change impact of repeatedly applied scenarios in connection with the evolving design attributes under the view of a gradual (event-based) quantitative analysis. The proposed method has been evaluated on the significant and general design problem of recursive hierarchies of part-whole aggregations. The generated formal comparison models address the selection of Visitor over Composite design patterns against the direct inheritance-based approach. The derived models capture maintainability as a metric of software quality and provide reliable assessments for each implementation alternative. Furthermore, the proposed method suggests the structural maintenance cost metric based on which the progressive analysis of maintenance process is introduced. The proposed measurement approach has been applied to several test cases for different relevant quality metrics. The results prove that the proposed modeling method derives formal models which deliver reliable effort assessments mainly for comparison purposes. Thus, the proposed method can be used for comparing different implementation alternatives against various measures and quality factors, before code development leading to reduced effort and cost for software maintenance. Furthermore, the introduced modeling method has been applied to three different extensions of the general selection problem, thus assessing its applicability to even more realistic settings. The Decorator, Mediator, Observer, Abstract Factory, and Prototype design patterns have been modeled. The generated formal models have been tested on a sample of several specific instances representing the entire design-space of each general problem. The results prove that the derived formal models are reliable and can efficiently support decision-making among design alternatives early in the design cycle, leading to significant benefits in terms of maintenance time and effort. The results also suggest that the method can model general problems and support decision-making even in the (high-level) architectural design stage of systems. In addition, a multi-variable simulation model for validating the decision-making reliability of the modeling theory and derived formal comparison models for the significant designing problem of recursive hierarchies of part-whole aggregations is introduced. The proposed simulation model has been implemented in the forms of functional and modular representations. In the absence of a strictly validation against real-world observations, the simulation model has been thoroughly calibrated concerning its decision-making precision based on empirical evidence from time series analysis, approximating the highly uncertain nature of actual maintenance process. The decision reliability of the formal models has been statistically validated on a sample of one thousand possible instances of design attributes representing the entire design-space of the problem under analysis. Despite the limited accuracy of measurements, the results show that the models demonstrate an increasing selection reliability in a long-term perspective even under assumptions of high variability. Thus, the proposed modeling theory delivers reliable formal comparison models that significantly reduce decision-risk, maintenance effort, and relevant cost. Methods that yield such formal, general, and reusable models can bring software engineers closer to informed design decisions, and thus develop more maintainable software of higher quality.
Αρχιτεκτονικός σχεδιασμός λογισμικού βάσει μοντέλου βασισμένος σε μοντελοποίηση και προσομοίωση λογισμικού εξέλιξης και ανάλυση προτύπων σχεδίασης για εξερεύνηση χώρου σχεδιασμού προς τη δυνατότητα συντήρησης
Δ.Δ. 25
Keywords: Αρχιτεκτονικός σχεδιασμός; Υποβοηθούμενη από μοντέλα μηχανική λογισμικού; Μηχανική σχεδίασης λογισμικού; Βελτιστοποίηση σχεδιασμού; Αντικειμενοστραφής αρχιτεκτονικές; Εξέλιξη λογισμικού; Συντηρησιμότητα; Ανάλυση σχεδιαστικών προτύπων; Αντισταθμίσεις σχεδίασης λογισμικού; Μοντέλα εξισώσεων; Μοντελοποίηση και εξομοίωση; Στατιστική επικύρωση; Κλάσεις και αντικείμενα; Επισκέπτης; Σύνθεση