arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2209.05052cs.SE
收藏

软件复活:通过向历史软件展示现代性来发现编程珍珠

Software Resurrection: Discovering Programming Pearls by Showing Modernity to Historical Software

Abhishek Dutta

摘要:

我们被告知,阅读别人编写的计算机程序代码和文档是学习编写可理解和可维护的代码和文档的最佳方法之一。本文介绍的软件复活练习,需要一个积极的学习者编译和测试的历史版本(如20岁)的一个良好的维护和广泛采用的开放源码软件的现代硬件和软件平台。本练习最后根据在发布时无法预见的硬件和软件平台上编译和测试历史软件发布时遇到的问题撰写评论。作为软件复活练习的一部分,学习者还需要解决这些问题。看似毫无意义的恢复历史软件的练习,让有动力的学习者体验软件维护的痛苦和喜悦,这对于理解有助于程序代码和文档的可理解性和可维护性的因素至关重要。使用20年前发布的SQLite数据库引擎版本来说明软件复活练习的概念。这个例子表明,当一个历史软件版本被改编为在现代平台上成功运行时,软件工程原则(或编程珍珠)就出现了。软件复活练习也有可能为终身探索和学习现有程序代码的意愿奠定基础。

英文摘要:

Reading computer program code and documentation written by others is, we are told, one of the best ways to learn the art of writing intelligible and maintainable code and documentation. The software resurrection exercise, introduced in this paper, requires a motivated learner to compile and test a historical release (e.g. 20 years old) version of a well maintained and widely adopted open source software on a modern hardware and software platform. This exercise concludes by writing a critique based on issues encountered while compiling and testing a historical software release on a hardware and software platform that could not have been foreseen at the time of release. The learner is also required to fix the issues as a part of the software resurrection exercise. The seemingly pointless exercise of resurrecting a historical software allows motivated learners to experience the pain and joy of software maintenance which is essential for understanding the factors that contribute to intelligibility and maintainability of program code and documentation. The concept of software resurrection exercise is illustrated using a version of the SQLite database engine that was released 20 years ago. This illustration shows that software engineering principles (or programming pearls) emerge when a historical software release is adapted to run successfully on a modern platform. The software resurrection exercise also has the potential to lay foundations for a lifelong willingness to explore and learn from existing program code.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