作者 |
崔晓峰 (美)Leanna Rierson(利安娜 · L. 瑞尔森) |
丛书名 |
国防电子信息技术丛书 |
出版社 |
电子工业出版社 |
ISBN |
9787121401558 |
简要 |
简介 |
内容简介书籍计算机书籍 本书以民用航空机载软件适航标准制定者的视角,详细介绍了如何基于目前**版的DO-178C标准进行安全关键软件的开发与管理,给出了如何获得成功审定的实用指南。主要内容包括:在系统与安全大视野中的软件,DO-178C标准的深入解读和推荐实践,4个标准技术补充(软件工具鉴定、基于模型的开发、面向对象技术和形式化方法)的讲解说明,以及10个相关特别专题(未覆盖代码、外场可加载软件、用户可修改软件和实时操作系统等)的指导建议。 |
目录 |
第一部分引 言 第1章 引言和概览\t2 1.1 安全关键软件的定义\t2 1.2 安全性问题的重要性\t2 1.3 本书目的和重要提示 \t4 1.4 本书概览\t6 第二部分安全关键软件开发的语境 第2章系统语境中的软件\t8 2.1 系统开发概览\t8 2.2 系统需求\t10 2.2.1 系统需求的重要性\t10 2.2.2 系统需求的类型\t10 2.2.3 良好的需求的特性\t10 2.2.4 系统需求考虑\t11 2.2.5 需求假设\t14 2.2.6 分配到软/硬件项\t14 2.3 系统需求确认与验证\t15 2.3.1 需求确认\t15 2.3.2 实现验证\t15 2.3.3 确认与验证建议\t15 2.4 系统工程师最佳实践\t17 2.5 软件与系统的关系\t19 第3章系统安全性评估语境中的软件\t20 3.1 航空器与系统安全性评估过程概览\t20 3.1.1 安全性工作计划\t21 3.1.2 功能危险评估\t21 3.1.3 系统功能危险评估\t22 3.1.4 初步航空器安全性评估\t22 3.1.5 初步系统安全性评估\t22 3.1.6 共因分析\t23 3.1.7 航空器安全性评估和系统安全性评估\t24 3.2 开发保证\t24 3.2.1 开发保证等级\t25 3.3 软件如何置于安全性过程\t26 3.3.1 软件的独特性\t26 3.3.2 软件开发保证\t26 3.3.3 其他观点\t28 3.3.4 在系统安全性过程关注软件的建议\t28 第三部分使用DO-178C开发安全关键软件 第4章DO-178C及支持文件概览\t32 4.1 DO-178历史\t32 4.2 DO-178C和DO-278A核心文件\t34 4.2.1 DO-278A与DO-178C的不同\t39 4.2.2 DO-178C附件A的目标表概览\t39 4.3 DO-330:软件工具鉴定考虑\t43 4.4 DO-178C技术补充\t43 4.4.1 DO-331:基于模型的开发补充\t43 4.4.2 DO-332:面向对象技术补充\t44 4.4.3 DO-333:形式化方法补充\t44 4.5 DO-248C:支持材料\t44 第5章软件策划\t46 5.1 引言\t46 5.2 一般策划建议\t46 5.3 5个软件计划\t49 5.3.1 软件合格审定计划\t49 5.3.2 软件开发计划\t50 5.3.3 软件验证计划\t52 5.3.4 软件配置管理计划\t54 5.3.5 软件质量保证计划\t56 5.4 3个开发标准\t57 5.4.1 软件需求标准\t58 5.4.2 软件设计标准\t58 5.4.3 软件编码标准\t59 5.5 工具鉴定计划\t60 5.6 其他计划\t60 5.6.1 项目管理计划\t60 5.6.2 需求管理计划\t60 5.6.3 测试计划\t60 第6章软件需求\t61 6.1 引言\t61 6.2 定义需求\t61 6.3 良好的需求的重要性\t62 6.3.1 原因1:需求是软件开发的基础\t62 6.3.2 原因2:好的需求节省时间和金钱\t63 6.3.3 原因3:好的需求对安全性至关重要\t64 6.3.4 原因4:好的需求对满足客户需要是必需的\t64 6.3.5 原因5:好的需求对测试很重要\t64 6.4 软件需求工程师\t65 6.5 软件需求开发概览\t66 6.6 收集和分析软件需求的输入\t67 6.6.1 需求收集活动\t67 6.6.2 需求分析活动\t68 6.7 编写软件需求\t69 6.7.1 任务1:确定方法\t69 6.7.2 任务2:确定软件需求文档格式\t70 6.7.3 任务3:将软件功能划分为子系统和/或特征\t70 6.7.4 任务4:确定需求优先级\t71 6.7.5 避免滑下的斜坡\t71 6.7.6 任务5:编档需求\t72 6.7.7 任务6:提供系统需求的反馈\t77 6.8 验证(评审)需求\t77 6.8.1 同行评审推荐实践\t78 6.9 管理需求\t81 6.9.1 需求管理基础\t81 6.9.2 需求管理工具\t81 6.10需求原型\t83 6.11可追踪性\t83 6.11.1 可追踪性的重要性和好处\t84 6.11.2 双向可追踪性\t84 6.11.3 DO-178C和可追踪性\t85 6.11.4 可追踪性挑战\t86 第7章软件设计\t88 7.1 软件设计概览\t88 7.1.1 软件体系结构\t88 7.1.2 软件低层需求\t89 7.1.3 设计打包\t90 7.2 设计方法\t90 7.2.1 基于结构的设计(传统)\t90 7.2.2 面向对象的设计\t91 7.3 良好设计的特性\t92 7.4 设计验证\t95 第8章软件实现:编码与集成\t97 8.1 引言\t97 8.2 编码\t97 8.2.1 DO-178C编码指南概览\t97 8.2.2 安全关键软件中使用的语言\t98 8.2.3 选择一种语言和编译器\t100 8.2.4 编程的一般建议\t102 8.2.5 代码相关的特别话题\t109 8.3 验证源代码\t110 8.4 开发集成\t111 8.4.1 构建过程\t111 8.4.2 加载过程\t112 8.5 验证开发集成\t112 第9章软件验证\t113 9.1 引言\t113 9.2 验证的重要性\t113 9.3 独立性与验证\t114 9.4 评审\t115 9.4.1 软件计划评审\t115 9.4.2 软件需求、设计和代码评审\t115 9.4.3 测试资料评审\t115 9.4.4 其他资料项评审\t116 9.5 分析\t116 9.5.1 最坏情况执行时间分析\t117 9.5.2 内存余量分析\t117 9.5.3 链接和内存映像分析\t118 9.5.4 加载分析\t118 9.5.5 中断分析\t118 9.5.6 数学分析\t119 9.5.7 错误和警告分析\t119 9.5.8 分区分析\t119 9.6 软件测试\t119 9.6.1 软件测试的目的\t120 9.6.2 DO-178C软件测试指南概览\t121 9.6.3 测试策略综述\t123 9.6.4 测试策划\t126 9.6.5 测试开发\t128 9.6.6 测试执行\t130 9.6.7 测试报告\t132 9.6.8 测试可追踪性\t132 9.6.9 回归测试\t132 9.6.10易测试性\t133 9.6.11验证过程中的自动化\t133 9.7 验证的验证\t134 9.7.1 测试规程评审\t135 9.7.2 测试结果的评审\t135 9.7.3 需求覆盖分析\t136 9.7.4 结构覆盖分析\t136 9.8 问题报告\t142 9.9 验证过程建议\t145 第10章软件配置管理\t148 10.1 引言\t148 10.1.1 什么是软件配置管理\t148 10.1.2 为什么需要软件配置管理\t148 10.1.3 谁负责实现软件配置管理\t149 10.1.4 软件配置管理涉及什么\t150 10.2 软件配置管理活动\t150 10.2.1 配置标识\t150 10.2.2 基线\t151 10.2.3 可追踪性\t151 10.2.4 问题报告\t151 10.2.5 变更控制和评审\t154 10.2.6 配置状态记录\t155 10.2.7 发布\t156 10.2.8 归档和提取\t156 10.2.9 资料控制类别\t157 10.2.10加载控制\t158 10.2.11软件生命周期环境控制\t159 10.3 特别的软件配置管理技能\t159 10.4 软件配置管理资料\t160 10.4.1 软件配置管理计划\t160 10.4.2 问题报告\t160 10.4.3 软件生命周期环境配置索引\t160 10.4.4 软件配置索引\t160 10.4.5 软件配置管理记录\t161 10.5 软件配置管理陷阱\t161 10.6 变更影响分析\t163 第11章软件质量保证\t166 11.1 引言:软件质量和软件质量保证\t166 11.1.1 定义软件质量\t166 11.1.2 高质量软件的特性\t166 11.1.3 软件质量保证\t167 11.1.4 常见质量过程和产品问题的例子\t168 11.2 有效和无效的软件质量保证的特征\t169 11.2.1 有效的软件质量保证\t169 11.2.2 无效的软件质量保证\t170 11.3 软件质量保证活动\t170 第12章合格审定联络\t174 12.1 什么是合格审定联络\t174 12.2 与合格审定机构的沟通\t174 12.2.1 与合格审定机构协调的最佳实践\t175 12.3 软件完成总结\t177 12.4 介入阶段审核\t178 12.4.1 介入阶段审核概览\t178 12.4.2 软件作业辅助概览\t179 12.4.3 使用软件作业辅助\t181 12.4.4 对审核者的一般建议\t181 12.4.5 对被审核者的一般建议\t186 12.4.6 介入阶段审核细节\t188 12.5 合格审定飞行试验之前的软件成熟度\t195 第四部分工具鉴定和DO-178C补充 第13章DO-330和软件工具鉴定\t198 13.1 引言\t198 13.2 确定工具鉴定需要和等级(DO-178C的12.2节)\t199 13.3 鉴定一个工具(DO-330概览)\t202 13.3.1 DO-330的需要\t202 13.3.2 DO-330工具鉴定过程\t203 13.4 工具鉴定特别话题\t210 13.4.1 FAA规定8110.49\t210 13.4.2 工具确定性\t211 13.4.3 额外的工具鉴定考虑\t211 13.4.4 工具鉴定陷阱\t212 13.4.5 DO-330和DO-178C补充\t214 13.4.6 DO-330用于其他领域\t214 第14章DO-331和基于模型的开发与验证\t215 14.1 引言\t215 14.2 基于模型开发的潜在好处\t216 14.3 基于模型开发的潜在风险\t218 14.4 DO-331概览\t221 14.5 合格审定机构对DO-331的认识\t225 第15章DO-332和面向对象技术及相关技术\t226 15.1 面向对象技术介绍\t226 15.2 OOT在航空中的使用\t226 15.3 航空手册中的OOT\t227 15.4 FAA资助的OOT和结构覆盖研究\t227 15.5 DO-332概览\t228 15.5.1 策划\t228 15.5.2 开发\t228 15.5.3 验证\t228 15.5.4 脆弱性\t229 15.5.5 类型安全\t229 15.5.6 相关技术\t230 15.5.7 常见问题\t230 15.6 OOT建议\t230 15.7 结论\t230 第16章DO-333和形式化方法\t231 16.1 形式化方法介绍\t231 16.2 什么是形式化方法\t232 16.3 形式化方法的潜在好处\t233 16.4 形式化方法的挑战\t234 16.5 DO-333概览\t235 16.5.1 DO-333的目的\t235 16.5.2 DO-333与DO-178C的比较\t236 16.6 其他资源\t238 第五部分特别专题 第17章未覆盖代码(无关代码、死代码和非激活代码)\t240 17.1 引言\t240 17.2 无关代码和死代码\t240 17.2.1 避免无关代码和死代码的晚发现\t241 17.2.2 评价无关代码或死代码\t242 17.3 非激活代码\t243 17.3.1 策划\t245 17.3.2 开发\t245 17.3.3 验证\t246 第18章外场可加载软件\t247 18.1 引言\t247 18.2 什么是外场可加载软件\t247 18.3 外场可加载软件的好处\t247 18.4 外场可加载软件的挑战\t248 18.5 开发和加载外场可加载软件\t248 18.5.1 开发支持外场加载的系统\t248 18.5.2 开发外场可加载软件\t249 18.5.3 加载外场可加载软件\t249 18.5.4 修改外场可加载软件\t250 18.6 总结\t250 第19章用户可修改软件\t251 19.1 引言\t251 19.2 什么是用户可修改软件\t251 19.3 UMS例子\t252 19.4 为UMS设计系统\t252 19.5 修改和维护UMS\t254 第20章实时操作系统\t256 20.1 引言\t256 20.2 什么是RTOS\t256 20.3 为什么使用RTOS\t257 20.4 RTOS内核及其支持软件\t258 20.4.1 RTOS内核\t258 20.4.2 应用编程接口\t258 20.4.3 主板支持包\t259 20.4.4 设备驱动\t260 20.4.5 支持库\t260 20.5 安全关键系统中使用的RTOS的特性\t260 20.5.1 确定性\t260 20.5.2 可靠的性能\t260 20.5.3 硬件兼容\t261 20.5.4 环境兼容\t261 20.5.5 容错\t261 20.5.6 健康监控\t261 20.5.7 可审定\t262 20.5.8 可维护\t262 20.5.9 可复用\t262 20.6 安全关键系统中使用的RTOS的功能\t262 20.6.1 多任务\t262 20.6.2 有保证和确定性的可调度性\t263 20.6.3 确定性的任务间通信\t264 20.6.4 可靠的内存管理\t265 20.6.5 中断处理\t265 20.6.6 钩子函数\t265 20.6.7 健壮性检查\t266 20.6.8 文件系统\t266 20.6.9 健壮分区\t266 20.7 需考虑的RTOS问题\t266 20.7.1 要考虑的技术问题\t267 20.7.2 要考虑的合格审定问题\t269 20.8 RTOS相关的其他话题\t271 20.8.1 ARINC 653概览\t271 20.8.2 工具支持\t273 20.8.3 开源RTOS\t274 20.8.4 多核处理器、虚拟化和虚拟机管理器\t274 20.8.5 保密性\t275 20.8.6 RTOS选择问题\t275 第21章软件分区\t276 21.1 引言\t276 21.1.1 分区:保护的一个子集\t276 21.1.2 DO-178C和分区\t277 21.1.3 健壮分区\t277 21.2 共享内存(空间分区)\t279 21.3 共享中央处理器(时间分区)\t279 21.4 共享输入/输出\t280 21.5 一些与分区相关的挑战\t281 21.5.1 直接内存访问\t281 21.5.2 高速缓存\t281 21.5.3 中断\t282 21.5.4 分区间通信\t282 21.6 分区的建议\t282 第22章配置数据\t287 22.1 引言\t287 22.2 术语和例子\t287 22.3 DO-178C关于参数数据项的指南总结\t289 22.4 建议\t289 第23章航空数据\t293 23.1 引言\t293 23.2 DO-200A:航空数据处理标准\t293 23.3 FAA咨询通告AC 20-153A\t296 23.4 用于处理航空数据的工具\t297 23.5 与航空数据相关的其他工业文件\t298 23.5.1 DO-201A:航空信息标准\t298 23.5.2 DO-236B:航空系统性能最低标准:区域导航要求的导航性能\t298 23.5.3 DO-272C:机场地图信息的用户需求\t298 23.5.4 DO-276A:地形和障碍数据的用户需求\t298 23.5.5 DO-291B:地形、障碍和机场地图数据互换标准\t298 23.5.6 ARINC 424:导航系统数据库标准\t299 23.5.7 ARINC 816-1:机场地图数据库的嵌入式互换格式\t299 第24章软件复用\t300 24.1 引言\t300 24.2 设计可复用构件\t301 24.3 复用先前开发的软件\t304 24.3.1 为在民用航空产品中使用而评价PDS\t305 24.3.2 复用未使用DO-178[]开发的PDS\t308 24.3.3 COTS软件的额外考虑\t310 24.4 产品服役历史\t311 24.4.1 产品服役历史的定义\t311 24.4.2 使用产品服役历史寻求置信度的困难\t311 24.4.3 使用产品服役历史声明置信度时考虑的因素\t312 第25章逆向工程\t313 25.1 引言\t313 25.2 什么是逆向工程\t313 25.3 逆向工程的例子\t314 25.4 逆向工程要考虑的问题\t314 25.5 逆向工程的建议\t315 第26章外包和离岸外包软件生命周期活动\t321 26.1 引言\t321 26.2 外包的原因\t322 26.3 外包的挑战和风险\t322 26.4 克服挑战和风险的建议\t325 26.5 总结\t331 附录A活动转换准则举例\t332 附录B实时操作系统关注点\t338 附录C为安全关键系统选择实时操作系统时考虑的问题\t341 附录D软件服役历史问题\t344 缩略语\t348 参考文献\t353 推荐读物\t365 |