Skip to main content

Softwareevolution

  • 9087 Accesses

Part of the Xpert.press book series (XPERT.PRESS)

Zusammenfassung

In den zurückliegenden Kapiteln haben wir die Software- und Systementwicklung so beschrieben, als würden wir auf der grünen Wiese starten und ein neues Softwaresystem von Grund auf entwickeln. Dadurch konnten wir die einzelnen Aufgaben der Softwareentwicklung gut abgegrenzt darstellen. Eine völlige Neuentwicklung ist aber in der Praxis eher die Ausnahme. Meist besteht die Softwareentwicklung darin, ein existierendes System auf einen neuen Stand zu bringen und es weiterzuentwickeln oder existierende Systemteile zu integrieren. Wir sprechen bei der Gesamtheit der Entwicklungsaufgaben für ein Softwaresystem, angefangen von der Neuentwicklung bis hin zu seiner Modifikation und Weiterentwicklung von Softwareevolution. Typischerweise werden Softwaresysteme, nachdem sie einen geeigneten Entwicklungsstand haben, in Betrieb genommen und im Laufe des Betriebes gewartet und weiterentwickelt. Die Wartung behandelt alle notwendigen Änderungen, die an einem System zur Fehlerbehebung vorgenommen werden, um es an neue Erfordernisse anzupassen und es gegebenenfalls besser zu strukturieren, sodass die Weiterentwicklung einfacher durchzuführen ist. In diesem Kapitel werden zunächst die Transition in die Einsatzumgebung und folgend die Aufgaben der Softwarewartung beschrieben. Ausgewählte Methoden und Techniken, die in der Neuentwicklung aber insbesondere auch in der Wartung eingesetzt werden können, ergänzen die Konzepte und Aufgabenbeschreibungen.

This is a preview of subscription content, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • DOI: 10.1007/978-3-662-50263-1_13
  • Chapter length: 40 pages
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
eBook
USD   54.99
Price excludes VAT (USA)
  • ISBN: 978-3-662-50263-1
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
Hardcover Book
USD   69.99
Price excludes VAT (USA)
Abb. 13.1
Abb. 13.2
Abb. 13.3
Abb. 13.4
Abb. 13.5
Abb. 13.6
Abb. 13.7
Abb. 13.8
Abb. 13.9
Abb. 13.10
Abb. 13.11
Abb. 13.12
Abb. 13.13
Abb. 13.14

