Patterns & Quality Attributes Research

Dear LLVM Developers,

We are doing undergraduate research on software architecture patterns and quality attributes for Utah Valley University. We recently analyzed the work published on LLVM in the Architecture of Open Source Applications (AOSA) and referenced it in a paper we presented at the 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), as attached. As a part of our continuing research we wish to validate our architectural analysis for LLVM with the current developers.

We would like to know if we are missing any patterns or quality attributes that may have been included in LLVM, or if there are any we listed that aren’t used. Any additional comment on these topics you might have would also, of course, be welcome.

We believe we found the following software architectural patterns in this application:



Pattern Name

|

Is This Found in the Architecture? (yes / no / don’t know)

|

Comments (optional)

|

  • | - | - |


    Pipes and Filters

    |



    |



    |

We also identified the following quality attributes:



Attribute Name

|

Is This Found in the Architecture?

|

Comments (optional)

|

  • | - | - |


    Extensibility

    |



    |



    |


    Performance

    |



    |



    |


    Portability

    |



    |



    |


    Flexibility

    |



    |



    |


    Testability

    |



    |



    |

For your convenience, we have a complete list below of the patterns and quality attributes we referred to when conducting our research. To clarify, we are specifically studying architectural patterns, rather than design patterns such as the GoF patterns.



Architectural Patterns Considered

|



|

Quality Attributes Considered

|

  • | - | - |


    Active Repository

    |



    |

    Scalability

    |


    Batch

    |



    |

    Usability

    |


    Blackboard

    |



    |

    Extensibility

    |


    Broker

    |



    |

    Performance

    |


    Client Server

    |



    |

    Portability

    |


    Event System

    |



    |

    Flexibility

    |


    Explicit Invocation

    |



    |

    Reliability

    |


    Implicit Invocation

    |



    |

    Maintainability

    |


    Indirection Layer

    |



    |

    Security

    |


    Interceptor

    |



    |

    Testability

    |


    Interpreter

    |



    |

    Capacity

    |


    Layers

    |



    |

    Cost

    |


    Master and Commander

    |



    |

    Legality

    |


    Microkernel

    |



    |

    Modularity

    |


    Model View Controller

    |



    |

    Robustness

    |


    Peer to Peer

    |



    |



    |


    Pipes and Filters

    |



    |



    |


    Plugin

    |



    |



    |


    Presentation Abstraction Control

    |



    |



    |


    Publish Subscribe

    |



    |



    |


    Reflection

    |



    |



    |


    Rule-Based System

    |



    |



    |


    Shared Repository

    |



    |



    |


    Simple Repository

    |



    |



    |


    State Based

    |



    |



    |


    Virtual Machine

    |



    |



    |

Please respond by October 17, if possible.

Thank you for considering our request, and for your continued work on LLVM.

Sincerely,

Erich Gubler,

Danielle Skinner,

Brandon Leishman,

Michael Skeen,

Neil Harrison, Ph.D. (advisor)

Reference: Neil B. Harrison, Erich Gubler, Danielle Skinner, “Software Architecture Pattern Morphology in Open-Source Systems”,WICSA, 2016, 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA) 2016, pp. 91-98, doi:10.1109/WICSA.2016.8