图书前言

软件是信息化的核心之一,软件产业展现国家科技发展的核心竞争力,体现国家的综合实力。随着计算机应用的不断普及、互联网应用的不断深入和网络技术的不断发展,软件系统的规模和复杂度也不断增加,如何确保开发出符合用户预期的、质量有保证的软件系统仍然是一个巨大挑战,软件危机的存在仍阻碍着软件的发展。

作为计算机科学技术的一个重要分支--软件工程学,成为软件需求、开发、维护、管理的普遍原理和技术相结合的、活跃的研究领域,随着软件工程的迅猛发展,新的技术、方法、工具不断涌现,为读者学习和研究这门学科创造了良好的基础和难得的机遇。

作为软件工程学的入门介绍,本书立足于基本的原理、概念、方法和工具,从实用的角度讲解软件系统需求、设计、实现、测试、维护和管理的内容,同时兼顾对软件工程过程介绍的全面性和系统性。

本书根据作者多年从事“软件工程”课程教学和软件开发的实践经验,在介绍相关理论和过程的基础上,着重讲解软件工程在实践中的方法、技术和工具。本书的特点体现在:

 (1)  减少软件工程理论的阐述,避免对不同过程和方法的学术讨论。

 (2)  介绍软件工程理论的基本概念和过程,它们对软件过程实践起着基石和指导的作用。

 (3)  每章的小结对各章的主要内容进行总结,便于读者理解和掌握主要内容。

 (4)  鉴于技术人员重技术而轻文档编写的实际情况,书中介绍了软件工程各阶段需要编写的文档框架,并通过实例不断强化文档对实施软件工程的重要性。

 (5)  本书中的主要案例都来自于作者的研究和实际工程项目,让读者深切感受到书中介绍的理论是如何指导实践的。

本书以结构化设计思想为基础,全面介绍软件工程过程各阶段的过程、方法和工具,务求让读者对软件工程的实施有一个完整、清晰的认识。之后,再以面向对象设计思想为指导,详细介绍基于面向对象的软件工程开发过程。这样编排的目的,是使读者能通过对两类设计思想及软件过程的比较,不仅便于分析它们各自的优缺点,还能更深入理解相同的软件工程过程结合不同的软件设计思想,对软件分析、实现和维护的影响,以及对软件质量和管理发展的推动。

下面简要介绍本书各章节的概貌,让读者对本书内容有一个提纲挈领的了解。

第1章回顾了软件危机的产生,介绍软件工程的产生和发展,包括软件工程的基本概念、目标和实施原则。通过对软件、软件生命周期和软件过程模型的介绍,让读者对软件工程的基本原理、方法、过程有一个基本认识。

第2章介绍软件需求工程的基本概念、任务和原则,并详细说明结构化分析和建模过程,包括面向数据的数据建模、面向数据流的功能建模和面向状态的行为建模。

第3章介绍软件设计的基本概念、任务和原则,以及目前主流的软件体系结构设计模型,它们分别是以数据为中心的数据仓库模型、客户端/服务器模式的分布式结构模型和层次模型。

第4章从应用角度出发,详细描述了结构化设计的两类设计方法:面向数据流的设计方法和面向数据结构的设计方法,以及它们的设计过程。

第5章从软件工程范畴讨论程序实现和编码,包括程序设计语言的分类、特性、准则及程序编写规范等。

第6章介绍进行软件测试的对象和测试技术。软件测试对象不仅包括源码,还包括设计方案、需求说明等软件工程文档。测试技术主要介绍了白盒测试和黑盒测试。

第7章介绍面向对象软件工程的建模基础。UML通过图形化的表示机制,对面向对象分析和设计提供统一的、标准化的视图、图、模型元素和通用机制来刻画面向对象方法。

第8章介绍面向对象分析的建模过程。面向对象分析模型主要由3种独立模型构成: 功能模型、静态模型和动态模型。此外,还详细说明了作为建模基础的静态模型的5个层次。

第9章介绍把面向对象分析阶段得到的需求模型转换为符合用户功能、性能,便于用某种面向对象程序设计语言编程的系统实现方案。

第10章介绍作为软件工程最后一个阶段的软件维护的内容和过程,以及如何提高软件的可维护性和软件再工程。

第11章介绍有关软件项目管理的基本要求和内容。通过对软件项目的估算、项目进度管理、风险管理、质量管理、配置管理等内容的介绍,明确对软件工程全过程的计划、组织和控制等一系列活动,只有经过这一系列环节,才能得到符合用户需求的高质量、高可靠性的软件产品。

由于作者水平有限,疏漏、欠妥、谬误之处在所难免,恳请读者指正。读者如果对本书有任何意见和建议,欢迎和作者联系

 作 者2012年1月

于北京理工大学