The Information Bus: an architecture for extensible distributed systems
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
Safeware: system safety and computers
Safeware: system safety and computers
Abstractions for Software Architecture and Tools to Support Them
IEEE Transactions on Software Engineering - Special issue on software architecture
Architectural mismatch or why it's hard to build systems out of existing parts
Proceedings of the 17th international conference on Software engineering
Software architecture: perspectives on an emerging discipline
Software architecture: perspectives on an emerging discipline
AntiPatterns: refactoring software, architectures, and projects in crisis
AntiPatterns: refactoring software, architectures, and projects in crisis
Linux as a case study: its extracted software architecture
Proceedings of the 21st international conference on Software engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Towards a taxonomy of software connectors
Proceedings of the 22nd international conference on Software engineering
Architectural Repair of Open Source Software
IWPC '00 Proceedings of the 8th International Workshop on Program Comprehension
Grid Datafarm Architecture for Petascale Data Intensive Computing
CCGRID '02 Proceedings of the 2nd IEEE/ACM International Symposium on Cluster Computing and the Grid
Composing heterogeneous software architectures
Composing heterogeneous software architectures
Detecting architectural mismatches during systems composition
Detecting architectural mismatches during systems composition
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Calculating Architectural Reliability via Modeling and Analysis
Proceedings of the 26th International Conference on Software Engineering
Detection Strategies: Metrics-Based Rules for Detecting Design Flaws
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
The Anatomy of the Grid: Enabling Scalable Virtual Organizations
International Journal of High Performance Computing Applications
Reconceptualizing a Family of Heterogeneous Embedded Systems via Explicit Architectural Support
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Exploring the Role of Software Architecture in Dynamic and Fault Tolerant Pervasive Systems
SEPCASE '07 Proceedings of the 1st International Workshop on Software Engineering for Pervasive Computing Applications, Systems, and Environments
Assessing the impact of bad smells using historical information
Ninth international workshop on Principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting
Software Architecture: Foundations, Theory, and Practice
Software Architecture: Foundations, Theory, and Practice
Identifying Architectural Bad Smells
CSMR '09 Proceedings of the 2009 European Conference on Software Maintenance and Reengineering
CBSE'05 Proceedings of the 8th international conference on Component-Based Software Engineering
Impact analysis for distributed event-based systems
Proceedings of the 6th ACM International Conference on Distributed Event-Based Systems
Systematically selecting a software module during opportunistic reuse
Proceedings of the 2013 International Conference on Software Engineering
Identifying message flow in distributed event-based systems
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Architectural bad smells in software product lines: an exploratory study
Proceedings of the WICSA 2014 Companion Volume
Hi-index | 0.00 |
An architectural bad smell is a commonly (although not always intentionally) used set of architectural design decisions that negatively impacts system lifecycle properties, such as understandability, testability, extensibility, and reusability. In our previous short paper, we introduced the notion of architectural bad smells and outlined a few common smells. In this paper, we significantly expand upon that work. In particular, we describe in detail four representative architectural smells that emerged from reverse-engineering and re-engineering two large industrial systems and from our search through case studies in research literature. For each of the four architectural smells, we provide illustrative examples and demonstrate the smell's impact on system lifecycle properties. Our experiences indicate the need to identify and catalog architectural smells so that software architects can discover and eliminate them from system designs.