Helping Program Comprehension of Large Software Systems by Identifying Their Most Important Classes

Author(s):  
Ioana Şora
2012 ◽  
Vol 11 (03) ◽  
pp. 1250018 ◽  
Author(s):  
Leon A. Wilson ◽  
Maksym Petrenko ◽  
Václav Rajlich

Program comprehension is an integral part of the evolution and maintenance of large software systems. As it is increasingly difficult to comprehend these systems completely, programmers have to rely on a partial and as-needed comprehension. We study partial comprehension and programmer learning with the use of concept maps as a tool for capturing programmer knowledge during concept location, which is one of the tasks of software evolution and maintenance, and it is a prerequisite of a software change. We conduct a user study to measure the performance of programmers using concept maps to assist with locating concepts. The results demonstrate that programmer learning occurs during concept location and that concept maps assisted programmers with capturing programmer learning and successful concept location.


2015 ◽  
pp. 1966-1987
Author(s):  
Ricardo Perez-Castillo ◽  
Mario Piattini

Open source software systems have poor or inexistent documentation and contributors are often scattered or missing. The reuse-based composition and maintenance of open source software systems therefore implies that program comprehension becomes a critical activity if all the embedded behavior is to be preserved. Program comprehension has traditionally been addressed by reverse engineering techniques which retrieve system design models such as class diagrams. These abstract representations provide a key artifact during migration or evolution. However, this method may retrieve large complex class diagrams which do not ensure a suitable program comprehension. This chapter attempts to improve program comprehension by providing a model-driven reverse engineering technique with which to obtain business processes models that can be used in combination with system design models such as class diagrams. The advantage of this approach is that business processes provide a simple system viewpoint at a higher abstraction level and filter out particular technical details related to source code. The technique is fully developed and tool-supported within an R&D project about global software development in which collaborate two universities and five companies. The automation of the approach facilitates its validation and transference through an industrial case study involving two open source systems.


2009 ◽  
pp. 495-503
Author(s):  
David Lo ◽  
Siau-Cheng Khoo

Software is a ubiquitous component in our daily life. It ranges from large software systems like operating systems to small embedded systems like vending machines, both of which we frequently interact with. Reducing software related costs and ensuring correctness and dependability of software are certainly worthwhile goals to pursue. Due to the short-time-to-market requirement imposed on many software projects, documented software specifications are often lacking, incomplete and outdated (Deelstra, Sinnema & Bosch 2004). Lack of documented software specifications contributes to difficulties in understanding existing systems. The latter is termed program comprehension and is estimated to contribute up to 45% of total software cost which goes to billions of dollars (Erlikh 2000, Standish 1984; Canfora & Cimitile 2002; BEA 2007). Lack of specifications also hampers automated effort of program verification and testing (Ammons, Bodik & Larus 2002).


Proceedings ◽  
2019 ◽  
Vol 46 (1) ◽  
pp. 18
Author(s):  
Habib Izadkhah ◽  
Mahjoubeh Tajgardan

Software clustering is usually used for program comprehension. Since it is considered to be the most crucial NP-complete problem, several genetic algorithms have been proposed to solve this problem. In the literature, there exist some objective functions (i.e., fitness functions) which are used by genetic algorithms for clustering. These objective functions determine the quality of each clustering obtained in the evolutionary process of the genetic algorithm in terms of cohesion and coupling. The major drawbacks of these objective functions are the inability to (1) consider utility artifacts, and (2) to apply to another software graph such as artifact feature dependency graph. To overcome the existing objective functions’ limitations, this paper presents a new objective function. The new objective function is based on information theory, aiming to produce a clustering in which information loss is minimized. For applying the new proposed objective function, we have developed a genetic algorithm aiming to maximize the proposed objective function. The proposed genetic algorithm, named ILOF, has been compared to that of some other well-known genetic algorithms. The results obtained confirm the high performance of the proposed algorithm in solving nine software systems. The performance achieved is quite satisfactory and promising for the tested benchmarks.


2007 ◽  
Vol 49 (3) ◽  
pp. 244-254 ◽  
Author(s):  
Bill Andreopoulos ◽  
Aijun An ◽  
Vassilios Tzerpos ◽  
Xiaogang Wang

Sign in / Sign up

Export Citation Format

Share Document