“…Recently, a series of studies has been undertaken by Holt et al to recover the architectures of several largescale, open-source applications (e.g., Linux, Apache) [4,15]. Their approach is similar to ours in that they also come up with a conceptual architecture and use it as the basis of understanding a system's implementation.…”
Section: Discussionmentioning
confidence: 99%
“…Poor Modularity -Numerous researchers, including a recent study by Bowman et al [4], have demonstrated that developer discipline is difficult to ensure in a large system built and maintained by many people over a long time; in such cases, the physical architecture of the system eventually reaches a high degree of connectivity among its components. We have not encountered cases of such severe architectural erosion in our studies classes, and so on.…”
Section: Discussionmentioning
confidence: 99%
“…Many of these requirements are often ignored in present-day development however, with a frequent willingness to compromise the quality and longevity of a system in order to decrease its time-to-market. This attitude, coupled with the complexity of the involved systems and the sloppiness with which the changes to them are often documented, directly contributes to numerous recorded cases of architectural erosion [4,5,8,29]. Architectural erosion denotes a major departure from the initial architecture's intent and conceptual integrity, caused by its frequent modifications; erosion also refers to the discrepancies between the architecture "as documented" and "as implemented."…”
mentioning
confidence: 99%
“…To deal with the problem of architectural erosion, researchers and practitioners have typically engaged in architectural recovery [4,11,13,15,16,32,41,43], a process whereby the system's architecture is extracted from its implementation. However, existing architectural recovery approaches fail to account for several pertinent issues.…”
Ideally, a software project commences with requirements gathering and specification, reaches its major milestone with system implementation and delivery, and then continues, possibly indefinitely, into an operation and maintenance phase. The software system's architecture is in many ways the linchpin of this process: it is supposed to be an effective reification of the system's technical requirements and to be faithfully reflected in the system's implementation. Furthermore, the architecture is meant to guide system evolution, while also being updated in the process. However, in reality developers frequently deviate from the architecture, causing architectural erosion, a phenomenon in which the initial, "as documented" architecture of an application is (arbitrarily) modified to the point where its key properties no longer hold. Architectural recovery is a process frequently used to cope with architectural erosion whereby the current, "as implemented" architecture of a software system is extracted from the system's implementation. In this paper we propose a light-weight approach to architectural recovery, called Focus, which has three unique facets. First, Focus uses a system's evolution requirements to isolate and incrementally recover only the fragment of the system's architecture affected by the evolution. In this manner, Focus allows engineers to direct their primary attention to the part of the system that is immediately impacted by the desired change; subsequent changes will incrementally uncover additional parts of the system's architecture. Secondly, in addition to software components, which are the usual target of existing recovery approaches, Focus also recovers the key architectural notions of software connector and architectural style. Finally, Focus does not only recover a system's architecture, but may in fact rearchitect the system. We have applied and evaluated Focus in the context of several off-the-shelf applications and architectural styles to date. We discuss its key strengths and point out several open issues that will frame our future work.
“…Recently, a series of studies has been undertaken by Holt et al to recover the architectures of several largescale, open-source applications (e.g., Linux, Apache) [4,15]. Their approach is similar to ours in that they also come up with a conceptual architecture and use it as the basis of understanding a system's implementation.…”
Section: Discussionmentioning
confidence: 99%
“…Poor Modularity -Numerous researchers, including a recent study by Bowman et al [4], have demonstrated that developer discipline is difficult to ensure in a large system built and maintained by many people over a long time; in such cases, the physical architecture of the system eventually reaches a high degree of connectivity among its components. We have not encountered cases of such severe architectural erosion in our studies classes, and so on.…”
Section: Discussionmentioning
confidence: 99%
“…Many of these requirements are often ignored in present-day development however, with a frequent willingness to compromise the quality and longevity of a system in order to decrease its time-to-market. This attitude, coupled with the complexity of the involved systems and the sloppiness with which the changes to them are often documented, directly contributes to numerous recorded cases of architectural erosion [4,5,8,29]. Architectural erosion denotes a major departure from the initial architecture's intent and conceptual integrity, caused by its frequent modifications; erosion also refers to the discrepancies between the architecture "as documented" and "as implemented."…”
mentioning
confidence: 99%
“…To deal with the problem of architectural erosion, researchers and practitioners have typically engaged in architectural recovery [4,11,13,15,16,32,41,43], a process whereby the system's architecture is extracted from its implementation. However, existing architectural recovery approaches fail to account for several pertinent issues.…”
Ideally, a software project commences with requirements gathering and specification, reaches its major milestone with system implementation and delivery, and then continues, possibly indefinitely, into an operation and maintenance phase. The software system's architecture is in many ways the linchpin of this process: it is supposed to be an effective reification of the system's technical requirements and to be faithfully reflected in the system's implementation. Furthermore, the architecture is meant to guide system evolution, while also being updated in the process. However, in reality developers frequently deviate from the architecture, causing architectural erosion, a phenomenon in which the initial, "as documented" architecture of an application is (arbitrarily) modified to the point where its key properties no longer hold. Architectural recovery is a process frequently used to cope with architectural erosion whereby the current, "as implemented" architecture of a software system is extracted from the system's implementation. In this paper we propose a light-weight approach to architectural recovery, called Focus, which has three unique facets. First, Focus uses a system's evolution requirements to isolate and incrementally recover only the fragment of the system's architecture affected by the evolution. In this manner, Focus allows engineers to direct their primary attention to the part of the system that is immediately impacted by the desired change; subsequent changes will incrementally uncover additional parts of the system's architecture. Secondly, in addition to software components, which are the usual target of existing recovery approaches, Focus also recovers the key architectural notions of software connector and architectural style. Finally, Focus does not only recover a system's architecture, but may in fact rearchitect the system. We have applied and evaluated Focus in the context of several off-the-shelf applications and architectural styles to date. We discuss its key strengths and point out several open issues that will frame our future work.
“…Architectural recovery is one of the recognized counter-measures to this decay [12]. Several earlier works have been focused on the architectural recovery of proprietary [12], closed academic [1], COTS [4] and FLOSS [6,17,37] systems; in all of these studies, systems were selected in a specific state of evolution, and their internal structures analysed for discrepancies between the folder-structure and concrete architectures [37]. Repair actions have been formulated as frameworks [32], methodologies [20] or guidelines and concrete advice to developers [37].…”
Abstract. A promising way of software reuse is Component-Based Software Development (CBSD). There is an increasing number of OSS products available that can be freely used in product development. However, OSS communities themselves have not yet taken full advantage of the "reuse mechanism". Many OSS projects duplicate effort and code, even when sharing the same application domain and topic. One successful counter-example is the FFMpeg multimedia project, since several of its components are widely and consistently reused into other OSS projects. This paper documents the history of the libavcodec library of components from the FFMpeg project, which at present is reused in more than 140 OSS projects. Most of the recipients use it as a blackbox component, although a number of OSS projects keep a copy of it in their repositories, and modify it as such. In both cases, we argue that libavcodec is a successful example of reusable OSS library of components.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.