《指挥控制软件工程》结合指挥控制信息系统软件研制的一般特点,以及作者在指挥控制软件工程实践中的运用经验和教训,对软件工程本质的认识,介绍了软件工程相关基本理论,涉及软件需求工程、设计开发、测试联试验证、数据工程、配置管理、组织运用、定价与知识产权等普遍性理论和方法。《指挥控制软件工程》可作为指挥控制系统工程相关专业师生的教材,也可作为工程技术人员从事指控软件科研开发或者管理的参考书籍。
三年前,收到指控学会撰写此书提议的时候,出于职业习惯以及作为学会成员和该领域工作者的责任,加上戴浩院士的信任,我痛快地接受了这个任务,觉得有诸多经典理论作为指导,有很多从事该领域工作的实践与心得,有这样一个分享的渠道,应是一件有意义的事。
“软件工程”一词提出已有多年的历史,软件工程方法也在这一发展进程中不断演进,呈现出多样化的特点。作为最具有创新激情的领域之一,软件工程理论和技术的发展已不足以用日新月异来描述,对人类社会进步做出的贡献,令所有赞美的词都显得苍白,特别是其通用原理和方法,已经被领域专家奉为圣典,引导着一波又一波的软件科学家创造出一个又一个奇迹,今天已被公认为一门重要的学科。
一般来讲,软件工程本质上是借鉴工业生产,通过将规则和秩序极致化于产品生产过程,以保证产品质量,将系统化、规范化、可度量的方法应用于软件开发、运行和维护的过程。建造高质量软件的工作框架,起点和终点都是软件质量。软件工程的生命力在于其开放性和持续发展性,需要与时俱进地把经过实践证明正确的管理技术和最优的技术方法结合起来。如同人类文明发展的本质特征是秩序的不断建立和完善一样,软件工程追求的是对至臻完美的规则和秩序的践行,以严格的产品控制和实用的技术创造代表先进生产力的软件。
对软件及软件工程本质的认识,贯穿软件实践的始终,但始终存在理论和实践的背离问题。在特定的历史阶段,既有对软件及软件工程的实践和理论突破,同时还存在大量无法自觉将软件工程已经揭示的基本方法、原则贯彻于实践的情况。这与软件工程工作框架的本质特点有关,要求实践者在一系列规范过程与具体条件之间达成平衡,这无疑是十分困难的,实践者或者刻板地照本宣科,或者肆意践踏那些已被证明是正确的法则。
透析工业生产要素间的关系,生产投入和产品质量这两个基本因素决定生产过程的一般规律,即高质量产品的生产离不开高的生产投入,其中生产投入包括时间、人员及其水平、技术、管理制度、资金、政策等要素。设定了产品质量目标,也就明确了对生产要素组合的预期,二者关系必须要在一个平衡区间内.如果生产投入偏离了预期,那么产品质量的偏差在所难免。因此,在借鉴工业生产方法时,一般性规律需得到足够重视,然而,实践表明这一点是最容易被忽视的。
要解决这些问题,就有必要将普遍性理论和方法与具体领域实践相结合,有助于实践者把握好一个平衡“度”,同时这一行业的发展规律也已证明了结合的必要性。大多领域的软件和软件工程一般都是从作坊式发展而来的,现实的需求使得工作框架在任何阶段都不可避免地存在或多或少的作坊基因。然而实践中,作坊因素的存在能够被认可本身就有难度,即使采取了与普遍理论和方法相结合的措施予以调整,也往往会被误认为是落后的和不时髦的,导致调整的效果难以达到预期目标的那个“度”。
这些现象,同样在指挥控制软件工程中普遍存在。要对领域内类似问题提出解决方法,并从理论层次进行提炼和总结,困难重重,这与完成某项具体科研工程所要解决的难题有所不同。
指挥控制软件项目本身的计划性、周期性、管理策略、研制模式、开发人员等,均具有不同于通用软件项目的特点,软件质量设计和管理缺乏可直接借鉴的经验,如何结合通用软件工程成果进行领域性创新,仍有许多难题需要在实践中不断探索。例如,有时候用户对质量的要求是空前乃至绝后的高,这不是用户为了使需求看上去很高大上,而是有特殊的使命需要,然而软件工程方法和技术水平等无法在有限的条件下生产出相匹配的产品,一些明知不可为而为的事情不得不发生。
第1章 概述
1.1 软件与软件工程
1.1.1 软件定义
1.1.2 软件工程定义
1.1.3 软件工程知识领域
1.1.4 软件工程模型
1.2 指挥控制信息系统
1.2.1 指挥与控制
1.2.2 指挥控制信息系统概念内涵
1.2.3 指挥控制信息系统基本构成
1.2.4 指挥控制信息系统主要作用
1.2.5 软件在指挥控制系统中的地位作用
1.2.6 指挥控制能力生成模型
1.3 指挥控制软件及其软件工程
1.3.1 指挥控制软件概念内涵
1.3.2 指挥控制软件组成及分类
1.3.3 指挥控制软件基本要求
1.3.4 指挥控制软件主要特点
1.3.5 指挥控制软件工程
参考文献
第2章 需求工程
2.1 软件需求
2.1.1 需求定义
2.1.2 需求分类
2.1.3 需求的质量要求
2.2 需求工程
2.2.1 需求工程的内涵与发展
2.2.2 需求工程过程
2.2.3 需求工程方法
2.3 指挥控制软件需求工程
2.3.1 军事需求特点
2.3.2 军事需求分类
2.3.3 指挥控制软件军事需求特点
2.3.4 指挥控制软件军事需求工程过程
参考文献
第3章 设计开发
3.1 软件设计基本内容
3.1.1 设计的基本观点
3.1.2 软件设计的本质
3.1.3 软件设计的思维
3.1.4 软件设计的内容
3.1.5 软件设计开发方法
3.2 指挥控制软件设计
3.2.1 体系结构设计
3.2.2 功能模块设计
3.2.3 数据设计
3.2.4 用户体验设计
3.3 指挥控制软件演化与重构
3.3.1 软件的重构演化及其诱因
3.3.2 指挥控制软件的重构过程
3.3.3 指挥控制软件的演化过程
3.4 新概念下的软件设计
3.4.1 基于云计算的软件设计
3.4.2 基于群体软件工程的软件设计
3.4.3 基于“软件定义”的软件设计
3.4.4 基于“机器学习”的软件设计
参考文献
第4章 测试联试验证
4.1 认识软件测试
4.1.1 软件测试概念
4.1.2 软件测试类型
4.1.3 软件测试模型
4.1.4 软件测试流程
4.2 软件测试技术
4.2.1 通用测试技术
4.2.2 专用测试技术
4.3 指挥控制软件测试
4.3.1 指挥控制软件测试定义和内涵
4.3.2 指挥控制软件测试特点
4.3.3 指挥控制软件测试模型
……
第5章 数据工程
第6章 配置管理
第7章 组织运用
第8章 软件定价与知识产权
参考文献