Notes

  1. 1.

    Wird das System vom Entwickler installiert, so schließt sich häufig ein Testbetrieb an die Erstinstallation an. Beim Auftreten von Fehlern sind diese zu lokalisieren, ein Konzept für die Fehlerbehebung zu erarbeiten und der Fehler schließlich zu beseitigen. Dabei ist darauf zu achten, dass keine unerwünschten Nebeneffekte entstehen und dass die Dokumentation entsprechend geändert wird [10, S. 287 ff.].

  2. 2.

    Online-Beschreibung des Netflix Software Development Cycle: https://netflixtechblog.com/full-cycle-developers-at-netflix-a08c31f83249.

  3. 3.

    Dies wird auch als Total Cost of Ownership (TCO) bezeichnet.

  4. 4.

    Man beachte, dass der Standard IEEE 1219-1998 durch den Standard ISO/IEC 14764:2006 [29] abgelöst wurde. Aufgrund seiner Einfachheit verwenden wir jedoch den Wartungsprozess in der Form des IEEE Standards.

  5. 5.

    Die Anwendung JabRef (https://www.jabref.org) ist ein Standard-Show-Case, welcher zur Demonstration der Funktionen der Software Teamscale verwendet wird. JabRef ist eine Open Source Software zur Verwaltung von Literaturdatenbanken für wissenschaftliche Arbeiten. Der Quellcode ist auf GitHub unter https://github.com/JabRef/jabref verfügbar. Damit steht auch die Versionshistorie der Software zur Verfügung, sodass sie sich sehr gut zur Demonstration eignet.

  6. 6.

    Hier ist zu beachten, dass, je nach eingesetzter Plattform, das Erzeugen von Getter- und Setter-Methoden nicht als Refactoring im eigentlichen Sinne zählt.

Literatur

  1. M. Allamanis, M. Brockschmidt, and M. Khademi. Learning to represent programs with graphs. In International Conference on Learning Representations, ICLR, 2018.

    Google Scholar 

  2. E. Allman. Managing Technical Debt. Commun. ACM, 55(5):50–55, May 2012.

    Google Scholar 

  3. V. Basili, L. Briand, S. Condon, Y.-M. Kim, W. L. Melo, and J. D. Valett. Understanding and predicting the process of software maintenance release. In Proceedings of the 18th International Conference on Software Engineering, ICSE ’96, pages 464–474, Washington, DC, USA, 1996. IEEE Computer Society.

    Google Scholar 

  4. L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice: Software Architect Practice. SEI Series in Software Engineering. Addison-Wesley Professional, 3 edition, 2012.

    Google Scholar 

  5. K. Beck. Test Driven Development. By Example. Addison-Wesley Longman, 2002.

    Google Scholar 

  6. G. Böckle, P. Knauber, K. Pohl, and K. Schmid. Software-Produktlinien – Methoden, Einführung und Praxis. dpunkt.verlag, May 2004.

    Google Scholar 

  7. B. Boehm. Software Engineering Economics. Prentice Hall, 1981.

    Google Scholar 

  8. C. Bommer, M. Spindler, and V. Barr. Softwarewartung: Grundlagen, Management und Wartungstechniken. dpunkt.verlag, June 2008.

    Google Scholar 

  9. P. Bourque and R. E. Fairley, editors. Guide to the Software Engineering Body of Knowledge (SWEBOK) v3.0. IEEE Computer Society, 2014.

    Google Scholar 

  10. M. Broy and M. Kuhrmann. Projektorganisation und Management im Software Engineering. Number 978-3-642-29289-7 in Xpert.press. Springer Verlag, Berlin Heidelberg, 1 edition, 2013.

    Google Scholar 

  11. G. Chastek and J. D. McGregor. Guidelines for developing a product line production plan. Technical Report CMU/SEI-2002-TR-006, Software Engineering Institute, 2002.

    Google Scholar 

  12. E. J. Chikofsky and J. H. Cross. Reverse engineering and design recovery: a taxonomy. IEEE Software, 7(1):13–17, Jan 1990.

    Google Scholar 

  13. R. Clayton, S. Rugaber, and L. Wills. On the knowledge required to understand a program. In Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261), pages 69–78, Oct 1998.

    Google Scholar 

  14. R. H. Cobb and H. D. Mills. Engineering software under statistical quality control. IEEE Software, 7(6):45–54, Nov 1990.

    Google Scholar 

  15. S. Cohen. Guidelines for developing a product line concept of operations. Technical Report CMU/SEI-99-TR-008, Software Engineering Institute, 1999.

    Google Scholar 

  16. CQSE GmbH. Teamscale. Online: https://www.cqse.eu/de/produkte/teamscale/landing (Abgerufen: 2020-03-05), March 2020.

  17. F. Deißenböck. Continuous Quality Control of Long-Lived Software Systems. PhD thesis, Technische Universität München, October 2009.

    Google Scholar 

  18. F. Deissenboeck, B. Hummel, E. Jürgens, B. Schätz, S. Wagner, J. Girard, and S. Teuchert. Clone detection in automotive model-based development. In 2008 ACM/IEEE 30th International Conference on Software Engineering, pages 603–612, May 2008.

    Google Scholar 

  19. L. Erlikh. Leveraging legacy system dollars for e-business. IT Professional, 2(3):17–23, May 2000.

    Google Scholar 

  20. M. Fowler. Refactoring: Improving the Design of Existing Code. Pearson Addison-Wesley Signature Series. Addison Wesley, 2 edition, 2018.

    Google Scholar 

  21. R. L. Glass. Maintenance: less is not more. IEEE Software, 15(4):67–68, July 1998.

    Google Scholar 

  22. R. Hebig, D. E. Khelladi, and R. Bendraou. Approaches to co-evolution of metamodels and models: A survey. IEEE Trans. Software Eng., 43(5):396–414, 2017.

    CrossRef  Google Scholar 

  23. Hindel, B., Hörmann, K., Müller, M., and Schmied, J. Basiswissen Projektmanagement. dpunkt.verlag, 3 edition, 2009.

    Google Scholar 

  24. IEC 62304:2006. Medical device software – Software life cycle processes. International Electrotechnical Commission, May 2006.

    Google Scholar 

  25. IEEE Std 1012-2004. IEEE Standard for Software Verification and Validation. IEEE, 2004.

    Google Scholar 

  26. IEEE Std 1219-1998. IEEE Standard for Software Maintenance. IEEE Computer Society, 1998.

    Google Scholar 

  27. IEEE Std 610.12-1990. IEEE Standard Glossary of Software Engineering Terminology. IEEE, 1990.

    Google Scholar 

  28. ISO 13485:2016. Medical devices – Quality management systems – Requirements for regulatory purposes. International Organization for Standardization, March 2016.

    Google Scholar 

  29. ISO/IEC 14764:2006. Software Engineering – Software Life Cycle Processes – Maintenance. International Organization for Standardization, 2006.

    Google Scholar 

  30. E. Juergens and F. Deissenboeck. How much is a clone? In Proceedings of the 4th International Workshop on Software Quality and Maintainability, WoSQ, 2010.

    Google Scholar 

  31. E. Jürgens. Why and How to Control Cloning in Software Artifacts. PhD thesis, Technische Universität München, February 2011.

    Google Scholar 

  32. E. Jürgens, F. Deissenböck, and B. Hummel. CloneDetective – A workbench for clone detection research. In 2009 IEEE 31st International Conference on Software Engineering, ICSE, pages 603–606. IEEE, May 2009.

    Google Scholar 

  33. E. Jürgens, F. Deissenboeck, M. Feilkas, B. Hummel, B. Schätz, S. Wagner, C. Domann, and J. Streit. Can clone detection support quality assessments of requirements specifications? In 2010 ACM/IEEE 32nd International Conference on Software Engineering, volume 2, pages 79–88, May 2010.

    Google Scholar 

  34. E. Jürgens, F. Deissenboeck, B. Hummel, and S. Wagner. Do code clones matter? In Proceedings of the 31st International Conference on Software Engineering, ICSE ’09, pages 485–495, USA, 2009. IEEE Computer Society.

    Google Scholar 

  35. M. Kajko-Mattsson. Preventive maintenance! Do we know what it is? In International Conference on Software Maintenance, ICSM, pages 12–14. IEEE, October 2000.

    Google Scholar 

  36. D. E. Khelladi, R. Hebig, R. Bendraou, J. Robin, and M. Gervais. Detecting complex changes during metamodel evolution. In J. Zdravkovic, M. Kirikova, and P. Johannesson, editors, Proceedings of 27th International Conference on Advanced Information Systems Engineering (CAiSE), volume 9097 of Lecture Notes in Computer Science, pages 263–278. Springer, 2015.

    Google Scholar 

  37. A. J. Ko, R. DeLine, and G. Venolia. Information Needs in Collocated Software Development Teams. In 29th International Conference on Software Engineering, ICSE, pages 344–353, May 2007.

    Google Scholar 

  38. R. Koschke. Survey of research on software clones. In R. Koschke, E. Merlo, and A. Walenstein, editors, Duplication, Redundancy, and Similarity in Software, number 06301 in Dagstuhl Seminar Proceedings, Dagstuhl, Germany, 2007. Internationales Begegnungs- und Forschungszentrum für Informatik (IBFI), Schloss Dagstuhl, Germany.

    Google Scholar 

  39. P. Kruchten, R. Nord, and I. Ozkaya. Managing Technical Debt. SEI Series in Software Engineering. Addison-Wesley, June 2019.

    Google Scholar 

  40. M. Lehman. On understanding laws, evolution, and conservation in the large-program life cycle. Journal of Systems and Software, 1:213 – 221, 1979.

    CrossRef  Google Scholar 

  41. M. M. Lehman. Programs, life cycles, and laws of software evolution. Proceedings of the IEEE, 68(9):1060–1076, Sep. 1980.

    Google Scholar 

  42. M. M. Lehman and L. A. Belady, editors. Program Evolution: Processes of Software Change. Academic Press Professional, Inc., San Diego, CA, USA, 1985.

    Google Scholar 

  43. B. P. Linz and E. B. Swanson. Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations. Addison-Wesley, August 1980.

    Google Scholar 

  44. W. Maalej, R. Tiarks, T. Roehm, and R. Koschke. On the comprehension of program comprehension. ACM Trans. Softw. Eng. Methodol., 23(4), Sept. 2014.

    Google Scholar 

  45. R. C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, 2008.

    Google Scholar 

  46. H. D. Mills, M. Dyer, and R. C. Linger. Cleanroom software engineering. IEEE Software, 4(5):19–25, Sep. 1987.

    Google Scholar 

  47. G. C. Murphy, M. Kersten, and L. Findlater. How are Java software developers using the Elipse IDE? IEEE Software, 23(4):76–83, July 2006.

    Google Scholar 

  48. J. T. Nosek and P. Palvia. Software maintenance management: Changes in the last decade. Journal of Software Maintenance: Research and Practice, 2(3):157–174, 1990.

    CrossRef  Google Scholar 

  49. W. F. Opdyke and R. E. Johnson. Refactoring: an aid in designing application frameworks and evolving object-oriented systems. In Proceedings of Symposion on Object-Oriented Programming Emphasizing Practical Applications, SOOPPA, 1990.

    Google Scholar 

  50. D. L. Parnas. Software Aging. In Proceedings of the 16th International Conference on Software Engineering, ICSE, pages 279–287, Los Alamitos, CA, USA, 1994. IEEE Computer Society Press.

    Google Scholar 

  51. T. M. Pigoski. Practical Software Maintenance: Best Practices for Managing Your Software Investment. Wiley, November 1996.

    Google Scholar 

  52. S. J. Prowell, C. J. Trammell, R. C. Linger, and J. H. Poore. Cleanroom Software Engineering: Technology and Process. SEI Series in Software Engineering. Addison-Wesley Professional, March 1999.

    Google Scholar 

  53. R. Rada. Re-Engineering Software: How to Re-Use Programming to Build New, State-of-the-Art Software. Taylor & Francis Inc, 2 edition, March 1999.

    Google Scholar 

  54. H. Rombach, B. T. Ulery, and J. D. Valett. Toward full life cycle control: Adding maintenance measurement to the sel. Journal of Systems and Software, 18(2):125–138, 1992.

    CrossRef  Google Scholar 

  55. R. C. Seacord, D. Plakosh, and G. A. Lewis. Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices. SEI Series in Software Engineering. Addison-Wesley Professional, February 2003.

    Google Scholar 

  56. M. Shahbaz. Reverse Engineering and Testing of Black-Box Software Components. LAP LAMBERT Academic Publishing, June 2012.

    Google Scholar 

  57. J. Siegmund. Program comprehension: Past, present, and future. In 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), volume 5, pages 13–20, March 2016.

    Google Scholar 

  58. H. M. Sneed, M. Hasitschka, and M. T. Teichmann. Software-Produktmanagement: Wartung und Weiterentwicklung bestehender Anwendungssysteme. dpunkt.verlag, October 2004.

    Google Scholar 

  59. The Open Group. The Open Group Architecture Framework (TOGAF, Version 9). Van Haren Publishing, 10 edition, November 2011.

    Google Scholar 

  60. M. Tufano, C. Watson, G. Bavota, M. Di Penta, M. White, and D. Poshyvanyk. Deep learning similarities from different representations of source code. In Proceedings of the 15th International Conference on Mining Software Repositories, MSR ’18, pages 542–553, New York, NY, USA, 2018. Association for Computing Machinery.

    Google Scholar 

  61. A. Von Mayrhauser and A. M. Vans. Program comprehension during software maintenance and evolution. Computer, 28(8):44–55, Aug 1995.

    Google Scholar 

  62. S. Wagner. Software Product Quality Control. Springer Verlag, 2013.

    Google Scholar 

  63. M. P. Ward and K. H. Bennett. Recursion removal/introduction by formal transformation: An aid to program development and program comprehension. The Computer Journal, 42(8):650–673, Jan 1999.

    Google Scholar 

  64. D. Yeh and J.-H. Jeng. An empirical study of the influence of departmentalization and organizational position on software maintenance. Journal of Software Maintenance, 14(1):65–82, Jan. 2002.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Manfred Broy .

Rights and permissions

Reprints and Permissions

Copyright information

© 2021 Springer-Verlag GmbH Deutschland, ein Teil von Springer Nature

About this chapter

Verify currency and authenticity via CrossMark

Cite this chapter

Broy, M., Kuhrmann, M. (2021). Softwareevolution. In: Einführung in die Softwaretechnik. Xpert.press. Springer Vieweg, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-50263-1_13

Download citation

  • DOI: https://doi.org/10.1007/978-3-662-50263-1_13

  • Published:

  • Publisher Name: Springer Vieweg, Berlin, Heidelberg

  • Print ISBN: 978-3-662-50262-4

  • Online ISBN: 978-3-662-50263-1

  • eBook Packages: Computer Science and Engineering (German Language)