Software Architecture

2022 ◽  
pp. 17-39
Author(s):  
Perla Velasco-Elizondo

What is software architecture? A clear and simple definition is that software architecture is about making important design decisions that you want to get right early in the development of a software system because, in the future, they are costly to change. Being a good software architect is not easy. It requires not only a deep technical competency from practicing software architecture design in industry, but also an excellent understanding of the theoretical foundations of software architecture are gained from doing software architecture research. This chapter describes some significant research, development, and education activities that the author has performed during her professional trajectory path to develop knowledge, skills, and experiences around this topic.

Author(s):  
Perla Velasco-Elizondo

What is software architecture? A clear and simple definition is that software architecture is about making important design decisions that you want to get right early in the development of a software system because, in the future, they are costly to change. Being a good software architect is not easy. It requires not only a deep technical competency from practicing software architecture design in industry, but also an excellent understanding of the theoretical foundations of software architecture are gained from doing software architecture research. This chapter describes some significant research, development, and education activities that the author has performed during her professional trajectory path to develop knowledge, skills, and experiences around this topic.


Author(s):  
Sungwon Kang ◽  
David Garlan

Software architecture allows us to make many decisions about a software system and analyze it even before it has been implemented, so as to make planned development possible. Similarly, architecture-based software evolution planning makes planned evolution possible by allowing us to make many decisions about the evolution of a software system and to analyze its evolution at the level of architecture design before software evolution is realized. In this paper, we develop a framework for architecture-based software evolution planning. It is done by defining various foundational terms and concepts, providing a taxonomy of software evolution plans, and then showing how to calculate values for various types of plans. By identifying and defining constituent foundational concepts, this conceptual framework makes precise the notion of "architecture-based software planning". By developing a value-calculation framework for software evolution plans, it also provides a basis for concrete methods for designing and evaluating evolution plans.


Author(s):  
BEDIR TEKINERDOGAN ◽  
HASAN SOZER ◽  
MEHMET AKSIT

Each software architecture design is the result of a broad set of design decisions and their justifications, that is, the design rationale. Capturing the design rationale is important for a variety of reasons such as enhancing communication, reuse and maintenance. Unfortunately, it appears that there is still a lack of appropriate methods and tools for effectively capturing and managing the architecture design rationale. In this paper we present a feature-based rationale management approach and the corresponding tool environment ArchiRationale for supporting software architecture adaptation. The approach takes as input an existing architecture and captures the design rationale for adapting the architecture for a given quality concern. For this we define a feature model that includes the possible set of architectural tactics to realize the quality concern. The presented approach captures the rationale for deciding on feature selections and for selecting the corresponding architecture design alternatives. ArchiRationale customizes and integrates the Eclipse plugin tools XFeature, ArchStudio and XQuery to provide tool support for capturing, storing and accessing the design rationale. We illustrate the approach for adapting a software architecture for fault tolerance.


Author(s):  
Nacha Chondamrongkul ◽  
Jing Sun ◽  
Ian Warren ◽  
Scott Uk-Jin Lee

The architecture smells are the poor design practices applied to the software architecture design. The smells in software architecture design can be cascaded to cause the issues in the system implementation and significantly affect the maintainability and reliability attribute of the software system. The prevention of architecture smells at the design phase can therefore improve the overall quality of the software system. This paper presents a framework that supports the detection of architecture smells based on the formalization of architecture design. Our modeling specification supports representing both structural and behavioral aspect of software architecture design; it allows the smells to be analyzed and detected with the provided tools. Our framework has been applied to seven architecture smells that violate different design principles. The evaluation has been conducted and the result shows that our detection approach gives accurate results and performs well on different size of models. With the proposed framework, other architecture smells can be defined and detected using the process and tools presented in this paper.


Sign in / Sign up

Export Citation Format

Share Document