• DocumentCode
    1634695
  • Title

    Automatic and Continuous Software Architecture Validation

  • Author

    Goldstein, Maayan ; Segall, Itai

  • Author_Institution
    IBM Res. - Haifa, Haifa, Israel
  • Volume
    2
  • fYear
    2015
  • Firstpage
    59
  • Lastpage
    68
  • Abstract
    Software systems tend to suffer from architectural problems as they are being developed. While modern software development methodologies such as Agile and Dev-Ops suggest different ways of assuring code quality, very little attention is paid to maintaining high quality of the architecture of the evolving systems. By detecting and alerting about violations of the intended software architecture, one can often avoid code-level bad smells such as spaghetti code. Typically, if one wants to reason about the software architecture, the burden of first defining the intended architecture falls on the developer´s shoulders. This includes definition of valid and invalid dependencies between software components. However, the developers are seldom familiar with the entire software system, which makes this task difficult, time consuming and error-prone. We propose and implement a solution for automatic detection of architectural violations in software artifacts. The solution, which utilizes a number of predefined and user-defined patterns, does not require prior knowledge of the system or its intended architecture. We propose to leverage this solution as part of the nightly build process used by development teams, thus achieving continuous automatic validation of the system´s software architecture. As we show in multiple open-source and proprietary cases, a small set of predefined patterns can detect architectural violations as they are introduced over the course of development, and also capture deterioration in existing architectural problems. By evaluating the tool on relatively large open-source projects, we also validate its scalability and practical applicability to large software systems.
  • Keywords
    object-oriented programming; program verification; software architecture; software quality; source code (software); Dev-Ops; agile software development methodologies; architectural problems; architectural violations automatic detection; automatic software architecture validation; code quality; code-level; continuous software architecture validation; development teams; predefined patterns; quality maintenance; software artifacts; software components; software systems; spaghetti code; systems architecture; user-defined patterns; Computer architecture; Production facilities; Semantics; Software architecture; Software systems;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on
  • Conference_Location
    Florence
  • Type

    conf

  • DOI
    10.1109/ICSE.2015.135
  • Filename
    7202950