Skip to main content
Log in

A model for estimating change propagation in software

  • Published:
Software Quality Journal Aims and scope Submit manuscript

Abstract

A major issue in software maintenance is change propagation. A software engineer should be able to assess the impact of a change in a software system, so that the effort to accomplish the maintenance may be properly estimated. We define a novel model, named K3B, for estimating change propagation impact. The model aims to predict how far a set of changes will propagate throughout the system. K3B is a stochastic model that has input parameters about the system and the number of modules which will be initially changed. K3B returns the estimated number of change steps, considering that a module may be changed more than once during a modification process. We provide the implementation of K3B for object-oriented programs. We compare our implementation with data from an artificial scenario, given by simulation, as well as with data from a real scenario, given by historical data. We found strong correlation between the results given by K3B and the results observed in the simulation, as well as with historical data of change propagation. K3B may be used for comparing software systems from the viewpoint of change impact. The model may aid software engineers in allocating proper resources to the maintenance tasks.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7

Similar content being viewed by others

Notes

  1. The formula was defined based on the resultant polynomials for n 𝜖{4, 5, 6,..., 11, 20, 25}. Analyzing data for values of n > 25 manually was not viable.

  2. http://www.cs.waikato.ac.nz/ml/weka/

  3. Our implementation of K3B was introduced in Connecta Project and it is available in http://homepages.dcc.ufmg.br/~kecia/connecta.htm.

  4. Geipel and Schweitzer (2012) have found that the probability that two interconnected classes have been modified together is at least once is 0.33, with a standard deviation of 0.12. The weights we used in our study are near to those.

  5. (http://sourceforge.net/projects/azureus/)

References

  • Abreu, F.B., & Carapuça, R. (1994). Object-oriented software engineering: Measuring and controlling the development process. USA: VA.

  • Bieman, J.M., & Kang, B.K. (1995). Cohesion and reuse in an object-oriented system. SIGSOFT Software Engineering Notes, 20, 259–262. doi:10.1145/223427.211856.

    Article  Google Scholar 

  • Brudaru, I.I., & Zeller, A. (2008). What is the long-term impact of changes?. In Proceedings of the 2008 international workshop on Recommendation systems for software engineering, ACM, New York, NY, USA, RSSE ’08 (pp. 30–32). doi:10.1145/1454247.1454257.

  • Chaumun, M.A., Kabaili, H., Keller, R.K., & Lustman, F. (1999). A change impact model for changeability assessment in object-oriented software systems. In Proceedings of the Third European Conference on Software Maintenance and Reengineering, IEEE Computer Society (pp. 130–139). Washington, DC: USA.

  • Chidamber, S.R., & Kemerer, C.F. (1994). A metrics suite for object oriented design. IEEE Transactions on Software Engineering, 20(6), 476–493. doi:10.1109/32.295895.

    Article  Google Scholar 

  • Dagenais, B., & Robillard, M.P. (2011). Recommending adaptive changes for framework evolution. ACM Transactions on Software Engineering and Methodology, 20(4), 19:1–19:35. doi:10.1145/2000799.2000805.

    Article  Google Scholar 

  • Ferreira, K.A.M. (2011). Um Modelo de Predição da Amplitude de Propagação de Modificações Contratuais em Software Orientado por Objetos. Brazil: Doctoral Dissertation.Computer Science Department, Federal University of Minas Gerais.

    Google Scholar 

  • Ferreira, K.A.M., Bigonha, M.A.S., & Bigonha, R.S. (2008). Reestruturação de software dirigida por conectividade para redução de custo de manutenção. Revista de Informática Teórica e Aplicada, 15(2), 155–179.

    Google Scholar 

  • Ferreira, K.A.M., Bigonha, M.A., Bigonha, R.S., Almeida, H.C., & Moreira, R.C.N. (2011). Métrica de coesão de responsabilidade - a utilidade de métricas de coesão na identificação de classes com problemas estruturais. In X Brazilian Simposium on Software Quality - SBQS’2011, Curitiba, Paraná (pp. 9–23). Brazil.

  • Fowler, M. (1999). Refactoring: improving the design of existing code. USA: Addison-Wesley Longman Publishing Co., Inc. Boston, MA.

    MATH  Google Scholar 

  • Geipel, M.M., & Schweitzer, F. (2012). The link between dependency and cochange: Empirical evidence. IEEE Transactions on Software Engineering, 38(6), 1432–1444. doi:10.1109/TSE.2011.91.

    Article  Google Scholar 

  • German, D.M., Hassan, A.E., & Robles, G. (2009). Change impact graphs: Determining the impact of prior codechanges. Information and Software Technology, 51 (10), 1394–1408. doi:10.1016/j.infsof.2009.04.018.

    Article  Google Scholar 

  • Grinstead, C.M., & Snell, J.L. (1991). Introduction to probability. America Mathematical Society.

  • Hassan, A.E., & Holt, R.C. (2004). Predicting change propagation in software systems. In Proceedings of the 20th IEEE International Conference on Software Maintenance, IEEE Computer Society, Washington, DC, USA, ICSM ’04 (pp. 284–293). http://dl.acm.org/citation.cfm?id=1018431.1021436.

  • Herzig, K., & Zeller, A. (2011). Mining cause-effect-chains from version histories. In Proceedings of the 2011 IEEE 22nd International Symposium on Software Reliability Engineering, IEEE Computer Society, Washington, DC, USA, ISSRE ’11 (pp. 60–69). doi:10.1109/ISSRE.2011.16.

  • Herzig, K.S. (2010). Capturing the long-term impact of changes. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2, ACM, New York, NY, USA, ICSE ’10 (pp. 393–396). doi:10.1145/1810295.1810401.

  • Hitz, M., & Montazeri, B. (1995). Measuring coupling and cohesion in object-oriented systems. In Proceedings of the 1995 Int. Symposium on Applied Corporate Computing, Int. Symposium on Applied Corporate Computing, Monterrey (pp. 1–10). Mexico.

  • Kawrykow, D., & Robillard, M.P. (2011). Non-essential changes in version histories. In Proceedings of the 33rd International Conference on Software Engineering, ACM, New York, NY, USA, ICSE ’11 (pp. 351–360). doi:10.1145/1985793.1985842.

  • Li, B., Sun, X., Leung, H., & Sai, Z. (2012). A survey of code-based change impact analysis techniques. Softw Test Verif Reliab, 1–34. doi:10.1002/stvr.1475.

  • Li, L., Qian, G., & Zhang, L. (2009). Evaluation of software change propagation using simulation. In Proceedings of the 2009 WRI World Congress on Software Engineering - Volume 04, IEEE Computer Society, Washington, DC, USA, WCSE ’09 (pp. 28–33). doi:10.1109/WCSE.2009.22.

  • Li, L., Zhang, L., Lu, L., & Fan, Z. (2010). Assessing object-oriented software systems based on change impact simulation. International Conference on Computer and Information Technology, 1364–1369.

  • Meyer, B. (1997). Object-oriented software construction, 2nd edn. USA: Prentice Hall International Series.

    MATH  Google Scholar 

  • Mirarab, S., Hassouna, A., & Tahvildari, L. (2007). Using bayesian belief networks to predict change propagation in software systems. International Conference on Program Comprehension, 177–188.

  • Myers, G.J. (1975). Reliable software through composite design, 2nd edn. New York: Petrocelli/Charter.

    Google Scholar 

  • Petrov, V., & Mordecki, E. (2003). Teorí de Probabilidades Matematnka. Moscow: Editorial URSS.

    Google Scholar 

  • Pressman, R.S. (2009). Software Engineering: a practitioner’s approach, 7th edn: McGraw Hill.

  • Rajlich, V. (1997). A model for change propagation based on graph rewriting. In Proceedings of the International Conference on Software Maintenance, IEEE Computer Society, Washington, DC, USA, ICSM ’97 (pp. 84–91). http://dl.acm.org/citation.cfm?id=645545.656039.

  • Robillard, M.P. (2008). Topology analysis of software dependencies. ACM Transactions on Software Engineering and Methodology, 17(4), 18:1–18:36. doi:10.1145/13487689.13487691.

  • Sommerville, I. (2011). Software Engineering 9. Pearson Education.

  • Zimmermann, T., Weissgerber, P., Diehl, S., & Zeller, A. (2005). Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 31(6), 429–445. doi:10.1109/TSE.2005.72.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Kecia A. M. Ferreira.

Additional information

The authors would like to thank FAPEMIG - Fundação de Amparo à Pesquisa do Estado de Minas Gerais, which has sponsored Bárbara M. Gomes (CEFET-MG) and Luiz F. O. Mendes (UFMG) as undergraduated students.

Appendix A: The expressions obtained

Appendix A: The expressions obtained

This appendix shows the expressions obtained for number of modules from 4 to 7. The symbol a corresponds to the parameters α ϕ, whereas b corresponds to β, respectively.

4 modules

\( \left [ \begin {array}{c} 1+6\,{\dfrac {a}{b}}+12\,{\dfrac {{a}^{2}}{{b}^{2}}}+12\,{\frac {{a}^{3}}{{b}^{3}}}\\[-2pt] 2+10\,{\dfrac {a}{b}}+16\,{\dfrac {{a}^{2}}{{b}^{2}}}+12\,{\frac {{a}^{3}}{{b}^{3}}}\\[-2pt] 3+12\,{\dfrac {a}{b}}+16\,{\dfrac {{a}^{2}}{{b}^{2}}}+12\,{\frac {{a}^{3}}{{b}^{3}}}\\[-2pt] 4+12\,{\dfrac {a}{b}}+16\,{\dfrac {{a}^{2}}{{b}^{2}}}+12\,{\dfrac {{a}^{3}}{{b}^{3}}} \end {array} \right ] \)

5 modules

\( \left [ \begin {array}{c} 1+8\,{\dfrac {a}{b}}+24\,{\dfrac {{a}^{2}}{{b}^{2}}}+48\,{\dfrac {{a}^{3}}{{b}^{3}}}+48\,{\dfrac {{a}^{4}}{{b}^{4}}}\\\noalign {}2+14\,{\dfrac {a}{b}}+36\,{\dfrac {{a}^{2}}{{b}^{2}}}+60\,{\dfrac {{a}^{3}}{{b}^{3}}}+48\,{\dfrac {{a}^{4}}{{b}^{4}}}\\\noalign {}3+18\,{\dfrac {a}{b}}+40\,{\dfrac {{a}^{2}}{{b}^{2}}}+60\,{\dfrac {{a}^{3}}{{b}^{3}}}+48\,{\dfrac {{a}^{4}}{{b}^{4}}}\\\noalign {}4+20\,{\dfrac {a}{b}}+40\,{\dfrac {{a}^{2}}{{b}^{2}}}+60\,{\dfrac {{a}^{3}}{{b}^{3}}}+48\,{\dfrac {{a}^{4}}{{b}^{4}}}\\\noalign {}5+20\,{\dfrac {a}{b}}+40\,{\dfrac {{a}^{2}}{{b}^{2}}}+60\,{\dfrac {{a}^{3}}{{b}^{3}}}+48\,{\dfrac {{a}^{4}}{{b}^{4}}}\end {array} \right ] \)

6 modules

\( \left [ \begin {array}{c} 1+10\,{\dfrac {a}{b}}+40\,{\dfrac {{a}^{2}}{{b}^{2}}}+120\,{\dfrac {{a}^{3}}{{b}^{3}}}+240\,{\dfrac {{a}^{4}}{{b}^{4}}}+240\,{\dfrac {{a}^{5}}{{b}^{5}}}\\\noalign {}2+18\,{\dfrac {a}{b}}+64\,{\dfrac {{a}^{2}}{{b}^{2}}}+168\,{\dfrac {{a}^{3}}{{b}^{3}}}+288\,{\dfrac {{a}^{4}}{{b}^{4}}}+240\,{\dfrac {{a}^{5}}{{b}^{5}}}\\\noalign {}3+24\,{\dfrac {a}{b}}+76\,{\dfrac {{a}^{2}}{{b}^{2}}}+180\,{\dfrac {{a}^{3}}{{b}^{3}}}+288\,{\dfrac {{a}^{4}}{{b}^{4}}}+240\,{\dfrac {{a}^{5}}{{b}^{5}}}\\\noalign {}4+28\,{\dfrac {a}{b}}+80\,{\dfrac {{a}^{2}}{{b}^{2}}}+180\,{\dfrac {{a}^{3}}{{b}^{3}}}+288\,{\dfrac {{a}^{4}}{{b}^{4}}}+240\,{\dfrac {{a}^{5}}{{b}^{5}}}\\\noalign {}5+30\,{\dfrac {a}{b}}+80\,{\dfrac {{a}^{2}}{{b}^{2}}}+180\,{\dfrac {{a}^{3}}{{b}^{3}}}+288\,{\dfrac {{a}^{4}}{{b}^{4}}}+240\,{\dfrac {{a}^{5}}{{b}^{5}}}\\\noalign {}6+30\,{\dfrac {a}{b}}+80\,{\dfrac {{a}^{2}}{{b}^{2}}}+180\,{\dfrac {{a}^{3}}{{b}^{3}}}+288\,{\dfrac {{a}^{4}}{{b}^{4}}}+240\,{\dfrac {{a}^{5}}{{b}^{5}}}\end {array} \right ] \)

7 modules

\( \left [ \begin {array}{c} 1+12\,{\dfrac {a}{b}}+60\,{\dfrac {{a}^{2}}{{b}^{2}}}+240\,{\dfrac {{a}^{3}}{{b}^{3}}}+720\,{\dfrac {{a}^{4}}{{b}^{4}}}+1440\,{\dfrac {{a}^{5}}{{b}^{5}}}+1440\,{\dfrac {{a}^{6}}{{b}^{6}}}\\\noalign {}2+22\,{\dfrac {a}{b}}+100\,{\dfrac {{a}^{2}}{{b}^{2}}}+360\,{\dfrac {{a}^{3}}{{b}^{3}}}+960\,{\dfrac {{a}^{4}}{{b}^{4}}}+1680\,{\dfrac {{a}^{5}}{{b}^{5}}}+1440\,{\dfrac {{a}^{6}}{{b}^{6}}}\\\noalign {}3+30\,{\dfrac {a}{b}}+124\,{\dfrac {{a}^{2}}{{b}^{2}}}+408\,{\dfrac {{a}^{3}}{{b}^{3}}}+1008\,{\dfrac {{a}^{4}}{{b}^{4}}}+1680\,{\dfrac {{a}^{5}}{{b}^{5}}}+1440\,{\dfrac {{a}^{6}}{{b}^{6}}}\\\noalign {}4+36\,{\dfrac {a}{b}}+136\,{\dfrac {{a}^{2}}{{b}^{2}}}+420\,{\dfrac {{a}^{3}}{{b}^{3}}}+1008\,{\dfrac {{a}^{4}}{{b}^{4}}}+1680\,{\dfrac {{a}^{5}}{{b}^{5}}}+1440\,{\dfrac {{a}^{6}}{{b}^{6}}}\\\noalign {}5+40\,{\dfrac {a}{b}}+140\,{\dfrac {{a}^{2}}{{b}^{2}}}+420\,{\dfrac {{a}^{3}}{{b}^{3}}}+1008\,{\dfrac {{a}^{4}}{{b}^{4}}}+1680\,{\dfrac {{a}^{5}}{{b}^{5}}}+1440\,{\dfrac {{a}^{6}}{{b}^{6}}}\\\noalign {}6+42\,{\dfrac {a}{b}}+140\,{\dfrac {{a}^{2}}{{b}^{2}}}+420\,{\dfrac {{a}^{3}}{{b}^{3}}}+1008\,{\dfrac {{a}^{4}}{{b}^{4}}}+1680\,{\dfrac {{a}^{5}}{{b}^{5}}}+1440\,{\dfrac {{a}^{6}}{{b}^{6}}}\\\noalign {}7+42\,{\dfrac {a}{b}}+140\,{\dfrac {{a}^{2}}{{b}^{2}}}+420\,{\dfrac {{a}^{3}}{{b}^{3}}}+1008\,{\dfrac {{a}^{4}}{{b}^{4}}}+1680\,{\dfrac {{a}^{5}}{{b}^{5}}}+1440\,{\dfrac {{a}^{6}}{{b}^{6}}}\end {array} \right ] \)

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

M. Ferreira, K.A., S. Bigonha, M.A., S. Bigonha, R. et al. A model for estimating change propagation in software. Software Qual J 26, 217–248 (2018). https://doi.org/10.1007/s11219-017-9358-6

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11219-017-9358-6

Keywords

Navigation