## 2 Software Architecture Models Evolution Study  
In the past decades, the software architecture landscape has witnessed significant evolution driven by the escalating complexity of computing systems and the imperative to adapt to a rapidly changing technological environment. During this period, diverse architectural frameworks and methodologies have emerged and evolved to address the unique challenges faced by software developers and architects. Among these architectures and methodologies, the most influential in the aforementioned environments are the following:  
* Anthropomorphic approach: Rooted in human-centered design principles, the anthropomorphic approach places a strong emphasis on understanding and accommodating human needs and behaviors in system design [4]. While it enhances the user experience and adaptability, it may introduce complexity in implementation and require extensive user research. * Predictive modeling: Leveraging data analytics and machine learning techniques, predictive modeling enables systems to anticipate future events and trends based on historical data. This fosters informed decision-making and resource optimization, but may be limited by data quality and the dynamic nature of real-world scenarios [5; 6]. * Cognitive architecture: Inspired by human cognition, cognitive architecture seeks to replicate cognitive processes within software systems, enabling them to perceive, reason, and adapt like humans. While it enhances system intelligence and user interaction, it may entail significant computational overhead and require complex modeling [7]. * Hexagonal architecture: Offering a modular and adaptable design approach, hexagonal architecture decouples core system logic from external dependencies, promoting scalability and maintainability. However, it may introduce additional architectural complexity and require careful planning to ensure seamless integration [8]. * Design thinking: Design thinking fosters innovation by empathizing with user needs, ideating creative solutions, and iterating through prototyping and feedback cycles [9]. Its user-centric approach enhances solution relevance and usability, yet may lead to ambiguity in requirements and feasibility. * Lean startup: Rooted in rapid experimentation and customer feedback, lean startup accelerates product development and validation. While it fosters agility and market responsiveness, it may prioritize speed over quality and overlook long-term scalability [10]. * Domain-driven design (DDD): DDD focuses on modeling complex business domains to align software architecture with business requirements [11]. By promoting a shared understanding of domain concepts, it enhances system flexibility and maintainability. However, it may require extensive domain expertise and introduce overhead in domain modeling. * Agile development: Agile methodologies emphasize iterative development, collaboration, and adaptability to changing requirements [12]. They enhance transparency and stakeholder engagement but may pose challenges in managing scope and ensuring comprehensive documentation. * Service-oriented architecture (SOA): SOA organizes systems as interoperable services, facilitating flexibility and reusability [13]. It promotes modular design and interoperability, yet may introduce complexity in service orchestration and governance. While these architectures and methodologies offer a range of advantages, they also present unique challenges and limitations that must be carefully addressed. When evaluating and selecting an architecture or methodology for a specific project, it is crucial to consider the business needs and objectives, as well as the project's context and technical requirements. In the realm of complex system design, as mentioned before, the adoption of a singular methodology or approach may not suffice to address all dimensions and challenges that arise. It is within this context that the notion of combining different approaches and methodologies to create more robust and adaptable architectures emerges.