Article Preview
TopIntroduction
Software maintenance is a primary phase of the software development life cycle. Several studies have reported that this phase is the most effort and time consuming of all. For example, in one study it was reported that the software maintenance phase takes around seventy percent of total resources and 40%-60% of the total software lifecycle efforts (Tahir & Ahmad, 2010). Having maintainable software decreases maintenance cost and effort. Software maintainability can be defined as “the degree to which an application is understood, repaired or enhanced” (Cast, 2017).
Four factors affect the maintainability of software: (1) analyzability, which measures the ability to identify the fault or failure within the software, (2) changeability which is the capability to modify software products, (3) stability which refers to the ability to avoid unexpected effects from changing the software product, and (4) testability which is the capability to test and validate the modified software product (Ghosh & Dubey, 2012).
A number of software metrics can be used to measure maintainability. Software metrics is a predictor to assess and predict software quality; however, although maintenance is a critical task, it has been poorly managed due to inadequate measurement, so we need precise criteria for measuring software maintenance (Rizvi & Khan, 2010). Finding a tool that provides accurate and relevant results is not easy and it is a big issue. Moreover, some tools are dedicated to special development languages and other tools have an interface that requires extensive training (Albeladi et al., 2014). Indeed, some tools are able to measure specific metrics, and they vary according to the different sizes of systems they evaluate (Lincke et al., 2008).
Many researchers depend on open source software, because it is free in terms of licensing, especially in industrial organizations. Moreover, it is constantly being updated by different developers. Therefore, there is a need to measure the quality of such codes and to ensure the maintainability of open source software (Johari & Kaur, 2012).
Open source software (OSS) is developed by collaborative work done by volunteers worldwide using different management styles. Issues with OSS’s include: lack of attention to user interface design that will cause it to be used less; lack of documentation which is a serious issue, with many OSS’s being poorly documented since there is no contractual responsibility (Levesque, 2004). An OSS is sometimes more secure than proprietary software, but there are some drawbacks in its security and many E.Y.E reviews have led to vulnerabilities being discovered (Open Source, 2017). There are also some usability problems in OSS’s but they are not significant (Nichols & Twidale, 2003). So, the quality of open source software needs to be studied deeply and maintainability is one of the major factors used to assess their quality.
Empirical studies refer to OSS’s as being more maintainable than proprietary software. Design metrics literature indicates that after a long period of maintenance an OSS will be harder to maintain and a deterioration in maintenance is to be expected over time (Ayalew & Mguni, 2013).
Many studies have been conducted on evaluating the maintainability of OSS. Some research considers whether the maintainability of OSS’s is different from that of closed software. On the other hand, other research studies show the variance of maintainability measurement with different versions for the same OSS, and some examines the impact of design metrics on maintainability.
In this paper, we will answer the following questions: Do the domains of the OSS have a direct effect on its maintainability? What are the most available metrics that directly affect the maintainability of software? What tool can we trust to provide accurate measurement to maintainability?