前言 在作者十余年的软件开发工作中,虽然也写过一些软件需求、设计文档,但是因为没有经过这方面的学习与训练,毫无章法,只能将做的工作如实记录下来,那个年代没有严格的软件工程化的标准规范,只要记录下来、逻辑清晰、内容完整即可顺利交差。后来在从事软件测评工作初期,发现做文档审查时,根本无从判断文档内容的正确性,这才醒悟到缺乏软件需求分析、设计的技能是不能胜任软件测评工作的。 于是,拜读了徐锋老师的《软件需求最佳实践》,开启了软件需求分析的启蒙阶段。由于资质愚钝,没有真正理解书中方法,在混沌状态中,有幸两次参加UMLChina首席专家潘加宇老师的培训课,并反复阅读领悟潘加宇老师的《软件方法》(上册),方才有所顿悟。本书也大量引用了上述两本书的精华内容,在此,向两位老师表示衷心的感谢! 本书共7章,主要内容有: 概念与定义; 软件开发过程; 系统需求分析方法; 系统设计方法; 软件需求分析方法; 软件设计方法; 软件开发活动质量评价。 本书的组织结构如下。 (1) 第1章重点阐述系统需求分析和设计活动中涉及的相关概念,这些概念非常重要,是后续章节描述的方法的基础。 (2) 第2章重点阐述软件开发团队中常见的软件开发过程,以及对开发过程中的系统/软件需求分析和设计活动进行了综合性概要说明,目的是建立整体性概念。 (3) 第3~6章是本文的重点内容,分别对系统需求分析、系统设计、软件需求分析和软件设计的方法进行了详细阐述。并将这些活动中应该记录的内容与GJB 438B的要求进行了相关说明。对GJB 438B要求的四个文档模板内容进行了解析,详细说明了按照本文所阐述的需求分析和设计方法开展各项软件开发活动后,落实在GJB 438B的相关章节的具体内容,这些内容基本上都以表格或图(含UML图)的形式体现。 在第3章和第4章中,贯穿了一个案例,案例中选取的组织对象是某个第三方软件测评机构,系统对象是测评机构的测试项目管理系统。案例具体说明了如何从组织的业务用例分析得到系统的用例,如何针对关键需求确定系统设计决策,如何得到系统的概念架构,如何分配系统职责给相应的部件等; 详见3.10节和4.4节。 在第3章的3.4.4节,用一个ATM设备的系统用例和一个自动饮料售卖机的系统用例说明系统用例规约的写法, 供读者参考。 在第5章的5.4节,用自动饮料售卖机控制软件的用例规约作为例子,读者可以与3.4.4节的系统用例进行比较。 (4) 第7章是基于上述章节描述的需求分析、设计方法,归纳总结了系统需求分析、系统设计、软件需求分析和软件设计活动产出的软件工作产品需要考核评价的内容,并对这些内容的定量评价提供了方便、可操作的方法。 (5) 附录A是一个实例,以网络数据采集系统为例,给出系统规格说明、系统设计说明,以及系统中的一个软件配置项的软件需求规格说明和软件设计说明的主要内容。这个实例的特点是系统由两个软件配置项和一个硬件设备组成,但是硬件设备属于货架产品,无须专门研制,所以在系统设计说明的执行方案章节中可以发现,系统的职责都被分配给了这两个软件配置项。 本书第1~6章由韩雪燕编写; 第7章由孙亚东编写,附录A1、A2和A3由李楠编写,附录A4由陈尘编写。除附录A4中的UML图外,书中其他UML图均由李楠提供。 本书可作为软件工程技术人员的培训、参考用书,适用于系统能力需求论证人员、系统研制总体单位的系统需求分析人员、系统架构设计人员、软件开发组织的软件需求分析人员、软件设计人员、软件编码人员和软件测试人员以及第三方软件测试 机构的测试需求分析人员; 也可作为高等学校计算机软件工程专业的本科生教材。 由于编者水平有限,书中不当之处在所难免,欢迎广大同行和读者批评指正。 韩雪燕2020年8月