Software architecture recovery: Difference between revisions

Content deleted Content added
Dead-end pages clean up project; you can help! using AWB
No edit summary
 
(24 intermediate revisions by 15 users not shown)
Line 1:
{{Short description|Methods of software reconstruction}}
'''Software architecture recovery''' is a set of methods for the extraction of architectural information from lower level representations of a [[software]] system, such as [[source code]]. The abstraction process to generate architectural elements frequently involves clustering source code entities (such as files, classes, functions etc.) into subsystems according to a set of criteria that can be application dependent or not. Architecture recovery from [[legacy system]]s is motivated by the fact that these systems do not often have an architectural documentation, and when they do, this documentation is many times out of synchronization with the implemented system.
 
Software architecture recovery may be required as part of software retrofits.<ref name="ieeesw">{{Cite journal |doi=10.1109/MS.2016.49 | title = Software Retrofit in High-Availability Systems: When Uptime Matters | journal = IEEE Software |volume = 32 |issue = 3 |pages = 11–17 |year = 2015 |last=Ronzon |first=T. }}</ref>
 
== Approaches ==
Most approaches to software architecture recovery has been exploring the [[static program analysis|static analysis]] of systems. When considering object-oriented software, which employs a lot of polymorphism and dynamic binding mechanisms, [[dynamic program analysis|dynamic analysis]] becomes an essential technique to comprehend the systembehaviorsystem behavior, object interactions, and hence to reconstruct its architecture. In this work, the criteria used to determine how source code entities should be clustered in architectural elements are mainly based on the dynamic analysis of the system, taking into account the occurrences of interaction patterns and types (classes and interfaces) in use-case realizations.
 
In this work, the criteria used to determine how source code entities should be clustered in architectural elements are mainly based on the dynamic analysis of the system, taking into account the occurrences of interaction patterns and types (classes and interfaces) in [[Use-case analysis|use-case realizations]]. <ref>{{cite book |first=T. |last=Lutellier |first2=D. |last2=Chollak |first3=J. |last3=Garcia |first4=L. |last4=Tan |first5=D. |last5=Rayside |first6=N. |last6=Medvidovic |first7=R. |last7=Kroeger |chapter=Comparing Software Architecture Recovery Techniques Using Accurate Dependencies |title=2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, Florence |year=2015 |isbn=978-1-4799-1934-5 |pages=69–78 |doi=10.1109/ICSE.2015.136}}</ref>
 
== See also ==
* [[Reverse engineering]]
* [[Software archaeology]]
* [[Software architecture]]
* [[System appreciation]]
 
== References ==
{{reflist}}
* http://www.ucb.br/ucbtic/wmswm-04/SoftwareArchitectureRecovery.pdf
 
{{uncategorized|date=June 2008}}
[[Category:Software architecture]]
[[Category:Data recovery]]