软件工程作为一门学科正式出现,至今已有50余年的历史。而自中国1980年启动软件工程研究与实践以来,软件工程在中国发展也已超过40年。最近20年,中国更是大力发展软件产业,加快培养软件人才。2022年,中国软件业从业人数超过800万。
软件工程是一门原理性和实践性均很强的学科,且需要随着软件形态的变化与时俱进。上海交通大学沈备军等作者编著的《软件工程原理与实践》,全面而详细地介绍了现代软件工程的各个分支,并对该领域的前沿新技术和新方向进行了展望。本书既可作为教材,又可作为自学用书和科研参考书。
翻阅书稿引发了我的一些思考,在此与读者分享。
1)软件工程源于软件及软件开发存在着复杂性、不可见性和可变性。软件工程领域中有著名的《人月神话》与《没有银弹》,这些著作清晰地说明了软件开发的复杂性。当前,大型系统软件代码量急剧增加——美国谷歌在线服务的代码量超过了20亿行。软件开发的复杂性,本质上源于要解决的实际问题所具有的复杂性和变化性。同时,软件运行环境、软件运行依赖的数据和自身状态及其逻辑关系的复杂组合,以及当前依赖程序员个人能力的软件开发过程等,都是造成软件开发问题复杂性的原因。过去50多年里,学术界与工业界提出了很多软件工程过程、软件工程技术及软件工程管理方案,以有效解决软件开发中存在的复杂性和不确定性。读者在阅读本书时,需要厘清诸多模型、技术、方案所提出的缘由,以在实际软件开发过程中灵活使用。
2)软件开发方法因领域分化特色越来越明显。近10年互联网与物联网发展到了一个新的阶段,支持人和物的移动互联成为软件系统的重要特性。与此同时,各个行业(石化、船舶、航空等)都有自己的软件应用,需要有适合自己的软件开发方法,特别是,以深度学习为代表的智能化方法的发展,延伸了软件的应用场景,给软件开发带来更大的挑战,也蕴含更大的机遇。软件开发人员不仅需要不断学习新的软件工程方法,而且需要花费更多时间去学习领域知识。我们可以探索不同领域软件开发所遵循的过程。
3)近几十年催生了很多新的软件开发范式。国防科技大学王怀民院士在中国计算机大会报告《软件开发范式的变革》中,将软件发展历程概括为工程范式、开源范式,以及正在形成的群智范式。工程范式研究组织和管理软件开发过程的方法,以及与软件生产相关的自动化工具;开源范式通过自组织的社区群体,鼓励开展软件作品的自由创作;群智范式试图在工程范式和开源范式之间找到平衡点,实现自由创作与规范生产的连接和转化。传统软件工程关注工程范式,为软件开发提供了诸多开发指导原则。然而,现在软件开发正逐步走向开源范式和群智范式。读者在阅读本书的过程中,可进一步关注开源范式和群智范式,并探索将来可能出现的新的软件开发范式。
4)人工智能时代的开启,为软件工程的发展带来机遇,也给软件开发带来了挑战。诸多证据已经表明,人工智能技术的应用可以加快软件开发进程,提高软件质量和可维护性,但是人工智能技术并不能完全取代软件工程师的角色。软件工程师在软件需求分析、设计和开发、测试和维护中仍然扮演着关键的角色,必须不断更新自己的知识和技能,以适应人工智能技术的发展。
我们相信软件工程将为中国软件业提供更多的最佳实践。很庆幸,中国已经开始产生并将继续涌现更多具体实践。我们更期待,下一次软件工程的深刻变革将由中国来主导。
2023年4月10日