前言 随着互联网向人类社会和物理世界的全方位延伸,一个万物互联的人机物融合泛在计算时代正在开启,新的应用需求也日益涌现,大到国家治理、智慧城市,小到智能家居、智能网联车引擎控制系统。软件作为这些系统中承担中枢协调控制的部件,成为各行各业越来越重要的基础设施。软件是实现这些系统的行为规划和交互协调的关键部件,多姿多彩的人机物融合世界也正是通过软件来构造和定义。什么样的软件,或者说具备何种能力的软件,才能担此重任,成为合格的“中枢协调控制部件”?如何从期望的应用场景中定位待开发软件系统的能力边界和范围?这是成功开发人机物融合系统首先要回答的问题。 软件需求工程的目标是识别现实世界中待解决的问题、可改进的方面、可把握的机会,认知问题的范围,并明确刻画出需要通过软件技术有效解决的目标问题,设计出解决方案,并分析、确认方案的可行性和有效性。换言之,软件需求工程的任务就是观察现实世界的机会和问题,识别定位其对软件技术的需求,分析和建模对期望构造的软件系统的需求(需要具有的能力和需要满足的性质等),验证和确认这些软件需求并对其进行管理,以便支持后续的软件开发和变更。 软件需求工程对目前正在蓬勃发展的人机物融合系统来说尤为重要。第一,从支撑人机物融合计算场景的现有系统来看,系统规模和复杂性显著增加,有必要在需求阶段控制其复杂性; 第二,软件与硬件、软件与人之间交互的紧密性和持续性,使得软硬件协同建模分析和对人的意图的分析成为必需; 第三,人机物融合系统将运行在开放和不确定环境中,软件需要具有应对交互环境的动态变化性和不确定性的能力; 第四,人机物融合系统内生的安全性需要软件能力的支撑,包括如何消除在系统操作回路中与人相关的安全隐患,如何避免系统对交互环境造成的伤害和破坏,如何消除给在系统操作回路之外的人带来的安全隐患,如何避免泄露在系统操作回路之外的人的隐私。作为发现问题与描述现象的重要方法和手段,软件需求工程将成为这类系统成功构建的过程中不可或缺的一环,成为“软件定义一切”的重要基石。 2008年,本书第一、第二作者和原吉林大学的金英教授共同编著出版了《软件需求工程: 原理和方法》,初心是介绍软件需求工程的基本原理、主要方法和技术,为从事软件需求工程研究与实践的读者提供参考。十余年过去,友人驾鹤西去,而我们对需求工程研究与实践的认知和思考却未敢稍停。软件需求工程实践是一个开放和持续发展中的主题,仁者见仁,智者见智,对于不同的系统特征需要从不同视角去观察、定位及描述其中能够通过软件系统的支撑来解决的问题,进而推断现实世界问题的软件解决方案。本书是几位作者在原作基础上群体再创作的结晶。我们希望将软件需求工程领域研究者们三十余年沉淀下来的经典方法和我们在近十余年探索中获得的新认知用最平实的方式呈现和分享给大家。 本书由全体作者共同策划完成,金芝规划了全书内容结构并撰写了第1、7章,刘璘撰写了第6、12章,陈小红撰写了第2、5、9、10章,李童撰写了第3、4、8章,王春晖撰写了第11章,金芝修订统一了全书风格。需求工程方法和实践的内容浩瀚广阔,本书仅仅呈现其概括性介绍,成书过程就非常不易,历时五年才得以完成,期间本书作者的学生通读并检查了书稿中的问题,最后又经过半年的修改才得以完稿。 本书可作为本科生软件工程专业课程或软件通识课程的教材或参考书,用于“需求工程”“软件工程引论”“创意软件”等课程。如果本书作为本科生“软件需求工程”课程教材,可使用本书的第1~6章和第11~12章,共32学时; 其中,第3~6章应作为重点内容进行讲解,旨在使学生掌握主流的需求分析方法。如果本书作为本科生“软件工程引论”课程参考书,可根据学时情况使用本书的第1~2章作为课程教学内容。如果本书作为本科生软件通识课程“创意软件”的课程教材,可以使用本书的第1、6、11、12章。 本书作为软件工程专业高年级本科生或研究生“软件需求工程”相关课程的教材或参考书,教师和学生可以根据课程项目的选题情况,酌情选学本书的全部或部分章节。其中第3~6章应作为重点内容进行讲解,第7~9章的学习可以采用形式化的需求建模与环境建模专题研讨课等形式开展。同时,使学生了解需求分析并没有固定方法,而是应当根据待分析系统的特点灵活地选取最合适的方法。此外,本书的第11~12章内容可作为课程的介绍性内容或作为课外阅读,旨在拓宽学生的知识面。 本书配套PPT课件、教学大纲、习题答案等教学资源,读者关注本书封底的清华大学出版社公众号“书圈”后即可下载相关资源,本书及配套资源的相关问题请联系本书责任编辑(404905510@qq.com)。 编者2023年1月