Software Architecture Research and Practice Nenad Medvidovic University of Southern California
The Motivation Rapid and continuous growth of software –size, complexity, heterogeneity, distribution –reliance on legacy software Interoperability with heterogeneous hardware –each hardware device runs its own software Engineering systems of systems
A Motivating Example Building a Software Environment from Existing Tools The tools –OO database RPC mechanism –GUI toolkit event-broadcast mechanism System costs –estimated: 6 months, 1 person-year actual: 24 months, 5 person-years Result –huge system –sluggish performance –difficult to maintain The underlying causes were architectural!But, where was the architecture hidden?
What is the Problem? This is a simple software system!
The Usual Tool: Design Abstraction We have to do better!
Architectural Abstraction
Why Software Architecture? Early, high-level system model Stakeholder understanding and communication Focus on specific system properties Separation of concerns Early analysis and simulation Tool-supported implementation Improved processes and project management
Attach adapter to A Maintain multiple versions of A or B Make B multilingual Role and Challenge of Software Connectors Change A’s form to B’s form Provide B with import/export converter Separate B’s essence from its packaging Publish abstraction of A’s form Introduce intermediate form Transform on the fly What is the right answer? Negotiate to find common form for A and B How do we enable components A and B to interact?
Key Contribution Areas Understanding and exploiting software connectors Architectural representation and analysis Architecture-based system composition and generation Architectural styles and product line architectures Architecting processes Key challenges –formalism vs. understandability tradeoff –formalism vs. incompleteness and incrementality
Recent Success Stories Direct product of research –HLA –Tokyo Electric Power Company –ADAGE –Motorola Indirect, but clear influence of research –Siemens –Component interoperability platforms