COMPREHENSIBILITY OF SOURCE CODE WITH FEATURE DEPENDENCY IN CONFIGURABLE SYSTEMS
Creators
Contributors
Supervisors:
- 1. Federal University of Bahia
- 2. Federal University of Alagoas
Description
Conditional compilation is often used to implement variability in configurable systems. This technique relies on \#ifdefs to delimit feature code. Previous studies have shown that #ifdefs may hinder code comprehensibility. However, those studies did not explicitly take feature dependencies into account. Feature dependency occurs when different features refer to the same program element, such as a variable. Comprehensibility may be even more affected in the presence of feature dependency, as the developer must reason about different scenarios affecting the same variable. Our goal is to understand how feature dependency affects the comprehensibility of configurable system source code. We conducted four complementary empirical studies. In Study 1, forty-six developers responded to an online experiment. They executed tasks in which they had to analyze programs containing #ifdefs with and without feature dependency. However, feature dependencies may be of different types depending on the scope of the shared variable. In Study 1, we were not concerned with different types of dependency. Thus, in Study 2, we carried out an experiment in which 30 developers debugged programs with different types of feature dependency. Each program included a different type of feature dependency: global, intraprocedural or interprocedural. We used an eye-tracking device to record developers' gaze movements while they debugged programs. However, feature dependencies do not differ from each other only in terms of types. They can also present differences in terms of number of dependent variables and degree of variability, among others. To address those characteristics, we complemented Study 1 and 2 by means of Studies 3 and 4. In Study 3, we executed a controlled experiment with 12 participants who analyzed programs with different numbers of dependent variables and number of uses of dependent variables. In Study 4, we carried out an experiment in which 12 developers analyzed programs with different degrees of variability. Our results show that: (i) analyzing programs containing \#ifdefs and feature dependency required more time than programs containing \#ifdefs but without feature dependency, (ii) debugging programs with \#ifdefs and global or interprocedural dependency required more time and higher visual effort than programs with intraprocedural dependency, (iii) the higher the number of dependent variables the more difficult it was to understand programs with feature dependency, and (iv) the degree of variability did not affect the comprehensibility of programs with feature dependency. In summary, our studies showed that #ifdefs affected comprehensibility of configurable systems in different degrees depending on the presence or not of feature dependency, on the type of feature dependency, and on the number of dependent variables.
Notes
Files
A_I.png
Files
(8.9 MB)
Name | Size | Download all |
---|---|---|
md5:6dea32d2813b4c1e746d628577856a23
|
29.2 kB | Preview Download |
md5:aeef3babc9d56b5adbcbbe3198a81b7f
|
26.9 kB | Preview Download |
md5:eab8b9a0c8a99a7ada929f4a86f0521c
|
31.4 kB | Preview Download |
md5:3731a4e61886f6f81f782338a5b79e36
|
28.4 kB | Preview Download |
md5:ceb91b35ad681e54d2aa363d086e93bc
|
33.9 kB | Preview Download |
md5:27610cb05c5c0ccea8a7170c5a25da41
|
31.0 kB | Preview Download |
md5:c9dc15c3ce46e6e3692eaf72be48e6bb
|
2.8 kB | Preview Download |
md5:5c2913dbd71654de8a1e34e9989c1459
|
1.9 kB | Preview Download |
md5:f9b36d25d06f6770d6a8a9f92caf59cf
|
145 Bytes | Preview Download |
md5:cca2bf217c447171ec451d0bde37cbcd
|
1.6 MB | Preview Download |
md5:d01a387164bab98c8b951ff56aae7d0a
|
1.8 MB | Preview Download |
md5:0d41e5d13ac810c75a1ea92193e720d4
|
32.5 kB | Preview Download |
md5:cdb59f6c3c2d88e58bb0cc6becc292c1
|
30.5 kB | Preview Download |
md5:96ffc4a0474cbec5792300e39e493ccc
|
34.7 kB | Preview Download |
md5:8a42d88ea077243720ab3f93a9585bbc
|
32.8 kB | Preview Download |
md5:6bcc1e5ab0e5c966f2dfaf52813b01ad
|
45.5 kB | Preview Download |
md5:fc8e97262118cf6073f8921c823543a9
|
43.2 kB | Preview Download |
md5:e8f232a882e12a7c83632cabc2bf8391
|
23.6 kB | Preview Download |
md5:e470826fe42428acea694cf11bad7d6c
|
18.6 kB | Preview Download |
md5:1ea218b97f975c66e65675a0a3a0ef75
|
27.9 kB | Preview Download |
md5:7cebcd4f2abd42c68d7342b824c5d7ad
|
22.7 kB | Preview Download |
md5:a8d1c653a1dd450dcdc0df8360fab15c
|
29.4 kB | Preview Download |
md5:e20700ad336220072aec43fcc11283d2
|
24.3 kB | Preview Download |
md5:54596899a7d51a2f2498d33b11c20be9
|
4.0 kB | Download |
md5:107c90282d5df4e3e67ad0a262d88c37
|
4.1 kB | Download |
md5:04d31f357b8598ff800cc62b54795dc3
|
4.1 kB | Download |
md5:84dba08f52b6429f0f89b56036cb8099
|
183.2 kB | Preview Download |
md5:ee27c4f573b6f986fbbd2175faf32d55
|
182.4 kB | Preview Download |
md5:0b521d084b9d5aaaa7b20ab7ec34c63f
|
122 Bytes | Preview Download |
md5:c3473df1df3b6f7fcfb0ed2bf09a46bd
|
95 Bytes | Download |
md5:3de6bd8caca6a7bcc1829aa8fb3c04cb
|
25.7 kB | Preview Download |
md5:4c6f438d8e3694e808ac6d9da18570ca
|
24.2 kB | Preview Download |
md5:190c2014038300475be119db4232d747
|
27.4 kB | Preview Download |
md5:2b268fa075d87063ff5d3be3a5fb71cd
|
26.4 kB | Preview Download |
md5:d9e2603fa2e3098a40dfc17c8be22e24
|
39.8 kB | Preview Download |
md5:dc10097332b0ef46ced3c7e856b74c07
|
35.7 kB | Preview Download |
md5:df5b46b2373b3dd127bcb0b3d5a2b555
|
27.8 kB | Preview Download |
md5:394c220b8475e527176826ac3f89c2b7
|
20.0 kB | Preview Download |
md5:a538930d83df7d481272e14cf0a3f882
|
30.9 kB | Preview Download |
md5:02531129df7fe257acff6408808f8e7b
|
24.4 kB | Preview Download |
md5:269d3b1723fe046a512830140ef1499f
|
40.8 kB | Preview Download |
md5:ab883b95517b505954ffd773850e609b
|
36.6 kB | Preview Download |
md5:1e97497a856f06cf1281e8ac66958ddf
|
23.5 kB | Preview Download |
md5:f8ea5be9d069abea68b21f5ceb64f567
|
14.8 kB | Preview Download |
md5:50204e2d81a692193c44af3bb25c4a33
|
25.9 kB | Preview Download |
md5:766c5568f66e963da97e08f5081c4274
|
17.2 kB | Preview Download |
md5:4a0ccdc977f6931742b6f5d1eb17d976
|
27.1 kB | Preview Download |
md5:6890ec3d94919623282f6632097b1391
|
18.8 kB | Preview Download |
md5:f8a509d481e3b185a9e6638e1ba62820
|
2.9 kB | Preview Download |
md5:f82e800889deb4b8abf1c29a910dc4bc
|
2.0 kB | Preview Download |
md5:e7e2db9f97928cf7a993131f4de83e56
|
2.1 kB | Preview Download |
md5:7f2939fdd117269f50f86c20643505e0
|
7.1 kB | Preview Download |
md5:ebd92bc53d0ff7c7f5684b8a3fad7965
|
7.1 kB | Preview Download |
md5:d3abee77740592a9bbd1f7f49f85b799
|
4.1 kB | Download |
md5:4289d8bf87203a47269fd2dc5522e4ab
|
90.3 kB | Preview Download |
md5:44006513f3e6a964983d7ef9b6d5406f
|
84.1 kB | Preview Download |
md5:9aca1fc8b8189170e0b6dbc3f45065a8
|
2.8 kB | Preview Download |
md5:eb1bfab97870f190a3809d16e632e716
|
1.9 kB | Preview Download |
md5:4b3592db00157d0b0feeff3aef51ce27
|
217 Bytes | Preview Download |
md5:54a005dde92c3c69801b0ee0fa634645
|
6.3 kB | Preview Download |
md5:673206efadc0d94234edaafaf0fd605b
|
69.2 kB | Preview Download |
md5:fa5f55b24531df1afcc939623fe0f590
|
76.3 kB | Preview Download |
md5:ecf136eeffed19f212fdce694e4b3f10
|
72.0 kB | Preview Download |
md5:d50b8309d2292f9392faf8f3ccbadcdf
|
80.7 kB | Preview Download |
md5:32db29537bd1604250a4401a831bd0e4
|
86.7 kB | Preview Download |
md5:9c9bdb561e7dde493821251dcc9e1607
|
88.5 kB | Preview Download |
md5:2dd8404d294c638375ceac2b64a17afa
|
1.5 MB | Preview Download |
md5:33398ee130e465175d645a33dfa279c5
|
1.6 MB | Preview Download |
md5:cca4d1359ce6d1127ab59af15166fd93
|
200.4 kB | Preview Download |
md5:69dfddb131ac3e5ae38b613f272e4659
|
180.8 kB | Preview Download |
md5:fddf3b82e7574c0cfd4ddc937a49e634
|
3.8 kB | Download |
md5:2201bc43323143931fd3e6f9be22a5b8
|
2.6 kB | Preview Download |
md5:1d6c12abcbb4b8be6c2303958dfb2631
|
2.0 kB | Preview Download |
md5:20f9ac0c6d08bdd9f6a32f734c1208cb
|
2.1 kB | Preview Download |
md5:2becac298112d74b05b31cae1fb20290
|
16.8 kB | Preview Download |